diff --git a/.github/workflows/recipe.yaml b/.github/workflows/recipe.yaml index d16367d..3884a81 100644 --- a/.github/workflows/recipe.yaml +++ b/.github/workflows/recipe.yaml @@ -2,7 +2,7 @@ name: Flex Recipe on: push: - branches: [ master ] + branches: [ $default-branch ] pull_request: jobs: @@ -14,8 +14,8 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.1', '8.2', '8.3'] - sylius: ["~1.12.0", "~1.13.0", "1.14.0"] + php: [ '8.2', '8.3' ] + sylius: [ '~2.0.0', '~2.1.0' ] steps: - name: Setup PHP diff --git a/.github/workflows/security.yaml b/.github/workflows/security.yaml index df6525a..23bd06d 100644 --- a/.github/workflows/security.yaml +++ b/.github/workflows/security.yaml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.1', '8.2', '8.3'] + php: ['8.2', '8.3'] steps: - uses: actions/checkout@v3 @@ -50,4 +50,3 @@ jobs: run: composer update --prefer-dist - uses: symfonycorp/security-checker-action@v4 - diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 35e1014..a87082e 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -2,7 +2,7 @@ name: Tests on: push: - branches: [ master ] + branches: [ $default-branch ] pull_request: jobs: @@ -14,7 +14,8 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.1', '8.2', '8.3'] + php: [ '8.2', '8.3' ] + node: [ '20' ] env: SYMFONY_ARGS: --no-tls @@ -25,7 +26,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: - node-version: '14' + node-version: ${{ matrix.node }} - name: Setup PHP uses: shivammathur/setup-php@v2 with: diff --git a/Makefile b/Makefile index f30c2cd..7d7a243 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .DEFAULT_GOAL := help SHELL=/bin/bash APP_DIR=tests/Application -SYLIUS_VERSION=1.14.0 +SYLIUS_VERSION=2.1.0 SYMFONY=cd ${APP_DIR} && symfony COMPOSER=symfony composer CONSOLE=${SYMFONY} console @@ -138,13 +138,13 @@ test.container: ## Lint the symfony container ${CONSOLE} lint:container test.yaml: ## Lint the symfony Yaml files - ${CONSOLE} lint:yaml ../../src/Resources/config --parse-tags + ${CONSOLE} lint:yaml ../../config --parse-tags test.schema: ## Validate MySQL Schema ${CONSOLE} doctrine:schema:validate test.twig: ## Validate Twig templates - ${CONSOLE} lint:twig --no-debug templates/ ../../src/Resources/views/ + ${CONSOLE} lint:twig --no-debug templates/ ../../templates/ ### ### SYLIUS diff --git a/README.md b/README.md index 91ebac4..f7797e0 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,11 @@ This plugins allows you to customize colors, logos and background of the Sylius ## Compatibility -| Sylius Version | PHP Version | -|----------------|-----------------| -| 1.12 | 8.1 - 8.2 - 8.3 | -| 1.13 | 8.1 - 8.2 - 8.3 | -| 1.14 | 8.1 - 8.2 - 8.3 | +| Sylius Version | PHP Version | +|----------------|-------------| +| 2.0, 2.1 | 8.2 - 8.3 | + +ℹ️ For Sylius 1.x, see our [1.x branch](/tree/1.x) and all 1.x releases. ## Installation diff --git a/UPGRADE-2.0.md b/UPGRADE-2.0.md new file mode 100644 index 0000000..0900fa2 --- /dev/null +++ b/UPGRADE-2.0.md @@ -0,0 +1,13 @@ +# Upgrade Guide to Sylius 2.x + +## Configuration Changes + +- The configuration is now in `config` folder instead of `src/Resources/config`. + +## Removed Settings + +- Removed `circular_icon_color` setting from admin settings form and configuration + +## Templates + +- Templates path changed and now use Twig Hooks diff --git a/composer.json b/composer.json index b87a72d..a80f96b 100644 --- a/composer.json +++ b/composer.json @@ -5,10 +5,10 @@ "description": "Manage your logos, colors and backgrounds with settings in Sylius Admin pannel", "license": "MIT", "require": { - "monsieurbiz/sylius-media-manager-plugin": "^1.0", - "monsieurbiz/sylius-settings-plugin": "^1.0", - "php": "^8.1", - "sylius/sylius": ">=1.12 <2.0" + "monsieurbiz/sylius-media-manager-plugin": "^2.0", + "monsieurbiz/sylius-settings-plugin": "^2.0", + "php": "^8.2 || ^8.3", + "sylius/sylius": "~2.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.16", @@ -38,7 +38,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" }, "symfony": { "docker": false, diff --git a/config/config.yaml b/config/config.yaml new file mode 100644 index 0000000..64fc826 --- /dev/null +++ b/config/config.yaml @@ -0,0 +1,4 @@ +imports: + - { resource: 'images.yaml' } + - { resource: 'twig_hooks.yaml' } + - { resource: 'settings.yaml' } diff --git a/src/Resources/config/sylius/images.yaml b/config/images.yaml similarity index 100% rename from src/Resources/config/sylius/images.yaml rename to config/images.yaml diff --git a/src/Resources/config/services.yaml b/config/services.yaml similarity index 70% rename from src/Resources/config/services.yaml rename to config/services.yaml index 61dcca0..47a69f9 100644 --- a/src/Resources/config/services.yaml +++ b/config/services.yaml @@ -5,9 +5,9 @@ services: public: false MonsieurBiz\SyliusBetterAdminPlugin\: - resource: '../../*' - exclude: '../../{Entity}' + resource: '../src/*' + exclude: '../src/{Entity}' MonsieurBiz\SyliusBetterAdminPlugin\Controller\: - resource: '../../Controller' + resource: '../src/Controller' tags: [ 'controller.service_arguments' ] diff --git a/src/Resources/config/monsieurbiz/settings.yaml b/config/settings.yaml similarity index 76% rename from src/Resources/config/monsieurbiz/settings.yaml rename to config/settings.yaml index d269faa..0073a50 100644 --- a/src/Resources/config/monsieurbiz/settings.yaml +++ b/config/settings.yaml @@ -4,12 +4,14 @@ monsieurbiz_sylius_settings: vendor_name: Monsieur Biz plugin_name: monsieurbiz_better_admin.settings.admin.plugin_name description: monsieurbiz_better_admin.settings.admin.description - icon: cog + icon: bi:gear use_locales: false classes: form: MonsieurBiz\SyliusBetterAdminPlugin\Form\Type\Settings\AdminSettingsType default_values: color: '#1abb9c' - circular_icon_color: '#ffffff' logo_login_width: '200' - logo_sidebar_width: '90' + logo_sidebar_width: '200' + logo: '' + logo_sidebar: '' + background_image: '' diff --git a/config/twig_hooks.yaml b/config/twig_hooks.yaml new file mode 100644 index 0000000..059804d --- /dev/null +++ b/config/twig_hooks.yaml @@ -0,0 +1,42 @@ +sylius_twig_hooks: + hooks: + sylius_admin.base#stylesheets: + monsieurbiz_better_admin_stylesheet: + template: "@MonsieurBizSyliusBetterAdminPlugin/styles.html.twig" + priority: 9999 + sylius_admin.common.component.sidebar.logo: + image: + template: "@MonsieurBizSyliusBetterAdminPlugin/sidebar/logo.html.twig" + priority: 9999 + sylius_admin.security.login.page.logo: + image: + enabled: false + sylius_admin.security.login.page.content: + header: + enabled: false + image: + template: "@MonsieurBizSyliusBetterAdminPlugin/security/logo.html.twig" + priority: 9999 + background: + template: "@MonsieurBizSyliusBetterAdminPlugin/security/background.html.twig" + priority: -9999 + sylius_admin.security.request_password_reset.page.logo: + image: + enabled: false + sylius_admin.security.request_password_reset.page.content: + image: + template: "@MonsieurBizSyliusBetterAdminPlugin/security/logo.html.twig" + priority: 9999 + background: + template: "@MonsieurBizSyliusBetterAdminPlugin/security/background.html.twig" + priority: -9999 + sylius_admin.security.reset_password.page.logo: + image: + enabled: false + sylius_admin.security.reset_password.page.content: + image: + template: "@MonsieurBizSyliusBetterAdminPlugin/security/logo.html.twig" + priority: 9999 + background: + template: "@MonsieurBizSyliusBetterAdminPlugin/security/background.html.twig" + priority: -9999 diff --git a/dist/.env.local b/dist/.env.local index 6c1a99e..d8ecea7 100644 --- a/dist/.env.local +++ b/dist/.env.local @@ -1 +1,2 @@ SYLIUS_FIXTURES_HOSTNAME=${SYMFONY_DEFAULT_ROUTE_HOST:-localhost} +MAILER_DSN=smtp://localhost:50437 diff --git a/dist/src/Context/Channel/RequestBased/HostnameAndPortBasedRequestResolver.php b/dist/src/Context/Channel/RequestBased/HostnameAndPortBasedRequestResolver.php new file mode 100644 index 0000000..4866953 --- /dev/null +++ b/dist/src/Context/Channel/RequestBased/HostnameAndPortBasedRequestResolver.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace App\Context\Channel\RequestBased; + +use Sylius\Component\Channel\Context\RequestBased\RequestResolverInterface; +use Sylius\Component\Channel\Model\ChannelInterface; +use Sylius\Component\Channel\Repository\ChannelRepositoryInterface; +use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag; +use Symfony\Component\HttpFoundation\Request; + +#[AutoconfigureTag('sylius.context.channel.request_based.resolver')] +final class HostnameAndPortBasedRequestResolver implements RequestResolverInterface +{ + public function __construct(private ChannelRepositoryInterface $channelRepository) + { + } + + public function findChannel(Request $request): ?ChannelInterface + { + return $this->channelRepository->findOneEnabledByHostname($request->getHost() . ':' . $request->getPort()); + } +} diff --git a/images/demo.jpg b/images/demo.jpg index 4ce687d..d1c01ad 100644 Binary files a/images/demo.jpg and b/images/demo.jpg differ diff --git a/images/settings.jpg b/images/settings.jpg index 134b95e..974f7b1 100644 Binary files a/images/settings.jpg and b/images/settings.jpg differ diff --git a/src/DependencyInjection/MonsieurBizSyliusBetterAdminExtension.php b/src/DependencyInjection/MonsieurBizSyliusBetterAdminExtension.php index d21e004..a5c3041 100644 --- a/src/DependencyInjection/MonsieurBizSyliusBetterAdminExtension.php +++ b/src/DependencyInjection/MonsieurBizSyliusBetterAdminExtension.php @@ -28,7 +28,7 @@ final class MonsieurBizSyliusBetterAdminExtension extends Extension */ public function load(array $config, ContainerBuilder $container): void { - $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../../config')); $loader->load('services.yaml'); } @@ -37,6 +37,6 @@ public function load(array $config, ContainerBuilder $container): void */ public function getAlias(): string { - return 'monsieurbiz_better_admin'; + return 'monsieur_biz_sylius_better_admin'; } } diff --git a/src/Form/Type/Settings/AdminSettingsType.php b/src/Form/Type/Settings/AdminSettingsType.php index 6145b76..d8127c0 100644 --- a/src/Form/Type/Settings/AdminSettingsType.php +++ b/src/Form/Type/Settings/AdminSettingsType.php @@ -87,16 +87,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'required' => false, ] ); - $this->addWithDefaultCheckbox( - $builder, - 'circular_icon_color', - ColorType::class, - [ - 'label' => 'monsieurbiz_better_admin.form.circular_icon_color', - 'help' => 'monsieurbiz_better_admin.form.circular_icon_color_help', - 'required' => false, - ] - ); $this->addWithDefaultCheckbox( $builder, 'custom_css', diff --git a/src/MonsieurBizSyliusBetterAdminPlugin.php b/src/MonsieurBizSyliusBetterAdminPlugin.php index f6c7a32..249959c 100644 --- a/src/MonsieurBizSyliusBetterAdminPlugin.php +++ b/src/MonsieurBizSyliusBetterAdminPlugin.php @@ -13,34 +13,15 @@ namespace MonsieurBiz\SyliusBetterAdminPlugin; -use LogicException; use Sylius\Bundle\CoreBundle\Application\SyliusPluginTrait; -use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; use Symfony\Component\HttpKernel\Bundle\Bundle; final class MonsieurBizSyliusBetterAdminPlugin extends Bundle { use SyliusPluginTrait; - /** - * Returns the plugin's container extension. - * - * @throws LogicException - * - * @return ExtensionInterface|null The container extension - */ - public function getContainerExtension(): ?ExtensionInterface + public function getPath(): string { - if (null === $this->containerExtension) { - $this->containerExtension = false; - $extension = $this->createContainerExtension(); - if (null !== $extension) { - $this->containerExtension = $extension; - } - } - - return $this->containerExtension instanceof ExtensionInterface - ? $this->containerExtension - : null; + return \dirname(__DIR__); } } diff --git a/src/Resources/config/config.yaml b/src/Resources/config/config.yaml deleted file mode 100644 index a915670..0000000 --- a/src/Resources/config/config.yaml +++ /dev/null @@ -1,3 +0,0 @@ -imports: - - { resource: 'monsieurbiz/*.yaml' } - - { resource: 'sylius/*.yaml' } diff --git a/src/Resources/config/sylius/ui.yaml b/src/Resources/config/sylius/ui.yaml deleted file mode 100644 index 1b2434b..0000000 --- a/src/Resources/config/sylius/ui.yaml +++ /dev/null @@ -1,6 +0,0 @@ -sylius_ui: - events: - sylius.admin.layout.stylesheets: - blocks: - monsieurbiz_better_admin_stylesheet: - template: "@MonsieurBizSyliusBetterAdminPlugin/Admin/_styles.html.twig" diff --git a/src/Resources/views/Admin/_styles.html.twig b/src/Resources/views/Admin/_styles.html.twig deleted file mode 100644 index 30bff53..0000000 --- a/src/Resources/views/Admin/_styles.html.twig +++ /dev/null @@ -1,114 +0,0 @@ -{% set mainColor = setting('monsieurbiz_better_admin.admin', 'color')|default('#1abb9c') %} -{% set circularIconColor = setting('monsieurbiz_better_admin.admin', 'circular_icon_color')|default('#1abb9c') %} -{% set logoSidebarWidth = setting('monsieurbiz_better_admin.admin', 'logo_sidebar_width')|default('90') %} -{% set logoLoginWidth = setting('monsieurbiz_better_admin.admin', 'logo_login_width')|default('200') %} -{% set customCss = setting('monsieurbiz_better_admin.admin', 'custom_css')|default('') %} - diff --git a/src/Resources/views/SyliusAdminBundle/Layout/_logo.html.twig b/src/Resources/views/SyliusAdminBundle/Layout/_logo.html.twig deleted file mode 100644 index 9574bb8..0000000 --- a/src/Resources/views/SyliusAdminBundle/Layout/_logo.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% set logoSidebar = setting('monsieurbiz_better_admin.admin', 'logo_sidebar')|default('') %} - - {% if logoSidebar is not empty %} - - {% else %} -
- {% if use_webpack %} - - {% else %} - - {% endif %} -
- {% endif %} -
diff --git a/src/Resources/views/SyliusUiBundle/Security/_login.html.twig b/src/Resources/views/SyliusUiBundle/Security/_login.html.twig deleted file mode 100644 index 5a1cf8b..0000000 --- a/src/Resources/views/SyliusUiBundle/Security/_login.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{% form_theme form '@SyliusUi/Form/theme.html.twig' %} - -{% import '@SyliusUi/Macro/messages.html.twig' as messages %} - -{% set logo = setting('monsieurbiz_better_admin.admin', 'logo')|default('') %} -{% set backgroundImage = setting('monsieurbiz_better_admin.admin', 'background_image')|default('') %} - -
-
- {{ sonata_block_render_event('sylius.admin.login.before_form', {'form': form}) }} - - {% if last_error %} -
- {{ messages.error(last_error.messageKey) }} -
- {% endif %} - - {{ form_start(form, {'action': action|default('/'), 'attr': {'class': 'ui large loadable form', 'novalidate': 'novalidate'}}) }} -
- {% if logo is not empty %} - - {% else %} - {% if paths.logo is defined %} -
- -
- {% endif %} - {% endif %} - - {{ sylius_template_event('sylius.admin.login.form.content', _context) }} -
- - {{ sonata_block_render_event('sylius.admin.login.form', {'form': form}) }} - - {{ form_end(form, {'render_rest': false}) }} -
-
- - diff --git a/templates/security/background.html.twig b/templates/security/background.html.twig new file mode 100644 index 0000000..6f0878f --- /dev/null +++ b/templates/security/background.html.twig @@ -0,0 +1,26 @@ + +{% set backgroundImage = setting('monsieurbiz_better_admin.admin', 'background_image')|default('') %} + + + + diff --git a/templates/security/logo.html.twig b/templates/security/logo.html.twig new file mode 100644 index 0000000..b96f846 --- /dev/null +++ b/templates/security/logo.html.twig @@ -0,0 +1,13 @@ +{% set logo = setting('monsieurbiz_better_admin.admin', 'logo')|default('') %} + +
+ {% if logo is not empty %} + {% if is_svg_image(logo) %} + + {% else %} + + {% endif %} + {% else %} + Sylius + {% endif %} +
diff --git a/templates/sidebar/logo.html.twig b/templates/sidebar/logo.html.twig new file mode 100644 index 0000000..cfda5e4 --- /dev/null +++ b/templates/sidebar/logo.html.twig @@ -0,0 +1,12 @@ +{% set logoSidebar = setting('monsieurbiz_better_admin.admin', 'logo_sidebar')|default('') %} +{% if logoSidebar is not empty %} + +{% else %} + Sylius +{% endif %} diff --git a/templates/styles.html.twig b/templates/styles.html.twig new file mode 100644 index 0000000..fe3da83 --- /dev/null +++ b/templates/styles.html.twig @@ -0,0 +1,138 @@ +{% set mainColor = setting('monsieurbiz_better_admin.admin', 'color')|default('#2fcb9c') %} +{% set logoSidebarWidth = setting('monsieurbiz_better_admin.admin', 'logo_sidebar_width')|default('90') %} +{% set logoLoginWidth = setting('monsieurbiz_better_admin.admin', 'logo_login_width')|default('200') %} +{% set customCss = setting('monsieurbiz_better_admin.admin', 'custom_css')|default('') %} + + diff --git a/src/Resources/translations/messages.en.yaml b/translations/messages.en.yaml similarity index 86% rename from src/Resources/translations/messages.en.yaml rename to translations/messages.en.yaml index 7de754b..1ec3dce 100644 --- a/src/Resources/translations/messages.en.yaml +++ b/translations/messages.en.yaml @@ -2,8 +2,6 @@ monsieurbiz_better_admin: form: color: 'Color' color_help: 'The main color of your website used in admin displays' - circular_icon_color: 'Color of circular icon' - circular_icon_color_help: 'The color of the circular icon in the headers' custom_css: 'Custom CSS' custom_css_help: 'Custom CSS to apply to the admin (Be careful)' logo: 'Logo' diff --git a/src/Resources/translations/messages.fr.yaml b/translations/messages.fr.yaml similarity index 86% rename from src/Resources/translations/messages.fr.yaml rename to translations/messages.fr.yaml index f75f13d..791937e 100644 --- a/src/Resources/translations/messages.fr.yaml +++ b/translations/messages.fr.yaml @@ -2,8 +2,6 @@ monsieurbiz_better_admin: form: color: 'Couleur' color_help: 'La couleur principale de votre site utilisée dans les affichages d''administration' - circular_icon_color: 'Couleur de l''icône circulaire' - circular_icon_color_help: 'La couleur de l''icône circulaire dans les en-têtes' custom_css: 'CSS personnalisé' custom_css_help: 'CSS personnalisé à appliquer à l''administration (Soyez prudents)' logo: 'Logo'