Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EZP-30543: Removed Dynamic Settings functionality from kernel #20

Merged
merged 5 commits into from
Apr 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions src/bundle/Resources/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,9 @@ 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 }
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: ~
22 changes: 16 additions & 6 deletions src/bundle/Resources/config/views.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -25,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:
Expand All @@ -41,7 +46,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:
Expand All @@ -56,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:
Expand Down
24 changes: 8 additions & 16 deletions src/lib/Content/View/Builder/ContentCreateViewBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand All @@ -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);
Expand Down
24 changes: 8 additions & 16 deletions src/lib/Content/View/Builder/ContentEditViewBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand All @@ -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);
Expand Down
65 changes: 28 additions & 37 deletions src/lib/EventListener/ViewTemplatesListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,69 +8,60 @@

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;

/**
* Sets the templates used by the user controller.
*/
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'),
];
}
}