Loading core/modules/system/src/Controller/DbUpdateController.php +21 −18 Original line number Diff line number Diff line Loading @@ -268,7 +268,7 @@ protected function selection(Request $request) { $starting_updates = []; $incompatible_updates_exist = FALSE; $updates_per_module = []; $updates_per_extension = []; foreach (['update', 'post_update'] as $update_type) { switch ($update_type) { case 'update': Loading @@ -279,11 +279,11 @@ protected function selection(Request $request) { $updates = $this->postUpdateRegistry->getPendingUpdateInformation(); break; } foreach ($updates as $module => $update) { foreach ($updates as $extension => $update) { if (!isset($update['start'])) { $build['start'][$module] = [ $build['start'][$extension] = [ '#type' => 'item', '#title' => $module . ' module', '#title' => $extension . ($this->moduleHandler->moduleExists($extension) ? ' module' : ' theme'), '#markup' => $update['warning'], '#prefix' => '<div class="messages messages--warning">', '#suffix' => '</div>', Loading @@ -292,22 +292,22 @@ protected function selection(Request $request) { continue; } if (!empty($update['pending'])) { $updates_per_module += [$module => []]; $updates_per_module[$module] = array_merge($updates_per_module[$module], $update['pending']); $build['start'][$module] = [ $updates_per_extension += [$extension => []]; $updates_per_extension[$extension] = array_merge($updates_per_extension[$extension], $update['pending']); $build['start'][$extension] = [ '#type' => 'hidden', '#value' => $update['start'], ]; // Store the previous items in order to merge normal updates and // post_update functions together. $build['start'][$module] = [ $build['start'][$extension] = [ '#theme' => 'item_list', '#items' => $updates_per_module[$module], '#title' => $module . ' module', '#items' => $updates_per_extension[$extension], '#title' => $extension . ($this->moduleHandler->moduleExists($extension) ? ' module' : ' theme'), ]; if ($update_type === 'update') { $starting_updates[$module] = $update['start']; $starting_updates[$extension] = $update['start']; } } if (isset($update['pending'])) { Loading Loading @@ -446,9 +446,9 @@ protected function results(Request $request) { // Output a list of info messages. if (!empty($update_results)) { $all_messages = []; foreach ($update_results as $module => $updates) { if ($module != '#abort') { $module_has_message = FALSE; foreach ($update_results as $extension => $updates) { if ($extension != '#abort') { $extension_has_message = FALSE; $info_messages = []; foreach ($updates as $name => $queries) { $messages = []; Loading @@ -473,7 +473,7 @@ protected function results(Request $request) { } if ($messages) { $module_has_message = TRUE; $extension_has_message = TRUE; if (is_numeric($name)) { $title = $this->t('Update #@count', ['@count' => $name]); } Loading @@ -488,12 +488,15 @@ protected function results(Request $request) { } } // If there were any messages then prefix them with the module name // If there were any messages then prefix them with the extension name // and add it to the global message list. if ($module_has_message) { if ($extension_has_message) { $header = $this->moduleHandler->moduleExists($extension) ? $this->t('@module module', ['@module' => $extension]) : $this->t('@theme theme', ['@theme' => $extension]); $all_messages[] = [ '#type' => 'container', '#prefix' => '<h3>' . $this->t('@module module', ['@module' => $module]) . '</h3>', '#prefix' => '<h3>' . $header . '</h3>', '#children' => $info_messages, ]; } Loading core/modules/system/tests/src/Functional/Theme/ThemeUpdateTest.php +5 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,10 @@ public function testThemeUpdates() { $this->assertFalse(\Drupal::moduleHandler()->moduleExists('test_another_module_required_by_theme')); $this->runUpdates(); $this->assertTrue(\Drupal::moduleHandler()->moduleExists('test_another_module_required_by_theme')); $this->assertSession()->addressEquals('update.php/results'); $this->assertSession()->responseContains('test_theme_depending_on_modules theme'); $this->assertSession()->responseContains('Post update message from theme post update function'); } /** Loading @@ -43,7 +47,7 @@ public function testThemeUpdates() { */ protected function doSelectionTest() { // Ensure that the theme's post update appears as expected. $this->assertSession()->responseContains('test_theme_depending_on_modules module'); $this->assertSession()->responseContains('test_theme_depending_on_modules theme'); $this->assertSession()->responseContains('Install a dependent module.'); } Loading core/modules/system/tests/themes/test_theme_depending_on_modules/test_theme_depending_on_modules.post_update.php +1 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ */ function test_theme_depending_on_modules_post_update_module_install(&$sandbox = NULL) { \Drupal::service('module_installer')->install(['test_another_module_required_by_theme']); return 'Post update message from theme post update function'; } } Loading Loading
core/modules/system/src/Controller/DbUpdateController.php +21 −18 Original line number Diff line number Diff line Loading @@ -268,7 +268,7 @@ protected function selection(Request $request) { $starting_updates = []; $incompatible_updates_exist = FALSE; $updates_per_module = []; $updates_per_extension = []; foreach (['update', 'post_update'] as $update_type) { switch ($update_type) { case 'update': Loading @@ -279,11 +279,11 @@ protected function selection(Request $request) { $updates = $this->postUpdateRegistry->getPendingUpdateInformation(); break; } foreach ($updates as $module => $update) { foreach ($updates as $extension => $update) { if (!isset($update['start'])) { $build['start'][$module] = [ $build['start'][$extension] = [ '#type' => 'item', '#title' => $module . ' module', '#title' => $extension . ($this->moduleHandler->moduleExists($extension) ? ' module' : ' theme'), '#markup' => $update['warning'], '#prefix' => '<div class="messages messages--warning">', '#suffix' => '</div>', Loading @@ -292,22 +292,22 @@ protected function selection(Request $request) { continue; } if (!empty($update['pending'])) { $updates_per_module += [$module => []]; $updates_per_module[$module] = array_merge($updates_per_module[$module], $update['pending']); $build['start'][$module] = [ $updates_per_extension += [$extension => []]; $updates_per_extension[$extension] = array_merge($updates_per_extension[$extension], $update['pending']); $build['start'][$extension] = [ '#type' => 'hidden', '#value' => $update['start'], ]; // Store the previous items in order to merge normal updates and // post_update functions together. $build['start'][$module] = [ $build['start'][$extension] = [ '#theme' => 'item_list', '#items' => $updates_per_module[$module], '#title' => $module . ' module', '#items' => $updates_per_extension[$extension], '#title' => $extension . ($this->moduleHandler->moduleExists($extension) ? ' module' : ' theme'), ]; if ($update_type === 'update') { $starting_updates[$module] = $update['start']; $starting_updates[$extension] = $update['start']; } } if (isset($update['pending'])) { Loading Loading @@ -446,9 +446,9 @@ protected function results(Request $request) { // Output a list of info messages. if (!empty($update_results)) { $all_messages = []; foreach ($update_results as $module => $updates) { if ($module != '#abort') { $module_has_message = FALSE; foreach ($update_results as $extension => $updates) { if ($extension != '#abort') { $extension_has_message = FALSE; $info_messages = []; foreach ($updates as $name => $queries) { $messages = []; Loading @@ -473,7 +473,7 @@ protected function results(Request $request) { } if ($messages) { $module_has_message = TRUE; $extension_has_message = TRUE; if (is_numeric($name)) { $title = $this->t('Update #@count', ['@count' => $name]); } Loading @@ -488,12 +488,15 @@ protected function results(Request $request) { } } // If there were any messages then prefix them with the module name // If there were any messages then prefix them with the extension name // and add it to the global message list. if ($module_has_message) { if ($extension_has_message) { $header = $this->moduleHandler->moduleExists($extension) ? $this->t('@module module', ['@module' => $extension]) : $this->t('@theme theme', ['@theme' => $extension]); $all_messages[] = [ '#type' => 'container', '#prefix' => '<h3>' . $this->t('@module module', ['@module' => $module]) . '</h3>', '#prefix' => '<h3>' . $header . '</h3>', '#children' => $info_messages, ]; } Loading
core/modules/system/tests/src/Functional/Theme/ThemeUpdateTest.php +5 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,10 @@ public function testThemeUpdates() { $this->assertFalse(\Drupal::moduleHandler()->moduleExists('test_another_module_required_by_theme')); $this->runUpdates(); $this->assertTrue(\Drupal::moduleHandler()->moduleExists('test_another_module_required_by_theme')); $this->assertSession()->addressEquals('update.php/results'); $this->assertSession()->responseContains('test_theme_depending_on_modules theme'); $this->assertSession()->responseContains('Post update message from theme post update function'); } /** Loading @@ -43,7 +47,7 @@ public function testThemeUpdates() { */ protected function doSelectionTest() { // Ensure that the theme's post update appears as expected. $this->assertSession()->responseContains('test_theme_depending_on_modules module'); $this->assertSession()->responseContains('test_theme_depending_on_modules theme'); $this->assertSession()->responseContains('Install a dependent module.'); } Loading
core/modules/system/tests/themes/test_theme_depending_on_modules/test_theme_depending_on_modules.post_update.php +1 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ */ function test_theme_depending_on_modules_post_update_module_install(&$sandbox = NULL) { \Drupal::service('module_installer')->install(['test_another_module_required_by_theme']); return 'Post update message from theme post update function'; } } Loading