Commit b53e50d7 authored by Gábor Hojtsy's avatar Gábor Hojtsy

Issue #2225681 by quietone, Jo Fitzgerald, dipakmdhrm, Adita, maxocub, Gábor...

Issue #2225681 by quietone, Jo Fitzgerald, dipakmdhrm, Adita, maxocub, Gábor Hojtsy, phenaproxima, iMiksu, Manuel Garcia, catch: Migrate D6 i18n blocks translated strings
parent 0f64348e
......@@ -116,9 +116,9 @@ public function testBlockMigration() {
$visibility = [];
$settings = [
'id' => 'system_menu_block',
'label' => '',
'label' => 'zu - Test Title 02',
'provider' => 'system',
'label_display' => '0',
'label_display' => 'visible',
'level' => 1,
'depth' => 0,
];
......
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
<?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;
}
}
<?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'));
}
}
<?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;
}
}
......@@ -746,7 +746,7 @@
'throttle' => '0',
'visibility' => '0',
'pages' => '',
'title' => '',
'title' => 'zu - Test Title 02',
'cache' => '-1',
))
->values(array(
......@@ -8530,6 +8530,23 @@
'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(
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment