vendor/ibexa/content-forms/src/lib/EventListener/ViewTemplatesListener.php line 42

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\ContentForms\EventListener;
  8. use Ibexa\ContentForms\Content\View\ContentCreateDraftView;
  9. use Ibexa\ContentForms\User;
  10. use Ibexa\ContentForms\User\View\UserCreateView;
  11. use Ibexa\ContentForms\User\View\UserUpdateView;
  12. use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface;
  13. use Ibexa\Core\MVC\Symfony\Event\PreContentViewEvent;
  14. use Ibexa\Core\MVC\Symfony\MVCEvents;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. /**
  17.  * Sets the templates used by the user controller.
  18.  */
  19. class ViewTemplatesListener implements EventSubscriberInterface
  20. {
  21.     /** @var \Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface */
  22.     private $configResolver;
  23.     public function __construct(ConfigResolverInterface $configResolver)
  24.     {
  25.         $this->configResolver $configResolver;
  26.     }
  27.     public static function getSubscribedEvents()
  28.     {
  29.         return [MVCEvents::PRE_CONTENT_VIEW => 'setViewTemplates'];
  30.     }
  31.     /**
  32.      * If the event's view has a defined template, sets the view's template identifier,
  33.      * and the 'pagelayout' parameter.
  34.      */
  35.     public function setViewTemplates(PreContentViewEvent $event): void
  36.     {
  37.         $view $event->getContentView();
  38.         $pagelayout $this->configResolver->getParameter('pagelayout');
  39.         foreach ($this->getTemplatesMap() as $viewClass => $template) {
  40.             if ($view instanceof $viewClass) {
  41.                 $view->setTemplateIdentifier($template);
  42.                 $view->addParameters(['pagelayout' => $pagelayout]);
  43.                 $view->addParameters(['page_layout' => $pagelayout]);
  44.             }
  45.         }
  46.     }
  47.     /**
  48.      * @return string[]
  49.      */
  50.     private function getTemplatesMap(): array
  51.     {
  52.         return [
  53.             UserCreateView::class => $this->configResolver->getParameter('user_edit.templates.create'),
  54.             UserUpdateView::class => $this->configResolver->getParameter('user_edit.templates.update'),
  55.             ContentCreateDraftView::class => $this->configResolver->getParameter('content_edit.templates.create_draft'),
  56.         ];
  57.     }
  58. }
  59. class_alias(ViewTemplatesListener::class, 'EzSystems\EzPlatformContentForms\EventListener\ViewTemplatesListener');