/**
  * @return Item
  */
 private function createRootItem()
 {
     $translation = new Item('translation-locale');
     $translation->setLabel($this->translator->trans('admin.locale.dropdown.title', array('%locale%' => $this->localeManager->getLocale()), 'FSiAdminTranslatableBundle'));
     $translation->setOptions(array('attr' => array('id' => 'translatable-switcher')));
     return $translation;
 }
 /**
  * @param array $actionValues
  * @param \FSi\Bundle\AdminTranslatableBundle\Manager\LocaleManager $localeManager
  * @return mixed
  */
 private function setRouteLocale($actionValues, $localeManager)
 {
     if (in_array('locale', $this->getRouteVariables($actionValues['route_name']))) {
         $actionValues['additional_parameters']['locale'] = $localeManager->getLocale();
     }
     return $actionValues;
 }
 /**
  * {@inheritdoc}
  */
 public function matchItem(ItemInterface $item)
 {
     $elementMatch = $this->menuElementVoter->matchItem($item);
     if (false === $elementMatch || null === $elementMatch) {
         return $elementMatch;
     }
     $currentLocale = $this->localeManager->getLocale();
     $routes = (array) $item->getExtra('routes', array());
     foreach ($routes as $testedRoute) {
         $routeParameters = $testedRoute['parameters'];
         if (!isset($routeParameters['locale'])) {
             continue;
         }
         return $routeParameters['locale'] === $currentLocale;
     }
     return $elementMatch;
 }
 function it_should_correctly_match_the_same_elements_with_different_locale(VoterInterface $menuElementVoter, ItemInterface $item, LocaleManager $localeManager)
 {
     $localeManager->getLocale()->willReturn('pl');
     $menuElementVoter->matchItem($item)->willReturn(true);
     $item->getExtra('routes', array())->willReturn(array(0 => array('parameters' => array('locale' => 'en'))));
     $this->matchItem($item)->shouldReturn(false);
     $item->getExtra('routes', array())->willReturn(array(0 => array('parameters' => array('locale' => 'pl'))));
     $this->matchItem($item)->shouldReturn(true);
     $item->getExtra('routes', array())->willReturn(array(0 => array('parameters' => array('locale' => 'de'))));
     $this->matchItem($item)->shouldReturn(false);
 }
 function let(TranslatorInterface $translator, Router $router, LocaleManager $localeManager, RequestStack $requestStack, Request $request, ParameterBag $query, ParameterBag $server)
 {
     $localeManager->getLocale()->willReturn('en');
     $request->getLocale()->willReturn('en');
     $request->get('_route_params')->willReturn(array('element' => 'event', 'locale' => 'en'));
     $request->get('_route')->willReturn('admin_translatable_list');
     $requestStack->getCurrentRequest()->willReturn($request);
     $query->all()->willReturn(array('param1' => 'val1', 'redirect_uri' => '/admin/en/list/element?param=value'));
     $request->query = $query;
     $router->matchRequest(Argument::that(function ($argument) {
         return $argument->server->get('REQUEST_URI') === '/admin/en/list/element' && $argument->server->get('QUERY_STRING') === 'param=value';
     }))->willReturn(array('_route' => 'some_admin_route', 'locale' => 'en', 'element' => 'element'));
     $request->server = $server;
     $localeManager->getLocales()->willReturn(array('pl', 'en', 'de'));
     $translator->trans('admin.locale.dropdown.title', array('%locale%' => 'en'), 'FSiAdminTranslatableBundle')->willReturn('Menu label');
     $this->beConstructedWith($translator, $router, $localeManager, $requestStack);
 }
 /**
  * {@inheritdoc}
  */
 public function getData()
 {
     $data = parent::getData();
     $data['translatable_locale'] = $this->localeManager->getLocale();
     return $data;
 }
 protected function appendLocaleParameter(array $parameters)
 {
     $parameters['locale'] = $this->localeManager->getLocale();
     return $parameters;
 }