Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 8b833277 authored by drishu's avatar drishu
Browse files

OEL-452: Update links preprocessing.

parent 48d22393
No related branches found
No related tags found
1 merge request!7OEL-452: [oe_whitelabel] multilingual
......@@ -11,40 +11,45 @@ declare(strict_types = 1);
* Implements hook__preprocess_links__language_block().
*/
function oe_whitelabel_preprocess_links__language_block(&$variables) {
/** @var \Drupal\Core\Language\LanguageInterface[] $original_languages */
$original_languages = \Drupal::service('language_manager')->getNativeLanguages();
$currentLanguage = \Drupal::languageManager()->getCurrentLanguage()->getName();
$variables['language']['link'] = [
'label' => $currentLanguage,
'href' => $currentLanguage,
'target' => 'languageModal',
];
$currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
$current_language_id = $currentLanguage->getId();
$language_config_storage = \Drupal::entityTypeManager()->getStorage('configurable_language');
$eu_links = [];
$non_eu_links = [];
foreach ($original_languages as $language) {
$url = $variables['links'][$language->getId()]['link']['#url'];
$host = \Drupal::request()->getHost();
if ($language->getId() !== $currentLanguage) {
if ($language->getThirdPartySetting('oe_multilingual', 'category') === 'eu') {
$eu_links[$language->getId()] = [
'name' => $language->getName(),
'href' => base_path() . $language->getId() . '/' . $url->getInternalPath(),
'id' => 'link_' . $language->getId(),
];
}
else {
$non_eu_links[$language->getId()] = [
'name' => $language->getName(),
'href' => base_path() . $language->getId() . '/' . $url->getInternalPath(),
'id' => 'link_' . $language->getId(),
];
}
foreach ($variables['links'] as $language_code => $link) {
/** @var \Drupal\Core\Url $url */
$url = $link['link']['#url'];
$href = $url
->setOptions($link['link']['#options'])
->setAbsolute(TRUE)
->toString();
$label = $link['link']['#title'];
$link = [
'href' => $href,
'name' => $label,
'id' => 'link_' . $language_code,
'hreflang' => $language_code,
];
if (!empty($current_language_id) && $language_code === $current_language_id) {
$variables['language']['link'] = $link;
$variables['language']['link']['target'] = 'languageModal';
$link['active'] = TRUE;
}
$language_config = $language_config_storage->load($language_code);
$category = $language_config->getThirdPartySetting('oe_multilingual', 'category');
if ($category === 'eu') {
$eu_links[$language_code] = $link;
}
else {
$non_eu_links[$language_code] = $link;
}
}
unset($variables['links']);
$variables['language']['modal'] = [
'id' => 'languageModal',
'size' => 'fullscreen',
......@@ -58,6 +63,4 @@ function oe_whitelabel_preprocess_links__language_block(&$variables) {
'label' => t('Close'),
],
];
unset($variables['links']);
}
......@@ -11,7 +11,7 @@
{% set _language = {
link: {
label: language.link.label|default(''),
label: language.link.name|default(''),
href: language.link.href|default('#'),
target: language.link.target|default(language.modal.id|default('')),
},
......@@ -27,7 +27,7 @@
<li class="nav-item">
{{ pattern('link', {
label: _language.link.label,
path: _language.link.label,
path: _language.link.href,
icon: {
name: 'chat-left-dots-fill',
size: 's'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment