summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Hojtsy2017-11-09 23:31:29 +0100
committerGabor Hojtsy2017-11-09 23:31:29 +0100
commitb53e50d7d4fd8057f4b8a2c729a53d422b19aca3 (patch)
tree0bd0069e468b2e7bf0f57b21caf9e052f384bca9
parent0f64348e6d9437499fb61a40c649be9fba47e809 (diff)
Issue #2225681 by quietone, Jo Fitzgerald, dipakmdhrm, Adita, maxocub, Gábor Hojtsy, phenaproxima, iMiksu, Manuel Garcia, catch: Migrate D6 i18n blocks translated strings
-rw-r--r--core/modules/block/tests/src/Kernel/Migrate/d6/MigrateBlockTest.php4
-rw-r--r--core/modules/content_translation/migration_templates/d6_block_translation.yml68
-rw-r--r--core/modules/content_translation/src/Plugin/migrate/source/d6/BlockTranslation.php54
-rw-r--r--core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php60
-rw-r--r--core/modules/content_translation/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php72
-rw-r--r--core/modules/migrate_drupal/tests/fixtures/drupal6.php19
6 files changed, 274 insertions, 3 deletions
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 bb59f50..c78dc57 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 @@ class MigrateBlockTest extends MigrateDrupal6TestBase {
$visibility = [];
$settings = [
'id' => 'system_menu_block',
- 'label' => '',
+ 'label' => 'zu - Test Title 02',
'provider' => 'system',
- 'label_display' => '0',
+ 'label_display' => 'visible',
'level' => 1,
'depth' => 0,
];
diff --git a/core/modules/content_translation/migration_templates/d6_block_translation.yml b/core/modules/content_translation/migration_templates/d6_block_translation.yml
new file mode 100644
index 0000000..7ba6a4b
--- /dev/null
+++ b/core/modules/content_translation/migration_templates/d6_block_translation.yml
@@ -0,0 +1,68 @@
+id: d6_block_translation
+label: Block translations
+migration_tags:
+ - Drupal 6
+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/content_translation/src/Plugin/migrate/source/d6/BlockTranslation.php b/core/modules/content_translation/src/Plugin/migrate/source/d6/BlockTranslation.php
new file mode 100644
index 0000000..f387b46
--- /dev/null
+++ b/core/modules/content_translation/src/Plugin/migrate/source/d6/BlockTranslation.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\content_translation\Plugin\migrate\source\d6;
+
+use Drupal\block\Plugin\migrate\source\Block;
+
+/**
+ * Gets i18n block data from source database.
+ *
+ * @MigrateSource(
+ * id = "d6_block_translation",
+ * source_module = "i18nblocks"
+ * )
+ */
+class BlockTranslation extends Block {
+
+ /**
+ * {@inheritdoc}
+ */
+ public function query() {
+ // Let the parent set the block table to use, but do not use the parent
+ // query. Instead build a query so can use a left join to the selected block
+ // table.
+ parent::query();
+ $query = $this->select('i18n_blocks', 'i18n')
+ ->fields('i18n', ['ibid', 'module', 'delta', 'type', 'language'])
+ ->fields('b', ['bid', 'module', 'delta', 'theme', 'title']);
+ $query->addField('b', 'module', 'block_module');
+ $query->addField('b', 'delta', 'block_delta');
+ $query->leftJoin($this->blockTable, 'b', ('b.module = i18n.module AND b.delta = i18n.delta'));
+ return $query;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fields() {
+ $fields = parent::fields();
+ $fields['language'] = $this->t('Language for this field.');
+ return $fields;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIds() {
+ $ids = parent::getIds();
+ $ids['module']['alias'] = 'b';
+ $ids['delta']['alias'] = 'b';
+ $ids['language']['type'] = 'string';
+ return $ids;
+ }
+
+}
diff --git a/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php b/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php
new file mode 100644
index 0000000..2612d92
--- /dev/null
+++ b/core/modules/content_translation/tests/src/Kernel/Migrate/d6/MigrateBlockContentTranslationTest.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Drupal\Tests\content_translation\Kernel\Migrate\d6;
+
+use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
+
+/**
+ * Tests migration of i18n block translations.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateBlockContentTranslationTest extends MigrateDrupal6TestBase {
+
+ /**
+ * {@inheritdoc}
+ */
+ public static $modules = [
+ 'aggregator',
+ 'book',
+ 'block',
+ 'comment',
+ 'forum',
+ 'views',
+ 'block_content',
+ 'content_translation',
+ 'language',
+ 'statistics',
+ 'taxonomy',
+ ];
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function setUp() {
+ parent::setUp();
+ $this->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() {
+ $config = $this->container->get('language_manager')->getLanguageConfigOverride('zu', 'block.block.user_1');
+ $this->assertSame('zu - Test Title 02', $config->get('settings.label'));
+ }
+
+}
diff --git a/core/modules/content_translation/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php b/core/modules/content_translation/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php
new file mode 100644
index 0000000..4a0e893
--- /dev/null
+++ b/core/modules/content_translation/tests/src/Kernel/Plugin/migrate/source/d6/BlockTranslationTest.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\Tests\content_translation\Kernel\Plugin\migrate\source\d6;
+
+use Drupal\Tests\block\Kernel\Plugin\migrate\source\BlockTest;
+
+/**
+ * Tests i18n block source plugin.
+ *
+ * @covers \Drupal\content_translation\Plugin\migrate\source\d6\BlockTranslation
+ *
+ * @group content_translation
+ */
+class BlockTranslationTest extends BlockTest {
+
+ /**
+ * {@inheritdoc}
+ */
+ public static $modules = ['content_translation'];
+
+ /**
+ * {@inheritdoc}
+ */
+ public function providerSource() {
+ // Test data is the same as BlockTest, but with the addition of i18n_blocks.
+ $tests = parent::providerSource();
+
+ // The source data.
+ $tests[0]['source_data']['i18n_blocks'] = [
+ [
+ 'ibid' => 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/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index 4ca588b..1afc5b3 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -746,7 +746,7 @@ $connection->insert('blocks')
'throttle' => '0',
'visibility' => '0',
'pages' => '',
- 'title' => '',
+ 'title' => 'zu - Test Title 02',
'cache' => '-1',
))
->values(array(
@@ -8530,6 +8530,23 @@ $connection->schema()->createTable('i18n_blocks', array(
'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',
+))
+->execute();
+
$connection->schema()->createTable('i18n_strings', array(
'fields' => array(
'lid' => array(