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