|
@@ -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/
|