public function createTranslationLocaleMenu(MenuEvent $event)
 {
     $translation = $this->createRootItem();
     $event->getMenu()->addChild($translation);
     if (!$this->isRequestTranslatable()) {
         return;
     }
     $this->populateTranslationLocaleMenu($translation);
 }
Ejemplo n.º 2
0
 /**
  * @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());
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 /**
  * @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);
 }
Ejemplo n.º 7
0
 /**
  * @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')));
 }
Ejemplo n.º 8
0
 public function cleanUpMenu(MenuEvent $event)
 {
     $this->cleanMenuLevel($event->getMenu());
 }