diff --git a/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css b/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css index f15ff6a4b4..1de1a1ebed 100644 --- a/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css +++ b/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css @@ -18,3 +18,6 @@ .upgrade-analysis-report__status-icon--checked:before { background-image: url(../../../../misc/icons/73b355/check.svg); } +.upgrade-analysis-report__status-icon--error:before { + background-image: url(../../../../misc/icons/e32700/error.svg); +} diff --git a/core/modules/migrate_drupal_ui/migrate_drupal_ui.module b/core/modules/migrate_drupal_ui/migrate_drupal_ui.module index 5f06cdcc87..0a8471add8 100644 --- a/core/modules/migrate_drupal_ui/migrate_drupal_ui.module +++ b/core/modules/migrate_drupal_ui/migrate_drupal_ui.module @@ -26,7 +26,7 @@ function migrate_drupal_ui_help($route_name, RouteMatchInterface $route_match) { $output .= '
' . t('On the Upgrade page, you are guided through performing the upgrade in several steps.', [':upgrade' => \Drupal::url('migrate_drupal_ui.upgrade')]) . '
'; $output .= '
  1. ' . t('You need to enter the database credentials of the Drupal site that you want to upgrade. You can also include its files directory in the upgrade.') . '
  2. '; - $output .= '
  3. ' . t('The next page then provides an overview of which upgrade paths are available or missing, before you proceed to perform the upgrade.') . '
  4. '; + $output .= '
  5. ' . t('The next page provides an overview of the modules that will be upgraded and those that will not be upgraded, before you proceed to perform the upgrade.') . '
  6. '; $output .= '
  7. ' . t('Lastly, a message is displayed about the number of upgrade tasks that were successful or failed.') . '
'; $output .= '
' . t('Reviewing the upgrade log') . '
'; $output .= '
' . t('You can review a log of upgrade messages by clicking the link in the message provided after the upgrade or by filtering the messages for the type migrate_drupal_ui on the Recent log messages page.', diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php index 04da0f588c..c080a3917f 100644 --- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php @@ -6,6 +6,7 @@ use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Form\ConfirmFormBase; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\Render\RendererInterface; use Drupal\Core\State\StateInterface; use Drupal\Core\Url; @@ -27,6 +28,13 @@ class MigrateUpgradeForm extends ConfirmFormBase { use MigrationConfigurationTrait; /** + * The current form step. + * + * @var string + */ + protected $step; + + /** * The state service. * * @var \Drupal\Core\State\StateInterface @@ -69,6 +77,13 @@ class MigrateUpgradeForm extends ConfirmFormBase { protected $moduleHandler; /** + * The messenger service. + * + * @var \Drupal\Core\Messenger\MessengerInterface + */ + protected $messenger; + + /** * List of extensions that do not need an upgrade path. * * This property is an array where the keys are the major Drupal core version @@ -180,13 +195,14 @@ class MigrateUpgradeForm extends ConfirmFormBase { * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. */ - public function __construct(StateInterface $state, DateFormatterInterface $date_formatter, RendererInterface $renderer, MigrationPluginManagerInterface $plugin_manager, MigrateFieldPluginManagerInterface $field_plugin_manager, ModuleHandlerInterface $module_handler) { + public function __construct(StateInterface $state, DateFormatterInterface $date_formatter, RendererInterface $renderer, MigrationPluginManagerInterface $plugin_manager, MigrateFieldPluginManagerInterface $field_plugin_manager, ModuleHandlerInterface $module_handler, MessengerInterface $messenger) { $this->state = $state; $this->dateFormatter = $date_formatter; $this->renderer = $renderer; $this->pluginManager = $plugin_manager; $this->fieldPluginManager = $field_plugin_manager; $this->moduleHandler = $module_handler; + $this->messenger = $messenger; } /** @@ -199,7 +215,8 @@ public static function create(ContainerInterface $container) { $container->get('renderer'), $container->get('plugin.manager.migration'), $container->get('plugin.manager.migrate.field'), - $container->get('module_handler') + $container->get('module_handler'), + $container->get('messenger') ); } @@ -214,8 +231,8 @@ public function getFormId() { * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { - $step = $form_state->get('step') ?: 'overview'; - switch ($step) { + $this->step = $form_state->get('step') ?: 'overview'; + switch ($this->step) { case 'overview': return $this->buildOverviewForm($form, $form_state); @@ -229,7 +246,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { return $this->buildConfirmForm($form, $form_state); default: - drupal_set_message($this->t('Unrecognized form step @step', ['@step' => $step]), 'error'); + $this->messenger->addError($this->t('Unrecognized form step @step', ['@step' => $this->step])); return []; } } @@ -601,7 +618,7 @@ public function buildIdConflictForm(array &$form, FormStateInterface $form_state return $this->buildForm($form, $form_state); } - drupal_set_message($this->t('WARNING: Content may be overwritten on your new site.'), 'warning'); + $this->messenger->addWarning($this->t('WARNING: Content may be overwritten on your new site.')); $form = parent::buildForm($form, $form_state); $form['actions']['submit']['#submit'] = ['::submitConfirmIdConflictForm']; @@ -742,11 +759,11 @@ public function buildConfirmForm(array $form, FormStateInterface $form_state) { $migration_id = $migration->getPluginId(); $source_module = $migration->getSourcePlugin()->getSourceModule(); if (!$source_module) { - drupal_set_message($this->t('Source module not found for @migration_id.', ['@migration_id' => $migration_id]), 'error'); + $this->messenger->addError($this->t('Source module not found for @migration_id.', ['@migration_id' => $migration_id])); } $destination_module = $migration->getDestinationPlugin()->getDestinationModule(); if (!$destination_module) { - drupal_set_message($this->t('Destination module not found for @migration_id.', ['@migration_id' => $migration_id]), 'error'); + $this->messenger->addError($this->t('Destination module not found for @migration_id.', ['@migration_id' => $migration_id])); } if ($source_module && $destination_module) { @@ -798,17 +815,17 @@ public function buildConfirmForm(array $form, FormStateInterface $form_state) { '#title' => [ '#type' => 'html_tag', '#tag' => 'span', - '#value' => $this->t('Missing upgrade paths'), - '#attributes' => ['id' => ['warning']], + '#value' => $this->t('Modules that will not be upgraded'), + '#attributes' => ['id' => ['error']], ], - '#description' => $this->t('The following items will not be upgraded. For more information see Upgrading from Drupal 6 or 7 to Drupal 8.', [':migrate' => 'https://www.drupal.org/upgrade/migrate']), + '#description' => $this->t('There are no modules installed on your new site to replace these modules. If you proceed with the upgrade now, configuration and/or content needed by these modules will not be available on your new site. For more information, see Review the pre-upgrade analysis in the Upgrading to Drupal 8 handbook.', [':review' => 'https://www.drupal.org/docs/8/upgrade/upgrade-using-web-browser#pre-upgrade-analysis', ':migrate' => 'https://www.drupal.org/docs/8/upgrade']), '#weight' => 2, ]; $missing_module_list['module_list'] = [ '#type' => 'table', '#header' => [ - $this->t('Source module: Drupal @version', ['@version' => $version]), - $this->t('Upgrade module: Drupal 8'), + $this->t('Drupal @version', ['@version' => $version]), + $this->t('Drupal 8'), ], ]; $missing_count = 0; @@ -824,21 +841,22 @@ public function buildConfirmForm(array $form, FormStateInterface $form_state) { '#attributes' => [ 'class' => [ 'upgrade-analysis-report__status-icon', - 'upgrade-analysis-report__status-icon--warning', + 'upgrade-analysis-report__status-icon--error', ], ], ], - 'destination_module' => ['#plain_text' => 'Missing'], + 'destination_module' => ['#plain_text' => 'Not upgraded'], ]; } } + // Available migrations. $available_module_list = [ '#type' => 'details', '#title' => [ '#type' => 'html_tag', '#tag' => 'span', - '#value' => $this->t('Available upgrade paths'), + '#value' => $this->t('Modules that will be upgraded'), '#attributes' => ['id' => ['checked']], ], '#weight' => 3, @@ -847,8 +865,8 @@ public function buildConfirmForm(array $form, FormStateInterface $form_state) { $available_module_list['module_list'] = [ '#type' => 'table', '#header' => [ - $this->t('Source module: Drupal @version', ['@version' => $version]), - $this->t('Upgrade module: Drupal 8'), + $this->t('Drupal @version', ['@version' => $version]), + $this->t('Drupal 8'), ], ]; @@ -885,8 +903,8 @@ public function buildConfirmForm(array $form, FormStateInterface $form_state) { $counters[] = [ '#theme' => 'status_report_counter', '#amount' => $missing_count, - '#text' => $this->formatPlural($missing_count, 'Missing upgrade path', 'Missing upgrade paths'), - '#severity' => 'warning', + '#text' => $this->formatPlural($missing_count, 'Module will not be upgraded', 'Modules will not be upgraded'), + '#severity' => 'error', '#weight' => 0, ]; $general_info[] = $missing_module_list; @@ -895,7 +913,7 @@ public function buildConfirmForm(array $form, FormStateInterface $form_state) { $counters[] = [ '#theme' => 'status_report_counter', '#amount' => $available_count, - '#text' => $this->formatPlural($available_count, 'Available upgrade path', 'Available upgrade paths'), + '#text' => $this->formatPlural($available_count, 'Module will be upgraded', 'Modules will be upgraded'), '#severity' => 'checked', '#weight' => 1, ]; @@ -960,7 +978,10 @@ protected function getDatabaseTypes() { * {@inheritdoc} */ public function getQuestion() { - return $this->t('Upgrade analysis report'); + if ($this->step === 'confirm_id_conflicts') { + return $this->t('Upgrade analysis report'); + } + return $this->t('What will be upgraded?'); } /** diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php index cc450eca2d..4758a5e343 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeExecuteTestBase.php @@ -99,7 +99,7 @@ public function testMigrateUpgradeExecute() { $session->pageTextContains('There is translated content of these types:'); $this->drupalPostForm(NULL, [], t('I acknowledge I may lose data. Continue anyway.')); $session->statusCodeEquals(200); - $session->pageTextContains('Upgrade analysis report'); + $session->pageTextContains('What will be upgraded?'); // Ensure there are no errors about missing modules from the test module. $session->pageTextNotContains(t('Source module not found for migration_provider_no_annotation.')); $session->pageTextNotContains(t('Source module not found for migration_provider_test.')); diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeTestBase.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeTestBase.php index 8496b115dd..624a052559 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeTestBase.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeTestBase.php @@ -132,17 +132,17 @@ protected function assertUpgradePaths(WebAssert $session, array $available_paths // Test the available migration paths. foreach ($available_paths as $available) { $session->elementExists('xpath', "//span[contains(@class, 'checked') and text() = '$available']"); - $session->elementNotExists('xpath', "//span[contains(@class, 'warning') and text() = '$available']"); + $session->elementNotExists('xpath', "//span[contains(@class, 'error') and text() = '$available']"); } // Test the missing migration paths. foreach ($missing_paths as $missing) { - $session->elementExists('xpath', "//span[contains(@class, 'warning') and text() = '$missing']"); + $session->elementExists('xpath', "//span[contains(@class, 'error') and text() = '$missing']"); $session->elementNotExists('xpath', "//span[contains(@class, 'checked') and text() = '$missing']"); } // Test the total count of missing and available paths. - $session->elementsCount('xpath', "//span[contains(@class, 'upgrade-analysis-report__status-icon--warning')]", count($missing_paths)); + $session->elementsCount('xpath', "//span[contains(@class, 'upgrade-analysis-report__status-icon--error')]", count($missing_paths)); $session->elementsCount('xpath', "//span[contains(@class, 'upgrade-analysis-report__status-icon--checked')]", count($available_paths)); }