diff --git a/core/modules/action/action.info.yml b/core/modules/action/action.info.yml index 7559efbcb2..763fb7a625 100644 --- a/core/modules/action/action.info.yml +++ b/core/modules/action/action.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: entity.action.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/aggregator/aggregator.info.yml b/core/modules/aggregator/aggregator.info.yml index d6ffbaa85b..f2a64c9493 100644 --- a/core/modules/aggregator/aggregator.info.yml +++ b/core/modules/aggregator/aggregator.info.yml @@ -8,3 +8,10 @@ configure: aggregator.admin_settings dependencies: - drupal:file - drupal:options +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/automated_cron/automated_cron.info.yml b/core/modules/automated_cron/automated_cron.info.yml index dd947279c6..2ab814ac89 100644 --- a/core/modules/automated_cron/automated_cron.info.yml +++ b/core/modules/automated_cron/automated_cron.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: system.cron_settings +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/ban/ban.info.yml b/core/modules/ban/ban.info.yml index ba6300de1c..263a171e60 100644 --- a/core/modules/ban/ban.info.yml +++ b/core/modules/ban/ban.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: ban.admin_page +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: complete diff --git a/core/modules/basic_auth/basic_auth.info.yml b/core/modules/basic_auth/basic_auth.info.yml index f1ddb67c52..f25e6a1163 100644 --- a/core/modules/basic_auth/basic_auth.info.yml +++ b/core/modules/basic_auth/basic_auth.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:user +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/big_pipe/big_pipe.info.yml b/core/modules/big_pipe/big_pipe.info.yml index 35c3015383..bcbfd64e4f 100644 --- a/core/modules/big_pipe/big_pipe.info.yml +++ b/core/modules/big_pipe/big_pipe.info.yml @@ -4,3 +4,10 @@ description: 'Sends pages using the BigPipe technique that allows browsers to sh package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/block/block.info.yml b/core/modules/block/block.info.yml index 47501efb17..35debb120d 100644 --- a/core/modules/block/block.info.yml +++ b/core/modules/block/block.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: block.admin_display +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/block_content/block_content.info.yml b/core/modules/block_content/block_content.info.yml index 3315a2738e..f1bb0c9b70 100644 --- a/core/modules/block_content/block_content.info.yml +++ b/core/modules/block_content/block_content.info.yml @@ -9,3 +9,10 @@ dependencies: - drupal:text - drupal:user configure: entity.block_content.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/block_place/block_place.info.yml b/core/modules/block_place/block_place.info.yml index fb5b83a91f..efdb5954e8 100644 --- a/core/modules/block_place/block_place.info.yml +++ b/core/modules/block_place/block_place.info.yml @@ -7,3 +7,10 @@ core: 8.x hidden: true dependencies: - drupal:block +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/book/book.info.yml b/core/modules/book/book.info.yml index d883cc6ead..65dc81c6de 100644 --- a/core/modules/book/book.info.yml +++ b/core/modules/book/book.info.yml @@ -7,3 +7,10 @@ core: 8.x dependencies: - drupal:node configure: book.settings +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/breakpoint/breakpoint.info.yml b/core/modules/breakpoint/breakpoint.info.yml index 256740c02f..ad68068adb 100644 --- a/core/modules/breakpoint/breakpoint.info.yml +++ b/core/modules/breakpoint/breakpoint.info.yml @@ -4,3 +4,10 @@ description: 'Manage breakpoints and breakpoint groups for responsive designs.' package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/ckeditor/ckeditor.info.yml b/core/modules/ckeditor/ckeditor.info.yml index 73ca3e3c1d..fa21fd6415 100644 --- a/core/modules/ckeditor/ckeditor.info.yml +++ b/core/modules/ckeditor/ckeditor.info.yml @@ -6,3 +6,10 @@ core: 8.x version: VERSION dependencies: - drupal:editor +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/color/color.info.yml b/core/modules/color/color.info.yml index 9ea6daf6b5..c0399278ac 100644 --- a/core/modules/color/color.info.yml +++ b/core/modules/color/color.info.yml @@ -4,3 +4,10 @@ description: 'Allows administrators to change the color scheme of compatible the package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: complete diff --git a/core/modules/comment/comment.info.yml b/core/modules/comment/comment.info.yml index b552cf17bf..77952ada00 100644 --- a/core/modules/comment/comment.info.yml +++ b/core/modules/comment/comment.info.yml @@ -7,3 +7,10 @@ core: 8.x dependencies: - drupal:text configure: comment.admin +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/config/config.info.yml b/core/modules/config/config.info.yml index 88821cea25..1c20e58672 100644 --- a/core/modules/config/config.info.yml +++ b/core/modules/config/config.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: config.sync +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/config_translation/config_translation.info.yml b/core/modules/config_translation/config_translation.info.yml index 904f57783e..837db8101d 100644 --- a/core/modules/config_translation/config_translation.info.yml +++ b/core/modules/config_translation/config_translation.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: config_translation.mapper_list dependencies: - drupal:locale +migrate: + - + version: 6 + status: incomplete + - + version: 7 + status: incomplete diff --git a/core/modules/contact/contact.info.yml b/core/modules/contact/contact.info.yml index 2507fbd167..b0fbf5e2a6 100644 --- a/core/modules/contact/contact.info.yml +++ b/core/modules/contact/contact.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: entity.contact_form.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/content_moderation/content_moderation.info.yml b/core/modules/content_moderation/content_moderation.info.yml index 2472f470f3..091152ebc3 100644 --- a/core/modules/content_moderation/content_moderation.info.yml +++ b/core/modules/content_moderation/content_moderation.info.yml @@ -7,3 +7,10 @@ package: Core configure: entity.workflow.collection dependencies: - drupal:workflows +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/content_translation/content_translation.info.yml b/core/modules/content_translation/content_translation.info.yml index 68d1ec0cb3..79ebd4f4e0 100644 --- a/core/modules/content_translation/content_translation.info.yml +++ b/core/modules/content_translation/content_translation.info.yml @@ -7,3 +7,10 @@ package: Multilingual version: VERSION core: 8.x configure: language.content_settings_page +migrate: + - + version: 6 + status: incomplete + - + version: 7 + status: incomplete diff --git a/core/modules/contextual/contextual.info.yml b/core/modules/contextual/contextual.info.yml index 4e11bb966b..6cdfe1d287 100644 --- a/core/modules/contextual/contextual.info.yml +++ b/core/modules/contextual/contextual.info.yml @@ -4,3 +4,10 @@ description: 'Provides contextual links to perform actions related to elements o package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/datetime/datetime.info.yml b/core/modules/datetime/datetime.info.yml index 884cafcd78..ac8d378466 100644 --- a/core/modules/datetime/datetime.info.yml +++ b/core/modules/datetime/datetime.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:field +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/datetime_range/datetime_range.info.yml b/core/modules/datetime_range/datetime_range.info.yml index 69006d8e88..faf6f43aac 100644 --- a/core/modules/datetime_range/datetime_range.info.yml +++ b/core/modules/datetime_range/datetime_range.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:datetime +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/dblog/dblog.info.yml b/core/modules/dblog/dblog.info.yml index b214fb76c7..89bd271d39 100644 --- a/core/modules/dblog/dblog.info.yml +++ b/core/modules/dblog/dblog.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: system.logging_settings +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/dynamic_page_cache/dynamic_page_cache.info.yml b/core/modules/dynamic_page_cache/dynamic_page_cache.info.yml index 00db97de2c..b542ddf222 100644 --- a/core/modules/dynamic_page_cache/dynamic_page_cache.info.yml +++ b/core/modules/dynamic_page_cache/dynamic_page_cache.info.yml @@ -4,3 +4,10 @@ description: 'Caches pages for any user, handling dynamic content correctly.' package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/editor/editor.info.yml b/core/modules/editor/editor.info.yml index 745ab2f0a8..9b9a46a414 100644 --- a/core/modules/editor/editor.info.yml +++ b/core/modules/editor/editor.info.yml @@ -8,3 +8,10 @@ dependencies: - drupal:filter - drupal:file configure: filter.admin_overview +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/entity_reference/entity_reference.info.yml b/core/modules/entity_reference/entity_reference.info.yml index 50195b0663..398636bbee 100644 --- a/core/modules/entity_reference/entity_reference.info.yml +++ b/core/modules/entity_reference/entity_reference.info.yml @@ -5,3 +5,10 @@ package: Field types version: VERSION core: 8.x hidden: true +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/field/field.info.yml b/core/modules/field/field.info.yml index 13b5da0054..38af6fb405 100644 --- a/core/modules/field/field.info.yml +++ b/core/modules/field/field.info.yml @@ -4,3 +4,10 @@ description: 'Field API to add fields to entities like nodes and users.' package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/field_layout/field_layout.info.yml b/core/modules/field_layout/field_layout.info.yml index d5d704c7f3..f57be1a852 100644 --- a/core/modules/field_layout/field_layout.info.yml +++ b/core/modules/field_layout/field_layout.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:layout_discovery +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/field_ui/field_ui.info.yml b/core/modules/field_ui/field_ui.info.yml index 3d8126b4e4..b30802547a 100644 --- a/core/modules/field_ui/field_ui.info.yml +++ b/core/modules/field_ui/field_ui.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:field +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/file/file.info.yml b/core/modules/file/file.info.yml index f9f78a703d..3211011b66 100644 --- a/core/modules/file/file.info.yml +++ b/core/modules/file/file.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:field +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/filter/filter.info.yml b/core/modules/filter/filter.info.yml index 0f3c94ce66..99fd331620 100644 --- a/core/modules/filter/filter.info.yml +++ b/core/modules/filter/filter.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: filter.admin_overview dependencies: - drupal:user +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/forum/forum.info.yml b/core/modules/forum/forum.info.yml index d275dfccb1..1526839d5e 100644 --- a/core/modules/forum/forum.info.yml +++ b/core/modules/forum/forum.info.yml @@ -11,3 +11,10 @@ package: Core version: VERSION core: 8.x configure: forum.overview +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/hal/hal.info.yml b/core/modules/hal/hal.info.yml index 2839943250..657384e667 100644 --- a/core/modules/hal/hal.info.yml +++ b/core/modules/hal/hal.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:serialization +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/help/help.info.yml b/core/modules/help/help.info.yml index ee4c6433e9..aef9b1e995 100644 --- a/core/modules/help/help.info.yml +++ b/core/modules/help/help.info.yml @@ -4,3 +4,10 @@ description: 'Manages the display of online help.' package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/history/history.info.yml b/core/modules/history/history.info.yml index 006da6297d..5597856811 100644 --- a/core/modules/history/history.info.yml +++ b/core/modules/history/history.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:node +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/image/image.info.yml b/core/modules/image/image.info.yml index c17c7e09a1..4501baebfb 100644 --- a/core/modules/image/image.info.yml +++ b/core/modules/image/image.info.yml @@ -7,3 +7,10 @@ core: 8.x dependencies: - drupal:file configure: entity.image_style.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/inline_form_errors/inline_form_errors.info.yml b/core/modules/inline_form_errors/inline_form_errors.info.yml index 6465e19e8f..97fac79012 100644 --- a/core/modules/inline_form_errors/inline_form_errors.info.yml +++ b/core/modules/inline_form_errors/inline_form_errors.info.yml @@ -4,3 +4,10 @@ description: 'Places error messages adjacent to form inputs, for improved usabil version: VERSION core: 8.x package: Core +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/language/language.info.yml b/core/modules/language/language.info.yml index 30770401ad..7f744156a1 100644 --- a/core/modules/language/language.info.yml +++ b/core/modules/language/language.info.yml @@ -5,3 +5,10 @@ package: Multilingual version: VERSION core: 8.x configure: entity.configurable_language.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/layout_builder/layout_builder.info.yml b/core/modules/layout_builder/layout_builder.info.yml index f70cdcaec0..b6196226ed 100644 --- a/core/modules/layout_builder/layout_builder.info.yml +++ b/core/modules/layout_builder/layout_builder.info.yml @@ -11,3 +11,10 @@ dependencies: - drupal:field_ui # @todo Discuss removing in https://www.drupal.org/project/drupal/issues/3003610. - drupal:block +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/layout_discovery/layout_discovery.info.yml b/core/modules/layout_discovery/layout_discovery.info.yml index d0c8d3aff6..0aed1f317b 100644 --- a/core/modules/layout_discovery/layout_discovery.info.yml +++ b/core/modules/layout_discovery/layout_discovery.info.yml @@ -4,3 +4,10 @@ description: 'Provides a way for modules or themes to register layouts.' package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/link/link.info.yml b/core/modules/link/link.info.yml index c3f8f9c94a..e2bc1178b0 100644 --- a/core/modules/link/link.info.yml +++ b/core/modules/link/link.info.yml @@ -6,3 +6,10 @@ package: Field types version: VERSION dependencies: - drupal:field +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/locale/locale.info.yml b/core/modules/locale/locale.info.yml index 1db8704e71..14a5b2e9a0 100644 --- a/core/modules/locale/locale.info.yml +++ b/core/modules/locale/locale.info.yml @@ -8,3 +8,10 @@ core: 8.x dependencies: - drupal:language - drupal:file +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/media/media.info.yml b/core/modules/media/media.info.yml index 4766c0e524..31766fb1df 100644 --- a/core/modules/media/media.info.yml +++ b/core/modules/media/media.info.yml @@ -9,3 +9,10 @@ dependencies: - drupal:image - drupal:user configure: media.settings +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/media_library/media_library.info.yml b/core/modules/media_library/media_library.info.yml index ddfcf6e447..58c165e5e9 100644 --- a/core/modules/media_library/media_library.info.yml +++ b/core/modules/media_library/media_library.info.yml @@ -8,3 +8,10 @@ dependencies: - drupal:media - drupal:views - drupal:user +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/menu_link_content/menu_link_content.info.yml b/core/modules/menu_link_content/menu_link_content.info.yml index c001f5eb53..aad6d14c7b 100644 --- a/core/modules/menu_link_content/menu_link_content.info.yml +++ b/core/modules/menu_link_content/menu_link_content.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:link +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/menu_ui/menu_ui.info.yml b/core/modules/menu_ui/menu_ui.info.yml index 0623320585..c5ac205194 100644 --- a/core/modules/menu_ui/menu_ui.info.yml +++ b/core/modules/menu_ui/menu_ui.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: entity.menu.collection dependencies: - drupal:menu_link_content +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/migrate/migrate.info.yml b/core/modules/migrate/migrate.info.yml index 3d2f408052..5f94cb057e 100644 --- a/core/modules/migrate/migrate.info.yml +++ b/core/modules/migrate/migrate.info.yml @@ -4,3 +4,10 @@ description: 'Handles migrations' package: Migration version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/migrate/tests/src/Kernel/MigrateStatusTest.php b/core/modules/migrate/tests/src/Kernel/MigrateStatusTest.php index 7dc0b5b9b6..df9e770305 100644 --- a/core/modules/migrate/tests/src/Kernel/MigrateStatusTest.php +++ b/core/modules/migrate/tests/src/Kernel/MigrateStatusTest.php @@ -17,7 +17,7 @@ class MigrateStatusTest extends MigrateTestBase { public function testStatus() { // Create a minimally valid migration. $definition = [ - 'id' => 'migration_status_test', + 'id' => 'migrate_status_test', 'migration_tags' => ['Testing'], 'source' => ['plugin' => 'empty'], 'destination' => [ diff --git a/core/modules/migrate_drupal/migrate_drupal.info.yml b/core/modules/migrate_drupal/migrate_drupal.info.yml index 638bc382fd..9db7e67b2f 100644 --- a/core/modules/migrate_drupal/migrate_drupal.info.yml +++ b/core/modules/migrate_drupal/migrate_drupal.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:migrate +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/migrate_drupal_multilingual/migrate_drupal_multilingual.info.yml b/core/modules/migrate_drupal_multilingual/migrate_drupal_multilingual.info.yml index 75a79dc285..2a0c38bebf 100644 --- a/core/modules/migrate_drupal_multilingual/migrate_drupal_multilingual.info.yml +++ b/core/modules/migrate_drupal_multilingual/migrate_drupal_multilingual.info.yml @@ -5,3 +5,10 @@ package: 'Core (Experimental)' core: 8.x dependencies: - migrate_drupal +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/migrate_drupal_ui/migrate_drupal_ui.info.yml b/core/modules/migrate_drupal_ui/migrate_drupal_ui.info.yml index 8d39c65e3e..bf59538af8 100644 --- a/core/modules/migrate_drupal_ui/migrate_drupal_ui.info.yml +++ b/core/modules/migrate_drupal_ui/migrate_drupal_ui.info.yml @@ -9,3 +9,10 @@ dependencies: - drupal:migrate - drupal:migrate_drupal - drupal:dblog +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php b/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php index f78109e41f..6ac035af81 100644 --- a/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php @@ -9,14 +9,41 @@ use Drupal\migrate\Plugin\MigrationPluginManagerInterface; use Drupal\migrate_drupal_ui\Batch\MigrateUpgradeImportBatch; use Symfony\Component\DependencyInjection\ContainerInterface; +use Drupal\Component\Utility\Xss; /** * Migrate Upgrade review form. * * This confirmation form uses the source_module and destination_module - * properties on the source, destination and field plugins as well as the - * system data from the source to determine if there is a migration path for - * each module in the source. + * properties on the source, destination and field plugins, system data from the + * source and destination to determine if there is a migration path for each + * module enabled in the source. + * + * Modules on the destination site declare their migrate status in their + * .info.yml file. + * + * Information stored in .info.yml files for migrate. + * - migrate: The key for the migrate array. + * - version: A Drupal legacy version number + * - status: The migrate status for this legacy version. The status values + * available are: + * - complete: All migrations for this destination module are complete. + * - incomplete: There are migration in the destination module but more are + * required before it is complete. + * - n/a: This destination module does not require any migrations. + * - won't fix: This destination should have migrations but according to + * policy they are not going to be created. + * - active: This destination module requires migrations but non exist yet. + * + * @code + * migrate: + * - + * version: 6 + * status: complete + * - + * version: 7 + * status: incomplete + * @endcode * * @internal */ @@ -51,11 +78,28 @@ class ReviewForm extends MigrateUpgradeFormBase { protected $migrations; /** + * Display data. + * + * @var array + */ + protected $display; + + /** + * The destination site migrate information from info.yml. + * + * @var array + */ + protected $destinationSystemMigrateInfo; + + /** * List of extensions that do not need an upgrade path. * * This property is an array where the keys are the major Drupal core version * from which we are upgrading, and the values are arrays of extension names - * that do not need an upgrade path. + * that do not need an upgrade path and are not names in the 'source_module' + * annotation for a migration. In other words, the functionality of these + * extensions has moved into core, or been dropped from core, and there isn't + * a Drupal 8 module of the same name. * * @var array[] */ @@ -64,7 +108,6 @@ class ReviewForm extends MigrateUpgradeFormBase { 'blog', 'blogapi', 'calendarsignup', - 'color', 'content_copy', 'content_multigroup', 'content_permissions', @@ -94,7 +137,6 @@ class ReviewForm extends MigrateUpgradeFormBase { 'ping', 'poll', 'throttle', - 'tracker', 'translation', 'trigger', 'variable', @@ -105,7 +147,6 @@ class ReviewForm extends MigrateUpgradeFormBase { '7' => [ 'blog', 'bulk_export', - 'contextual', 'ctools', 'ctools_access_ruleset', 'ctools_ajax_sample', @@ -124,8 +165,6 @@ class ReviewForm extends MigrateUpgradeFormBase { 'entity_feature', 'entity_token', 'entityreference', - 'field_ui', - 'help', 'openid', 'overlay', 'page_manager', @@ -191,7 +230,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { // Get all the data needed for this form. $version = $this->store->get('version'); $this->migrations = $this->store->get('migrations'); - // Fetch the system data at the first opportunity. + // Fetch the source system data at the first opportunity. $system_data = $this->store->get('system_data'); // If data is missing or this is the wrong step, start over. @@ -200,21 +239,41 @@ public function buildForm(array $form, FormStateInterface $form_state) { return $this->restartUpgradeForm(); } + // Get migration status from .info.yml for all modules on destination site. + $system_info = system_get_info('module'); + $this->destinationSystemMigrateInfo = []; + foreach ($system_info as $module => $info) { + if (isset($info['migrate'])) { + foreach ($info['migrate'] as $migrate_info) { + if (isset($migrate_info['version']) && ($migrate_info['version'] == $version)) { + $this->destinationSystemMigrateInfo[$module] = $migrate_info; + } + } + } + } + // Some migrations use 'core' as the destination so add an entry for core. + $this->destinationSystemMigrateInfo['core']['status'] = 'complete'; + $form = parent::buildForm($form, $form_state); $form['#title'] = $this->t('What will be upgraded?'); - // Get the source_module and destination_module for each migration. + // Build an array of migrations, table_data, keyed by source_module and + // destination_module. Only migrations that have both a source_module and + // a destination_module definition are added to the array. $migrations = $this->pluginManager->createInstances(array_keys($this->store->get('migrations'))); $table_data = []; foreach ($migrations as $migration) { $migration_id = $migration->getPluginId(); $source_module = $migration->getSourcePlugin()->getSourceModule(); if (!$source_module) { - $this->messenger()->addError($this->t('Source module not found for @migration_id.', ['@migration_id' => $migration_id])); + $this->messenger() + ->addError($this->t('Source module not found for @migration_id.', ['@migration_id' => $migration_id])); } - $destination_module = $migration->getDestinationPlugin()->getDestinationModule(); + $destination_module = $migration->getDestinationPlugin() + ->getDestinationModule(); if (!$destination_module) { - $this->messenger()->addError($this->t('Destination module not found for @migration_id.', ['@migration_id' => $migration_id])); + $this->messenger() + ->addError($this->t('Destination module not found for @migration_id.', ['@migration_id' => $migration_id])); } if ($source_module && $destination_module) { @@ -222,7 +281,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { } } - // Get the source_module and destination_module from the field plugins. + // Add entries for the field plugins to table_data. Use the field plugin id + // as both the migration id and the migration label. $definitions = $this->fieldPluginManager->getDefinitions(); foreach ($definitions as $definition) { // This is not strict so that we find field plugins with an annotation @@ -234,19 +294,26 @@ public function buildForm(array $form, FormStateInterface $form_state) { } } - // Add source_module and destination_module for modules that do not need an - // upgrade path and are enabled on the source site. + // Adds entries for modules that do not need an upgrade path and are enabled + // on the source site to table_data. In this case use 'core' as the + // destination_module and the extension name as both the migration id and + // label. foreach ($this->noUpgradePaths[$version] as $extension) { if (isset($system_data['module'][$extension]) && $system_data['module'][$extension]['status']) { $table_data[$extension]['core'][$extension] = $extension; } } - // Sort the table by source module names and within that destination - // module names. - ksort($table_data); - foreach ($table_data as $source_module => $destination_module_info) { - ksort($table_data[$source_module]); + // Adds entries to table_data for modules with a migrate status of 'n/a' and + // are enabled on the source site. In this case use 'core' as the + // destination_module and the extension name as both the migration id and + // label. + foreach ($this->destinationSystemMigrateInfo as $extension => $migrate_info) { + if (isset($migrate_info['status']) && (strtolower($migrate_info['status']) === 'n/a')) { + if (isset($system_data['module'][$extension]) && $system_data['module'][$extension]['status']) { + $table_data[$extension]['core'][$extension] = $extension; + } + } } // Remove core profiles from the system data. @@ -254,7 +321,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { unset($system_data['module'][$profile]); } - $unmigrated_source_modules = array_diff_key($system_data['module'], $table_data); + // Prepare an array with the data to display. + $display = $this->buildDisplay($system_data, $table_data); // Missing migrations. $missing_module_list = [ @@ -262,7 +330,10 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#open' => TRUE, '#title' => $this->t('Modules that will not be upgraded'), '#summary_attributes' => ['id' => ['error']], - '#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']), + '#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'] = [ @@ -270,14 +341,17 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#header' => [ $this->t('Drupal @version', ['@version' => $version]), $this->t('Drupal 8'), + $this->t('Details'), ], ]; + $missing_count = 0; - ksort($unmigrated_source_modules); - foreach ($unmigrated_source_modules as $source_module => $module_data) { - if ($module_data['status']) { + if (isset($display['error'])) { + foreach ($display['error'] as $source_module => $data) { $missing_count++; - $missing_module_list['module_list'][$source_module] = [ + // Get the migration status for this $source_module, if a module of the + // same name exists on the destination site. + $missing_module_list['module_list'][] = [ 'source_module' => [ '#type' => 'html_tag', '#tag' => 'span', @@ -289,7 +363,59 @@ public function buildForm(array $form, FormStateInterface $form_state) { ], ], ], - 'destination_module' => ['#plain_text' => 'Not upgraded'], + 'destination_module' => [ + '#plain_text' => $data['destination_modules'], + ], + 'destination_description' => [ + '#type' => 'item', + '#markup' => Xss::filterAdmin($data['description']), + ], + ]; + } + } + + // Incomplete migrations. + $incomplete_module_list = [ + '#type' => 'details', + '#title' => $this->t('Modules that will be partially upgraded'), + '#summary_attributes' => ['id' => ['warning']], + '#weight' => 3, + ]; + + $incomplete_module_list['module_list'] = [ + '#type' => 'table', + '#header' => [ + $this->t('Drupal @version', ['@version' => $version]), + $this->t('Drupal 8'), + $this->t('Details'), + ], + ]; + + $incomplete_count = 0; + if (isset($display['warning'])) { + foreach ($display['warning'] as $source_module => $data) { + $incomplete_count++; + // Get the migration status for this $source_module, if a module of the + // same name exists on the destination site. + $incomplete_module_list['module_list'][] = [ + 'source_module' => [ + '#type' => 'html_tag', + '#tag' => 'span', + '#value' => $source_module, + '#attributes' => [ + 'class' => [ + 'upgrade-analysis-report__status-icon', + 'upgrade-analysis-report__status-icon--warning', + ], + ], + ], + 'destination_module' => [ + '#plain_text' => $data['destination_modules'], + ], + 'destination_description' => [ + '#type' => 'item', + '#markup' => Xss::filterAdmin($data['description']), + ], ]; } } @@ -299,7 +425,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#type' => 'details', '#title' => $this->t('Modules that will be upgraded'), '#summary_attributes' => ['id' => ['checked']], - '#weight' => 3, + '#weight' => 4, ]; $available_module_list['module_list'] = [ @@ -307,33 +433,35 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#header' => [ $this->t('Drupal @version', ['@version' => $version]), $this->t('Drupal 8'), + $this->t('Details'), ], ]; $available_count = 0; - foreach ($table_data as $source_module => $destination_module_info) { - $available_count++; - $destination_details = []; - foreach ($destination_module_info as $destination_module => $migration_ids) { - $destination_details[$destination_module] = [ - '#type' => 'item', - '#plain_text' => $destination_module, - ]; - } - $available_module_list['module_list'][$source_module] = [ - 'source_module' => [ - '#type' => 'html_tag', - '#tag' => 'span', - '#value' => $source_module, - '#attributes' => [ - 'class' => [ - 'upgrade-analysis-report__status-icon', - 'upgrade-analysis-report__status-icon--checked', + if (isset($display['ok'])) { + foreach ($display['ok'] as $source_module => $data) { + $available_count++; + $available_module_list['module_list'][] = [ + 'source_module' => [ + '#type' => 'html_tag', + '#tag' => 'span', + '#value' => $source_module, + '#attributes' => [ + 'class' => [ + 'upgrade-analysis-report__status-icon', + 'upgrade-analysis-report__status-icon--checked', + ], ], ], - ], - 'destination_module' => $destination_details, - ]; + 'destination_module' => [ + '#plain_text' => $data['destination_modules'], + ], + 'destination_description' => [ + '#type' => 'item', + '#markup' => Xss::filterAdmin($data['description']), + ], + ]; + } } $counters = []; @@ -349,13 +477,22 @@ public function buildForm(array $form, FormStateInterface $form_state) { ]; $general_info[] = $missing_module_list; } + if ($incomplete_count) { + $counters[] = [ + '#theme' => 'status_report_counter', + '#amount' => $incomplete_count, + '#text' => $this->formatPlural($available_count, 'Module will be partially upgraded', 'Modules will be partially upgraded'), + '#severity' => 'warning', + '#weight' => 1, + ]; + $general_info[] = $incomplete_module_list; + } if ($available_count) { $counters[] = [ '#theme' => 'status_report_counter', '#amount' => $available_count, - '#text' => $this->formatPlural($available_count, 'Module will be upgraded', 'Modules will be upgraded'), - '#severity' => 'checked', - '#weight' => 1, + '#text' => $this->formatPlural($missing_count, 'Module will be upgraded', 'Modules will be upgraded'), + '#weight' => 2, ]; $general_info[] = $available_module_list; } @@ -386,7 +523,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) { ], ], 'finished' => [ - MigrateUpgradeImportBatch::class, 'finished', + MigrateUpgradeImportBatch::class, + 'finished', ], ]; batch_set($batch); @@ -402,4 +540,249 @@ public function getConfirmText() { return $this->t('Perform upgrade'); } + /** + * Build the data to display. + * + * @param array $source_system_data + * The data from the source site system table. + * @param array $table_data + * The source modules that have at least one migration. + * + * @return array + * An associative array of data keyed by the display categories, 'error', + * 'warning' and 'ok'. + */ + public function buildDisplay(array $source_system_data, array $table_data) { + // Modules that are in the source system table and not in the destination + // migration data will not be migrated. + $unmigrated_source_modules = array_diff_key($source_system_data['module'], $table_data); + foreach ($unmigrated_source_modules as $source_module => $module_data) { + // Only display modules that are enabled on the source. + if ($module_data['status']) { + $migration_status = 'error'; + $destination_description = ''; + $destination_modules = []; + // Get any system information for a destination module of the same name. + list($migration_status, $destination_description) = $this->setDisplay($source_module, $migration_status, $destination_description); + $this->addToDisplay($source_module, $migration_status, $destination_description, $destination_modules); + } + } + + // Build display data for the modules that have migrations. + foreach ($table_data as $source_module => $destination_module_info) { + $migration_status = ''; + $destination_description = ''; + $destination_modules = []; + // Combine the per destination module information. + foreach ($destination_module_info as $destination_module => $migration_ids) { + $destination_modules[] = $destination_module; + list($migration_status, $destination_description) = $this->setDisplay($destination_module, $migration_status, $destination_description); + } + $this->addToDisplay($source_module, $migration_status, $destination_description, $destination_modules); + } + + foreach ($this->display as $key => $value) { + ksort($this->display[$key]); + } + return $this->display; + } + + /** + * Sets the display for one module. + * + * @param string $module + * The destination module name. + * @param string $migration_status + * The migration status for this module. + * @param string $destination_description + * The current description details text. + * + * @return array + * An indexed area where the first element in the new migration status for + * this module and the second element is the new description text. + */ + public function setDisplay($module, $migration_status, $destination_description) { + if (isset($this->destinationSystemMigrateInfo[$module])) { + if (isset($this->destinationSystemMigrateInfo[$module]['description'])) { + $destination_description = ' ' . $this->destinationSystemMigrateInfo[$module]['description']; + } + if (isset($this->destinationSystemMigrateInfo[$module]['status'])) { + $status = $this->destinationSystemMigrateInfo[$module]['status']; + $migration_status = $this->updateStatus($migration_status, $status); + } + } + return [$migration_status, $destination_description]; + } + + /** + * Helper to setup display array. + * + * @param string $source_module + * The source module name. + * @param string $migration_status + * The computed migration status of the source module. + * @param string $destination_description + * A string of descriptions from system_info_alter. + * @param array $destination_modules + * The destination modules names. + */ + public function addToDisplay($source_module, $migration_status, $destination_description, array $destination_modules) { + $category = $this->getDisplayCategory($migration_status); + $this->display[$category][$source_module]['description'] = $destination_description; + $this->display[$category][$source_module]['display_status'] = $migration_status; + $this->display[$category][$source_module]['destination_modules'] = implode(', ', $destination_modules); + } + + /** + * Determines the migration status of a source module. + * + * Several migrations can use the same source_module definition but have + * different destination_module definitions. To determine the migration + * status of the source module compare the migration status of each + * destination module to decide the status. + * + * If all the destination modules, with the same source module, have a + * status of 'complete' then 'complete' is used. If any of the destination + * modules have a status of 'incomplete', then 'incomplete' is used. + * + * In any case where the combination of destination module statuses doesn't + * make sense the status is set to 'error'. + * + * @param string $current_status + * The current status. + * @param string $new_status + * The new status being 'added'. + * + * @return string + * The new computed status. + */ + public function updateStatus($current_status, $new_status) { + switch ($current_status) { + case 'complete': + switch ($new_status) { + case 'complete': + $new_status = 'complete'; + break; + + case 'incomplete': + $new_status = 'incomplete'; + break; + + case 'n/a': + $new_status = 'error'; + break; + + case "won't fix": + $new_status = 'error'; + break; + + case 'active': + $new_status = 'incomplete'; + break; + + default: + $new_status = 'error'; + break; + } + break; + + case 'incomplete': + switch ($new_status) { + case 'complete': + $new_status = 'incomplete'; + break; + + case 'incomplete': + $new_status = 'incomplete'; + break; + + case 'n/a': + $new_status = 'error'; + break; + + case "won't fix": + $new_status = 'error'; + break; + + case 'active': + $new_status = 'incomplete'; + break; + + default: + $new_status = 'error'; + break; + } + break; + + case 'n/a': + switch ($new_status) { + case 'complete': + $new_status = 'error'; + break; + + case 'incomplete': + $new_status = 'error'; + break; + + case 'n/a': + $new_status = 'error'; + break; + + case "won't fix": + $new_status = 'error'; + break; + + case 'active': + $new_status = 'error'; + break; + + default: + $new_status = 'error'; + break; + } + break; + + // Initialize the current_status. + case '': + case 'active': + case 'error': + case "won't fix": + default: + + } + return $new_status; + + } + + /** + * Gets the source module display category based on migration status. + * + * @param string $current_status + * The upgrade status of a module. + * + * @return string + * The display category. + */ + public function getDisplayCategory($current_status) { + // Error is used internally and not to be used in *.info.yml. + switch ($current_status) { + case 'complete': + case 'n/a': + $category = 'ok'; + break; + + case 'incomplete': + $category = 'warning'; + break; + + case 'active': + case 'error': + case "won't fix": + default: + $category = 'error'; + break; + } + return $category; + } + } diff --git a/core/modules/migrate_drupal_ui/tests/modules/migrate_status_active_test/migrate_status_active_test.info.yml b/core/modules/migrate_drupal_ui/tests/modules/migrate_status_active_test/migrate_status_active_test.info.yml new file mode 100644 index 0000000000..fcaf168d81 --- /dev/null +++ b/core/modules/migrate_drupal_ui/tests/modules/migrate_status_active_test/migrate_status_active_test.info.yml @@ -0,0 +1,10 @@ +name: 'Migrate status active test' +type: module +description: "Tests the 'active' migrate status" +package: Testing +version: VERSION +core: 8.x +migrate: + - + version: 6 + status: active diff --git a/core/modules/migrate_drupal_ui/tests/modules/migrate_status_active_test/migrate_status_active_test.module b/core/modules/migrate_drupal_ui/tests/modules/migrate_status_active_test/migrate_status_active_test.module new file mode 100644 index 0000000000..763f74b983 --- /dev/null +++ b/core/modules/migrate_drupal_ui/tests/modules/migrate_status_active_test/migrate_status_active_test.module @@ -0,0 +1,14 @@ +pageTextNotContains(t('module not found')); - // Test the upgrade paths. + // Test the review page. $available_paths = $this->getAvailablePaths(); + $available_paths_warning = $this->getAvailablePathsWarning(); $missing_paths = $this->getMissingPaths(); - $this->assertReviewPage($session, $available_paths, $missing_paths); + $details = $this->getDetails(); + $this->assertReviewPage($session, $available_paths, $available_paths_warning, $missing_paths, $details); $this->drupalPostForm(NULL, [], t('Perform upgrade')); $this->assertText(t('Congratulations, you upgraded Drupal!')); @@ -146,12 +148,7 @@ public function testMigrateUpgradeExecute() { $this->drupalPostForm(NULL, [], t('I acknowledge I may lose data. Continue anyway.')); $session->statusCodeEquals(200); - // Need to update available and missing path lists. - $all_available = $this->getAvailablePaths(); - $all_available[] = 'aggregator'; - $all_missing = $this->getMissingPaths(); - $all_missing = array_diff($all_missing, ['aggregator']); - $this->assertReviewPage($session, $all_available, $all_missing); + // Run the incremental migration and check the results. $this->drupalPostForm(NULL, [], t('Perform upgrade')); $session->pageTextContains(t('Congratulations, you upgraded Drupal!')); $this->assertMigrationResults($this->getEntityCountsIncremental(), $version); diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php index 8a57115edf..7a466504bf 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeI18nReviewPageTestBase.php @@ -38,8 +38,10 @@ public function testMigrateUpgradeReviewPage() { // Test the upgrade paths. $available_paths = $this->getAvailablePaths(); + $incomplete_paths = $this->getIncompletePaths(); $missing_paths = $this->getMissingPaths(); - $this->assertUpgradePaths($session, $available_paths, $missing_paths); + $details = $this->getDetails(); + $this->assertUpgradePaths($session, $available_paths, $incomplete_paths, $missing_paths, $details); } } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php index 5c97a69070..e85b5d42b8 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeReviewPageTestBase.php @@ -63,8 +63,10 @@ public function testMigrateUpgradeReviewPage() { // Test the upgrade paths. $available_paths = $this->getAvailablePaths(); + $incomplete_paths = $this->getIncompletePaths(); $missing_paths = $this->getMissingPaths(); - $this->assertUpgradePaths($session, $available_paths, $missing_paths); + $details = $this->getDetails(); + $this->assertUpgradePaths($session, $available_paths, $incomplete_paths, $missing_paths, $details); // Check there are no errors when a module in noUpgradePaths is not in the // source system tables. Test with a module that is listed in noUpgradePaths @@ -82,11 +84,13 @@ public function testMigrateUpgradeReviewPage() { $this->drupalPostForm(NULL, $this->edits, t('Review upgrade')); $this->drupalPostForm(NULL, [], t('I acknowledge I may lose data. Continue anyway.')); - // Test the upgrade paths. + // Test the upgrade paths. First remove the module from the available paths + // list. $available_paths = $this->getAvailablePaths(); $available_paths = array_diff($available_paths, [$module]); + $incomplete_paths = $this->getIncompletePaths(); $missing_paths = $this->getMissingPaths(); - $this->assertUpgradePaths($session, $available_paths, $missing_paths); + $this->assertUpgradePaths($session, $available_paths, $incomplete_paths, $missing_paths, $details); } /** @@ -136,6 +140,16 @@ public function prepare() { $conditions->condition('name', 'simpletest'); $update->condition($conditions); $update->execute(); + + // Create entries for D8 test modules. + $insert = $this->sourceDatabase->insert('system') + ->fields([ + 'filename' => 'migrate_status_active_test', + 'name' => 'migrate_status_active_test', + 'type' => 'module', + 'status' => 1, + ]); + $insert->execute(); } /** 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 73158feef0..e1eec2320a 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeTestBase.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/MigrateUpgradeTestBase.php @@ -104,25 +104,45 @@ protected function tearDown() { * The web-assert session. * @param array $available_paths * An array of modules that will be upgraded. + * @param array $incomplete_paths + * An array of modules where the migration path is incomplete. * @param array $missing_paths * An array of modules that will not be upgraded. + * @param array $details + * An array of detail messages displayed on the review page. */ - protected function assertUpgradePaths(WebAssert $session, array $available_paths, array $missing_paths) { + protected function assertUpgradePaths(WebAssert $session, array $available_paths, array $incomplete_paths, array $missing_paths, array $details) { // 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, 'error') and text() = '$available']"); + $session->elementNotExists('xpath', "//span[contains(@class, 'warning') and text() = '$available']"); + } + + // Test the incomplete migration paths. + foreach ($incomplete_paths as $incomplete) { + $session->elementExists('xpath', "//span[contains(@class, 'warning') and text() = '$incomplete']"); + $session->elementNotExists('xpath', "//span[contains(@class, 'error') and text() = '$incomplete']"); + $session->elementNotExists('xpath', "//span[contains(@class, 'checked') and text() = '$incomplete']"); } // Test the missing migration paths. foreach ($missing_paths as $missing) { $session->elementExists('xpath', "//span[contains(@class, 'error') and text() = '$missing']"); $session->elementNotExists('xpath', "//span[contains(@class, 'checked') and text() = '$missing']"); + $session->elementNotExists('xpath', "//span[contains(@class, 'warning') and text() = '$missing']"); } - // Test the total count of missing and available paths. + // Test the total count of missing, available and warning. $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)); + $session->elementsCount('xpath', "//span[contains(@class, 'upgrade-analysis-report__status-icon--warning')]", count($incomplete_paths)); + + // Tests the displayed details messages. + foreach ($details as $detail) { + $session->pageTextContains($detail[0]); + } + } /** @@ -150,6 +170,14 @@ protected function assertUpgradePaths(WebAssert $session, array $available_paths abstract protected function getAvailablePaths(); /** + * Gets the incomplete upgrade paths. + * + * @return string[] + * An array of incomplete upgrade paths. + */ + abstract protected function getIncompletePaths(); + + /** * Gets the missing upgrade paths. * * @return string[] @@ -158,6 +186,14 @@ protected function assertUpgradePaths(WebAssert $session, array $available_paths abstract protected function getMissingPaths(); /** + * Gets the details messages. + * + * @return string[] + * An array of details messages displayed on the Review form. + */ + abstract protected function getDetails(); + + /** * Gets expected number of entities per entity after incremental migration. * * @return int[] @@ -169,13 +205,17 @@ protected function assertUpgradePaths(WebAssert $session, array $available_paths * Helper method to assert the text on the 'Upgrade analysis report' page. * * @param \Drupal\Tests\WebAssert $session - * The current session. - * @param array $all_available - * Array of modules that will be upgraded. - * @param array $all_missing - * Array of modules that will not be upgraded. + * The web-assert session. + * @param array $available_paths + * An array of modules that will be upgraded. + * @param array $available_paths_warning + * An array of modules where the migration path is incomplete. + * @param array $missing_paths + * An array of modules that will not be upgraded. + * @param array $details + * An array of detail messages displayed on the review page. */ - protected function assertReviewPage(WebAssert $session, array $all_available, array $all_missing) { + protected function assertReviewPage(WebAssert $session, array $available_paths, array $available_paths_warning, array $missing_paths, array $details) { $this->assertText('What will be upgraded?'); // Ensure there are no errors about the missing modules from the test module. @@ -185,17 +225,7 @@ protected function assertReviewPage(WebAssert $session, array $all_available, ar // Ensure there are no errors about any other missing migration providers. $session->pageTextNotContains(t('module not found')); - // Test the available migration paths. - foreach ($all_available as $available) { - $session->elementExists('xpath', "//span[contains(@class, 'checked') and text() = '$available']"); - $session->elementNotExists('xpath', "//span[contains(@class, 'error') and text() = '$available']"); - } - - // Test the missing migration paths. - foreach ($all_missing as $missing) { - $session->elementExists('xpath', "//span[contains(@class, 'error') and text() = '$missing']"); - $session->elementNotExists('xpath', "//span[contains(@class, 'checked') and text() = '$missing']"); - } + $this->assertUpgradePaths($session, $available_paths, $available_paths_warning, $missing_paths, $details); } /** diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php index a4deaa25cf..18736103e1 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6I18nReviewPageTest.php @@ -128,6 +128,13 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return []; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ 'devel', @@ -148,4 +155,13 @@ protected function getMissingPaths() { ]; } + /** + * {@inheritdoc} + */ + protected function getDetails() { + return [ + "See Known issues when upgrading from Drupal 6 or 7 to Drupal 8", + ]; + } + } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php index e07e8bf211..fcd2dbd11b 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6NoMultilingualTest.php @@ -164,6 +164,13 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return []; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ 'i18nblocks', @@ -177,6 +184,15 @@ protected function getMissingPaths() { /** * {@inheritdoc} */ + protected function getDetails() { + return [ + "See Known issues when upgrading from Drupal 6 or 7 to Drupal 8", + ]; + } + + /** + * {@inheritdoc} + */ public function testMigrateUpgradeExecute() { $connection_options = $this->sourceDatabase->getConnectionOptions(); $this->drupalGet('/upgrade'); diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php index 91657f742a..7296bd5f45 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6ReviewPageTest.php @@ -29,6 +29,9 @@ class MigrateUpgrade6ReviewPageTest extends MigrateUpgradeReviewPageTestBase { 'update', // Required for translation migrations. 'migrate_drupal_multilingual', + // Test migrations statuses. + 'migrate_status_incomplete_test', + 'migrate_status_active_test', ]; /** @@ -52,7 +55,6 @@ protected function getSourceBasePath() { protected function getAvailablePaths() { return [ 'aggregator', - 'block', 'book', 'comment', 'contact', @@ -69,14 +71,11 @@ protected function getAvailablePaths() { 'i18nmenu', 'i18nprofile', 'i18nstrings', - 'i18ntaxonomy', 'imagecache', 'imagefield', 'language', 'link', 'locale', - 'menu', - 'node', 'nodereference', 'optionwidgets', 'path', @@ -85,7 +84,6 @@ protected function getAvailablePaths() { 'statistics', 'syslog', 'system', - 'taxonomy', 'text', 'update', 'upload', @@ -138,6 +136,23 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return [ + 'block', + 'i18n', + 'i18nblocks', + 'i18nmenu', + 'i18nprofile', + 'i18ntaxonomy', + 'menu', + 'node', + 'taxonomy', + ]; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ 'devel', @@ -149,6 +164,18 @@ protected function getMissingPaths() { 'i18nviews', 'phone', 'views', + 'migrate_status_active_test', + ]; + } + + /** + * {@inheritdoc} + */ + protected function getDetails() { + return [ + "See Known issues when upgrading from Drupal 6 or 7 to Drupal 8.", + "Migrate status active test message.", + "Migrate status incomplete test message.", ]; } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php index 6535b59d75..b18a636c27 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php @@ -141,7 +141,6 @@ protected function getAvailablePaths() { 'i18nmenu', 'i18nprofile', 'i18nstrings', - 'i18ntaxonomy', 'imagecache', 'imagefield', 'language', @@ -162,7 +161,7 @@ protected function getAvailablePaths() { 'user', 'userreference', // Include modules that do not have an upgrade path and are enabled in the - // source database, defined in the $noUpgradePath property + // source database', defined in the $noUpgradePath property // in MigrateUpgradeForm. 'date_api', 'date_timezone', @@ -178,6 +177,22 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return [ + 'i18n', + 'i18nblocks', + 'i18nmenu', + 'i18nprofile', + 'i18ntaxonomy', + 'menu', + 'node', + 'taxonomy', + ]; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ 'i18ncontent', @@ -185,6 +200,16 @@ protected function getMissingPaths() { } /** + * {@inheritdoc} + */ + protected function getDetails() { + return [ + "See Known issues when upgrading from Drupal 6 or 7 to Drupal 8", + ]; + } + + + /** * Executes all steps of migrations upgrade. */ public function testMigrateUpgradeExecute() { diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php index fcb024bb8e..5d2a570174 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php @@ -166,6 +166,13 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return []; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ // These modules are in the missing path list because they are installed @@ -179,6 +186,13 @@ protected function getMissingPaths() { /** * {@inheritdoc} */ + protected function getDetails() { + return []; + } + + /** + * {@inheritdoc} + */ public function testMigrateUpgradeExecute() { $connection_options = $this->sourceDatabase->getConnectionOptions(); $this->drupalGet('/upgrade'); diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php index c1686db643..ce01d4b10f 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php @@ -110,7 +110,6 @@ protected function getAvailablePaths() { 'entity_feature', 'entity_token', 'entityreference', - 'entity_translation', 'field_ui', 'help', 'openid', @@ -136,10 +135,28 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return [ + 'entity_translation', + 'menu', + 'node', + ]; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ 'views', ]; } + /** + * {@inheritdoc} + */ + protected function getDetails() { + return []; + } + } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php index 28fe7d0a5c..2ec6631775 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php @@ -127,6 +127,7 @@ protected function getAvailablePaths() { 'color', 'comment', 'contact', + 'ctools', 'date', 'dblog', 'email', @@ -154,6 +155,7 @@ protected function getAvailablePaths() { 'system', 'taxonomy', 'text', + 'title', 'user', // Include modules that do not have an upgrade path and are enabled in the // source database, defined in the $noUpgradePath property @@ -175,6 +177,17 @@ protected function getAvailablePaths() { /** * {@inheritdoc} */ + protected function getIncompletePaths() { + return [ + 'entity_translation', + 'menu', + 'node', + ]; + } + + /** + * {@inheritdoc} + */ protected function getMissingPaths() { return [ // These modules are in the missing path list because they are installed @@ -186,6 +199,13 @@ protected function getMissingPaths() { } /** + * {@inheritdoc} + */ + protected function getDetails() { + return []; + } + + /** * Executes all steps of migrations upgrade. */ public function testMigrateUpgradeExecute() { diff --git a/core/modules/node/node.info.yml b/core/modules/node/node.info.yml index 88cba8572b..f07ce8e2a9 100644 --- a/core/modules/node/node.info.yml +++ b/core/modules/node/node.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: entity.node_type.collection dependencies: - drupal:text +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/options/options.info.yml b/core/modules/options/options.info.yml index 41c5374a40..b5860b50cf 100644 --- a/core/modules/options/options.info.yml +++ b/core/modules/options/options.info.yml @@ -7,3 +7,10 @@ core: 8.x dependencies: - drupal:field - drupal:text +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/page_cache/page_cache.info.yml b/core/modules/page_cache/page_cache.info.yml index ba18ed638c..0b5e21ac0d 100644 --- a/core/modules/page_cache/page_cache.info.yml +++ b/core/modules/page_cache/page_cache.info.yml @@ -4,3 +4,10 @@ description: 'Caches pages for anonymous users. Use when an external page cache package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/path/path.info.yml b/core/modules/path/path.info.yml index ba2c759c99..780598b88e 100644 --- a/core/modules/path/path.info.yml +++ b/core/modules/path/path.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: path.admin_overview +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/quickedit/quickedit.info.yml b/core/modules/quickedit/quickedit.info.yml index b9fc765d21..9c6753c2ff 100644 --- a/core/modules/quickedit/quickedit.info.yml +++ b/core/modules/quickedit/quickedit.info.yml @@ -8,3 +8,10 @@ dependencies: - drupal:contextual - drupal:field - drupal:filter +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/rdf/rdf.info.yml b/core/modules/rdf/rdf.info.yml index ec1b50905b..ce6973ddbc 100644 --- a/core/modules/rdf/rdf.info.yml +++ b/core/modules/rdf/rdf.info.yml @@ -4,3 +4,10 @@ description: 'Enriches your content with metadata to let other applications (e.g package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: complete diff --git a/core/modules/responsive_image/responsive_image.info.yml b/core/modules/responsive_image/responsive_image.info.yml index 8ddf2c72e5..44bd87acbf 100644 --- a/core/modules/responsive_image/responsive_image.info.yml +++ b/core/modules/responsive_image/responsive_image.info.yml @@ -8,3 +8,10 @@ dependencies: - drupal:breakpoint - drupal:image configure: entity.responsive_image_style.collection +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/rest/rest.info.yml b/core/modules/rest/rest.info.yml index 8a4572ab36..e76800d85c 100644 --- a/core/modules/rest/rest.info.yml +++ b/core/modules/rest/rest.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:serialization +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/search/search.info.yml b/core/modules/search/search.info.yml index 97b7d3fe77..6f0e15114d 100644 --- a/core/modules/search/search.info.yml +++ b/core/modules/search/search.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: entity.search_page.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/serialization/serialization.info.yml b/core/modules/serialization/serialization.info.yml index 7c4eb52313..50ed1ce507 100644 --- a/core/modules/serialization/serialization.info.yml +++ b/core/modules/serialization/serialization.info.yml @@ -4,3 +4,10 @@ description: Provides a service for (de)serializing data to/from formats such as package: Web services version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/settings_tray/settings_tray.info.yml b/core/modules/settings_tray/settings_tray.info.yml index f278b76c27..76063abdc6 100644 --- a/core/modules/settings_tray/settings_tray.info.yml +++ b/core/modules/settings_tray/settings_tray.info.yml @@ -8,3 +8,10 @@ dependencies: - drupal:block - drupal:toolbar - drupal:contextual +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/shortcut/shortcut.info.yml b/core/modules/shortcut/shortcut.info.yml index 8546317e10..0d8c472702 100644 --- a/core/modules/shortcut/shortcut.info.yml +++ b/core/modules/shortcut/shortcut.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: entity.shortcut_set.collection dependencies: - drupal:link +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: complete diff --git a/core/modules/simpletest/simpletest.info.yml b/core/modules/simpletest/simpletest.info.yml index 232680e7cf..468dbad395 100644 --- a/core/modules/simpletest/simpletest.info.yml +++ b/core/modules/simpletest/simpletest.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: simpletest.settings +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/statistics/statistics.info.yml b/core/modules/statistics/statistics.info.yml index 84a50bec9a..e5cbc59546 100644 --- a/core/modules/statistics/statistics.info.yml +++ b/core/modules/statistics/statistics.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: statistics.settings dependencies: - drupal:node +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/syslog/syslog.info.yml b/core/modules/syslog/syslog.info.yml index 1d8dc8f1b6..d12e2fcef9 100644 --- a/core/modules/syslog/syslog.info.yml +++ b/core/modules/syslog/syslog.info.yml @@ -5,3 +5,10 @@ package: Core version: VERSION core: 8.x configure: system.logging_settings +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/system/system.info.yml b/core/modules/system/system.info.yml index 1f2a064484..b12c6ad2c1 100644 --- a/core/modules/system/system.info.yml +++ b/core/modules/system/system.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x required: true configure: system.admin_config_system +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/taxonomy/taxonomy.info.yml b/core/modules/taxonomy/taxonomy.info.yml index 8eccaf52f1..0959fa75af 100644 --- a/core/modules/taxonomy/taxonomy.info.yml +++ b/core/modules/taxonomy/taxonomy.info.yml @@ -8,3 +8,10 @@ dependencies: - drupal:node - drupal:text configure: entity.taxonomy_vocabulary.collection +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/telephone/telephone.info.yml b/core/modules/telephone/telephone.info.yml index ab44ec0263..32016d04a0 100644 --- a/core/modules/telephone/telephone.info.yml +++ b/core/modules/telephone/telephone.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:field +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/text/text.info.yml b/core/modules/text/text.info.yml index 5f09ace218..3463d85a3e 100644 --- a/core/modules/text/text.info.yml +++ b/core/modules/text/text.info.yml @@ -7,3 +7,10 @@ core: 8.x dependencies: - drupal:field - drupal:filter +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/toolbar/toolbar.info.yml b/core/modules/toolbar/toolbar.info.yml index d0114930b8..1fdf0900aa 100644 --- a/core/modules/toolbar/toolbar.info.yml +++ b/core/modules/toolbar/toolbar.info.yml @@ -6,3 +6,10 @@ package: Core version: VERSION dependencies: - drupal:breakpoint +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/tour/tour.info.yml b/core/modules/tour/tour.info.yml index b9131629fb..9d64fcd95c 100644 --- a/core/modules/tour/tour.info.yml +++ b/core/modules/tour/tour.info.yml @@ -4,3 +4,10 @@ description: Provides guided tours. package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/tracker/tracker.info.yml b/core/modules/tracker/tracker.info.yml index d855210676..fd07a5f6ec 100644 --- a/core/modules/tracker/tracker.info.yml +++ b/core/modules/tracker/tracker.info.yml @@ -7,3 +7,10 @@ dependencies: package: Core version: VERSION core: 8.x +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: complete diff --git a/core/modules/update/update.info.yml b/core/modules/update/update.info.yml index b4536011d2..c268af45fa 100644 --- a/core/modules/update/update.info.yml +++ b/core/modules/update/update.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: update.settings dependencies: - drupal:file +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/user/user.info.yml b/core/modules/user/user.info.yml index 86faf68a68..2deaa03702 100644 --- a/core/modules/user/user.info.yml +++ b/core/modules/user/user.info.yml @@ -8,3 +8,10 @@ required: true configure: user.admin_index dependencies: - drupal:system +migrate: + - + version: 6 + status: complete + - + version: 7 + status: complete diff --git a/core/modules/views/views.info.yml b/core/modules/views/views.info.yml index e0a2154f57..230674b3cd 100644 --- a/core/modules/views/views.info.yml +++ b/core/modules/views/views.info.yml @@ -6,3 +6,10 @@ version: VERSION core: 8.x dependencies: - drupal:filter +migrate: + - + version: 6 + status: won't fix + - + version: 7 + status: won't fix diff --git a/core/modules/views/views.module b/core/modules/views/views.module index b82f36d4a5..03a74f4113 100644 --- a/core/modules/views/views.module +++ b/core/modules/views/views.module @@ -9,6 +9,7 @@ use Drupal\Component\Utility\Html; use Drupal\Core\Database\Query\AlterableInterface; use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Extension\Extension; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Url; @@ -573,6 +574,17 @@ function views_hook_info() { } /** + * Implements hook_system_info_alter(). + */ +function views_system_info_alter(array &$info, Extension $file, $type) { + if ($info['type'] == 'module' & $info['name'] == 'Views') { + foreach ($info['migrate'] as &$value) { + $value['description'] = "See Known issues when upgrading from Drupal 6 or 7 to Drupal 8."; + } + } +} + +/** * Returns whether the view is enabled. * * @param \Drupal\views\Entity\View $view diff --git a/core/modules/views_ui/views_ui.info.yml b/core/modules/views_ui/views_ui.info.yml index b79eec4a18..4a4cff3379 100644 --- a/core/modules/views_ui/views_ui.info.yml +++ b/core/modules/views_ui/views_ui.info.yml @@ -7,3 +7,10 @@ core: 8.x configure: entity.view.collection dependencies: - drupal:views +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/workflows/workflows.info.yml b/core/modules/workflows/workflows.info.yml index c40a7aae54..3f29fa627f 100644 --- a/core/modules/workflows/workflows.info.yml +++ b/core/modules/workflows/workflows.info.yml @@ -5,3 +5,10 @@ version: VERSION core: 8.x package: Core configure: entity.workflow.collection +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a diff --git a/core/modules/workspaces/workspaces.info.yml b/core/modules/workspaces/workspaces.info.yml index 8461ec0f24..e9f82ba339 100644 --- a/core/modules/workspaces/workspaces.info.yml +++ b/core/modules/workspaces/workspaces.info.yml @@ -7,3 +7,10 @@ package: Core (Experimental) configure: entity.workspace.collection dependencies: - user +migrate: + - + version: 6 + status: n/a + - + version: 7 + status: n/a