From 7f6eda4d14d15a53f9cab3ae1e590bfc41327a79 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Wed, 2 May 2018 12:56:09 +0200 Subject: [PATCH] fixed languaged displayed in corpus map and document localized url --- .../src/Controller/CorpusController.php | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/sites/all/modules/figli/edlp_corpus/src/Controller/CorpusController.php b/sites/all/modules/figli/edlp_corpus/src/Controller/CorpusController.php index 1e035de55..e9b095ef9 100644 --- a/sites/all/modules/figli/edlp_corpus/src/Controller/CorpusController.php +++ b/sites/all/modules/figli/edlp_corpus/src/Controller/CorpusController.php @@ -3,6 +3,7 @@ namespace Drupal\edlp_corpus\Controller; use Drupal\Core\Controller\ControllerBase; +use Drupal\Core\Language\LanguageInterface; use Drupal\workflow\Entity\WorkflowManager; use Drupal\File\Entity\File; // use Symfony\Component\HttpFoundation\JsonResponse; @@ -31,6 +32,11 @@ class CorpusController extends ControllerBase { // Get a node storage object. // $file_storage = \Drupal::entityManager()->getStorage('node'); + // $language_manager = ; + // $current_langcode = \Drupal::languageManager()->getLanguage(LanguageInterface::TYPE_CONTENT); + $current_langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); + + $config = \Drupal::config('system.site'); $query = \Drupal::entityQuery('node') @@ -46,6 +52,7 @@ class CorpusController extends ControllerBase { foreach ($nodes as $node) { // this would be ideal but it's too heavy to load : the whole ajax json goes from 138kb to 1.23Md (even optimized)... // $node_builder = $view_builder->view($node, 'popup'); + // $node = $n->getTranslation($current_langcode); // remove masqué $sid = WorkflowManager::getCurrentStateId($node, 'field_workflow'); @@ -58,7 +65,12 @@ class CorpusController extends ControllerBase { // remove if no entries if(!count($entrees)) continue; - $description_values = $node->get('field_description')->getValue(); + if ($node->hasTranslation($current_langcode) + && !$node->getTranslation($current_langcode)->field_description->isEmpty()) { + $description_values = $node->getTranslation($current_langcode)->get('field_description')->getValue(); + }else{ + $description_values = $node->get('field_description')->getValue(); + } $description = count($description_values) ? $description_values[0]['value'] : ""; // dpm($description); @@ -78,8 +90,12 @@ class CorpusController extends ControllerBase { // if($has_article && $article_value[0]['value'] == "") // dpm($article_value); - $document_url = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($node) { - return $node->toUrl()->toString(); + $document_url = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($node, $current_langcode) { + if ($node->hasTranslation($current_langcode)){ + return $node->getTranslation($current_langcode)->toUrl()->toString(); + }else{ + return $node->toUrl()->toString(); + } }); // favoris marker @@ -110,7 +126,8 @@ class CorpusController extends ControllerBase { 'site_name' => $config->get('name'), 'count' => count($nodes), 'nodes' => $nodes_data, - 'entrees' => $entrees + 'entrees' => $entrees, + 'langcode' => $current_langcode, ); // https://spinningcode.org/2017/05/cached-json-responses-in-drupal-8/