From 6962573e05e512bd8aef3c4af33709ec070cc174 Mon Sep 17 00:00:00 2001 From: Maciej Kobus Date: Wed, 1 Apr 2020 23:00:50 +0200 Subject: [PATCH 1/5] EZP-30543: Removed Dynamic Settings use in ViewTemplatesListener --- src/bundle/Resources/config/services.yaml | 5 -- .../EventListener/ViewTemplatesListener.php | 65 ++++++++----------- 2 files changed, 28 insertions(+), 42 deletions(-) diff --git a/src/bundle/Resources/config/services.yaml b/src/bundle/Resources/config/services.yaml index d3643a94..533c7848 100644 --- a/src/bundle/Resources/config/services.yaml +++ b/src/bundle/Resources/config/services.yaml @@ -145,10 +145,5 @@ services: class: "%ezplatform.content_forms.view_templates_listener.class%" tags: - { name: kernel.event_subscriber } - calls: - - [setViewTemplate, ['EzSystems\EzPlatformContentForms\User\View\UserCreateView', "$user_edit.templates.create$"]] - - [setViewTemplate, ['EzSystems\EzPlatformContentForms\User\View\UserUpdateView', "$user_edit.templates.update$"]] - - [setViewTemplate, ['EzSystems\EzPlatformContentForms\Content\View\ContentCreateDraftView', "$content_edit.templates.create_draft$"]] - - [setPagelayout, ["$pagelayout$"]] EzSystems\EzPlatformContentForms\ConfigResolver\MaxUploadSize: ~ diff --git a/src/lib/EventListener/ViewTemplatesListener.php b/src/lib/EventListener/ViewTemplatesListener.php index c49c4818..c1b53d48 100644 --- a/src/lib/EventListener/ViewTemplatesListener.php +++ b/src/lib/EventListener/ViewTemplatesListener.php @@ -8,8 +8,13 @@ namespace EzSystems\EzPlatformContentForms\EventListener; +use EzSystems\EzPlatformContentForms\Content\View\ContentCreateDraftView; +use EzSystems\EzPlatformContentForms\User; +use eZ\Publish\Core\MVC\ConfigResolverInterface; use eZ\Publish\Core\MVC\Symfony\Event\PreContentViewEvent; use eZ\Publish\Core\MVC\Symfony\MVCEvents; +use EzSystems\EzPlatformContentForms\User\View\UserCreateView; +use EzSystems\EzPlatformContentForms\User\View\UserUpdateView; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** @@ -17,60 +22,46 @@ */ class ViewTemplatesListener implements EventSubscriberInterface { - /** - * Hash of [View type FQN] => template. - * - * @var array - */ - protected $viewTemplates; - - /** - * @var string - */ - protected $pagelayout; + /** @var \eZ\Publish\Core\MVC\ConfigResolverInterface */ + private $configResolver; - public static function getSubscribedEvents() + public function __construct(ConfigResolverInterface $configResolver) { - return [MVCEvents::PRE_CONTENT_VIEW => 'setViewTemplates']; + $this->configResolver = $configResolver; } - /** - * Sets the $template to use for objects of class $viewClass. - * - * @param string $viewClass FQN of a View class - * @param string $template - */ - public function setViewTemplate($viewClass, $template) - { - $this->viewTemplates[$viewClass] = $template; - } - - /** - * Sets the pagelayout template to assign to views. - * - * @param string $pagelayout - */ - public function setPagelayout($pagelayout) + public static function getSubscribedEvents() { - $this->pagelayout = $pagelayout; + return [MVCEvents::PRE_CONTENT_VIEW => 'setViewTemplates']; } /** * If the event's view has a defined template, sets the view's template identifier, * and the 'pagelayout' parameter. - * - * @param PreContentViewEvent $event */ - public function setViewTemplates(PreContentViewEvent $event) + public function setViewTemplates(PreContentViewEvent $event): void { $view = $event->getContentView(); + $pagelayout = $this->configResolver->getParameter('pagelayout'); - foreach ($this->viewTemplates as $viewClass => $template) { + foreach ($this->getTemplatesMap() as $viewClass => $template) { if ($view instanceof $viewClass) { $view->setTemplateIdentifier($template); - $view->addParameters(['pagelayout' => $this->pagelayout]); - $view->addParameters(['page_layout' => $this->pagelayout]); + $view->addParameters(['pagelayout' => $pagelayout]); + $view->addParameters(['page_layout' => $pagelayout]); } } } + + /** + * @return string[] + */ + private function getTemplatesMap(): array + { + return [ + UserCreateView::class => $this->configResolver->getParameter('user_edit.templates.create'), + UserUpdateView::class => $this->configResolver->getParameter('user_edit.templates.update'), + ContentCreateDraftView::class => $this->configResolver->getParameter('content_edit.templates.create_draft'), + ]; + } } From 6abeea91a8171860cebae32bf7edfa97461218ee Mon Sep 17 00:00:00 2001 From: Maciej Kobus Date: Wed, 1 Apr 2020 23:02:31 +0200 Subject: [PATCH 2/5] EZP-30543: Removed Dynamic Settings use in ContentEditViewBuilder --- src/bundle/Resources/config/views.yaml | 1 - .../View/Builder/ContentEditViewBuilder.php | 24 +++++++------------ 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/bundle/Resources/config/views.yaml b/src/bundle/Resources/config/views.yaml index 8f8b2a44..b13f9862 100644 --- a/src/bundle/Resources/config/views.yaml +++ b/src/bundle/Resources/config/views.yaml @@ -10,7 +10,6 @@ services: - '@ezpublish.api.repository' - '@ezpublish.view.configurator' - '@ezpublish.view.view_parameters.injector.dispatcher' - - '$content_edit.templates.edit$' - '@ezplatform.content_forms.action_dispatcher.content' EzSystems\EzPlatformContentForms\Content\View\Provider\ContentEditView\Configured: diff --git a/src/lib/Content/View/Builder/ContentEditViewBuilder.php b/src/lib/Content/View/Builder/ContentEditViewBuilder.php index edf0e890..778ff3fd 100644 --- a/src/lib/Content/View/Builder/ContentEditViewBuilder.php +++ b/src/lib/Content/View/Builder/ContentEditViewBuilder.php @@ -15,6 +15,7 @@ use eZ\Publish\API\Repository\Values\Content\Location; use eZ\Publish\API\Repository\Values\ContentType\ContentType; use eZ\Publish\Core\Base\Exceptions\InvalidArgumentException; +use eZ\Publish\Core\MVC\ConfigResolverInterface; use eZ\Publish\Core\MVC\Symfony\Locale\UserLanguagePreferenceProviderInterface; use eZ\Publish\Core\MVC\Symfony\View\Builder\ViewBuilder; use eZ\Publish\Core\MVC\Symfony\View\Configurator; @@ -39,37 +40,29 @@ class ContentEditViewBuilder implements ViewBuilder /** @var \eZ\Publish\Core\MVC\Symfony\View\ParametersInjector */ private $viewParametersInjector; - /** @var string */ - private $defaultTemplate; - /** @var \EzSystems\EzPlatformContentForms\Form\ActionDispatcher\ActionDispatcherInterface */ private $contentActionDispatcher; /** @var \eZ\Publish\Core\MVC\Symfony\Locale\UserLanguagePreferenceProviderInterface */ private $languagePreferenceProvider; - /** - * @param \eZ\Publish\API\Repository\Repository $repository - * @param \eZ\Publish\Core\MVC\Symfony\View\Configurator $viewConfigurator - * @param \eZ\Publish\Core\MVC\Symfony\View\ParametersInjector $viewParametersInjector - * @param string $defaultTemplate - * @param \EzSystems\EzPlatformContentForms\Form\ActionDispatcher\ActionDispatcherInterface $contentActionDispatcher - * @param \eZ\Publish\Core\MVC\Symfony\Locale\UserLanguagePreferenceProviderInterface $languagePreferenceProvider - */ + /** @var \eZ\Publish\Core\MVC\ConfigResolverInterface */ + private $configResolver; + public function __construct( Repository $repository, Configurator $viewConfigurator, ParametersInjector $viewParametersInjector, - string $defaultTemplate, ActionDispatcherInterface $contentActionDispatcher, - UserLanguagePreferenceProviderInterface $languagePreferenceProvider + UserLanguagePreferenceProviderInterface $languagePreferenceProvider, + ConfigResolverInterface $configResolver ) { $this->repository = $repository; $this->viewConfigurator = $viewConfigurator; $this->viewParametersInjector = $viewParametersInjector; - $this->defaultTemplate = $defaultTemplate; $this->contentActionDispatcher = $contentActionDispatcher; $this->languagePreferenceProvider = $languagePreferenceProvider; + $this->configResolver = $configResolver; } public function matches($argument) @@ -90,8 +83,7 @@ public function matches($argument) */ public function buildView(array $parameters) { - // @todo improve default templates injection - $view = new ContentEditView($this->defaultTemplate); + $view = new ContentEditView($this->configResolver->getParameter('content_edit.templates.edit')); $language = $this->resolveLanguage($parameters); $location = $this->resolveLocation($parameters); From d683943fc7c362e1dbd47cf6b9b9fc10a959b2c2 Mon Sep 17 00:00:00 2001 From: Maciej Kobus Date: Wed, 1 Apr 2020 23:03:30 +0200 Subject: [PATCH 3/5] EZP-30543: Removed Dynamic Settings use in ContentCreateViewBuilder --- src/bundle/Resources/config/views.yaml | 1 - .../View/Builder/ContentCreateViewBuilder.php | 24 +++++++------------ 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/bundle/Resources/config/views.yaml b/src/bundle/Resources/config/views.yaml index b13f9862..440c407b 100644 --- a/src/bundle/Resources/config/views.yaml +++ b/src/bundle/Resources/config/views.yaml @@ -40,7 +40,6 @@ services: - '@ezpublish.api.repository' - '@ezpublish.view.configurator' - '@ezpublish.view.view_parameters.injector.dispatcher' - - '$content_edit.templates.create$' - '@ezplatform.content_forms.action_dispatcher.content' EzSystems\EzPlatformContentForms\Content\View\Provider\ContentCreateView\Configured: diff --git a/src/lib/Content/View/Builder/ContentCreateViewBuilder.php b/src/lib/Content/View/Builder/ContentCreateViewBuilder.php index 6b28acaa..fd691e69 100644 --- a/src/lib/Content/View/Builder/ContentCreateViewBuilder.php +++ b/src/lib/Content/View/Builder/ContentCreateViewBuilder.php @@ -13,6 +13,7 @@ use eZ\Publish\API\Repository\Values\Content\Location; use eZ\Publish\API\Repository\Values\ContentType\ContentType; use eZ\Publish\Core\Base\Exceptions\InvalidArgumentException; +use eZ\Publish\Core\MVC\ConfigResolverInterface; use eZ\Publish\Core\MVC\Symfony\Locale\UserLanguagePreferenceProviderInterface; use eZ\Publish\Core\MVC\Symfony\View\Builder\ViewBuilder; use eZ\Publish\Core\MVC\Symfony\View\Configurator; @@ -37,37 +38,29 @@ class ContentCreateViewBuilder implements ViewBuilder /** @var \eZ\Publish\Core\MVC\Symfony\View\ParametersInjector */ private $viewParametersInjector; - /** @var string */ - private $defaultTemplate; - /** @var ActionDispatcherInterface */ private $contentActionDispatcher; /** @var \eZ\Publish\Core\MVC\Symfony\Locale\UserLanguagePreferenceProviderInterface */ private $languagePreferenceProvider; - /** - * @param \eZ\Publish\API\Repository\Repository $repository - * @param \eZ\Publish\Core\MVC\Symfony\View\Configurator $viewConfigurator - * @param \eZ\Publish\Core\MVC\Symfony\View\ParametersInjector $viewParametersInjector - * @param $defaultTemplate - * @param \EzSystems\EzPlatformContentForms\Form\ActionDispatcher\ActionDispatcherInterface $contentActionDispatcher - * @param \eZ\Publish\Core\MVC\Symfony\Locale\UserLanguagePreferenceProviderInterface $languagePreferenceProvider - */ + /** @var \eZ\Publish\Core\MVC\ConfigResolverInterface */ + private $configResolver; + public function __construct( Repository $repository, Configurator $viewConfigurator, ParametersInjector $viewParametersInjector, - $defaultTemplate, ActionDispatcherInterface $contentActionDispatcher, - UserLanguagePreferenceProviderInterface $languagePreferenceProvider + UserLanguagePreferenceProviderInterface $languagePreferenceProvider, + ConfigResolverInterface $configResolver ) { $this->repository = $repository; $this->viewConfigurator = $viewConfigurator; $this->viewParametersInjector = $viewParametersInjector; - $this->defaultTemplate = $defaultTemplate; $this->contentActionDispatcher = $contentActionDispatcher; $this->languagePreferenceProvider = $languagePreferenceProvider; + $this->configResolver = $configResolver; } public function matches($argument) @@ -86,8 +79,7 @@ public function matches($argument) */ public function buildView(array $parameters) { - // @todo improve default templates injection - $view = new ContentCreateView($this->defaultTemplate); + $view = new ContentCreateView($this->configResolver->getParameter('content_edit.templates.create')); $language = $this->resolveLanguage($parameters); $location = $this->resolveLocation($parameters); From 23942a675317b6db2e84127daa6131b51eb20706 Mon Sep 17 00:00:00 2001 From: Maciej Kobus Date: Thu, 2 Apr 2020 00:36:57 +0200 Subject: [PATCH 4/5] EZP-30543: Removed Dynamic Settings use in View Matcher Factories --- src/bundle/Resources/config/views.yaml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/bundle/Resources/config/views.yaml b/src/bundle/Resources/config/views.yaml index 440c407b..18626cd4 100644 --- a/src/bundle/Resources/config/views.yaml +++ b/src/bundle/Resources/config/views.yaml @@ -24,8 +24,14 @@ services: - '@eZ\Bundle\EzPublishCoreBundle\Matcher\ViewMatcherRegistry' - '@ezpublish.api.repository' - 'eZ\Publish\Core\MVC\Symfony\Matcher\ContentBased' - calls: - - [setMatchConfig, ['$content_edit_view$']] + + ezplatform.repository_forms.content_edit_view.matcher_factory.dynamically_configured: + class: eZ\Publish\Core\MVC\Symfony\Matcher\DynamicallyConfiguredMatcherFactoryDecorator + decorates: ezplatform.repository_forms.content_edit_view.matcher_factory + arguments: + $innerConfigurableMatcherFactory: '@ezplatform.repository_forms.content_edit_view.matcher_factory.dynamically_configured.inner' + $configResolver: '@ezpublish.config.resolver' + $parameterName: content_edit_view EzSystems\EzPlatformContentForms\Content\View\Filter\ContentEditViewFilter: arguments: @@ -54,8 +60,14 @@ services: - '@eZ\Bundle\EzPublishCoreBundle\Matcher\ViewMatcherRegistry' - '@ezpublish.api.repository' - 'eZ\Publish\Core\MVC\Symfony\Matcher\ContentBased' - calls: - - [setMatchConfig, ['$content_create_view$']] + + ezplatform.repository_forms.content_create_view.matcher_factory.dynamically_configured: + class: eZ\Publish\Core\MVC\Symfony\Matcher\DynamicallyConfiguredMatcherFactoryDecorator + decorates: ezplatform.repository_forms.content_create_view.matcher_factory + arguments: + $innerConfigurableMatcherFactory: '@ezplatform.repository_forms.content_create_view.matcher_factory.dynamically_configured.inner' + $configResolver: '@ezpublish.config.resolver' + $parameterName: content_create_view EzSystems\EzPlatformContentForms\Content\View\Filter\ContentCreateViewFilter: arguments: From bceb0884e6359ea1e6d841c63917b038ce5a3693 Mon Sep 17 00:00:00 2001 From: Maciej Kobus Date: Thu, 2 Apr 2020 00:58:50 +0200 Subject: [PATCH 5/5] Added missing argument for ezplatform.content_forms.view_templates_listener --- src/bundle/Resources/config/services.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bundle/Resources/config/services.yaml b/src/bundle/Resources/config/services.yaml index 533c7848..ad98d322 100644 --- a/src/bundle/Resources/config/services.yaml +++ b/src/bundle/Resources/config/services.yaml @@ -143,6 +143,8 @@ services: ezplatform.content_forms.view_templates_listener: class: "%ezplatform.content_forms.view_templates_listener.class%" + arguments: + $configResolver: '@ezpublish.config.resolver' tags: - { name: kernel.event_subscriber }