public function createTranslationLocaleMenu(MenuEvent $event) { $translation = $this->createRootItem(); $event->getMenu()->addChild($translation); if (!$this->isRequestTranslatable()) { return; } $this->populateTranslationLocaleMenu($translation); }
/** * @param MenuEvent $event * @return Item * @throws InvalidYamlStructureException */ public function createMainMenu(MenuEvent $event) { $config = $this->yaml->parse(file_get_contents($this->configFilePath), true, true); if (!isset($config['menu'])) { throw new InvalidYamlStructureException(sprintf('File "%s" should contain top level "menu:" key', $this->configFilePath)); } $menu = $event->getMenu(); $menu->setOptions(array('attr' => array('id' => 'top-menu', 'class' => 'nav navbar-nav'))); $this->populateMenu($menu, $config['menu']); return $menu; }
public function createAccountMenu(MenuEvent $event) { $rootItem = $this->createRootItem(); $changePasswordItem = new RoutableItem('account.change-password', 'fsi_admin_change_password'); $changePasswordItem->setLabel($this->translator->trans('admin.change_password', array(), 'FSiAdminSecurity')); $rootItem->addChild($changePasswordItem); $logoutItem = new RoutableItem('account.logout', 'fsi_admin_security_user_logout'); $logoutItem->setLabel($this->translator->trans('admin.logout', array(), 'FSiAdminSecurity')); $rootItem->addChild($logoutItem); $event->getMenu()->addChild($rootItem); return $event->getMenu(); }
function it_creates_empty_locales_menu_for_non_translatable_elements(MenuEvent $menuEvent, Request $request) { $menuItem = new Item(); $menuEvent->getMenu()->willReturn($menuItem); $request->get('_route_params')->willReturn(array('element' => 'news')); $this->createTranslationLocaleMenu($menuEvent); $rootItem = $menuItem->getChildren(); $translationLocale = $rootItem['translation-locale']; expect($translationLocale->getLabel())->toBe('Menu label'); expect($translationLocale->getOption('attr'))->toHaveOption('id', 'translatable-switcher'); expect($translationLocale->getChildren())->toBe(array()); }
public function createLocaleMenu(MenuEvent $event) { if (count($this->locales) < 2) { return; } $language = new Item('admin-locale'); $language->setLabel($this->translator->trans('admin.language.current', array('%locale%' => $this->getLanguageName()), 'FSiAdminBundle')); $language->setOptions(array('attr' => array('id' => 'language'))); foreach ($this->locales as $locale) { $localeItem = new RoutableItem(sprintf('admin-locale.%s', $locale), 'fsi_admin_locale', array('_locale' => $locale, 'redirect_uri' => $this->requestStack->getMasterRequest()->getUri())); $localeItem->setLabel($this->getLanguageName($locale)); if ($locale === $this->getCurrentLocale()) { $localeItem->setOptions(array('attr' => array('class' => 'active'))); } $language->addChild($localeItem); } $event->getMenu()->addChild($language); }
/** * @param \FSi\Bundle\AdminBundle\Event\MenuEvent $event * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $menu * @param \FSi\Bundle\AdminBundle\Menu\Item\ElementItem $childItem1 * @param \FSi\Bundle\AdminBundle\Menu\Item\RoutableItem $childItem2 * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem3 * @param \FSi\Bundle\AdminBundle\Menu\Item\RoutableItem $childItem31 * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem4 * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem41 * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem411 */ public function it_remove_empty_menus($event, $menu, $childItem1, $childItem2, $childItem3, $childItem31, $childItem4, $childItem41, $childItem411) { $event->getMenu()->willReturn($menu); $menu->hasChildren()->willReturn(true); $childItem3->getName()->willReturn('item3'); $childItem3->hasChildren()->willReturn(true); $childItem3->getChildren()->willReturn([$childItem31]); $childItem4->getName()->willReturn('item4'); $childItem4->hasChildren()->willReturn(false); //after cleanup of item41 $childItem4->getChildren()->willReturn([$childItem41]); $menu->removeChild('item4')->shouldBeCalled(); $childItem41->getName()->willReturn('item41'); $childItem41->hasChildren()->willReturn(false); //after cleanup of item411 $childItem41->getChildren()->willReturn([$childItem411]); $childItem411->getName()->willReturn('item411'); $childItem411->hasChildren()->willReturn(false); $menu->getChildren()->willReturn([$childItem1, $childItem2, $childItem3, $childItem4]); $this->cleanUpMenu($event); }
/** * @param \FSi\Bundle\AdminBundle\Event\MenuEvent $event * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack * @param \Symfony\Component\HttpFoundation\Request $request */ function it_should_build_locale_menu($event, $requestStack, $request) { $menu = new Item(); $event->getMenu()->willReturn($menu); $requestStack->getMasterRequest()->willReturn($request); $request->getLocale()->willReturn('de'); $request->getUri()->willReturn('uri_to_redirect_to'); $this->createLocaleMenu($event); $rootItem = $menu->getChildren()['admin-locale']; $localeItems = $rootItem->getChildren(); $enItem = $localeItems['admin-locale.en']; $deItem = $localeItems['admin-locale.de']; expect($enItem->getLabel())->toBe('Englisch'); expect($enItem->getRoute())->toBe('fsi_admin_locale'); expect($enItem->getRouteParameters())->toBe(array('_locale' => 'en', 'redirect_uri' => 'uri_to_redirect_to')); expect($enItem->getOptions())->toBe(array('attr' => array('id' => null, 'class' => null))); expect($deItem->getLabel())->toBe('Deutsch'); expect($deItem->getRoute())->toBe('fsi_admin_locale'); expect($deItem->getRouteParameters())->toBe(array('_locale' => 'de', 'redirect_uri' => 'uri_to_redirect_to')); expect($deItem->getOptions())->toBe(array('attr' => array('id' => null, 'class' => 'active'))); }
public function cleanUpMenu(MenuEvent $event) { $this->cleanMenuLevel($event->getMenu()); }