Issue #3280398 by alexpott, mherchel, quietone: Theme's post updates within update.php refer to themes as "module"
parent
dd16e9e8bb
commit
47f2a07604
|
@ -268,7 +268,7 @@ class DbUpdateController extends ControllerBase {
|
|||
|
||||
$starting_updates = [];
|
||||
$incompatible_updates_exist = FALSE;
|
||||
$updates_per_module = [];
|
||||
$updates_per_extension = [];
|
||||
foreach (['update', 'post_update'] as $update_type) {
|
||||
switch ($update_type) {
|
||||
case 'update':
|
||||
|
@ -279,11 +279,11 @@ class DbUpdateController extends ControllerBase {
|
|||
$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>',
|
||||
|
@ -292,22 +292,22 @@ class DbUpdateController extends ControllerBase {
|
|||
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'])) {
|
||||
|
@ -446,9 +446,9 @@ class DbUpdateController extends ControllerBase {
|
|||
// 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 = [];
|
||||
|
@ -473,7 +473,7 @@ class DbUpdateController extends ControllerBase {
|
|||
}
|
||||
|
||||
if ($messages) {
|
||||
$module_has_message = TRUE;
|
||||
$extension_has_message = TRUE;
|
||||
if (is_numeric($name)) {
|
||||
$title = $this->t('Update #@count', ['@count' => $name]);
|
||||
}
|
||||
|
@ -488,12 +488,15 @@ class DbUpdateController extends ControllerBase {
|
|||
}
|
||||
}
|
||||
|
||||
// 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,
|
||||
];
|
||||
}
|
||||
|
|
|
@ -36,6 +36,10 @@ class ThemeUpdateTest extends BrowserTestBase {
|
|||
$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');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -43,7 +47,7 @@ class ThemeUpdateTest extends BrowserTestBase {
|
|||
*/
|
||||
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.');
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ if (\Drupal::state()->get('test_theme_depending_on_modules.post_update')) {
|
|||
*/
|
||||
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…
Reference in New Issue