vendor/kunstmaan/pagepart-bundle/EventListener/NodeListener.php line 62

Open in your IDE?
  1. <?php
  2. namespace Kunstmaan\PagePartBundle\EventListener;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Kunstmaan\AdminBundle\Helper\FormWidgets\ListWidget;
  5. use Kunstmaan\AdminBundle\Helper\FormWidgets\Tabs\Tab;
  6. use Kunstmaan\NodeBundle\Event\AdaptFormEvent;
  7. use Kunstmaan\PagePartBundle\Helper\FormWidgets\PagePartWidget;
  8. use Kunstmaan\PagePartBundle\Helper\FormWidgets\PageTemplateWidget;
  9. use Kunstmaan\PagePartBundle\Helper\HasPagePartsInterface;
  10. use Kunstmaan\PagePartBundle\Helper\HasPageTemplateInterface;
  11. use Kunstmaan\PagePartBundle\PagePartAdmin\PagePartAdminFactory;
  12. use Kunstmaan\PagePartBundle\PagePartConfigurationReader\PagePartConfigurationReaderInterface;
  13. use Kunstmaan\PagePartBundle\PageTemplate\PageTemplateConfigurationReaderInterface;
  14. use Kunstmaan\PagePartBundle\PageTemplate\PageTemplateConfigurationService;
  15. /**
  16.  * NodeListener
  17.  */
  18. class NodeListener
  19. {
  20.     /**
  21.      * @var EntityManagerInterface
  22.      */
  23.     private $em;
  24.     /**
  25.      * @var PagePartAdminFactory
  26.      */
  27.     private $pagePartAdminFactory;
  28.     /**
  29.      * @var PageTemplateConfigurationReaderInterface
  30.      */
  31.     private $templateReader;
  32.     /**
  33.      * @var PagePartConfigurationReaderInterface
  34.      */
  35.     private $pagePartReader;
  36.     /**
  37.      * @var PageTemplateConfigurationService
  38.      */
  39.     private $pageTemplateConfiguratiorService;
  40.     public function __construct(
  41.         EntityManagerInterface $em,
  42.         PagePartAdminFactory $pagePartAdminFactory,
  43.         PageTemplateConfigurationReaderInterface $templateReader,
  44.         PagePartConfigurationReaderInterface $pagePartReader,
  45.         PageTemplateConfigurationService $pageTemplateConfiguratiorService,
  46.     ) {
  47.         $this->em $em;
  48.         $this->pagePartAdminFactory $pagePartAdminFactory;
  49.         $this->templateReader $templateReader;
  50.         $this->pagePartReader $pagePartReader;
  51.         $this->pageTemplateConfiguratiorService $pageTemplateConfiguratiorService;
  52.     }
  53.     public function adaptForm(AdaptFormEvent $event)
  54.     {
  55.         $page $event->getPage();
  56.         $tabPane $event->getTabPane();
  57.         if ($page instanceof HasPageTemplateInterface) {
  58.             $pageTemplateWidget = new PageTemplateWidget($page$event->getRequest(), $this->em$this->pagePartAdminFactory$this->templateReader$this->pagePartReader$this->pageTemplateConfiguratiorService);
  59.             /* @var Tab $propertiesTab */
  60.             $propertiesTab $tabPane->getTabByTitle('kuma_node.tab.properties.title');
  61.             if (!\is_null($propertiesTab)) {
  62.                 $propertiesWidget $propertiesTab->getWidget();
  63.                 $tabPane->removeTab($propertiesTab);
  64.                 $tabPane->addTab(new Tab('kuma_pagepart.tab.content.title', new ListWidget([$propertiesWidget$pageTemplateWidget])), 0);
  65.             } else {
  66.                 $tabPane->addTab(new Tab('kuma_pagepart.tab.content.title'$pageTemplateWidget), 0);
  67.             }
  68.         } elseif ($page instanceof HasPagePartsInterface) {
  69.             /* @var HasPagePartsInterface $page */
  70.             $pagePartAdminConfigurators $this->pagePartReader->getPagePartAdminConfigurators($page);
  71.             foreach ($pagePartAdminConfigurators as $index => $pagePartAdminConfiguration) {
  72.                 $pagePartWidget = new PagePartWidget($page$event->getRequest(), $this->em$pagePartAdminConfiguration$this->pagePartAdminFactory);
  73.                 if ($index == 0) {
  74.                     /* @var Tab $propertiesTab */
  75.                     $propertiesTab $tabPane->getTabByTitle('kuma_node.tab.properties.title');
  76.                     if (!\is_null($propertiesTab)) {
  77.                         $propertiesWidget $propertiesTab->getWidget();
  78.                         $tabPane->removeTab($propertiesTab);
  79.                         $tabPane->addTab(new Tab($pagePartAdminConfiguration->getName(), new ListWidget([$propertiesWidget$pagePartWidget])), 0);
  80.                         continue;
  81.                     }
  82.                 }
  83.                 $tabPane->addTab(new Tab($pagePartAdminConfiguration->getName(), $pagePartWidget), \count($tabPane->getTabs()));
  84.             }
  85.         }
  86.     }
  87. }