From 32100d0dc6f1265f537e919f629caba3052a9543 Mon Sep 17 00:00:00 2001 From: Robert Swoboda <53216935+Gengar-i@users.noreply.github.com> Date: Wed, 14 Feb 2024 14:56:15 +0100 Subject: [PATCH 01/10] IBX-7044: Redirect after settings update --- .../admin/account/settings/update.html.twig | 17 ++++++++++++++++- .../UserSettingUpdateRightSidebarBuilder.php | 16 ++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig index 1a98ba6fd7..88e2ce2900 100644 --- a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig @@ -6,7 +6,17 @@ {% block body_class %}ibexa-user-settings-update-view{% endblock %} {% block header %} - {% set user_setting_update_sidebar_right = knp_menu_get('ezplatform_admin_ui.menu.user_setting_update.sidebar_right', [], {'user_setting': user_setting}) %} + {% set route = app.request.query.get('route')|default(null) %} + {% set content_id = app.request.query.get('content_id')|default(null) %} + {% set version = app.request.query.get('version')|default(null) %} + {% set language = app.request.query.get('language')|default(null) %} + {% set user_setting_update_sidebar_right = knp_menu_get('ezplatform_admin_ui.menu.user_setting_update.sidebar_right', [], { + 'route': route, + 'content_id': content_id, + 'version_no': version, + 'language': language, + 'user_setting': user_setting, + }) %} {% include '@ibexadesign/ui/edit_header.html.twig' with { action_name: 'list.action_name'|trans({'%action%': title|lower})|desc('Editing %action%'), @@ -31,3 +41,8 @@ {{ form_end(form) }} {% endblock %} + +{% block javascripts %} + {{ parent() }} + {{ encore_entry_script_tags('ibexa-admin-ui-user-settings-js', null, 'ibexa') }} +{% endblock %} diff --git a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php index 63cb8c59e6..930b94f300 100644 --- a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php +++ b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php @@ -61,6 +61,7 @@ public function createStructure(array $options): ItemInterface { /** @var \Knp\Menu\ItemInterface|\Knp\Menu\ItemInterface[] $menu */ $menu = $this->factory->createItem('root'); + $route = $options['route']; $saveItem = $this->createMenuItem( self::ITEM__SAVE, @@ -69,7 +70,13 @@ public function createStructure(array $options): ItemInterface 'class' => 'ibexa-btn--trigger', 'data-click' => '#user_setting_update_update', ], - ] + 'route' => $route ?? 'ibexa.user_settings.list', + 'routeParameters' => [ + 'contentId' => $options['content_id'] ?? null, + 'versionNo' => $options['version_no'] ?? null, + 'language' => $options['language'] ?? null, + ], + ], ); $saveItem->addChild( @@ -90,7 +97,12 @@ public function createStructure(array $options): ItemInterface self::ITEM__CANCEL => $this->createMenuItem( self::ITEM__CANCEL, [ - 'route' => 'ibexa.user_settings.list', + 'route' => $route ?? 'ibexa.user_settings.list', + 'routeParameters' => [ + 'contentId' => $options['content_id'] ?? null, + 'versionNo' => $options['version_no'] ?? null, + 'language' => $options['language'] ?? null, + ], ] ), ]); From 404282da7ab8f48857f4bb8e7dbd19101f6d727f Mon Sep 17 00:00:00 2001 From: Robert Swoboda <53216935+Gengar-i@users.noreply.github.com> Date: Wed, 14 Feb 2024 14:57:59 +0100 Subject: [PATCH 02/10] Remove javascript block --- .../views/themes/admin/account/settings/update.html.twig | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig index 88e2ce2900..47d6c0f884 100644 --- a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig @@ -41,8 +41,3 @@ {{ form_end(form) }} {% endblock %} - -{% block javascripts %} - {{ parent() }} - {{ encore_entry_script_tags('ibexa-admin-ui-user-settings-js', null, 'ibexa') }} -{% endblock %} From ae9ccbfe22082373ce8a8bb832e3ca4a8f012e80 Mon Sep 17 00:00:00 2001 From: Robert Swoboda <53216935+Gengar-i@users.noreply.github.com> Date: Tue, 20 Feb 2024 11:58:00 +0100 Subject: [PATCH 03/10] Fix route options parameter --- .../UserSetting/UserSettingUpdateRightSidebarBuilder.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php index 930b94f300..cb77c6fcff 100644 --- a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php +++ b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php @@ -61,7 +61,7 @@ public function createStructure(array $options): ItemInterface { /** @var \Knp\Menu\ItemInterface|\Knp\Menu\ItemInterface[] $menu */ $menu = $this->factory->createItem('root'); - $route = $options['route']; + $route = $options['route'] ?? 'ibexa.user_settings.list'; $saveItem = $this->createMenuItem( self::ITEM__SAVE, @@ -70,7 +70,7 @@ public function createStructure(array $options): ItemInterface 'class' => 'ibexa-btn--trigger', 'data-click' => '#user_setting_update_update', ], - 'route' => $route ?? 'ibexa.user_settings.list', + 'route' => $route, 'routeParameters' => [ 'contentId' => $options['content_id'] ?? null, 'versionNo' => $options['version_no'] ?? null, @@ -97,7 +97,7 @@ public function createStructure(array $options): ItemInterface self::ITEM__CANCEL => $this->createMenuItem( self::ITEM__CANCEL, [ - 'route' => $route ?? 'ibexa.user_settings.list', + 'route' => $route, 'routeParameters' => [ 'contentId' => $options['content_id'] ?? null, 'versionNo' => $options['version_no'] ?? null, From b11457d6a0d4e87e612d8d32534581881ff1425c Mon Sep 17 00:00:00 2001 From: Robert Swoboda <53216935+Gengar-i@users.noreply.github.com> Date: Tue, 20 Feb 2024 14:07:42 +0100 Subject: [PATCH 04/10] Variables url updated --- .../views/themes/admin/account/settings/update.html.twig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig index 47d6c0f884..dc21dea948 100644 --- a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig @@ -7,13 +7,13 @@ {% block header %} {% set route = app.request.query.get('route')|default(null) %} - {% set content_id = app.request.query.get('content_id')|default(null) %} - {% set version = app.request.query.get('version')|default(null) %} + {% set content_id = app.request.query.get('contentId')|default(null) %} + {% set version_no = app.request.query.get('versionNo')|default(null) %} {% set language = app.request.query.get('language')|default(null) %} {% set user_setting_update_sidebar_right = knp_menu_get('ezplatform_admin_ui.menu.user_setting_update.sidebar_right', [], { 'route': route, 'content_id': content_id, - 'version_no': version, + 'version_no': version_no, 'language': language, 'user_setting': user_setting, }) %} From b4ef757345ebdabb39f3e75dfe3eafc8f14f03a1 Mon Sep 17 00:00:00 2001 From: Robert Swoboda <53216935+Gengar-i@users.noreply.github.com> Date: Mon, 18 Mar 2024 10:59:57 +0100 Subject: [PATCH 05/10] Removed parameters --- .../UserSetting/UserSettingUpdateRightSidebarBuilder.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php index cb77c6fcff..fc1116b5bd 100644 --- a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php +++ b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php @@ -70,12 +70,6 @@ public function createStructure(array $options): ItemInterface 'class' => 'ibexa-btn--trigger', 'data-click' => '#user_setting_update_update', ], - 'route' => $route, - 'routeParameters' => [ - 'contentId' => $options['content_id'] ?? null, - 'versionNo' => $options['version_no'] ?? null, - 'language' => $options['language'] ?? null, - ], ], ); From 1f867ac5a99d2e59c2086eff848658f8039aaa3b Mon Sep 17 00:00:00 2001 From: Robert Swoboda <53216935+Gengar-i@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:52:28 +0200 Subject: [PATCH 06/10] Added routeParameters to custom route --- .../views/themes/admin/account/settings/update.html.twig | 8 ++------ .../UserSetting/UserSettingUpdateRightSidebarBuilder.php | 7 ++----- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig index dc21dea948..f91e2b31dc 100644 --- a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig @@ -7,14 +7,10 @@ {% block header %} {% set route = app.request.query.get('route')|default(null) %} - {% set content_id = app.request.query.get('contentId')|default(null) %} - {% set version_no = app.request.query.get('versionNo')|default(null) %} - {% set language = app.request.query.get('language')|default(null) %} + {% set route_parameters = app.request.query.get('routeParameters')|default([]) %} {% set user_setting_update_sidebar_right = knp_menu_get('ezplatform_admin_ui.menu.user_setting_update.sidebar_right', [], { 'route': route, - 'content_id': content_id, - 'version_no': version_no, - 'language': language, + 'route_parameters': route_parameters, 'user_setting': user_setting, }) %} diff --git a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php index fc1116b5bd..91d84dc717 100644 --- a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php +++ b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php @@ -62,6 +62,7 @@ public function createStructure(array $options): ItemInterface /** @var \Knp\Menu\ItemInterface|\Knp\Menu\ItemInterface[] $menu */ $menu = $this->factory->createItem('root'); $route = $options['route'] ?? 'ibexa.user_settings.list'; + $routeParameters = $options['route_parameters'] ?? []; $saveItem = $this->createMenuItem( self::ITEM__SAVE, @@ -92,11 +93,7 @@ public function createStructure(array $options): ItemInterface self::ITEM__CANCEL, [ 'route' => $route, - 'routeParameters' => [ - 'contentId' => $options['content_id'] ?? null, - 'versionNo' => $options['version_no'] ?? null, - 'language' => $options['language'] ?? null, - ], + 'routeParameters' => $routeParameters, ] ), ]); From 75d271c90133226d29b07bd647dfe329a4c25ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 9 Apr 2024 12:13:47 +0200 Subject: [PATCH 07/10] Added route check --- phpstan-baseline.neon | 5 +++ .../UserSettingUpdateRightSidebarBuilder.php | 43 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 11ef8f679a..f73dce81ea 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -8165,6 +8165,11 @@ parameters: count: 1 path: src/lib/Menu/UserPasswordChangeRightSidebarBuilder.php + - + message: "#^Cannot call method warning\\(\\) on Psr\\\\Log\\\\LoggerInterface\\|null\\.$#" + count: 1 + path: src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php + - message: "#^Method Ibexa\\\\AdminUi\\\\Menu\\\\UserSetting\\\\UserSettingUpdateRightSidebarBuilder\\:\\:createStructure\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" count: 1 diff --git a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php index 91d84dc717..3efcac702a 100644 --- a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php +++ b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php @@ -14,7 +14,13 @@ use JMS\TranslationBundle\Model\Message; use JMS\TranslationBundle\Translation\TranslationContainerInterface; use Knp\Menu\ItemInterface; +use Psr\Log\LoggerAwareInterface; +use Psr\Log\LoggerAwareTrait; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Routing\Exception\ExceptionInterface as RouteExceptionInterface; +use Symfony\Component\Routing\RouterInterface; use Symfony\Contracts\Translation\TranslatorInterface; /** @@ -22,8 +28,10 @@ * * @see https://symfony.com/doc/current/bundles/KnpMenuBundle/menu_builder_service.html */ -class UserSettingUpdateRightSidebarBuilder extends AbstractBuilder implements TranslationContainerInterface +class UserSettingUpdateRightSidebarBuilder extends AbstractBuilder implements TranslationContainerInterface, LoggerAwareInterface { + use LoggerAwareTrait; + /* Menu items */ public const ITEM__SAVE = 'user_setting_update__sidebar_right__save'; public const ITEM__SAVE_AND_EDIT = 'user_setting_update__sidebar_right__save_end_edit'; @@ -32,14 +40,20 @@ class UserSettingUpdateRightSidebarBuilder extends AbstractBuilder implements Tr /** @var \Symfony\Contracts\Translation\TranslatorInterface */ private $translator; + private RouterInterface $router; + public function __construct( MenuItemFactory $factory, EventDispatcherInterface $eventDispatcher, - TranslatorInterface $translator + TranslatorInterface $translator, + RouterInterface $router, + ?LoggerInterface $logger = null ) { parent::__construct($factory, $eventDispatcher); $this->translator = $translator; + $this->router = $router; + $this->logger = $logger ?? new NullLogger(); } /** @@ -63,6 +77,10 @@ public function createStructure(array $options): ItemInterface $menu = $this->factory->createItem('root'); $route = $options['route'] ?? 'ibexa.user_settings.list'; $routeParameters = $options['route_parameters'] ?? []; + if (!$this->routeExists($route, $routeParameters)) { + $route = 'ibexa.user_settings.list'; + $routeParameters = []; + } $saveItem = $this->createMenuItem( self::ITEM__SAVE, @@ -112,6 +130,27 @@ public static function getTranslationMessages(): array (new Message(self::ITEM__CANCEL, 'ibexa_menu'))->setDesc('Discard'), ]; } + + /** + * @param array $routeParameters + */ + private function routeExists(string $route, array $routeParameters): bool + { + try { + $this->router->generate($route, $routeParameters); + + return true; + } catch (RouteExceptionInterface $e) { + $this->logger->warning( + sprintf('Invalid route in query. %s.', $e->getMessage()), + [ + 'exception' => $e, + ], + ); + } + + return false; + } } class_alias(UserSettingUpdateRightSidebarBuilder::class, 'EzSystems\EzPlatformAdminUi\Menu\UserSetting\UserSettingUpdateRightSidebarBuilder'); From 045f5e749a324a3a048a5f5fec746dbfd35befbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 9 Apr 2024 12:15:28 +0200 Subject: [PATCH 08/10] Added route check --- .../UserSettingUpdateRightSidebarBuilder.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php index 3efcac702a..1d5abce12f 100644 --- a/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php +++ b/src/lib/Menu/UserSetting/UserSettingUpdateRightSidebarBuilder.php @@ -20,7 +20,7 @@ use Psr\Log\NullLogger; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Routing\Exception\ExceptionInterface as RouteExceptionInterface; -use Symfony\Component\Routing\RouterInterface; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Contracts\Translation\TranslatorInterface; /** @@ -40,19 +40,19 @@ class UserSettingUpdateRightSidebarBuilder extends AbstractBuilder implements Tr /** @var \Symfony\Contracts\Translation\TranslatorInterface */ private $translator; - private RouterInterface $router; + private UrlGeneratorInterface $urlGenerator; public function __construct( MenuItemFactory $factory, EventDispatcherInterface $eventDispatcher, TranslatorInterface $translator, - RouterInterface $router, + UrlGeneratorInterface $urlGenerator, ?LoggerInterface $logger = null ) { parent::__construct($factory, $eventDispatcher); $this->translator = $translator; - $this->router = $router; + $this->urlGenerator = $urlGenerator; $this->logger = $logger ?? new NullLogger(); } @@ -137,7 +137,7 @@ public static function getTranslationMessages(): array private function routeExists(string $route, array $routeParameters): bool { try { - $this->router->generate($route, $routeParameters); + $this->urlGenerator->generate($route, $routeParameters); return true; } catch (RouteExceptionInterface $e) { From 810e9e37dece0fe4f6a5ebf75bf33e52e156323d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 9 Jul 2024 12:20:46 +0200 Subject: [PATCH 09/10] Update src/bundle/Resources/views/themes/admin/account/settings/update.html.twig --- .../views/themes/admin/account/settings/update.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig index f91e2b31dc..d9e328175b 100644 --- a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig @@ -6,7 +6,7 @@ {% block body_class %}ibexa-user-settings-update-view{% endblock %} {% block header %} - {% set route = app.request.query.get('route')|default(null) %} + {% set route = app.request.query.get('route') %} {% set route_parameters = app.request.query.get('routeParameters')|default([]) %} {% set user_setting_update_sidebar_right = knp_menu_get('ezplatform_admin_ui.menu.user_setting_update.sidebar_right', [], { 'route': route, From 2324c2e9b6a068520f393fb96229599f3a36e4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 9 Jul 2024 12:21:06 +0200 Subject: [PATCH 10/10] Update src/bundle/Resources/views/themes/admin/account/settings/update.html.twig --- .../views/themes/admin/account/settings/update.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig index d9e328175b..4333e5b24a 100644 --- a/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/settings/update.html.twig @@ -7,7 +7,7 @@ {% block header %} {% set route = app.request.query.get('route') %} - {% set route_parameters = app.request.query.get('routeParameters')|default([]) %} + {% set route_parameters = app.request.query.get('routeParameters') ?? [] %} {% set user_setting_update_sidebar_right = knp_menu_get('ezplatform_admin_ui.menu.user_setting_update.sidebar_right', [], { 'route': route, 'route_parameters': route_parameters,