vendor/ibexa/segmentation/src/lib/Event/Subscriber/ConfigureMainMenuListener.php line 37

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\Segmentation\Event\Subscriber;
  8. use Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent;
  9. use Ibexa\AdminUi\Menu\MainMenuBuilder;
  10. use Ibexa\AdminUi\Menu\MenuItemFactory;
  11. use JMS\TranslationBundle\Model\Message;
  12. use JMS\TranslationBundle\Translation\TranslationContainerInterface;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. class ConfigureMainMenuListener implements EventSubscriberInterfaceTranslationContainerInterface
  15. {
  16.     public const ITEM_ADMIN_SEGMENTS 'main__admin__segments';
  17.     /** @var \Ibexa\AdminUi\Menu\MenuItemFactory */
  18.     private $menuItemFactory;
  19.     /**
  20.      * @param \Ibexa\AdminUi\Menu\MenuItemFactory $menuItemFactory
  21.      */
  22.     public function __construct(
  23.         MenuItemFactory $menuItemFactory
  24.     ) {
  25.         $this->menuItemFactory $menuItemFactory;
  26.     }
  27.     /**
  28.      * @param \Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent $event
  29.      */
  30.     public function onMenuConfigure(ConfigureMenuEvent $event): void
  31.     {
  32.         $menu $event->getMenu();
  33.         if (!$adminMenu $menu->getChild(MainMenuBuilder::ITEM_ADMIN)) {
  34.             return;
  35.         }
  36.         $adminMenu->addChild($this->menuItemFactory->createItem(
  37.             self::ITEM_ADMIN_SEGMENTS,
  38.             [
  39.                 'route' => 'ibexa.segmentation.group.list',
  40.                 'extras' => [
  41.                     'routes' => [
  42.                         'segment_group_view' => 'ibexa.segmentation.group.view',
  43.                         'segment_group_create' => 'ibexa.segmentation.group.create',
  44.                         'segment_group_update' => 'ibexa.segmentation.group.update',
  45.                         'segment_group_delete' => 'ibexa.segmentation.group.delete',
  46.                         'segment_group_bulk_delete' => 'ibexa.segmentation.group.bulk_delete',
  47.                         'segment_create' => 'ibexa.segmentation.segment.create',
  48.                         'segment_update' => 'ibexa.segmentation.segment.update',
  49.                         'segment_bulk_delete' => 'ibexa.segmentation.segment.bulk_delete',
  50.                     ],
  51.                     'orderNumber' => 50,
  52.                 ],
  53.             ]
  54.         ));
  55.     }
  56.     public static function getSubscribedEvents(): array
  57.     {
  58.         return [
  59.             ConfigureMenuEvent::MAIN_MENU => 'onMenuConfigure',
  60.         ];
  61.     }
  62.     /**
  63.      * {@inheritdoc}
  64.      */
  65.     public static function getTranslationMessages(): array
  66.     {
  67.         return [
  68.             (new Message(self::ITEM_ADMIN_SEGMENTS'ibexa_menu'))->setDesc('Segments'),
  69.         ];
  70.     }
  71. }
  72. class_alias(ConfigureMainMenuListener::class, 'Ibexa\Platform\Segmentation\Event\Subscriber\ConfigureMainMenuListener');