vendor/ibexa/system-info/src/lib/EventListener/ConfigureMainMenuListener.php line 40

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\SystemInfo\EventListener;
  8. use Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent;
  9. use Ibexa\AdminUi\Menu\MainMenuBuilder;
  10. use Ibexa\AdminUi\Menu\MenuItemFactory;
  11. use Ibexa\Contracts\Core\Repository\PermissionResolver;
  12. use JMS\TranslationBundle\Model\Message;
  13. use JMS\TranslationBundle\Translation\TranslationContainerInterface;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. class ConfigureMainMenuListener implements EventSubscriberInterfaceTranslationContainerInterface
  16. {
  17.     public const ITEM_ADMIN__SYSTEMINFO 'main__admin__systeminfo';
  18.     /** @var \Ibexa\AdminUi\Menu\MenuItemFactory */
  19.     private $menuItemFactory;
  20.     /** @var \Ibexa\Contracts\Core\Repository\PermissionResolver */
  21.     private $permissionResolver;
  22.     public function __construct(
  23.         MenuItemFactory $menuItemFactory,
  24.         PermissionResolver $permissionResolver
  25.     ) {
  26.         $this->menuItemFactory $menuItemFactory;
  27.         $this->permissionResolver $permissionResolver;
  28.     }
  29.     /**
  30.      * @param \Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent $event
  31.      */
  32.     public function onMenuConfigure(ConfigureMenuEvent $event): void
  33.     {
  34.         $menu $event->getMenu();
  35.         if (!$this->permissionResolver->hasAccess('setup''system_info')) {
  36.             return;
  37.         }
  38.         $menu->getChild(MainMenuBuilder::ITEM_ADMIN)->addChild(
  39.             $this->menuItemFactory->createItem(
  40.                 self::ITEM_ADMIN__SYSTEMINFO,
  41.                 [
  42.                     'route' => 'ibexa.systeminfo',
  43.                     'extras' => [
  44.                         'orderNumber' => 80,
  45.                     ],
  46.                 ],
  47.             )
  48.         );
  49.     }
  50.     public static function getSubscribedEvents(): array
  51.     {
  52.         return [
  53.             ConfigureMenuEvent::MAIN_MENU => 'onMenuConfigure',
  54.         ];
  55.     }
  56.     /**
  57.      * {@inheritdoc}
  58.      */
  59.     public static function getTranslationMessages(): array
  60.     {
  61.         return [
  62.             (new Message(self::ITEM_ADMIN__SYSTEMINFO'ibexa_menu'))->setDesc('System information'),
  63.         ];
  64.     }
  65. }
  66. class_alias(ConfigureMainMenuListener::class, 'EzSystems\EzSupportTools\EventListener\ConfigureMainMenuListener');