vendor/ibexa/connector-ai/src/bundle/EventSubscriber/Menu/MainMenuSubscriber.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\Bundle\ConnectorAi\EventSubscriber\Menu;
  8. use Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent;
  9. use Ibexa\AdminUi\Menu\MainMenuBuilder;
  10. use Ibexa\ConnectorAi\Permission\PolicyProvider;
  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. final class MainMenuSubscriber implements EventSubscriberInterface, TranslationContainerInterface
  16. {
  17. public const ITEM_ACTION_CONFIGURATION_LIST = 'main__action_configuration_list';
  18. private PermissionResolver $permissionResolver;
  19. public function __construct(PermissionResolver $permissionResolver)
  20. {
  21. $this->permissionResolver = $permissionResolver;
  22. }
  23. public static function getSubscribedEvents(): array
  24. {
  25. return [
  26. ConfigureMenuEvent::MAIN_MENU => ['onConfigureMainMenu'],
  27. ];
  28. }
  29. public function onConfigureMainMenu(ConfigureMenuEvent $event): void
  30. {
  31. $menu = $event->getMenu();
  32. $adminMenu = $menu->getChild(MainMenuBuilder::ITEM_ADMIN);
  33. if ($adminMenu === null) {
  34. return;
  35. }
  36. if ($this->permissionResolver->hasAccess(PolicyProvider::MODULE_ACTION_CONFIGURATION, 'view') === false) {
  37. return;
  38. }
  39. $adminMenu->addChild(self::ITEM_ACTION_CONFIGURATION_LIST, [
  40. 'route' => 'ibexa.connector_ai.action_configuration.list',
  41. 'extras' => [
  42. 'orderNumber' => 90,
  43. 'routes' => [
  44. 'update' => 'ibexa.connector_ai.action_configuration.update',
  45. 'view' => 'ibexa.connector_ai.action_configuration.view',
  46. 'create' => 'ibexa.connector_ai.action_configuration.create',
  47. ],
  48. ],
  49. ]);
  50. }
  51. public static function getTranslationMessages(): array
  52. {
  53. return [
  54. (new Message(self::ITEM_ACTION_CONFIGURATION_LIST, 'ibexa_menu'))->setDesc('AI actions'),
  55. ];
  56. }
  57. }