From 3a5efba418cc4285fc9fbbefc55d03b4272693e0 Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Wed, 28 Sep 2016 10:32:47 +0200 Subject: [PATCH] Fix language issues see BT#10658 --- app/config/sonata/sonata_page.yml | 2 +- .../CoreBundle/EventListener/LocaleListener.php | 5 ++++- .../CoreBundle/EventListener/UserLocaleListener.php | 7 ++++++- src/Chamilo/CoreBundle/Resources/config/services.yml | 6 +++++- src/Chamilo/FaqBundle/Controller/FaqController.php | 10 +++++----- src/Chamilo/PageBundle/Controller/PageController.php | 4 ++-- web/app_dev.php | 6 ++++-- 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/config/sonata/sonata_page.yml b/app/config/sonata/sonata_page.yml index 4323ec644c..d4bfd6a353 100644 --- a/app/config/sonata/sonata_page.yml +++ b/app/config/sonata/sonata_page.yml @@ -16,7 +16,7 @@ sonata_page: block: Chamilo\PageBundle\Entity\Block snapshot: Chamilo\PageBundle\Entity\Snapshot - multisite: host_with_path_by_locale # host + multisite: host_by_locale # host use_streamed_response: false # set the value to false in debug mode or if the reverse proxy does not handle streamed response ignore_uri_patterns: diff --git a/src/Chamilo/CoreBundle/EventListener/LocaleListener.php b/src/Chamilo/CoreBundle/EventListener/LocaleListener.php index c8bb0108ab..7f02442189 100644 --- a/src/Chamilo/CoreBundle/EventListener/LocaleListener.php +++ b/src/Chamilo/CoreBundle/EventListener/LocaleListener.php @@ -52,14 +52,17 @@ class LocaleListener implements EventSubscriberInterface */ public function onKernelRequest(GetResponseEvent $event) { + /** @var Request $request */ $request = $event->getRequest(); if (!$request->hasPreviousSession()) { return; } // try to see if the locale has been set as a _locale routing parameter - if ($locale = $request->attributes->get('_locale')) { + if ($locale = $request->get('_locale')) { + $request->headers->set('Accept-Language', $locale); $request->getSession()->set('_locale', $locale); + $request->setLocale($locale); } else { $locale = $this->defaultLocale; diff --git a/src/Chamilo/CoreBundle/EventListener/UserLocaleListener.php b/src/Chamilo/CoreBundle/EventListener/UserLocaleListener.php index de5d4384a1..f133d3774e 100644 --- a/src/Chamilo/CoreBundle/EventListener/UserLocaleListener.php +++ b/src/Chamilo/CoreBundle/EventListener/UserLocaleListener.php @@ -44,7 +44,12 @@ class UserLocaleListener */ public function onInteractiveLogin(InteractiveLoginEvent $event) { - $languages = ['german' => 'de', 'english' => 'en', 'spanish' => 'es', 'french' => 'fr']; + $languages = [ + 'german' => 'de', + 'english' => 'en', + 'spanish' => 'es', + 'french' => 'fr', + ]; /** @var User $user */ $token = $event->getAuthenticationToken(); diff --git a/src/Chamilo/CoreBundle/Resources/config/services.yml b/src/Chamilo/CoreBundle/Resources/config/services.yml index 58c0ff0368..a6b5321447 100644 --- a/src/Chamilo/CoreBundle/Resources/config/services.yml +++ b/src/Chamilo/CoreBundle/Resources/config/services.yml @@ -152,7 +152,11 @@ services: tags: - { name: kernel.event_subscriber } - + chamilo_core.listener.locale_fix: + class: Chamilo\CoreBundle\EventListener\LocaleListener + arguments: ["%kernel.default_locale%", "@service_container"] + tags: + - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 48 } # # # Settings listener diff --git a/src/Chamilo/FaqBundle/Controller/FaqController.php b/src/Chamilo/FaqBundle/Controller/FaqController.php index fc68022437..b83e5e1a90 100644 --- a/src/Chamilo/FaqBundle/Controller/FaqController.php +++ b/src/Chamilo/FaqBundle/Controller/FaqController.php @@ -29,9 +29,9 @@ class FaqController extends Controller */ public function indexAction($categorySlug, $questionSlug, Request $request) { - $locale = $request->get('_locale'); + /*$locale = $request->get('_locale'); $translator = $this->get('translator'); - $translator->setLocale($locale); + $translator->setLocale($locale);*/ if (!$categorySlug || !$questionSlug) { $redirect = $this->generateRedirectToDefaultSelection($categorySlug, $questionSlug); @@ -58,10 +58,10 @@ class FaqController extends Controller return $this->render( '@ChamiloFaq/Faq/index.html.twig', array( - 'categories' => $categories, - 'questions' => $questions, + 'categories' => $categories, + 'questions' => $questions, 'selectedCategory' => $selectedCategory, - 'selectedQuestion' => $selectedQuestion + 'selectedQuestion' => $selectedQuestion, ) ); } diff --git a/src/Chamilo/PageBundle/Controller/PageController.php b/src/Chamilo/PageBundle/Controller/PageController.php index 344cae5951..ba7b7c4757 100644 --- a/src/Chamilo/PageBundle/Controller/PageController.php +++ b/src/Chamilo/PageBundle/Controller/PageController.php @@ -24,9 +24,8 @@ class PageController extends Controller */ public function getLatestPages($number, Request $request) { - $site = $this->container->get('sonata.page.site.selector')->retrieve(); - $locale = $request->get('_locale'); + $site = $this->container->get('sonata.page.site.selector.host_by_locale')->retrieve(); $translator = $this->get('translator'); $criteria = [ @@ -47,6 +46,7 @@ class PageController extends Controller if ($page->getUrl() === '/') { continue; } + $criteria = ['pageId' => $page]; /** @var Snapshot $snapshot */ // Check if page has a valid snapshot diff --git a/web/app_dev.php b/web/app_dev.php index 3e4cb0733f..4ffafc494a 100644 --- a/web/app_dev.php +++ b/web/app_dev.php @@ -37,9 +37,11 @@ $kernel->terminate($request, $response);*/ require_once __DIR__.'/../app/AppKernel.php'; //require_once __DIR__.'/legacy.php'; -$request = Sonata\PageBundle\Request\RequestFactory::createFromGlobals( +/*$request = Sonata\PageBundle\Request\RequestFactory::createFromGlobals( 'host_with_path_by_locale' -); +);*/ + +$request = Request::createFromGlobals(); $kernel = new AppKernel('dev', true); $kernel->loadClassCache();