diff --git a/config/services.yaml b/config/services.yaml index 83ea8197..d00df647 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -181,14 +181,6 @@ services: method: createMainMenu alias: admin_main - App\Menu\GroupsMenuBuilder: - arguments: - $factory: '@knp_menu.factory' - tags: - - name: knp_menu.menu_builder - method: createMainMenu - alias: groups_main - App\Service\BpnXmlSyncManager: arguments: $xmlSource: '@xml_source.storage' diff --git a/src/Menu/AbstractMenuBuilder.php b/src/Menu/AbstractMenuBuilder.php deleted file mode 100644 index aeffb78b..00000000 --- a/src/Menu/AbstractMenuBuilder.php +++ /dev/null @@ -1,137 +0,0 @@ -factory->createItem('root'); - } - - /** - * @return array - */ - protected function getDefaultRouteParameters(string $parameter = 'id', string $default = '0'): array - { - $request = $this->requestStack->getMainRequest(); - - return [ - $parameter => $request->get($parameter, $default), - 'r' => $request->get('r'), - ]; - } - - protected function addAdminItem(ItemInterface $menu): void - { - if ($this->security->isGranted(AdministrativeAccessVoter::ADMINISTRATIVE_ACCESS)) { - $this->addDivider($menu); - $menu->addChild('zum Adminbereich', [ - 'route' => 'app_admin_index', - 'linkAttributes' => [ - 'title' => 'zum Adminbereich', - ], - 'extras' => [ - 'icon' => 'user', - ], - ]); - } - } - - protected function addManagerItem(ItemInterface $menu): void - { - if ($this->security->isGranted('ROLE_MANAGER')) { - $this->addDivider($menu); - $menu->addChild('zum Managementbereich', [ - 'route' => 'app_manager_index', - 'linkAttributes' => [ - 'title' => 'zum Managementbereich', - ], - 'extras' => [ - 'icon' => 'user', - ], - ]); - } - } - - protected function addTeamerItem(ItemInterface $menu): void - { - if ($this->security->isGranted('ROLE_TEAMER')) { - $this->addDivider($menu); - $menu->addChild('zum Teambereich', [ - 'route' => 'app_teamer_index', - 'linkAttributes' => [ - 'title' => 'zum Teambereich', - ], - 'extras' => [ - 'icon' => 'user', - ], - ]); - } - } - - protected function addHouseManagerItem(ItemInterface $menu): void - { - if ($this->security->isGranted('ROLE_HOUSE_MANAGER')) { - $this->addDivider($menu); - $menu->addChild('zum Hausleitungsbereich', [ - 'route' => 'app_house_manager_index', - 'linkAttributes' => [ - 'title' => 'zum Hausleitungsbereich', - ], - 'extras' => [ - 'icon' => 'user', - ], - ]); - } - } - - protected function addLogoutItem(ItemInterface $menu): void - { - $this->addDivider($menu); - - $menu->addChild('MyE&P', [ - 'route' => 'app_account', - 'linkAttributes' => [ - 'title' => 'zu MyE&P', - ], - 'extras' => [ - 'icon' => 'logout', - ], - ]); - $menu->addChild('Logout', [ - 'route' => 'app_logout', - 'linkAttributes' => [ - 'title' => 'Logout', - ], - 'extras' => [ - 'icon' => 'logout', - ], - ]); - } - - protected function addDivider(ItemInterface $menu): void - { - $menu->addChild(Uuid::v4(), [ - 'extras' => [ - 'divider' => true, - ], - ]); - } -} diff --git a/src/Menu/AdminMenuBuilder.php b/src/Menu/AdminMenuBuilder.php index 89d7baf6..2a8f61bd 100644 --- a/src/Menu/AdminMenuBuilder.php +++ b/src/Menu/AdminMenuBuilder.php @@ -2,16 +2,25 @@ namespace App\Menu; +use Knp\Menu\FactoryInterface; use Knp\Menu\ItemInterface; +use Symfony\Bundle\SecurityBundle\Security; +use Symfony\Component\Uid\Uuid; -class AdminMenuBuilder extends AbstractMenuBuilder +class AdminMenuBuilder { + public function __construct( + private readonly FactoryInterface $factory, + private readonly Security $security, + ) { + } + /** * @param array $options */ public function createMainMenu(array $options): ItemInterface { - $menu = $this->createRootElement(); + $menu = $this->factory->createItem('root'); $menu->addChild('Dashboard', [ 'route' => 'app_admin_dashboard', @@ -35,7 +44,7 @@ class AdminMenuBuilder extends AbstractMenuBuilder ]); } - if ($this->security->isGranted('ROLE_GROUPS_ADMIN')) { + if ($this->security->isGranted('ROLE_GROUPS_MANAGER')) { $menu->addChild('Gruppenbuchungen', [ 'route' => 'app_admin_accommodationbooking', 'linkAttributes' => [ @@ -46,6 +55,8 @@ class AdminMenuBuilder extends AbstractMenuBuilder 'routes' => [['pattern' => '/^app_admin_accommodationbooking\//']], ], ]); + } + if ($this->security->isGranted('ROLE_GROUPS_ADMIN')) { $menu->addChild('Gruppenhäuser', [ 'route' => 'app_admin_accommodation', 'linkAttributes' => [ @@ -95,4 +106,37 @@ class AdminMenuBuilder extends AbstractMenuBuilder return $menu; } + + private function addLogoutItem(ItemInterface $menu): void + { + $this->addDivider($menu); + + $menu->addChild('MyE&P', [ + 'route' => 'app_account', + 'linkAttributes' => [ + 'title' => 'zu MyE&P', + ], + 'extras' => [ + 'icon' => 'logout', + ], + ]); + $menu->addChild('Logout', [ + 'route' => 'app_logout', + 'linkAttributes' => [ + 'title' => 'Logout', + ], + 'extras' => [ + 'icon' => 'logout', + ], + ]); + } + + private function addDivider(ItemInterface $menu): void + { + $menu->addChild(Uuid::v4(), [ + 'extras' => [ + 'divider' => true, + ], + ]); + } } diff --git a/src/Menu/GroupsMenuBuilder.php b/src/Menu/GroupsMenuBuilder.php deleted file mode 100644 index bb8e1fdb..00000000 --- a/src/Menu/GroupsMenuBuilder.php +++ /dev/null @@ -1,50 +0,0 @@ - $options - */ - public function createMainMenu(array $options): ItemInterface - { - $menu = $this->createRootElement(); - - $menu->addChild('Dashboard', [ - 'route' => 'app_admin_dashboard', - 'linkAttributes' => [ - 'title' => 'Dashboard', - ], - 'extras' => [ - 'icon' => 'chart', - ], - ]); - $menu->addChild('Gruppenbuchungen', [ - 'route' => 'app_admin_accommodationbooking', - 'linkAttributes' => [ - 'title' => 'Buchungen', - ], - 'extras' => [ - 'icon' => 'list', - 'routes' => [['pattern' => '/^app_admin_accommodationbooking\//']], - ], - ]); - $menu->addChild('Gruppenhäuser', [ - 'route' => 'app_admin_accommodation', - 'linkAttributes' => [ - 'title' => 'Gruppenhäuser', - ], - 'extras' => [ - 'icon' => 'house', - 'routes' => [['pattern' => '/^app_admin_accommodation\//']], - ], - ]); - - $this->addLogoutItem($menu); - - return $menu; - } -} diff --git a/templates/layout_admin.html.twig b/templates/layout_admin.html.twig index f3aac930..d87cec33 100644 --- a/templates/layout_admin.html.twig +++ b/templates/layout_admin.html.twig @@ -1,7 +1,6 @@ {% extends 'base_admin.html.twig' %} {% block body %} - {% set main_menu = is_granted('ROLE_ADMIN') ? 'admin_main' : 'groups_main' %}