mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-10-31 09:19:08 +00:00 
			
		
		
		
	General menu optimation
This commit is contained in:
		| @@ -1,24 +1,27 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Subscriber; | ||||
|  | ||||
| use App\Event\Menu\Topbar\UserMenuEvent; | ||||
| use Symfony\Component\EventDispatcher\EventSubscriberInterface; | ||||
| use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; | ||||
| use Symfony\Component\Translation\TranslatorInterface; | ||||
| use Knp\Menu\ItemInterface; | ||||
|  | ||||
| class UserMenuSubscriber implements EventSubscriberInterface | ||||
| { | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @var TokenStorageInterface | ||||
|      */ | ||||
|     private $tokenStorage; | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @var TranslatorInterface | ||||
|      */ | ||||
|     private $translator; | ||||
|  | ||||
|      | ||||
|     public function __construct(TokenStorageInterface $tokenStorage, TranslatorInterface $translator) | ||||
|     { | ||||
|         $this->tokenStorage = $tokenStorage; | ||||
| @@ -31,64 +34,64 @@ class UserMenuSubscriber implements EventSubscriberInterface | ||||
|         $menu->addChild('start', [ | ||||
|             'route' => 'homepage', | ||||
|             'attributes' => [ | ||||
|                 'icon' => 'fab fa-font-awesome-flag', | ||||
|             ], | ||||
|           ] | ||||
|         ); | ||||
|  | ||||
|         $menu->addChild( | ||||
|             'imprint', | ||||
|             [ | ||||
|                 'route' => 'imprint', | ||||
|                 'attributes' => [ | ||||
|                     'icon' => 'fas fa-address-card', | ||||
|                 ], | ||||
|                 'icon' => 'fab fa-font-awesome-flag' | ||||
|             ] | ||||
|         ); | ||||
|         ]); | ||||
|          | ||||
|         $menu->addChild('imprint', [ | ||||
|             'route' => 'imprint', | ||||
|             'attributes' => [ | ||||
|                 'icon' => 'fas fa-address-card' | ||||
|             ] | ||||
|         ]); | ||||
|         $this->generateUserDropdown($menu); | ||||
|     } | ||||
|  | ||||
|     private function generateUserDropdown(ItemInterface $menu): void | ||||
|     { | ||||
|         $dropdown = $menu->addChild($this->tokenStorage->getToken() | ||||
|             ->getUsername() ?? 'user', [ | ||||
|             'attributes' => [ | ||||
|                 'dropdown' => true, | ||||
|                 'icon' => 'fas fa-user', | ||||
|             ], | ||||
|                 'icon' => 'fas fa-user' | ||||
|             ] | ||||
|         ]); | ||||
|         if ($this->tokenStorage->getToken()->getRoles()) { | ||||
|             $dropdown->addChild('logout', [ | ||||
|                 'route' => 'logout', | ||||
|                 'attributes' => [ | ||||
|                     'icon' => 'fas fa-sign-out-alt', | ||||
|                     'divider_append' => true, | ||||
|                 ], | ||||
|                     'divider_append' => true | ||||
|                 ] | ||||
|             ]); | ||||
|             $dropdown->addChild('edit profile', [ | ||||
|                 'route' => 'fos_user_profile_edit', | ||||
|                 'attributes' => [ | ||||
|                     'icon' => 'fas fa-user-edit', | ||||
|                     'divider_append' => true, | ||||
|                 ], | ||||
|                     'divider_append' => true | ||||
|                 ] | ||||
|             ]); | ||||
|         } else { | ||||
|             $dropdown->addChild('login', [ | ||||
|                 'route' => 'fos_user_security_login', | ||||
|                 'attributes' => [ | ||||
|                     'divider_append' => true, | ||||
|                     'icon' => 'fas fa-sign-in-alt', | ||||
|                 ], | ||||
|                     'icon' => 'fas fa-sign-in-alt' | ||||
|                 ] | ||||
|             ]); | ||||
|         } | ||||
|         $dropdown->addChild('register', [ | ||||
|             'route' => 'fos_user_registration_register', | ||||
|             'attributes' => [ | ||||
|                 'icon' => 'fas fa-file-signature', | ||||
|             ], | ||||
|                 'icon' => 'fas fa-file-signature' | ||||
|             ] | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     public static function getSubscribedEvents(): array | ||||
|     { | ||||
|         return [ | ||||
|             UserMenuEvent::EVENT => 'onUserMenuConfigure', | ||||
|             UserMenuEvent::EVENT => 'onUserMenuConfigure' | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| {% extends "base.html.twig" %} | ||||
| {% block body %} | ||||
| {% include 'frames/structure/navbar.html.twig'%} | ||||
| {% include 'frames/structure/navbar/navbar_top.html.twig'%} | ||||
| <br /> | ||||
| <div class="container"> | ||||
| 	{% include 'frames/structure/message/flash_messages.html.twig'%} | ||||
|   | ||||
| @@ -7,6 +7,6 @@ | ||||
| 		<span class="navbar-toggler-icon"></span> | ||||
| 	</button> | ||||
| 	<div class="collapse navbar-collapse" id="navbarSupportedContent"> | ||||
| 		{{ knp_menu_render('userTopbar', {'currentClass': 'active', 'template': 'frames/structure/knp_menu.html.twig'}) }} | ||||
| 		{{ knp_menu_render('userTopbar', {'currentClass': 'active', 'template': 'frames/structure/navbar/knp_menu.html.twig'}) }} | ||||
| 	</div> | ||||
| </nav> | ||||
		Reference in New Issue
	
	Block a user