예제 #1
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);
 }
예제 #2
0
 private function populateMenu(Item $menu, array $configs)
 {
     foreach ($configs as $itemConfig) {
         $item = $this->buildSingleItem($itemConfig);
         if (null !== $item) {
             $options = array('attr' => array('class' => 'admin-element'));
             $options['elements'] = $this->buildItemElements($itemConfig);
             $item->setOptions($options);
         }
         if (null === $item) {
             if ($this->isSingleItem($itemConfig)) {
                 continue;
             }
             $item = new Item(key($itemConfig));
             $group = array_values($itemConfig);
             $this->populateMenu($item, $group[0]);
         }
         $menu->addChild($item);
     }
 }
 private function populateTranslationLocaleMenu(Item $menu)
 {
     $requestParameters = $this->getRequestParameters();
     $route = $this->request->get('_route');
     $languageBundle = Intl::getLanguageBundle();
     if (isset($requestParameters['redirect_uri'])) {
         $redirectRequest = $this->createRedirectRequest($requestParameters['redirect_uri']);
     }
     foreach ($this->localeManager->getLocales() as $locale) {
         $requestParameters['locale'] = $locale;
         if (isset($redirectRequest)) {
             try {
                 $requestParameters['redirect_uri'] = $this->generateRequestUriForLocale($redirectRequest, $locale);
             } catch (ResourceNotFoundException $e) {
             }
         }
         $localeItem = new RoutableItem(sprintf('translation-locale.%s', $locale), $route, $requestParameters);
         $localeItem->setLabel($languageBundle->getLanguageName($locale, null, $this->request->getLocale()));
         $menu->addChild($localeItem);
     }
 }