diff --git a/src/Bundle/ChillCalendarBundle/Menu/UserMenuBuilder.php b/src/Bundle/ChillCalendarBundle/Menu/UserMenuBuilder.php new file mode 100644 index 000000000..14e775234 --- /dev/null +++ b/src/Bundle/ChillCalendarBundle/Menu/UserMenuBuilder.php @@ -0,0 +1,94 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +namespace Chill\CalendarBundle\Menu; + +use Chill\MainBundle\Routing\LocalMenuBuilderInterface; +use Knp\Menu\MenuItem; +use Chill\TaskBundle\Templating\UI\CountNotificationTask; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; + + +/** + * + * @author Champs-Libres + */ +class UserMenuBuilder implements LocalMenuBuilderInterface +{ + + /** + * + * @var CountNotificationTask + */ + public $counter; + + /* + * @var TokenStorageInterface + */ + public $tokenStorage; + + /** + * + * @var TranslatorInterface + */ + public $translator; + + /** + * + * @var AuthorizationCheckerInterface + */ + public $authorizationChecker; + + public function __construct( + CountNotificationTask $counter, + TokenStorageInterface $tokenStorage, + TranslatorInterface $translator, + AuthorizationCheckerInterface $authorizationChecker + ) { + $this->counter = $counter; + $this->tokenStorage = $tokenStorage; + $this->translator = $translator; + $this->authorizationChecker = $authorizationChecker; + } + + + public function buildMenu($menuId, MenuItem $menu, array $parameters) + { + $user = $this->tokenStorage->getToken()->getUser(); + + if ($this->authorizationChecker->isGranted('ROLE_USER')){ + $menu->addChild("My calendar list", [ + 'route' => 'chill_calendar_calendar_list', + 'routeParameters' => [ + 'user_id' => $user->getId(), + ] + ]) + ->setExtras([ + 'order' => 9, + 'icon' => 'tasks' + ]); + } + } + + public static function getMenuIds(): array + { + return [ 'user' ]; + } + +}