From 8c6ef0040ff1533950e4497a07a613e8c593fd9a Mon Sep 17 00:00:00 2001
From: gilmarfdelima <yw9G^7V8J*>
Date: Thu, 10 Mar 2022 15:29:56 +0100
Subject: [PATCH 01/36] OEL-1167: Create oe_whitelabel_multilingual submodule.

---
 .../oe_whitelabel_multilingual.info.yml                    | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100755 modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
new file mode 100755
index 00000000..467182d4
--- /dev/null
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
@@ -0,0 +1,7 @@
+name: OpenEuropa Whitelabel Multilingual
+type: module
+description: Adds additional functionality to the Multilingual module
+package: OpenEuropa Whitelabel Theme
+core_version_requirement: ^9.2
+dependencies:
+  - openeuropa:oe_multilingual
-- 
GitLab


From 54fb4b1e75aca5cbbdb4ff36130032c1898e7ffb Mon Sep 17 00:00:00 2001
From: gilmarfdelima <yw9G^7V8J*>
Date: Thu, 10 Mar 2022 15:30:34 +0100
Subject: [PATCH 02/36] OEL-1167: Create the language switcher block template.

---
 ...tilingual-content-language-block.html.twig | 57 +++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig

diff --git a/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig b/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
new file mode 100644
index 00000000..b25f23fa
--- /dev/null
+++ b/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
@@ -0,0 +1,57 @@
+{% spaceless %}
+
+  {# Parameters:
+  - id (string) (default: collapse-{random number 0-1000}) - collapse custom id - optional
+  - message (alert object) (default: {})
+  - expandable (button object) (default: [])
+  - language (array of link object) (default: [])
+  #}
+
+  {% set id = "dropdown-languages" %}
+  {% set message = {
+    message: "This page is not available in  " ~ unavailable_language | t,
+    icon_path: "/icons.svg",
+    variant: "warning",
+  }%}
+  {% set expandable = {
+    label: "Choose another language" | t,
+    icon: {
+      name: "caret-down-fill",
+      path: "/icons.svg",
+    },
+    outline: "true",
+  } %}
+
+  {% set _id = id|default('collapse-' ~ random(1000)) %}
+  {% set _message = message|default({}) %}
+  {% set _expandable = expandable|default({}) %}
+  {% set _languages = languages|default([]) %}
+  {% set _expandable_attributes = _expandable.attributes ?: create_attribute() %}
+  {% set _expandable_attributes = _expandable_attributes
+    .setAttribute('data-bs-toggle', 'collapse')
+    .setAttribute('autocomplete', 'off')
+    .setAttribute('aria-expanded', 'false')
+    .setAttribute('aria-controls', _id)
+    .setAttribute('data-bs-target', '#' ~ _id)
+  %}
+
+  {% include '@oe-bcl/bcl-alert/alert.html.twig' with _message only %}
+
+  {% include '@oe-bcl/bcl-button/button.html.twig' with _expandable|merge({
+    attributes: _expandable_attributes
+  }) only %}
+
+  <div class="collapse mt-3" id="{{ _id }}">
+    <div
+      class="d-md-grid"
+      style="grid-auto-flow: column; grid-template-rows: repeat(4, 1fr)"
+    >
+      {% for language in languages %}
+        {% include '@oe-bcl/bcl-link/link.html.twig' with language|merge({
+          attributes: create_attribute().addClass(["btn", "btn-link", "d-block", "ps-0", "text-start"])
+        }) only %}
+      {% endfor %}
+    </div>
+  </div>
+
+{% endspaceless %}
-- 
GitLab


From 4633bcaff431f0008779ee1f2b09d68c02a73641 Mon Sep 17 00:00:00 2001
From: gilmarfdelima <yw9G^7V8J*>
Date: Thu, 10 Mar 2022 15:34:01 +0100
Subject: [PATCH 03/36] OEL-1167: Preprocess variables for the language
 switcher template.

---
 .../oe_whitelabel_multilingual.module         | 121 ++++++++++++++++++
 1 file changed, 121 insertions(+)
 create mode 100755 modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
new file mode 100755
index 00000000..ee29c862
--- /dev/null
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * OE Whitelabel theme Multilingual.
+ */
+
+declare(strict_types =  1);
+
+use Drupal\oe_whitelabel_helper\EuropeanUnionLanguages;
+
+/**
+ * Implements hook_preprocess_links().
+ */
+function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_language_block(array &$variables): void {
+  // Generate the label for the unavailable language.
+  $currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
+  $current_language_id = $currentLanguage->getId();
+  $variables['unavailable_language'] = $currentLanguage->getName();
+
+  foreach ($variables['links'] as $language_code => $link) {
+    // Handle both cases (block, page) when the link array structure differ.
+    if (isset($link['link'])) {
+      /** @var \Drupal\Core\Url $url */
+      $url = $link['link']['#url'];
+      $href = $url
+        ->setOptions($link['link']['#options'])
+        ->setAbsolute(TRUE)
+        ->toString();
+      $label = $link['link']['#title'];
+    }
+    else {
+      $href = $link['#url']->toString();
+      $label = $link['#title'];
+    }
+
+    $language_internal = $language_code;
+    if (EuropeanUnionLanguages::hasLanguage($language_code)) {
+      $language_internal = EuropeanUnionLanguages::getInternalLanguageCode($language_code);
+    }
+
+    $language = [
+      'path' => $href,
+      'label' => $label,
+      // Pass original language code which can be useful for some other
+      // preprocessors.
+      'hreflang' => $language_code,
+      'lang' => $language_internal,
+    ];
+
+    if (!empty($current_language_id) && $language_code === $current_language_id) {
+      $variables['current_language'] = [
+        'path' => $href,
+        'hreflang' => $language_code,
+        'lang' => $language_internal,
+        'label' => $link['link']['#title'],
+      ];
+      $language['active'] = TRUE;
+    }
+
+    $variables['languages'][] = $language;
+  }
+}
+
+/**
+ * Implements hook__preprocess_links__language_block().
+ */
+function oe_whitelabel_multilingual_preprocess_links__language_block(&$variables) {
+  $currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
+  $current_language_id = $currentLanguage->getId();
+  $language_config_storage = \Drupal::entityTypeManager()->getStorage('configurable_language');
+  $eu_links = [];
+  $non_eu_links = [];
+
+  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;
+    }
+  }
+
+  $variables['language']['modal'] = [
+    'id' => 'languageModal',
+    'size' => 'fullscreen',
+    'header' => [
+      'title' => t('Select your language'),
+      'label' => t('Close'),
+    ],
+    'eu_links' => $eu_links,
+    'non_eu_links' => $non_eu_links,
+    'footer' => [
+      'label' => t('Close'),
+    ],
+  ];
+}
-- 
GitLab


From 3ed54e247569f61890cf08ca17cd8bced95ac998 Mon Sep 17 00:00:00 2001
From: gilmarfdelima <yw9G^7V8J*>
Date: Mon, 14 Mar 2022 09:38:19 +0100
Subject: [PATCH 04/36] OEL-1167: Refactor oe_whitelabel_multilingual.module.

---
 .../oe_whitelabel_multilingual.module         | 76 ++++++++++---------
 1 file changed, 39 insertions(+), 37 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index ee29c862..d97c17c3 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -7,59 +7,61 @@
 
 declare(strict_types =  1);
 
-use Drupal\oe_whitelabel_helper\EuropeanUnionLanguages;
+use Drupal\Component\Utility\Html;
 
 /**
  * Implements hook_preprocess_links().
  */
 function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_language_block(array &$variables): void {
   // Generate the label for the unavailable language.
+  /** @var \Drupal\Core\Language\LanguageInterface[] $languages */
+  $languages = \Drupal::service('language_manager')->getNativeLanguages();
   $currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
   $current_language_id = $currentLanguage->getId();
-  $variables['unavailable_language'] = $currentLanguage->getName();
+  $variables['unavailable_language'] = $languages[$current_language_id]->getName();
 
+  // Normalize the links to an array of optional languages suitable for the ECL.
+  $variables['languages'] = [];
   foreach ($variables['links'] as $language_code => $link) {
-    // Handle both cases (block, page) when the link array structure differ.
-    if (isset($link['link'])) {
-      /** @var \Drupal\Core\Url $url */
-      $url = $link['link']['#url'];
-      $href = $url
-        ->setOptions($link['link']['#options'])
-        ->setAbsolute(TRUE)
-        ->toString();
-      $label = $link['link']['#title'];
-    }
-    else {
-      $href = $link['#url']->toString();
-      $label = $link['#title'];
-    }
-
-    $language_internal = $language_code;
-    if (EuropeanUnionLanguages::hasLanguage($language_code)) {
-      $language_internal = EuropeanUnionLanguages::getInternalLanguageCode($language_code);
-    }
+    /** @var \Drupal\Core\Url $url */
+    $url = $link['link']['#url'];
+    $href = $url
+      ->setOptions($link['link']['#options'])
+      ->setAbsolute(TRUE)
+      ->toString();
 
-    $language = [
+    $variables['languages'][] = [
       'path' => $href,
-      'label' => $label,
-      // Pass original language code which can be useful for some other
-      // preprocessors.
       'hreflang' => $language_code,
-      'lang' => $language_internal,
+      'label' => $link['link']['#title'],
+      'current' => FALSE,
     ];
+  }
 
-    if (!empty($current_language_id) && $language_code === $current_language_id) {
-      $variables['current_language'] = [
-        'path' => $href,
-        'hreflang' => $language_code,
-        'lang' => $language_internal,
-        'label' => $link['link']['#title'],
-      ];
-      $language['active'] = TRUE;
-    }
+  // Add the current language to the list.
+  $multilingual_helper = \Drupal::service('oe_multilingual.helper');
+  $entity = $multilingual_helper->getEntityFromCurrentRoute();
+  /** @var \Drupal\Core\Entity\EntityInterface $translation */
+  $translation = $multilingual_helper->getCurrentLanguageEntityTranslation($entity);
+  $variables['languages'][] = [
+    'path' => $translation->toUrl()->setAbsolute(TRUE)->toString(),
+    'hreflang' => $translation->language()->getId(),
+    'label' => $languages[$translation->language()->getId()]->getName(),
+    'current' => TRUE,
+    'icon_position' => "before",
+    'remove_icon_spacers' => TRUE,
+    'icon' => [
+      'name' => "check-lg",
+      'path' => "/icons.svg",
+      'size' => "xs",
+      '#attributes' => [
+        'class' => ["me-2"],
+      ],
+    ],
+  ];
 
-    $variables['languages'][] = $language;
-  }
+  // Generate required ids.
+  $variables['expandable_id'] = Html::getUniqueId('ecl-expandable');
 }
 
 /**
-- 
GitLab


From ec1ab50472067a54f4b30c68993cc6eb77c9dd3c Mon Sep 17 00:00:00 2001
From: gilmarfdelima <yw9G^7V8J*>
Date: Mon, 14 Mar 2022 09:41:51 +0100
Subject: [PATCH 05/36] OEL-1167: Use placeholders on alert text and add a
 margin bottom to separate block from bottom text.

---
 ...tilingual-content-language-block.html.twig | 34 +++++++++----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig b/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
index b25f23fa..95ac5077 100644
--- a/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
+++ b/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
@@ -9,12 +9,12 @@
 
   {% set id = "dropdown-languages" %}
   {% set message = {
-    message: "This page is not available in  " ~ unavailable_language | t,
+    message: "This page is not available in %s."|format(unavailable_language)|t,
     icon_path: "/icons.svg",
     variant: "warning",
   }%}
   {% set expandable = {
-    label: "Choose another language" | t,
+    label: "Choose another language"|t,
     icon: {
       name: "caret-down-fill",
       path: "/icons.svg",
@@ -36,22 +36,22 @@
   %}
 
   {% include '@oe-bcl/bcl-alert/alert.html.twig' with _message only %}
+  <div class="mb-3">
+    {% include '@oe-bcl/bcl-button/button.html.twig' with _expandable|merge({
+      attributes: _expandable_attributes
+    }) only %}
 
-  {% include '@oe-bcl/bcl-button/button.html.twig' with _expandable|merge({
-    attributes: _expandable_attributes
-  }) only %}
-
-  <div class="collapse mt-3" id="{{ _id }}">
-    <div
-      class="d-md-grid"
-      style="grid-auto-flow: column; grid-template-rows: repeat(4, 1fr)"
-    >
-      {% for language in languages %}
-        {% include '@oe-bcl/bcl-link/link.html.twig' with language|merge({
-          attributes: create_attribute().addClass(["btn", "btn-link", "d-block", "ps-0", "text-start"])
-        }) only %}
-      {% endfor %}
+    <div class="collapse mt-3" id="{{ _id }}">
+      <div
+        class="d-md-grid"
+        style="grid-auto-flow: column; grid-template-rows: repeat(4, 1fr)"
+      >
+        {% for language in languages %}
+          {% include '@oe-bcl/bcl-link/link.html.twig' with language|merge({
+            attributes: create_attribute().addClass(["btn", "btn-link", "d-block", "ps-0", "text-start"])
+          }) only %}
+        {% endfor %}
+      </div>
     </div>
   </div>
-
 {% endspaceless %}
-- 
GitLab


From d2d45369f5c3d549e587def4be6e352963a2d76f Mon Sep 17 00:00:00 2001
From: gilmarfdelima <yw9G^7V8J*>
Date: Mon, 14 Mar 2022 09:45:51 +0100
Subject: [PATCH 06/36] OEL-1167: Create whitelabel multilingual kernel test.

---
 .../Kernel/ContentLanguageSwitcherTest.php    | 172 ++++++++++++++++++
 1 file changed, 172 insertions(+)
 create mode 100644 tests/src/Kernel/ContentLanguageSwitcherTest.php

diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
new file mode 100644
index 00000000..2aab9b3a
--- /dev/null
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -0,0 +1,172 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace Drupal\Tests\oe_whitelabel\Kernel;
+
+use Drupal\node\Entity\Node;
+use Drupal\KernelTests\KernelTestBase;
+use Symfony\Component\DomCrawler\Crawler;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Test content language switcher rendering.
+ */
+class ContentLanguageSwitcherTest extends KernelTestBase {
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'block',
+    'content_translation',
+    'language',
+    'locale',
+    'node',
+    'oe_bootstrap_theme_helper',
+    'oe_multilingual',
+    'oe_whitelabel_helper',
+    'oe_whitelabel_multilingual',
+    'system',
+    'user',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    $this->installEntitySchema('user');
+    $this->installSchema('system', 'sequences');
+    $this->installSchema('user', ['users_data']);
+    $this->installConfig(['user']);
+
+    $this->installSchema('locale', [
+      'locales_location',
+      'locales_source',
+      'locales_target',
+    ]);
+
+    $this->installEntitySchema('node');
+    $this->installSchema('node', 'node_access');
+    $this->installConfig([
+      'content_translation',
+      'language',
+      'locale',
+      'oe_multilingual',
+      'oe_whitelabel_helper',
+      'system',
+    ]);
+    $this->container->get('module_handler')->loadInclude('oe_multilingual', 'install');
+    oe_multilingual_install(FALSE);
+
+    $this->container->get('theme_installer')->install(['oe_whitelabel']);
+    $this->config('system.theme')->set('default', 'oe_whitelabel')->save();
+    $this->container->set('theme.registry', NULL);
+
+    // Call the installation hook of the User module which creates the
+    // Anonymous user and User 1. This is needed because the Anonymous user
+    // is loaded to provide the current User context which is needed
+    // in places like route enhancers.
+    // @see CurrentUserContext::getRuntimeContexts().
+    // @see EntityConverter::convert().
+    module_load_include('install', 'user');
+    user_install();
+
+    \Drupal::service('kernel')->rebuildContainer();
+  }
+
+  /**
+   * Tests the rendering of the language switcher block.
+   */
+  public function testMultilingualLanguageSwitcherBlockRendering(): void {
+    $node = Node::create([
+      'title' => 'Hello, world!',
+      'type' => 'oe_demo_translatable_page',
+    ]);
+
+    /** @var \Drupal\Core\Entity\EntityInterface $translation */
+    $node->addTranslation('es', ['title' => '¡Hola mundo!'])->save();
+
+    // Simulate a request to the canonical route of the node with Bulgarian
+    // language prefix.
+    $this->setCurrentRequest('/bg/node/' . $node->id());
+
+    // Setup and render language switcher block.
+    $block_manager = \Drupal::service('plugin.manager.block');
+    $config = [
+      'id' => 'oe_multilingual_content_language_switcher',
+      'label' => 'OpenEuropa Content Language Switcher',
+      'provider' => 'oe_multilingual',
+      'label_display' => '0',
+    ];
+
+    /** @var \Drupal\Core\Block\BlockBase $plugin_block */
+    $plugin_block = $block_manager->createInstance('oe_multilingual_content_language_switcher', $config);
+    $render = $plugin_block->build();
+    $html = (string) $this->container->get('renderer')->renderRoot($render);
+    $crawler = new Crawler($html);
+
+    // Make sure that content language switcher block is present.
+    $actual = $crawler->filter('#dropdown-languages');
+    $this->assertCount(1, $actual);
+
+    // Warning message doesn't contain the unavailable language, the translation
+    // will have it.
+    $this->assertUnavailableLanguage($crawler, 'This page is not available in български.');
+
+    // Make sure that available languages are properly rendered.
+    $this->assertTranslationLinks($crawler, ['español', 'English']);
+  }
+
+  /**
+   * Asserts that a language is marked as unavailable.
+   *
+   * @param \Symfony\Component\DomCrawler\Crawler $crawler
+   *   The content language block crawler.
+   * @param string $expected
+   *   The label of the language.
+   */
+  protected function assertUnavailableLanguage(Crawler $crawler, string $expected): void {
+    $actual = $crawler->filter('div.alert div.alert-content')->text();
+    $this->assertStringContainsString($expected, trim($actual));
+  }
+
+  /**
+   * Asserts the rendered translation links in the content language switcher.
+   *
+   * @param \Symfony\Component\DomCrawler\Crawler $crawler
+   *   The content language block crawler.
+   * @param array $expected
+   *   The labels of the translations that should be rendered as links.
+   */
+  protected function assertTranslationLinks(Crawler $crawler, array $expected): void {
+    $elements = $crawler->filter('#dropdown-languages > div > a');
+    $this->assertSameSize($expected, $elements);
+
+    $actual = array_column(iterator_to_array($elements), 'nodeValue');
+    $this->assertEquals($expected, $actual);
+  }
+
+  /**
+   * Sets a request to a certain URI as the current in the request stack.
+   *
+   * @param string $uri
+   *   The URI of the request. It needs to match a valid Drupal route.
+   */
+  protected function setCurrentRequest(string $uri): void {
+    // Simulate a request to a node canonical route with a language prefix.
+    $request = Request::create($uri);
+    // Let the Drupal router populate all the request parameters.
+    $parameters = \Drupal::service('router.no_access_checks')->matchRequest($request);
+    $request->attributes->add($parameters);
+    // Set the prepared request as current.
+    \Drupal::requestStack()->push($request);
+    // Reset any discovered language. KernelTestBase creates a request to the
+    // root of the website for legacy purposes, so the language is set by
+    // default to the default one.
+    // @see \Drupal\KernelTests\KernelTestBase::bootKernel()
+    \Drupal::languageManager()->reset();
+  }
+
+}
-- 
GitLab


From a369c61263c599555c8ba0dcd938d2fb078b3b65 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 16:11:41 +0000
Subject: [PATCH 07/36] OEL-1167: Move template to avoid dependency on
 oe_whitelabel_multilingual on block theming.

---
 ...tilingual-content-language-block.html.twig | 29 ++++++++-----------
 1 file changed, 12 insertions(+), 17 deletions(-)
 rename {modules/oe_whitelabel_multilingual/templates => templates/overrides/navigation}/links--oe-multilingual-content-language-block.html.twig (67%)

diff --git a/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
similarity index 67%
rename from modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
rename to templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
index 95ac5077..5ad2cdb8 100644
--- a/modules/oe_whitelabel_multilingual/templates/links--oe-multilingual-content-language-block.html.twig
+++ b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
@@ -1,30 +1,25 @@
-{% spaceless %}
-
-  {# Parameters:
-  - id (string) (default: collapse-{random number 0-1000}) - collapse custom id - optional
-  - message (alert object) (default: {})
-  - expandable (button object) (default: [])
-  - language (array of link object) (default: [])
+{% apply spaceless %}
+  {# This template uses the BCL composition for
+  language switcher with following components:
+  - bcl-alert
+  - bcl-button
+  - bcl-link
   #}
-
-  {% set id = "dropdown-languages" %}
-  {% set message = {
-    message: "This page is not available in %s."|format(unavailable_language)|t,
+  {% set _id = "dropdown-languages" %}
+  {% set _message = {
+    message: "This page is not available in @language."|t({'@language': unavailable_language}),
     icon_path: "/icons.svg",
     variant: "warning",
   }%}
-  {% set expandable = {
+  {% set _expandable = {
     label: "Choose another language"|t,
     icon: {
       name: "caret-down-fill",
-      path: "/icons.svg",
+      path: bcl_icon_path,
     },
     outline: "true",
   } %}
 
-  {% set _id = id|default('collapse-' ~ random(1000)) %}
-  {% set _message = message|default({}) %}
-  {% set _expandable = expandable|default({}) %}
   {% set _languages = languages|default([]) %}
   {% set _expandable_attributes = _expandable.attributes ?: create_attribute() %}
   {% set _expandable_attributes = _expandable_attributes
@@ -54,4 +49,4 @@
       </div>
     </div>
   </div>
-{% endspaceless %}
+{% endapply %}
-- 
GitLab


From af44289599c9c6aa5c10c11210f65b917098fe1b Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 16:43:25 +0000
Subject: [PATCH 08/36] OEL-1167: Update tests.

---
 .../Kernel/ContentLanguageSwitcherTest.php    | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index 2aab9b3a..e6d1ead0 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -28,6 +28,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     'oe_whitelabel_multilingual',
     'system',
     'user',
+    'oe_corporate_blocks',
   ];
 
   /**
@@ -117,6 +118,37 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
 
     // Make sure that available languages are properly rendered.
     $this->assertTranslationLinks($crawler, ['español', 'English']);
+
+    // Remove the spanish translation.
+    $node->removeTranslation('es');
+    $node->save();
+
+    // Re-render the block assuming a request to the Spanish version of the
+    // node.
+    $this->setCurrentRequest('/es/node/' . $node->id());
+    $render = $plugin_block->build();
+
+    $html = (string) $this->container->get('renderer')->renderRoot($render);
+    $crawler = new Crawler($html);
+
+    // Verify that the requested language is set as unavailable.
+    $this->assertUnavailableLanguage($crawler, 'This page is not available in español.');
+
+    // Verify that the content has been rendered in the fallback language.
+    $this->assertSelectedLanguage($crawler, 'English');
+  }
+
+  /**
+   * Asserts that a language is marked as the current rendered.
+   *
+   * @param \Symfony\Component\DomCrawler\Crawler $crawler
+   *   The content language block crawler.
+   * @param string $expected
+   *   The label of the language.
+   */
+  protected function assertSelectedLanguage(Crawler $crawler, string $expected): void {
+    $actual = $crawler->filter('#dropdown-languages > div > a')->text();
+    $this->assertEquals($expected, trim($actual));
   }
 
   /**
-- 
GitLab


From ab659003e23972f443ae033db858bc4132969597 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 16:46:28 +0000
Subject: [PATCH 09/36] OEL-1167: Fix library commentary, and link icon
 definition.

---
 .../oe_whitelabel_multilingual.module           | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index d97c17c3..8bff7d04 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -7,8 +7,6 @@
 
 declare(strict_types =  1);
 
-use Drupal\Component\Utility\Html;
-
 /**
  * Implements hook_preprocess_links().
  */
@@ -20,7 +18,7 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
   $current_language_id = $currentLanguage->getId();
   $variables['unavailable_language'] = $languages[$current_language_id]->getName();
 
-  // Normalize the links to an array of optional languages suitable for the ECL.
+  // Normalize the links to an array of optional languages suitable for the BCL.
   $variables['languages'] = [];
   foreach ($variables['links'] as $language_code => $link) {
     /** @var \Drupal\Core\Url $url */
@@ -48,20 +46,15 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
     'hreflang' => $translation->language()->getId(),
     'label' => $languages[$translation->language()->getId()]->getName(),
     'current' => TRUE,
-    'icon_position' => "before",
-    'remove_icon_spacers' => TRUE,
+    'icon_position' => 'before',
+    'remove_icon_spacers' => FALSE,
     'icon' => [
       'name' => "check-lg",
-      'path' => "/icons.svg",
+      'path' => $variables['bcl_icon_path'],
       'size' => "xs",
-      '#attributes' => [
-        'class' => ["me-2"],
-      ],
+      '#attributes' => ['class' => ['me-2']],
     ],
   ];
-
-  // Generate required ids.
-  $variables['expandable_id'] = Html::getUniqueId('ecl-expandable');
 }
 
 /**
-- 
GitLab


From a58da025bdaf8ba168134c3d35e5cb11f6ef6c18 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 17:36:00 +0000
Subject: [PATCH 10/36] OEL-1167: Remove unecessary registry empty statement.

---
 tests/src/Kernel/ContentLanguageSwitcherTest.php | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index e6d1ead0..4eebbd4c 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -63,7 +63,6 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
 
     $this->container->get('theme_installer')->install(['oe_whitelabel']);
     $this->config('system.theme')->set('default', 'oe_whitelabel')->save();
-    $this->container->set('theme.registry', NULL);
 
     // Call the installation hook of the User module which creates the
     // Anonymous user and User 1. This is needed because the Anonymous user
-- 
GitLab


From e812d790a54a8c877e2f6ac98cd00ccbf7c811fb Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 19:33:51 +0000
Subject: [PATCH 11/36] OEL-1167: Assert block is not shown in test when
 viewing node on its base language.

---
 tests/src/Kernel/ContentLanguageSwitcherTest.php | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index 4eebbd4c..02a54a1f 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -135,6 +135,17 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
 
     // Verify that the content has been rendered in the fallback language.
     $this->assertSelectedLanguage($crawler, 'English');
+    
+    // Re-render the block assuming a request to the base language English
+    // version of the node.
+    $this->setCurrentRequest('/en/node/' . $node->id());
+
+    $html = (string) $this->container->get('renderer')->renderRoot($render);
+    $crawler = new Crawler($html);
+    $render = $plugin_block->build();
+    
+    // Make sure that no language links are rendered.
+    $this->assertTranslationLinks($crawler, []);
   }
 
   /**
-- 
GitLab


From 8e06e955060bd0fcfac21e3f975f052bc1a4c493 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 22:03:26 +0000
Subject: [PATCH 12/36] OEL-1167: Enable oe_whitelabel_multilingual during
 installation.

---
 runner.yml.dist | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/runner.yml.dist b/runner.yml.dist
index 782e6c99..e607338d 100644
--- a/runner.yml.dist
+++ b/runner.yml.dist
@@ -19,7 +19,7 @@ drupal:
     - "./vendor/bin/drush en field_ui -y"
     - "./vendor/bin/drush en oe_authentication -y"
     - "./vendor/bin/drush en oe_corporate_blocks -y"
-    - "./vendor/bin/drush en oe_multilingual -y"
+    - "./vendor/bin/drush en oe_whitelabel_multilingual -y"
     - "./vendor/bin/drush en oe_whitelabel_contact_forms -y"
     - "./vendor/bin/drush en oe_whitelabel_helper -y"
     - "./vendor/bin/drush en oe_whitelabel_search -y"
-- 
GitLab


From 7f61d64cea0f823207a6496b13a4ac27ad458306 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 22:04:54 +0000
Subject: [PATCH 13/36] OEL-1167: Sort test module dependencies and remove
 duplicated block render.

---
 tests/src/Kernel/ContentLanguageSwitcherTest.php | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index 02a54a1f..421aa86a 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -23,12 +23,12 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     'locale',
     'node',
     'oe_bootstrap_theme_helper',
+    'oe_corporate_blocks',
     'oe_multilingual',
     'oe_whitelabel_helper',
     'oe_whitelabel_multilingual',
     'system',
     'user',
-    'oe_corporate_blocks',
   ];
 
   /**
@@ -135,15 +135,13 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
 
     // Verify that the content has been rendered in the fallback language.
     $this->assertSelectedLanguage($crawler, 'English');
-    
-    // Re-render the block assuming a request to the base language English
-    // version of the node.
-    $this->setCurrentRequest('/en/node/' . $node->id());
+
+    // Simulate a request to the canonical route of the node base language.
+    $this->setCurrentRequest('/node/' . $node->id());
 
     $html = (string) $this->container->get('renderer')->renderRoot($render);
     $crawler = new Crawler($html);
-    $render = $plugin_block->build();
-    
+
     // Make sure that no language links are rendered.
     $this->assertTranslationLinks($crawler, []);
   }
-- 
GitLab


From 52f27eb2109a2641badfda3c1bf01ad8d47d99c8 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 22:06:47 +0000
Subject: [PATCH 14/36] OEL-1167: Code standards.

---
 .../oe_whitelabel_multilingual.module                         | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index 8bff7d04..ff4eff69 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -49,9 +49,9 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
     'icon_position' => 'before',
     'remove_icon_spacers' => FALSE,
     'icon' => [
-      'name' => "check-lg",
+      'name' => 'check-lg',
       'path' => $variables['bcl_icon_path'],
-      'size' => "xs",
+      'size' => 'xs',
       '#attributes' => ['class' => ['me-2']],
     ],
   ];
-- 
GitLab


From 862198b70d846a1fe0ec55a228d2928730eae956 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 22:10:45 +0000
Subject: [PATCH 15/36] OEL-1167: Update template comment and icon path.

---
 ...--oe-multilingual-content-language-block.html.twig | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
index 5ad2cdb8..1250046b 100644
--- a/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
+++ b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
@@ -1,14 +1,13 @@
 {% apply spaceless %}
-  {# This template uses the BCL composition for
-  language switcher with following components:
-  - bcl-alert
-  - bcl-button
-  - bcl-link
+  {# This template uses the BCL composition for the
+  language switcher.
+  _id, _message and _expandable are overwritten.
+  @todo Call include once BCL 0.20 is available.
   #}
   {% set _id = "dropdown-languages" %}
   {% set _message = {
     message: "This page is not available in @language."|t({'@language': unavailable_language}),
-    icon_path: "/icons.svg",
+    path: bcl_icon_path,
     variant: "warning",
   }%}
   {% set _expandable = {
-- 
GitLab


From 6bdc691bfc91361039c8d1289246a3de4c30fae1 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 22:16:53 +0000
Subject: [PATCH 16/36] OEL-1167: Place the main page content block to ensure
 block order placement.

---
 ....block.oe_whitelabel_main_page_content.yml | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100755 modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml

diff --git a/modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml b/modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml
new file mode 100755
index 00000000..11e73c23
--- /dev/null
+++ b/modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - system
+  theme:
+    - oe_whitelabel
+id: oe_whitelabel_main_page_content
+theme: oe_whitelabel
+region: content
+weight: 1
+provider: null
+plugin: system_main_block
+settings:
+  id: system_main_block
+  label: 'Main page content'
+  label_display: '0'
+  provider: system
+visibility: {  }
-- 
GitLab


From b90af4fdc587f8e87345ecd2044c237aec47082a Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Wed, 16 Mar 2022 22:17:22 +0000
Subject: [PATCH 17/36] OEL-1167: Update config dependency.

---
 .../oe_whitelabel_multilingual.info.yml                      | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
index 467182d4..565dda8b 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
@@ -5,3 +5,8 @@ package: OpenEuropa Whitelabel Theme
 core_version_requirement: ^9.2
 dependencies:
   - openeuropa:oe_multilingual
+
+config_devel:
+  optional:
+    - block.block.oe_whitelabel_main_page_content
+    - block.block.openeuropa_content_language_switcher
-- 
GitLab


From d6111dfa5f65d1d8bf904cf158d1e2e11d0852f7 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Thu, 17 Mar 2022 10:38:11 +0000
Subject: [PATCH 18/36] OEL-1167: Place the language switcher block on the page
 content region.

---
 ...k.openeuropa_content_language_switcher.yml | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml

diff --git a/modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml b/modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml
new file mode 100644
index 00000000..276f617c
--- /dev/null
+++ b/modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - oe_multilingual
+  theme:
+    - oe_whitelabel
+id: openeuropa_content_language_switcher
+theme: oe_whitelabel
+region: content
+weight: -4
+provider: null
+plugin: oe_multilingual_content_language_switcher
+settings:
+  id: oe_multilingual_content_language_switcher
+  label: 'OpenEuropa Content Language Switcher'
+  label_display: '0'
+  provider: oe_multilingual
+visibility: {  }
-- 
GitLab


From d0341e06684600f03f254df278d2aa1f9d0009e3 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Thu, 17 Mar 2022 22:37:36 +0000
Subject: [PATCH 19/36] OEL-1167: Move blocks to root module config/optional
 folder.

---
 ....block.oe_whitelabel_main_page_content.yml | 19 -------------------
 ...k.openeuropa_content_language_switcher.yml | 19 -------------------
 2 files changed, 38 deletions(-)
 delete mode 100755 modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml
 delete mode 100644 modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml

diff --git a/modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml b/modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml
deleted file mode 100755
index 11e73c23..00000000
--- a/modules/oe_whitelabel_multilingual/config/optional/block.block.oe_whitelabel_main_page_content.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - system
-  theme:
-    - oe_whitelabel
-id: oe_whitelabel_main_page_content
-theme: oe_whitelabel
-region: content
-weight: 1
-provider: null
-plugin: system_main_block
-settings:
-  id: system_main_block
-  label: 'Main page content'
-  label_display: '0'
-  provider: system
-visibility: {  }
diff --git a/modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml b/modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml
deleted file mode 100644
index 276f617c..00000000
--- a/modules/oe_whitelabel_multilingual/config/optional/block.block.openeuropa_content_language_switcher.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - oe_multilingual
-  theme:
-    - oe_whitelabel
-id: openeuropa_content_language_switcher
-theme: oe_whitelabel
-region: content
-weight: -4
-provider: null
-plugin: oe_multilingual_content_language_switcher
-settings:
-  id: oe_multilingual_content_language_switcher
-  label: 'OpenEuropa Content Language Switcher'
-  label_display: '0'
-  provider: oe_multilingual
-visibility: {  }
-- 
GitLab


From 44095f08ac62db7330f45aa164954672dd6dbe01 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Thu, 17 Mar 2022 22:41:22 +0000
Subject: [PATCH 20/36] OEL-1167: Remove config dependency.

---
 .../oe_whitelabel_multilingual.info.yml                      | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
index 565dda8b..467182d4 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.info.yml
@@ -5,8 +5,3 @@ package: OpenEuropa Whitelabel Theme
 core_version_requirement: ^9.2
 dependencies:
   - openeuropa:oe_multilingual
-
-config_devel:
-  optional:
-    - block.block.oe_whitelabel_main_page_content
-    - block.block.openeuropa_content_language_switcher
-- 
GitLab


From c956a839dfe06244beb87f02812fc43c7b1aced4 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Thu, 17 Mar 2022 22:42:16 +0000
Subject: [PATCH 21/36] OEL-1167: Update dependencies and remove unexisting
 cas.settings.yml.

---
 oe_whitelabel.info.yml | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml
index c334912d..23f58ecd 100644
--- a/oe_whitelabel.info.yml
+++ b/oe_whitelabel.info.yml
@@ -35,15 +35,17 @@ config_devel:
   install:
     - oe_whitelabel.settings
   optional:
-    - block.block.breadcrumbs
-    - block.block.corporateeclogoblock
-    - block.block.ecfooterblock
-    - block.block.euloginlinkblock.yml
-    - block.block.languageswitcherinterfacetext
     - block.block.oe_whitelabel_branding
+    - block.block.oe_whitelabel_breadcrumbs
+    - block.block.oe_whitelabel_ec_corporate_footer
+    - block.block.oe_whitelabel_eu_corporate_footer
+    - block.block.oe_whitelabel_eulogin
+    - block.block.oe_whitelabel_language_switcher
     - block.block.oe_whitelabel_local_actions
     - block.block.oe_whitelabel_local_tasks
+    - block.block.oe_whitelabel_main_navigation
+    - block.block.oe_whitelabel_main_page_content
     - block.block.oe_whitelabel_messages
-    - block.block.oe_whitelabel_page_title
-    - block.block.whitelabelsearchblock
-    - cas.settings.yml
+    - block.block.oe_whitelabel_multilingual_language_switcher
+    - block.block.oe_whitelabel_neutral_footer
+    - block.block.oe_whitelabel_search_form
-- 
GitLab


From bdeaf6a887e01403c9369ebbe1f83fc81258572e Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Thu, 17 Mar 2022 22:43:08 +0000
Subject: [PATCH 22/36] OEL-1167: Configuration moved from
 oe_whitelabel_multiglingual.

---
 ....block.oe_whitelabel_main_page_content.yml | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100755 config/optional/block.block.oe_whitelabel_main_page_content.yml

diff --git a/config/optional/block.block.oe_whitelabel_main_page_content.yml b/config/optional/block.block.oe_whitelabel_main_page_content.yml
new file mode 100755
index 00000000..11e73c23
--- /dev/null
+++ b/config/optional/block.block.oe_whitelabel_main_page_content.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - system
+  theme:
+    - oe_whitelabel
+id: oe_whitelabel_main_page_content
+theme: oe_whitelabel
+region: content
+weight: 1
+provider: null
+plugin: system_main_block
+settings:
+  id: system_main_block
+  label: 'Main page content'
+  label_display: '0'
+  provider: system
+visibility: {  }
-- 
GitLab


From 7eef2e13cf65af30b0a397433a025b76a80e37a2 Mon Sep 17 00:00:00 2001
From: Gilmar Lima <gilmar.lima@novacomm-europa.eu>
Date: Thu, 17 Mar 2022 22:44:01 +0000
Subject: [PATCH 23/36] OEL-1167: Rename multiligual lang swticher block and
 move to theme root config folder.

---
 ...telabel_multilingual_language_switcher.yml | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml

diff --git a/config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml b/config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml
new file mode 100644
index 00000000..2e711d2c
--- /dev/null
+++ b/config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - oe_multilingual
+  theme:
+    - oe_whitelabel
+id: oe_whitelabel_multilingual_language_switcher
+theme: oe_whitelabel
+region: content
+weight: -4
+provider: null
+plugin: oe_multilingual_content_language_switcher
+settings:
+  id: oe_multilingual_content_language_switcher
+  label: '777777777OpenEuropa Content Language Switcher'
+  label_display: '0'
+  provider: oe_multilingual
+visibility: {  }
-- 
GitLab


From 7e6ce8a3f4f2cbc8b2f292685cd562396a74e4c2 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 12:09:05 +0200
Subject: [PATCH 24/36] OEL-1167: Rename content language switcher block.

---
 ...> block.block.oe_whitelabel_content_language_switcher.yml} | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
 rename config/optional/{block.block.oe_whitelabel_multilingual_language_switcher.yml => block.block.oe_whitelabel_content_language_switcher.yml} (76%)

diff --git a/config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml b/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
similarity index 76%
rename from config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml
rename to config/optional/block.block.oe_whitelabel_content_language_switcher.yml
index 2e711d2c..e5b51713 100644
--- a/config/optional/block.block.oe_whitelabel_multilingual_language_switcher.yml
+++ b/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
@@ -5,7 +5,7 @@ dependencies:
     - oe_multilingual
   theme:
     - oe_whitelabel
-id: oe_whitelabel_multilingual_language_switcher
+id: oe_whitelabel_content_language_switcher
 theme: oe_whitelabel
 region: content
 weight: -4
@@ -13,7 +13,7 @@ provider: null
 plugin: oe_multilingual_content_language_switcher
 settings:
   id: oe_multilingual_content_language_switcher
-  label: '777777777OpenEuropa Content Language Switcher'
+  label: 'Content Language Switcher'
   label_display: '0'
   provider: oe_multilingual
 visibility: {  }
-- 
GitLab


From d7fc007c9536c7d87ea7cf82543e76aa2ffa3e11 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 12:09:36 +0200
Subject: [PATCH 25/36] OEL-1167: Remove redundant variables.

---
 .../oe_whitelabel_multilingual.module                         | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index ff4eff69..27ba6aa0 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -14,9 +14,7 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
   // Generate the label for the unavailable language.
   /** @var \Drupal\Core\Language\LanguageInterface[] $languages */
   $languages = \Drupal::service('language_manager')->getNativeLanguages();
-  $currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
-  $current_language_id = $currentLanguage->getId();
-  $variables['unavailable_language'] = $languages[$current_language_id]->getName();
+  $variables['unavailable_language'] = $languages[$variables['current_language_id']]->getName();
 
   // Normalize the links to an array of optional languages suitable for the BCL.
   $variables['languages'] = [];
-- 
GitLab


From 94185c9f218c06dcc02b7011232ce9b0dfd758bb Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 12:10:37 +0200
Subject: [PATCH 26/36] OEL-1167: Fixup test.

---
 .../Kernel/ContentLanguageSwitcherTest.php    | 23 +++++++++++--------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index 421aa86a..33881e78 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -13,6 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
  * Test content language switcher rendering.
  */
 class ContentLanguageSwitcherTest extends KernelTestBase {
+
   /**
    * {@inheritdoc}
    */
@@ -84,7 +85,6 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
       'title' => 'Hello, world!',
       'type' => 'oe_demo_translatable_page',
     ]);
-
     /** @var \Drupal\Core\Entity\EntityInterface $translation */
     $node->addTranslation('es', ['title' => '¡Hola mundo!'])->save();
 
@@ -96,7 +96,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     $block_manager = \Drupal::service('plugin.manager.block');
     $config = [
       'id' => 'oe_multilingual_content_language_switcher',
-      'label' => 'OpenEuropa Content Language Switcher',
+      'label' => 'Content language switcher',
       'provider' => 'oe_multilingual',
       'label_display' => '0',
     ];
@@ -104,6 +104,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     /** @var \Drupal\Core\Block\BlockBase $plugin_block */
     $plugin_block = $block_manager->createInstance('oe_multilingual_content_language_switcher', $config);
     $render = $plugin_block->build();
+
     $html = (string) $this->container->get('renderer')->renderRoot($render);
     $crawler = new Crawler($html);
 
@@ -115,8 +116,11 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     // will have it.
     $this->assertUnavailableLanguage($crawler, 'This page is not available in български.');
 
+    // Make sure that selected language is properly rendered.
+    $this->assertSelectedLanguage($crawler, 'English');
+
     // Make sure that available languages are properly rendered.
-    $this->assertTranslationLinks($crawler, ['español', 'English']);
+    $this->assertTranslationLinks($crawler, ['español']);
 
     // Remove the spanish translation.
     $node->removeTranslation('es');
@@ -136,12 +140,6 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     // Verify that the content has been rendered in the fallback language.
     $this->assertSelectedLanguage($crawler, 'English');
 
-    // Simulate a request to the canonical route of the node base language.
-    $this->setCurrentRequest('/node/' . $node->id());
-
-    $html = (string) $this->container->get('renderer')->renderRoot($render);
-    $crawler = new Crawler($html);
-
     // Make sure that no language links are rendered.
     $this->assertTranslationLinks($crawler, []);
   }
@@ -155,7 +153,8 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
    *   The label of the language.
    */
   protected function assertSelectedLanguage(Crawler $crawler, string $expected): void {
-    $actual = $crawler->filter('#dropdown-languages > div > a')->text();
+    // The selected language link will contain a svg, so we target that.
+    $actual = $crawler->filter('#dropdown-languages > div > a > svg')->parents()->first()->text();
     $this->assertEquals($expected, trim($actual));
   }
 
@@ -182,6 +181,10 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
    */
   protected function assertTranslationLinks(Crawler $crawler, array $expected): void {
     $elements = $crawler->filter('#dropdown-languages > div > a');
+    // Filter out the selected language.
+    $elements = $elements->reduce(function (Crawler $crawler) {
+      return $crawler->filter('svg')->count() === 0;
+    });
     $this->assertSameSize($expected, $elements);
 
     $actual = array_column(iterator_to_array($elements), 'nodeValue');
-- 
GitLab


From 1b27d53009e3772c07bf2af7abd56ea921d5d535 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 12:29:10 +0200
Subject: [PATCH 27/36] OEL-1167: Export block config.

---
 config/optional/block.block.oe_whitelabel_branding.yml       | 2 +-
 config/optional/block.block.oe_whitelabel_breadcrumbs.yml    | 2 +-
 .../block.block.oe_whitelabel_content_language_switcher.yml  | 2 +-
 .../block.block.oe_whitelabel_ec_corporate_footer.yml        | 5 +++--
 .../block.block.oe_whitelabel_eu_corporate_footer.yml        | 5 +++--
 config/optional/block.block.oe_whitelabel_eulogin.yml        | 2 +-
 .../optional/block.block.oe_whitelabel_language_switcher.yml | 2 +-
 config/optional/block.block.oe_whitelabel_local_actions.yml  | 4 ++--
 config/optional/block.block.oe_whitelabel_local_tasks.yml    | 4 ++--
 .../optional/block.block.oe_whitelabel_main_page_content.yml | 2 +-
 config/optional/block.block.oe_whitelabel_messages.yml       | 4 ++--
 config/optional/block.block.oe_whitelabel_neutral_footer.yml | 4 ++--
 config/optional/block.block.oe_whitelabel_search_form.yml    | 4 ++--
 13 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/config/optional/block.block.oe_whitelabel_branding.yml b/config/optional/block.block.oe_whitelabel_branding.yml
index 4964f51f..e860d619 100644
--- a/config/optional/block.block.oe_whitelabel_branding.yml
+++ b/config/optional/block.block.oe_whitelabel_branding.yml
@@ -14,8 +14,8 @@ plugin: system_branding_block
 settings:
   id: system_branding_block
   label: 'Site branding'
-  provider: system
   label_display: '0'
+  provider: system
   use_site_logo: true
   use_site_name: true
   use_site_slogan: true
diff --git a/config/optional/block.block.oe_whitelabel_breadcrumbs.yml b/config/optional/block.block.oe_whitelabel_breadcrumbs.yml
index 23f53fc3..6f028eaf 100644
--- a/config/optional/block.block.oe_whitelabel_breadcrumbs.yml
+++ b/config/optional/block.block.oe_whitelabel_breadcrumbs.yml
@@ -14,6 +14,6 @@ plugin: system_breadcrumb_block
 settings:
   id: system_breadcrumb_block
   label: Breadcrumbs
-  provider: system
   label_display: '0'
+  provider: system
 visibility: {  }
diff --git a/config/optional/block.block.oe_whitelabel_content_language_switcher.yml b/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
index e5b51713..1b0b810d 100644
--- a/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
+++ b/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
@@ -8,7 +8,7 @@ dependencies:
 id: oe_whitelabel_content_language_switcher
 theme: oe_whitelabel
 region: content
-weight: -4
+weight: -3
 provider: null
 plugin: oe_multilingual_content_language_switcher
 settings:
diff --git a/config/optional/block.block.oe_whitelabel_ec_corporate_footer.yml b/config/optional/block.block.oe_whitelabel_ec_corporate_footer.yml
index d52ef579..b671493d 100644
--- a/config/optional/block.block.oe_whitelabel_ec_corporate_footer.yml
+++ b/config/optional/block.block.oe_whitelabel_ec_corporate_footer.yml
@@ -3,6 +3,7 @@ status: true
 dependencies:
   module:
     - oe_corporate_blocks
+    - oe_whitelabel_helper
   theme:
     - oe_whitelabel
 id: oe_whitelabel_ec_corporate_footer
@@ -14,11 +15,11 @@ plugin: oe_corporate_blocks_ec_footer
 settings:
   id: oe_corporate_blocks_ec_footer
   label: 'EC Footer block'
-  provider: oe_corporate_blocks
   label_display: '0'
+  provider: oe_corporate_blocks
 visibility:
   oe_whitelabel_helper_current_component_library:
     id: oe_whitelabel_helper_current_component_library
-    component_library: ec
     negate: false
     context_mapping: {  }
+    component_library: ec
diff --git a/config/optional/block.block.oe_whitelabel_eu_corporate_footer.yml b/config/optional/block.block.oe_whitelabel_eu_corporate_footer.yml
index 1eaa3c40..700c5fee 100644
--- a/config/optional/block.block.oe_whitelabel_eu_corporate_footer.yml
+++ b/config/optional/block.block.oe_whitelabel_eu_corporate_footer.yml
@@ -3,6 +3,7 @@ status: true
 dependencies:
   module:
     - oe_corporate_blocks
+    - oe_whitelabel_helper
   theme:
     - oe_whitelabel
 id: oe_whitelabel_eu_corporate_footer
@@ -14,11 +15,11 @@ plugin: oe_corporate_blocks_eu_footer
 settings:
   id: oe_corporate_blocks_eu_footer
   label: 'EU Footer block'
-  provider: oe_corporate_blocks
   label_display: '0'
+  provider: oe_corporate_blocks
 visibility:
   oe_whitelabel_helper_current_component_library:
     id: oe_whitelabel_helper_current_component_library
-    component_library: eu
     negate: false
     context_mapping: {  }
+    component_library: eu
diff --git a/config/optional/block.block.oe_whitelabel_eulogin.yml b/config/optional/block.block.oe_whitelabel_eulogin.yml
index 8bb5a39b..80d9e261 100644
--- a/config/optional/block.block.oe_whitelabel_eulogin.yml
+++ b/config/optional/block.block.oe_whitelabel_eulogin.yml
@@ -14,6 +14,6 @@ plugin: oe_authentication_login_block
 settings:
   id: oe_authentication_login_block
   label: 'EU Login Link Block'
-  provider: oe_authentication
   label_display: '0'
+  provider: oe_authentication
 visibility: {  }
diff --git a/config/optional/block.block.oe_whitelabel_language_switcher.yml b/config/optional/block.block.oe_whitelabel_language_switcher.yml
index df32e08a..b8b46125 100644
--- a/config/optional/block.block.oe_whitelabel_language_switcher.yml
+++ b/config/optional/block.block.oe_whitelabel_language_switcher.yml
@@ -14,6 +14,6 @@ plugin: 'language_block:language_interface'
 settings:
   id: 'language_block:language_interface'
   label: 'Language switcher (Interface text)'
-  provider: language
   label_display: '0'
+  provider: language
 visibility: {  }
diff --git a/config/optional/block.block.oe_whitelabel_local_actions.yml b/config/optional/block.block.oe_whitelabel_local_actions.yml
index 03682854..094fbea4 100644
--- a/config/optional/block.block.oe_whitelabel_local_actions.yml
+++ b/config/optional/block.block.oe_whitelabel_local_actions.yml
@@ -6,12 +6,12 @@ dependencies:
 id: oe_whitelabel_local_actions
 theme: oe_whitelabel
 region: content
-weight: 0
+weight: -4
 provider: null
 plugin: local_actions_block
 settings:
   id: local_actions_block
   label: 'Primary admin actions'
-  provider: core
   label_display: '0'
+  provider: core
 visibility: {  }
diff --git a/config/optional/block.block.oe_whitelabel_local_tasks.yml b/config/optional/block.block.oe_whitelabel_local_tasks.yml
index 5a719a48..7d547811 100644
--- a/config/optional/block.block.oe_whitelabel_local_tasks.yml
+++ b/config/optional/block.block.oe_whitelabel_local_tasks.yml
@@ -6,14 +6,14 @@ dependencies:
 id: oe_whitelabel_local_tasks
 theme: oe_whitelabel
 region: content
-weight: -1
+weight: -5
 provider: null
 plugin: local_tasks_block
 settings:
   id: local_tasks_block
   label: Tabs
-  provider: core
   label_display: '0'
+  provider: core
   primary: true
   secondary: true
 visibility: {  }
diff --git a/config/optional/block.block.oe_whitelabel_main_page_content.yml b/config/optional/block.block.oe_whitelabel_main_page_content.yml
index 11e73c23..8987832c 100755
--- a/config/optional/block.block.oe_whitelabel_main_page_content.yml
+++ b/config/optional/block.block.oe_whitelabel_main_page_content.yml
@@ -8,7 +8,7 @@ dependencies:
 id: oe_whitelabel_main_page_content
 theme: oe_whitelabel
 region: content
-weight: 1
+weight: -2
 provider: null
 plugin: system_main_block
 settings:
diff --git a/config/optional/block.block.oe_whitelabel_messages.yml b/config/optional/block.block.oe_whitelabel_messages.yml
index cf33398e..cf87516d 100644
--- a/config/optional/block.block.oe_whitelabel_messages.yml
+++ b/config/optional/block.block.oe_whitelabel_messages.yml
@@ -8,12 +8,12 @@ dependencies:
 id: oe_whitelabel_messages
 theme: oe_whitelabel
 region: content
-weight: -3
+weight: -6
 provider: null
 plugin: system_messages_block
 settings:
   id: system_messages_block
   label: 'Status messages'
-  provider: system
   label_display: '0'
+  provider: system
 visibility: {  }
diff --git a/config/optional/block.block.oe_whitelabel_neutral_footer.yml b/config/optional/block.block.oe_whitelabel_neutral_footer.yml
index 372470a5..b1cf2e87 100644
--- a/config/optional/block.block.oe_whitelabel_neutral_footer.yml
+++ b/config/optional/block.block.oe_whitelabel_neutral_footer.yml
@@ -14,11 +14,11 @@ plugin: oe_corporate_blocks_neutral_footer
 settings:
   id: oe_corporate_blocks_neutral_footer
   label: 'Neutral Footer block'
-  provider: oe_whitelabel_helper
   label_display: '0'
+  provider: oe_whitelabel_helper
 visibility:
   oe_whitelabel_helper_current_component_library:
     id: oe_whitelabel_helper_current_component_library
-    component_library: neutral
     negate: false
     context_mapping: {  }
+    component_library: neutral
diff --git a/config/optional/block.block.oe_whitelabel_search_form.yml b/config/optional/block.block.oe_whitelabel_search_form.yml
index c45778cf..22437b3a 100644
--- a/config/optional/block.block.oe_whitelabel_search_form.yml
+++ b/config/optional/block.block.oe_whitelabel_search_form.yml
@@ -14,8 +14,8 @@ plugin: whitelabel_search_block
 settings:
   id: whitelabel_search_block
   label: 'Whitelabel Search Block'
-  provider: oe_whitelabel_search
   label_display: '0'
+  provider: oe_whitelabel_search
   form:
     action: '#'
   input:
@@ -26,7 +26,7 @@ settings:
   button:
     classes: ''
   view_options:
+    enable_autocomplete: false
     id: null
     display: null
-    enable_autocomplete: false
 visibility: {  }
-- 
GitLab


From 7bf25c4539bb3398029eec74d0cbfbfc20a5866d Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 12:30:04 +0200
Subject: [PATCH 28/36] OEL-1167: Rename content switcher in config_devel.

---
 oe_whitelabel.info.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml
index 23f58ecd..d45b0e92 100644
--- a/oe_whitelabel.info.yml
+++ b/oe_whitelabel.info.yml
@@ -37,6 +37,7 @@ config_devel:
   optional:
     - block.block.oe_whitelabel_branding
     - block.block.oe_whitelabel_breadcrumbs
+    - block.block.oe_whitelabel_content_language_switcher
     - block.block.oe_whitelabel_ec_corporate_footer
     - block.block.oe_whitelabel_eu_corporate_footer
     - block.block.oe_whitelabel_eulogin
@@ -46,6 +47,5 @@ config_devel:
     - block.block.oe_whitelabel_main_navigation
     - block.block.oe_whitelabel_main_page_content
     - block.block.oe_whitelabel_messages
-    - block.block.oe_whitelabel_multilingual_language_switcher
     - block.block.oe_whitelabel_neutral_footer
     - block.block.oe_whitelabel_search_form
-- 
GitLab


From 1586043cb521caf6f81217a9d67e8116166bc60a Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 14:59:36 +0200
Subject: [PATCH 29/36] OEL-1167: Remove content switcher block export.

---
 ...e_whitelabel_content_language_switcher.yml | 19 -------------------
 oe_whitelabel.info.yml                        |  1 -
 2 files changed, 20 deletions(-)
 delete mode 100644 config/optional/block.block.oe_whitelabel_content_language_switcher.yml

diff --git a/config/optional/block.block.oe_whitelabel_content_language_switcher.yml b/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
deleted file mode 100644
index 1b0b810d..00000000
--- a/config/optional/block.block.oe_whitelabel_content_language_switcher.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-langcode: en
-status: true
-dependencies:
-  module:
-    - oe_multilingual
-  theme:
-    - oe_whitelabel
-id: oe_whitelabel_content_language_switcher
-theme: oe_whitelabel
-region: content
-weight: -3
-provider: null
-plugin: oe_multilingual_content_language_switcher
-settings:
-  id: oe_multilingual_content_language_switcher
-  label: 'Content Language Switcher'
-  label_display: '0'
-  provider: oe_multilingual
-visibility: {  }
diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml
index d45b0e92..c3e080e8 100644
--- a/oe_whitelabel.info.yml
+++ b/oe_whitelabel.info.yml
@@ -37,7 +37,6 @@ config_devel:
   optional:
     - block.block.oe_whitelabel_branding
     - block.block.oe_whitelabel_breadcrumbs
-    - block.block.oe_whitelabel_content_language_switcher
     - block.block.oe_whitelabel_ec_corporate_footer
     - block.block.oe_whitelabel_eu_corporate_footer
     - block.block.oe_whitelabel_eulogin
-- 
GitLab


From 777b1ae373b1da5fcce992788bd040d515619a0e Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 16:46:56 +0200
Subject: [PATCH 30/36] OEL-1167: Remove language_block preprocess from root.

---
 oe_whitelabel.theme | 58 ---------------------------------------------
 1 file changed, 58 deletions(-)

diff --git a/oe_whitelabel.theme b/oe_whitelabel.theme
index bb3573db..3da1f386 100644
--- a/oe_whitelabel.theme
+++ b/oe_whitelabel.theme
@@ -11,64 +11,6 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
 use Drupal\oe_whitelabel_helper\EuropeanUnionLanguages;
 
-/**
- * Implements hook__preprocess_links__language_block().
- */
-function oe_whitelabel_preprocess_links__language_block(&$variables) {
-  $currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
-  $current_language_id = $currentLanguage->getId();
-  $language_config_storage = \Drupal::entityTypeManager()->getStorage('configurable_language');
-  $eu_links = [];
-  $non_eu_links = [];
-
-  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;
-    }
-  }
-
-  $variables['language']['modal'] = [
-    'id' => 'languageModal',
-    'size' => 'fullscreen',
-    'header' => [
-      'title' => t('Select your language'),
-      'label' => t('Close'),
-    ],
-    'eu_links' => $eu_links,
-    'non_eu_links' => $non_eu_links,
-    'footer' => [
-      'label' => t('Close'),
-    ],
-  ];
-}
-
 /**
  * Implements hook_form_FORM_ID_alter() for facets_forms.
  */
-- 
GitLab


From de3b993ff9c6fd38564bd0edbec8be92426a00b5 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 17:40:17 +0200
Subject: [PATCH 31/36] OEL-1167: Fix typo in links block preprocess.

---
 .../oe_whitelabel_multilingual.module                           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index 27ba6aa0..7784c9fb 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -56,7 +56,7 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
 }
 
 /**
- * Implements hook__preprocess_links__language_block().
+ * Implements hook_preprocess_links__language_block().
  */
 function oe_whitelabel_multilingual_preprocess_links__language_block(&$variables) {
   $currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
-- 
GitLab


From 5eaf632d2ec464b7390565be588e68d750c73310 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Fri, 18 Mar 2022 17:52:22 +0200
Subject: [PATCH 32/36] OEL-1167: Add new module dependency to multilingual
 kernel test.

---
 tests/src/Kernel/MultilingualBlockTest.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/src/Kernel/MultilingualBlockTest.php b/tests/src/Kernel/MultilingualBlockTest.php
index aa7053f8..8e21820e 100644
--- a/tests/src/Kernel/MultilingualBlockTest.php
+++ b/tests/src/Kernel/MultilingualBlockTest.php
@@ -23,6 +23,7 @@ class MultilingualBlockTest extends KernelTestBase {
     'locale',
     'oe_bootstrap_theme_helper',
     'oe_multilingual',
+    'oe_whitelabel_multilingual',
     'path',
     'path_alias',
     'pathauto',
-- 
GitLab


From bc274a47fffd015f17987eea9b2315606f2b8067 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Mon, 21 Mar 2022 15:20:11 +0200
Subject: [PATCH 33/36] OEL-1167: Account for language und.

---
 .../oe_whitelabel_multilingual.module         | 32 +++++++++++--------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index 7784c9fb..cd951db5 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -39,20 +39,24 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
   $entity = $multilingual_helper->getEntityFromCurrentRoute();
   /** @var \Drupal\Core\Entity\EntityInterface $translation */
   $translation = $multilingual_helper->getCurrentLanguageEntityTranslation($entity);
-  $variables['languages'][] = [
-    'path' => $translation->toUrl()->setAbsolute(TRUE)->toString(),
-    'hreflang' => $translation->language()->getId(),
-    'label' => $languages[$translation->language()->getId()]->getName(),
-    'current' => TRUE,
-    'icon_position' => 'before',
-    'remove_icon_spacers' => FALSE,
-    'icon' => [
-      'name' => 'check-lg',
-      'path' => $variables['bcl_icon_path'],
-      'size' => 'xs',
-      '#attributes' => ['class' => ['me-2']],
-    ],
-  ];
+  // If we don't have a language id defined yet, the current translation wasn't
+  // saved, so we don't add it to the list.
+  if ($translation->language()->getId() !== 'und') {
+    $variables['languages'][] = [
+      'path' => $translation->toUrl()->setAbsolute(TRUE)->toString(),
+      'hreflang' => $translation->language()->getId(),
+      'label' => $languages[$translation->language()->getId()]->getName(),
+      'current' => TRUE,
+      'icon_position' => 'before',
+      'remove_icon_spacers' => FALSE,
+      'icon' => [
+        'name' => 'check-lg',
+        'path' => $variables['bcl_icon_path'],
+        'size' => 'xs',
+        '#attributes' => ['class' => ['me-2']],
+      ],
+    ];
+  }
 }
 
 /**
-- 
GitLab


From e5b2f37ef43597e2630079cb6ec98eb554b3d5eb Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Mon, 21 Mar 2022 15:20:54 +0200
Subject: [PATCH 34/36] OEL-1167: Generate expandable id.

---
 .../oe_whitelabel_multilingual.module                       | 5 +++++
 .../links--oe-multilingual-content-language-block.html.twig | 2 +-
 tests/src/Kernel/ContentLanguageSwitcherTest.php            | 6 +++---
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index cd951db5..9a5a1e98 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -7,6 +7,8 @@
 
 declare(strict_types =  1);
 
+use Drupal\Component\Utility\Html;
+
 /**
  * Implements hook_preprocess_links().
  */
@@ -57,6 +59,9 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
       ],
     ];
   }
+
+  // Generate required ids.
+  $variables['expandable_id'] = Html::getUniqueId('bcl-expandable');
 }
 
 /**
diff --git a/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
index 1250046b..784fbbf2 100644
--- a/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
+++ b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
@@ -4,7 +4,7 @@
   _id, _message and _expandable are overwritten.
   @todo Call include once BCL 0.20 is available.
   #}
-  {% set _id = "dropdown-languages" %}
+  {% set _id = expandable_id %}
   {% set _message = {
     message: "This page is not available in @language."|t({'@language': unavailable_language}),
     path: bcl_icon_path,
diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index 33881e78..49c72b79 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -109,7 +109,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     $crawler = new Crawler($html);
 
     // Make sure that content language switcher block is present.
-    $actual = $crawler->filter('#dropdown-languages');
+    $actual = $crawler->filter('div.collapse.mt-3');
     $this->assertCount(1, $actual);
 
     // Warning message doesn't contain the unavailable language, the translation
@@ -154,7 +154,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
    */
   protected function assertSelectedLanguage(Crawler $crawler, string $expected): void {
     // The selected language link will contain a svg, so we target that.
-    $actual = $crawler->filter('#dropdown-languages > div > a > svg')->parents()->first()->text();
+    $actual = $crawler->filter('div.collapse.mt-3 > div > a > svg')->parents()->first()->text();
     $this->assertEquals($expected, trim($actual));
   }
 
@@ -180,7 +180,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
    *   The labels of the translations that should be rendered as links.
    */
   protected function assertTranslationLinks(Crawler $crawler, array $expected): void {
-    $elements = $crawler->filter('#dropdown-languages > div > a');
+    $elements = $crawler->filter('div.collapse.mt-3 > div > a');
     // Filter out the selected language.
     $elements = $elements->reduce(function (Crawler $crawler) {
       return $crawler->filter('svg')->count() === 0;
-- 
GitLab


From 34998d5cd34aae2da977323c2a3334bd95f2af64 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Mon, 21 Mar 2022 16:12:24 +0200
Subject: [PATCH 35/36] OEL-1167: Fix config_devel settings.

---
 .../oe_whitelabel_starter_event.info.yml                    | 2 +-
 .../oe_whitelabel_starter_news.info.yml                     | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml
index 29c37b07..ce2617f0 100755
--- a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml
+++ b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml
@@ -10,6 +10,6 @@ dependencies:
 
 config_devel:
   install:
+    - core.date_format.oe_whitelabel_starter_event_date
     - core.entity_view_display.node.oe_sc_event.full
     - core.entity_view_display.node.oe_sc_event.teaser
-    - core.date_format.oe_whitelabel_starter_event_date
diff --git a/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml b/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml
index cd71e399..dc47e64b 100644
--- a/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml
+++ b/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml
@@ -10,6 +10,6 @@ dependencies:
 
 config_devel:
   install:
-    - core.date_format.oe_whitelabel_starter_news_date.yml
-    - core.entity_view_display.node.oe_sc_news.full.yml
-    - core.entity_view_display.node.oe_sc_news.teaser.yml
+    - core.date_format.oe_whitelabel_starter_news_date
+    - core.entity_view_display.node.oe_sc_news.full
+    - core.entity_view_display.node.oe_sc_news.teaser
-- 
GitLab


From 023a77015a0b264d2890bb7e6cf3eb276646f6a9 Mon Sep 17 00:00:00 2001
From: drishu <aszilagyi@live.com>
Date: Mon, 21 Mar 2022 16:16:14 +0200
Subject: [PATCH 36/36] OEL-1167: Move var doc to multilingual helper service.

---
 .../oe_whitelabel_multilingual.module                           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index 9a5a1e98..203182b5 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -37,9 +37,9 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
   }
 
   // Add the current language to the list.
+  /** @var \Drupal\oe_multilingual\MultilingualHelper $multilingual_helper */
   $multilingual_helper = \Drupal::service('oe_multilingual.helper');
   $entity = $multilingual_helper->getEntityFromCurrentRoute();
-  /** @var \Drupal\Core\Entity\EntityInterface $translation */
   $translation = $multilingual_helper->getCurrentLanguageEntityTranslation($entity);
   // If we don't have a language id defined yet, the current translation wasn't
   // saved, so we don't add it to the list.
-- 
GitLab