diff --git a/core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php b/core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php new file mode 100644 index 0000000000..d0bab1f035 --- /dev/null +++ b/core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php @@ -0,0 +1,69 @@ +select('i18n_blocks', 'i18n') + ->fields('i18n') + ->fields('b', ['bid', 'module', 'delta', 'theme', 'title']); + $query->innerJoin($this->blockTable, 'b', ('b.module = i18n.module AND b.delta = i18n.delta')); + return $query; + } + + /** + * {@inheritdoc} + */ + public function fields() { + return [ + 'bid' => $this->t('The block numeric identifier.'), + 'ibid' => $this->t('The i18n_blocks block numeric identifier.'), + 'module' => $this->t('The module providing the block.'), + 'delta' => $this->t("The block's delta."), + 'type'=> $this->t('Block type'), + 'language' => $this->t('Language for this field.'), + 'theme' => $this->t('Which theme the block is placed in.'), + 'title' => $this->t('Block title.'), + ]; + } + + /** + * {@inheritdoc} + */ + public function prepareRow(Row $row) { + $row->setSourceProperty('default_theme', $this->defaultTheme); + return SourcePluginBase::prepareRow($row); + } + + /** + * {@inheritdoc} + */ + public function getIds() { + $ids = parent::getIds(); + $ids['module']['alias'] = 'b'; + $ids['delta']['alias'] = 'b'; + $ids['theme']['alias'] = 'b'; + $ids['language']['type'] = 'string'; + return $ids; + } +} diff --git a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php new file mode 100644 index 0000000000..e9f1e87ef4 --- /dev/null +++ b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php @@ -0,0 +1,63 @@ +installConfig(['block']); + $this->installConfig(['block_content']); + $this->installEntitySchema('block_content'); + + $this->executeMigrations([ + 'd6_filter_format', + 'block_content_type', + 'block_content_body_field', + 'd6_custom_block', + 'd6_user_role', + 'd6_block', + 'd6_block_translation', + ]); + block_rebuild(); + } + + /** + * Tests the migration of block title translation. + */ + public function testBlockContentTranslation() { + /** @var \Drupal\language\ConfigurableLanguageManagerInterface $language_manager */ + $language_manager = $this->container->get('language_manager'); + + $config = $language_manager->getLanguageConfigOverride('zu', 'block.block.user_1'); + $this->assertSame('zu - Navigation', $config->get('settings.label')); + } + +} diff --git a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php index bb59f502c3..e0876fd1e4 100644 --- a/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php +++ b/core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php @@ -116,9 +116,9 @@ public function testBlockMigration() { $visibility = []; $settings = [ 'id' => 'system_menu_block', - 'label' => '', + 'label' => 'zu - Navigation', 'provider' => 'system', - 'label_display' => '0', + 'label_display' => 'visible', 'level' => 1, 'depth' => 0, ]; diff --git a/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php b/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php new file mode 100644 index 0000000000..393103f571 --- /dev/null +++ b/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php @@ -0,0 +1,72 @@ + 1, + 'module' => 'block', + 'delta' => '1', + 'type' => 0, + 'language' => 'fr', + ], + [ + 'ibid' => 2, + 'module' => 'block', + 'delta' => '2', + 'type' => 0, + 'language' => 'zu', + ], + ]; + + // The expected results. + $tests[0]['expected_data'] = [ + [ + 'bid' => 1, + 'module' => 'block', + 'delta' => '1', + 'title' => 'Test Title 01', + 'ibid' => 1, + 'type' => '0', + 'language' => 'fr', + ], + [ + 'bid' => 2, + 'module' => 'block', + 'delta' => '2', + 'theme' => 'garland', + 'title' => 'Test Title 02', + 'ibid' => 2, + 'type' => '0', + 'language' => 'zu', + ], + ]; + + return $tests; + } + +} diff --git a/core/modules/content_translation/migrations/d6_block_translation.yml b/core/modules/content_translation/migrations/d6_block_translation.yml new file mode 100644 index 0000000000..3f8810cbfa --- /dev/null +++ b/core/modules/content_translation/migrations/d6_block_translation.yml @@ -0,0 +1,69 @@ +id: d6_block_translation +label: Block translations +migration_tags: + - Drupal 6 + - Configuration +source: + plugin: d6_block_translation + constants: + dest_label: 'settings/label' +process: + langcode: language + property: constants/dest_label + translation: title + id: + - + plugin: migration_lookup + migration: d6_block + source: + - module + - delta + - + plugin: skip_on_empty + method: row + plugin: + - + plugin: static_map + bypass: true + source: + - module + - delta + map: + book: + 0: book_navigation + comment: + 0: views_block:comments_recent-block_1 + forum: + 0: forum_active_block + 1: forum_new_block + locale: + 0: language_block + node: + 0: node_syndicate_block + search: + 0: search_form_block + statistics: + 0: statistics_popular_block + system: + 0: system_powered_by_block + user: + 0: user_login_block + 1: system_menu_block:tools + 2: views_block:who_s_new-block_1 + 3: views_block:who_s_online-who_s_online_block + - + plugin: block_plugin_id + - + plugin: skip_on_empty + method: row + theme: + plugin: block_theme + source: + - theme + - default_theme + - admin_theme +destination: + plugin: entity:block +migration_dependencies: + required: + - d6_block diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php index 502e2631d5..5793fd36f2 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php @@ -746,7 +746,7 @@ 'throttle' => '0', 'visibility' => '0', 'pages' => '', - 'title' => '', + 'title' => 'zu - Navigation', 'cache' => '-1', )) ->values(array( @@ -8706,6 +8706,30 @@ 'mysql_character_set' => 'utf8', )); +$connection->insert('i18n_blocks') +->fields(array( + 'ibid', + 'module', + 'delta', + 'type', + 'language', +)) +->values(array( + 'ibid' => '1', + 'module' => 'user', + 'delta' => '1', + 'type' => '0', + 'language' => 'zu', +)) +->values(array( + 'ibid' => '2', + 'module' => 'menu', + 'delta' => 'menu-translation-test', + 'type' => '0', + 'language' => 'zu', +)) +->execute(); + $connection->schema()->createTable('i18n_strings', array( 'fields' => array( 'lid' => array( @@ -9856,6 +9880,14 @@ 'objectindex' => '0', 'format' => '0', )) +->values(array( + 'lid' => '1679', + 'objectid' => 'menu-translation-test', + 'type' => 'menu', + 'property' => 'title', + 'objectindex' => '0', + 'format' => '0', +)) ->execute(); $connection->schema()->createTable('i18n_variable', array( @@ -22357,6 +22389,13 @@ 'source' => 'I really, really, really love migrating', 'version' => '1', )) +->values(array( + 'lid' => '1679', + 'location' => 'menu:menu-translation-test:title', + 'textgroup' => 'menu', + 'source' => 'Translation test', + 'version' => '1', +)) ->execute(); $connection->schema()->createTable('locales_target', array( 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 1eeb326b13..c62df12df4 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 @@ -60,6 +60,7 @@ protected function getAvailablePaths() { 'filefield', 'filter', 'forum', + 'i18nblocks', 'i18ntaxonomy', 'imagecache', 'imagefield', @@ -137,7 +138,6 @@ protected function getMissingPaths() { 'devel', 'devel_generate', 'devel_node_access', - 'i18nblocks', 'i18ncck', 'i18ncontent', 'i18npoll', 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 abd6b8993c..ea1b26b26d 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 @@ -133,6 +133,7 @@ protected function getAvailablePaths() { 'filter', 'forum', 'i18nmenu', + 'i18nblocks', 'i18ntaxonomy', 'imagecache', 'imagefield', @@ -174,7 +175,6 @@ protected function getAvailablePaths() { */ protected function getMissingPaths() { return [ - 'i18nblocks', 'i18ncck', 'i18ncontent', // This module is in the missing path list because it is installed on the