fixed languaged displayed in corpus map and document localized url

This commit is contained in:
2018-05-02 12:56:09 +02:00
parent 5a63fdfe33
commit 7f6eda4d14
@@ -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/