Loading CHANGELOG.txt +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ Metatag 8.x-1.x-dev, xxxx-xx-xx #3170298 by thejimbirch: Provide link to Facebook Open Graph debugger. #3136470 by novchuk.v: Replace assertEqual()/assertSame() with count() with assertCount(). #3108052 by Berdir, SpadXIII: metatag_get_default_tags() does not revert config override language. Metatag 8.x-1.14, 2020-08-11 Loading metatag.module +10 −1 Original line number Diff line number Diff line Loading @@ -509,15 +509,20 @@ function metatag_get_default_tags($entity = NULL) { $metatag_manager = \Drupal::service('metatag.manager'); // Load config based on language. $current_language = NULL; if ($entity !== NULL) { /** @var \Drupal\Core\Language\LanguageManagerInterface $language_manager */ $language_manager = \Drupal::languageManager(); $current_language = $language_manager->getConfigOverrideLanguage(); $language_manager->setConfigOverrideLanguage($entity->language()); } // First we load global defaults. $metatags = $metatag_manager->getGlobalMetatags(); if (!$metatags) { if ($current_language) { $language_manager->setConfigOverrideLanguage($current_language); } return NULL; } Loading Loading @@ -551,7 +556,11 @@ function metatag_get_default_tags($entity = NULL) { } } return $metatags->get('tags'); $tags = $metatags->get('tags'); if ($current_language) { $language_manager->setConfigOverrideLanguage($current_language); } return $tags; } /** Loading tests/src/Functional/MetatagConfigTranslationTest.php +29 −10 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Drupal\Tests\metatag\Functional; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\metatag\Entity\MetatagDefaults; use Drupal\Tests\BrowserTestBase; use Drupal\Core\StringTranslation\StringTranslationTrait; Loading Loading @@ -37,6 +39,7 @@ class MetatagConfigTranslationTest extends BrowserTestBase { 'metatag', 'language', 'config_translation', 'node', ]; /** Loading Loading @@ -72,16 +75,7 @@ class MetatagConfigTranslationTest extends BrowserTestBase { $this->drupalLogin($this->adminUser); // Enable the French language. $this->drupalGet('admin/config/regional/language/add'); $this->assertSession()->statusCodeEquals(200); $edit = [ 'predefined_langcode' => 'fr', ]; $this->drupalPostForm(NULL, $edit, $this->t('Add language')); $this->assertRaw($this->t( 'The language %language has been created and can now be used.', ['%language' => $this->t('French')] )); ConfigurableLanguage::createFromLangcode('fr')->save(); } /** Loading Loading @@ -163,6 +157,31 @@ class MetatagConfigTranslationTest extends BrowserTestBase { $this->drupalPostForm(NULL, $edit, $this->t('Save translation')); $this->assertSession()->statusCodeEquals(200); $this->assertText($this->t('Successfully saved French translation')); // Delete the node metatag defaults to simplify the test. MetatagDefaults::load('node')->delete(); // Create a node in french, request default tags for it. Ensure that the // config translation language is afterwards still/again set to EN and // tags are returned in FR. $this->drupalCreateContentType(['type' => 'page']); $node = $this->drupalCreateNode([ 'title' => 'Metatag Test FR', 'langcode' => 'fr', ]); $language_manager = \Drupal::languageManager(); $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); $fr_default_tags = metatag_get_default_tags($node); $this->assertEquals('Le title', $fr_default_tags['title']); $this->assertEquals('Le description', $fr_default_tags['description']); $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); // Delete the default tags as well to test the early return. MetatagDefaults::load('global')->delete(); $fr_default_tags = metatag_get_default_tags($node); $this->assertNull($fr_default_tags); $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); } } Loading
CHANGELOG.txt +2 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ Metatag 8.x-1.x-dev, xxxx-xx-xx #3170298 by thejimbirch: Provide link to Facebook Open Graph debugger. #3136470 by novchuk.v: Replace assertEqual()/assertSame() with count() with assertCount(). #3108052 by Berdir, SpadXIII: metatag_get_default_tags() does not revert config override language. Metatag 8.x-1.14, 2020-08-11 Loading
metatag.module +10 −1 Original line number Diff line number Diff line Loading @@ -509,15 +509,20 @@ function metatag_get_default_tags($entity = NULL) { $metatag_manager = \Drupal::service('metatag.manager'); // Load config based on language. $current_language = NULL; if ($entity !== NULL) { /** @var \Drupal\Core\Language\LanguageManagerInterface $language_manager */ $language_manager = \Drupal::languageManager(); $current_language = $language_manager->getConfigOverrideLanguage(); $language_manager->setConfigOverrideLanguage($entity->language()); } // First we load global defaults. $metatags = $metatag_manager->getGlobalMetatags(); if (!$metatags) { if ($current_language) { $language_manager->setConfigOverrideLanguage($current_language); } return NULL; } Loading Loading @@ -551,7 +556,11 @@ function metatag_get_default_tags($entity = NULL) { } } return $metatags->get('tags'); $tags = $metatags->get('tags'); if ($current_language) { $language_manager->setConfigOverrideLanguage($current_language); } return $tags; } /** Loading
tests/src/Functional/MetatagConfigTranslationTest.php +29 −10 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Drupal\Tests\metatag\Functional; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\metatag\Entity\MetatagDefaults; use Drupal\Tests\BrowserTestBase; use Drupal\Core\StringTranslation\StringTranslationTrait; Loading Loading @@ -37,6 +39,7 @@ class MetatagConfigTranslationTest extends BrowserTestBase { 'metatag', 'language', 'config_translation', 'node', ]; /** Loading Loading @@ -72,16 +75,7 @@ class MetatagConfigTranslationTest extends BrowserTestBase { $this->drupalLogin($this->adminUser); // Enable the French language. $this->drupalGet('admin/config/regional/language/add'); $this->assertSession()->statusCodeEquals(200); $edit = [ 'predefined_langcode' => 'fr', ]; $this->drupalPostForm(NULL, $edit, $this->t('Add language')); $this->assertRaw($this->t( 'The language %language has been created and can now be used.', ['%language' => $this->t('French')] )); ConfigurableLanguage::createFromLangcode('fr')->save(); } /** Loading Loading @@ -163,6 +157,31 @@ class MetatagConfigTranslationTest extends BrowserTestBase { $this->drupalPostForm(NULL, $edit, $this->t('Save translation')); $this->assertSession()->statusCodeEquals(200); $this->assertText($this->t('Successfully saved French translation')); // Delete the node metatag defaults to simplify the test. MetatagDefaults::load('node')->delete(); // Create a node in french, request default tags for it. Ensure that the // config translation language is afterwards still/again set to EN and // tags are returned in FR. $this->drupalCreateContentType(['type' => 'page']); $node = $this->drupalCreateNode([ 'title' => 'Metatag Test FR', 'langcode' => 'fr', ]); $language_manager = \Drupal::languageManager(); $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); $fr_default_tags = metatag_get_default_tags($node); $this->assertEquals('Le title', $fr_default_tags['title']); $this->assertEquals('Le description', $fr_default_tags['description']); $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); // Delete the default tags as well to test the early return. MetatagDefaults::load('global')->delete(); $fr_default_tags = metatag_get_default_tags($node); $this->assertNull($fr_default_tags); $this->assertEquals('en', $language_manager->getConfigOverrideLanguage()->getId()); } }