diff --git a/core/modules/language/language.post_update.php b/core/modules/language/language.post_update.php index d8ffe64..d1138d0 100644 --- a/core/modules/language/language.post_update.php +++ b/core/modules/language/language.post_update.php @@ -18,13 +18,17 @@ function language_post_update_language_select_widget() { foreach (EntityFormDisplay::loadMultiple() as $display_form) { $content = $display_form->get('content'); + $changed = FALSE; foreach (array_keys($content) as $element) { if (isset($content[$element]['type']) && $content[$element]['type'] == 'language_select') { - $content[$element]['settings'] = ['include_locked' => TRUE]; - $display_form->set('content', $content); - $display_form->save(); + $content[$element]['settings']['include_locked'] = TRUE; + $changed = TRUE; } } + if ($changed) { + $display_form->set('content', $content); + $display_form->save(); + } } } diff --git a/core/modules/language/src/Tests/Update/LanguageSelectWidgetUpdateTest.php b/core/modules/language/src/Tests/Update/LanguageSelectWidgetUpdateTest.php index 392b51b..b055983 100644 --- a/core/modules/language/src/Tests/Update/LanguageSelectWidgetUpdateTest.php +++ b/core/modules/language/src/Tests/Update/LanguageSelectWidgetUpdateTest.php @@ -26,30 +26,15 @@ protected function setDatabaseDumpFiles() { */ public function testLanguagePostUpdateLanguageSelectWidget() { // Tests before the update. - $this->doTestLanguageSelectWidgets([]); + $content_before = EntityFormDisplay::load('node.page.default')->get('content'); + $this->assertEqual([], $content_before['langcode']['settings']); // Run the update. $this->runUpdates(); // Tests after the update. - $this->doTestLanguageSelectWidgets(['include_locked' => TRUE]); - } - - /** - * Helper method to test the language_select widgets. - * - * @param array $expected_settings - * The expected widget settings. - */ - protected function doTestLanguageSelectWidgets($expected_settings) { - foreach (EntityFormDisplay::loadMultiple() as $display_form) { - $content = $display_form->get('content'); - foreach (array_keys($content) as $element) { - if (isset($content[$element]['type']) && $content[$element]['type'] == 'language_select') { - $this->assertEqual($expected_settings, $content[$element]['settings']); - } - } - } + $content_after = EntityFormDisplay::load('node.page.default')->get('content'); + $this->assertEqual(['include_locked' => TRUE], $content_after['langcode']['settings']); } }