Commit 829d1661 authored by catch's avatar catch
Browse files

Issue #3280398 by alexpott, mherchel, quietone: Theme's post updates within...

Issue #3280398 by alexpott, mherchel, quietone: Theme's post updates within update.php refer to themes as "module"

(cherry picked from commit 47f2a076)
parent 18616ac0
Loading
Loading
Loading
Loading
+21 −18
Original line number Diff line number Diff line
@@ -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':
@@ -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>',
@@ -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'])) {
@@ -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 = [];
@@ -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]);
              }
@@ -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,
            ];
          }
+5 −1
Original line number Diff line number Diff line
@@ -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');
  }

  /**
@@ -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.');
  }

+1 −0
Original line number Diff line number Diff line
@@ -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';
  }

}