Browse Source

fixed languaged displayed in corpus map and document localized url

Bachir Soussi Chiadmi 6 years ago
parent
commit
7f6eda4d14

+ 21 - 4
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/