From b4192ba2eb8f01d4365b228ebfedfd8c14ea5657 Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Thu, 8 Aug 2019 10:37:06 +1000 Subject: [PATCH] =?UTF-8?q?Issue=20#3008029=20by=20quietone,=20G=C3=A1bor?= =?UTF-8?q?=20Hojtsy:=20Migrate=20D7=20i18n=20field=20option=20translation?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../d7_field_instance_option_translation.yml | 57 +++++ .../d7_field_option_translation.yml | 47 ++++ .../d7/FieldInstanceOptionTranslation.php | 45 ++++ .../process/d7/FieldOptionTranslation.php | 50 ++++ .../source/d7/FieldOptionTranslation.php | 70 ++++++ .../d7/MigrateFieldOptionTranslationTest.php | 110 +++++++++ .../source/d7/FieldOptionTranslationTest.php | 230 ++++++++++++++++++ .../migrate_drupal/tests/fixtures/drupal7.php | 59 ++++- .../tests/src/Functional/d7/Upgrade7Test.php | 2 +- 9 files changed, 667 insertions(+), 3 deletions(-) create mode 100644 core/modules/config_translation/migrations/d7_field_instance_option_translation.yml create mode 100644 core/modules/config_translation/migrations/d7_field_option_translation.yml create mode 100644 core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php create mode 100644 core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php create mode 100644 core/modules/field/src/Plugin/migrate/source/d7/FieldOptionTranslation.php create mode 100644 core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldOptionTranslationTest.php create mode 100644 core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldOptionTranslationTest.php diff --git a/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml b/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml new file mode 100644 index 000000000000..162898d9d3ac --- /dev/null +++ b/core/modules/config_translation/migrations/d7_field_instance_option_translation.yml @@ -0,0 +1,57 @@ +id: d7_field_instance_option_translation +label: Field instance option configuration translation +migration_tags: + - Drupal 7 + - Configuration + - Multilingual +source: + plugin: d7_field_option_translation + constants: + status: true +process: + langcode: + plugin: skip_on_empty + source: language + method: row + type: + plugin: process_field + source: type + method: getFieldType + entity_type: entity_type + field_name: field_name +# # The bundle needs to be statically mapped in order to support comment types +# # that might already exist before this migration is run. See +# # d7_comment_type.yml for more information. + bundle: + plugin: static_map + source: bundle + bypass: true + map: + comment_node_forum: comment_forum + results: + plugin: d7_field_instance_option_translation + source: + - '@type' + - data + translation: + - + plugin: extract + source: '@results' + index: [1] + - + plugin: skip_on_empty + method: row + property: + - + plugin: extract + source: '@results' + index: [0] + - + plugin: skip_on_empty + method: row +destination: + plugin: entity:field_config + translations: true +migration_dependencies: + required: + - d7_field_instance diff --git a/core/modules/config_translation/migrations/d7_field_option_translation.yml b/core/modules/config_translation/migrations/d7_field_option_translation.yml new file mode 100644 index 000000000000..054bbf8dc677 --- /dev/null +++ b/core/modules/config_translation/migrations/d7_field_option_translation.yml @@ -0,0 +1,47 @@ +id: d7_field_option_translation +label: Field option configuration translation +migration_tags: + - Drupal 7 + - Configuration + - Multilingual +field_plugin_method: alterFieldMigration +source: + plugin: d7_field_option_translation +process: + langcode: + plugin: skip_on_empty + source: language + method: row + entity_type: entity_type + field_name: field_name + type: + plugin: process_field + source: type + method: getFieldType + results: + plugin: d7_field_option_translation + source: + - '@type' + - data + translation: + - + plugin: extract + source: '@results' + index: [1] + - + plugin: skip_on_empty + method: row + property: + - + plugin: extract + source: '@results' + index: [0] + - + plugin: skip_on_empty + method: row +destination: + plugin: entity:field_storage_config + translations: true +migration_dependencies: + required: + - d7_field diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php new file mode 100644 index 000000000000..e7082554498e --- /dev/null +++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldInstanceOptionTranslation.php @@ -0,0 +1,45 @@ +<?php + +namespace Drupal\field\Plugin\migrate\process\d7; + +use Drupal\migrate\MigrateExecutableInterface; +use Drupal\migrate\ProcessPluginBase; +use Drupal\migrate\Row; + +/** + * Determines the settings property and translation for boolean fields. + * + * @MigrateProcessPlugin( + * id = "d7_field_instance_option_translation", + * handle_multiples = TRUE + * ) + */ +class FieldInstanceOptionTranslation extends ProcessPluginBase { + + /** + * {@inheritdoc} + */ + public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { + list($type, $data) = $value; + + $data = unserialize($data); + $property = $row->getSourceProperty('property'); + $option_key = ($property == 0) ? 'off_label' : 'on_label'; + $translation = ''; + if (isset($data['settings']['allowed_values'])) { + $allowed_values = $data['settings']['allowed_values']; + switch ($type) { + case 'boolean'; + if (isset($allowed_values[$property])) { + $translation = $row->getSourceProperty('translation'); + break; + } + break; + + default: + } + } + return ['settings.' . $option_key, $translation]; + } + +} diff --git a/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php new file mode 100644 index 000000000000..ee740cb55a7b --- /dev/null +++ b/core/modules/field/src/Plugin/migrate/process/d7/FieldOptionTranslation.php @@ -0,0 +1,50 @@ +<?php + +namespace Drupal\field\Plugin\migrate\process\d7; + +use Drupal\migrate\MigrateExecutableInterface; +use Drupal\migrate\ProcessPluginBase; +use Drupal\migrate\Row; + +/** + * Determines the allowed values translation for select lists. + * + * @MigrateProcessPlugin( + * id = "d7_field_option_translation", + * handle_multiples = TRUE + * ) + */ +class FieldOptionTranslation extends ProcessPluginBase { + + /** + * {@inheritdoc} + * + * Get the field default/mapped settings. + */ + public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { + list($type, $data) = $value; + + $data = unserialize($data); + $allowed_values = ''; + $translation_key = $row->getSourceProperty('property'); + $i = 0; + if (isset($data['settings']['allowed_values'])) { + $allowed_values = $data['settings']['allowed_values']; + switch ($type) { + case 'list_string': + case 'list_integer': + case 'list_float': + case 'list_text': + if (isset($allowed_values[$translation_key])) { + $allowed_values = ['label' => $row->getSourceProperty('translation')]; + break; + } + break; + + default: + } + } + return ["settings.allowed_values.$translation_key", $allowed_values]; + } + +} diff --git a/core/modules/field/src/Plugin/migrate/source/d7/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/source/d7/FieldOptionTranslation.php new file mode 100644 index 000000000000..69bf8da1c7c0 --- /dev/null +++ b/core/modules/field/src/Plugin/migrate/source/d7/FieldOptionTranslation.php @@ -0,0 +1,70 @@ +<?php + +namespace Drupal\field\Plugin\migrate\source\d7; + +/** + * Gets field option label translations. + * + * @MigrateSource( + * id = "d7_field_option_translation", + * source_module = "i18n_field" + * ) + */ +class FieldOptionTranslation extends Field { + + /** + * {@inheritdoc} + */ + public function query() { + $query = parent::query(); + $query->leftJoin('i18n_string', 'i18n', 'i18n.type = fc.field_name'); + $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid'); + $query->condition('i18n.textgroup', 'field') + ->condition('objectid', '#allowed_values') + ->isNotNull('language'); + // Add all i18n and locales_target fields. + $query + ->fields('i18n') + ->fields('lt'); + $query->addField('fc', 'type'); + $query->addField('fci', 'bundle'); + $query->addField('i18n', 'lid', 'i18n_lid'); + $query->addField('i18n', 'type', 'i18n_type'); + + return $query; + } + + /** + * {@inheritdoc} + */ + public function fields() { + $fields = [ + 'bundle' => $this->t('Entity bundle'), + 'lid' => $this->t('Source string ID'), + 'textgroup' => $this->t('A module defined group of translations'), + 'context' => $this->t('Full string ID'), + 'objectid' => $this->t('Object ID'), + 'property' => $this->t('Object property for this string'), + 'objectindex' => $this->t('Integer value of Object ID'), + 'format' => $this->t('The input format used by this string'), + 'translation' => $this->t('Translation of the option'), + 'language' => $this->t('Language code'), + 'plid' => $this->t('Parent lid'), + 'plural' => $this->t('Plural index number in case of plural strings'), + 'i18n_status' => $this->t('A boolean indicating whether this translation needs to be updated'), + ]; + return parent::fields() + $fields; + } + + /** + * {@inheritdoc} + */ + public function getIds() { + return parent::getIds() + + [ + 'language' => ['type' => 'string'], + 'property' => ['type' => 'string'], + ]; + } + +} diff --git a/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldOptionTranslationTest.php b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldOptionTranslationTest.php new file mode 100644 index 000000000000..e4b740664567 --- /dev/null +++ b/core/modules/field/tests/src/Kernel/Migrate/d7/MigrateFieldOptionTranslationTest.php @@ -0,0 +1,110 @@ +<?php + +namespace Drupal\Tests\field\Kernel\Migrate\d7; + +use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase; + +/** + * Migrate field option translations. + * + * @group migrate_drupal_7 + */ +class MigrateFieldOptionTranslationTest extends MigrateDrupal7TestBase { + + /** + * {@inheritdoc} + */ + public static $modules = [ + 'comment', + 'config_translation', + 'datetime', + 'file', + 'image', + 'language', + 'link', + 'locale', + 'menu_ui', + 'node', + 'system', + 'taxonomy', + 'telephone', + 'text', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + $this->executeMigrations([ + 'language', + 'd7_field', + 'd7_field_option_translation', + ]); + } + + /** + * Tests the Drupal 7 field option translation to Drupal 8 migration. + */ + public function testFieldOptionTranslation() { + $language_manager = $this->container->get('language_manager'); + + /** @var \Drupal\language\Config\LanguageConfigOverride $config_translation */ + $config_translation = $language_manager->getLanguageConfigOverride('fr', 'field.storage.node.field_color'); + $allowed_values = [ + 0 => [ + 'label' => 'Verte', + ], + 1 => [ + 'label' => 'Noire', + ], + 2 => [ + 'label' => 'Blanche', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + + $config_translation = $language_manager->getLanguageConfigOverride('is', 'field.storage.node.field_color'); + $allowed_values = [ + 0 => [ + 'label' => 'Grænn', + ], + 1 => [ + 'label' => 'Svartur', + ], + 2 => [ + 'label' => 'HvÃtur', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + + $config_translation = $language_manager->getLanguageConfigOverride('fr', 'field.storage.node.field_rating'); + $allowed_values = [ + 1 => [ + 'label' => 'Haute', + ], + 2 => [ + 'label' => 'Moyenne', + ], + 3 => [ + 'label' => 'Faible', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + + $config_translation = $language_manager->getLanguageConfigOverride('is', 'field.storage.node.field_rating'); + $allowed_values = [ + 1 => [ + 'label' => 'Hár', + ], + 2 => [ + 'label' => 'Miðlungs', + ], + 3 => [ + 'label' => 'Lágt', + ], + ]; + $this->assertSame($allowed_values, $config_translation->get('settings.allowed_values')); + } + +} diff --git a/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldOptionTranslationTest.php b/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldOptionTranslationTest.php new file mode 100644 index 000000000000..3fdaaac6dd9e --- /dev/null +++ b/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldOptionTranslationTest.php @@ -0,0 +1,230 @@ +<?php + +namespace Drupal\Tests\field\Kernel\Plugin\migrate\source\d7; + +use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase; + +/** + * Tests the field option translation source plugin. + * + * @covers \Drupal\field\Plugin\migrate\source\d7\FieldOptionTranslation + * @group migrate_drupal + */ +class FieldOptionTranslationTest extends MigrateSqlSourceTestBase { + + /** + * {@inheritdoc} + */ + public static $modules = ['field', 'migrate_drupal']; + + /** + * {@inheritdoc} + */ + public function providerSource() { + $test = []; + + // The source data. + $test[0]['source_data']['field_config'] = [ + [ + 'id' => '4', + 'field_name' => 'field_color', + 'type' => 'list_text', + 'module' => 'list', + 'active' => '1', + 'storage_type' => 'field_sql_storage', + 'storage_module' => 'field_sql_storage', + 'storage_active' => '1', + 'locked' => '0', + 'data' => 'a:7:{s:12:"translatable";b:1;s:12:"entity_types";a:0:{}s:8:"settings";a:3:{s:14:"allowed_values";a:3:{i:0;s:5:"Green";i:1;s:5:"Black";i:2;s:5:"White";}s:23:"allowed_values_function";s:0:"";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:22:"field_data_field_color";a:1:{s:5:"value";s:17:"field_color_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:26:"field_revision_field_color";a:1:{s:5:"value";s:17:"field_color_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:2:"48";}', + 'cardinality' => '1', + 'translatable' => '1', + 'deleted' => '0', + ], + [ + 'id' => '2', + 'field_name' => 'field_rating', + 'type' => 'list_text', + 'module' => 'list', + 'active' => '1', + 'storage_type' => 'field_sql_storage', + 'storage_module' => 'field_sql_storage', + 'storage_active' => '1', + 'locked' => '0', + 'data' => 'a:7:{s:12:"translatable";b:1;s:12:"entity_types";a:0:{}s:8:"settings";a:3:{s:14:"allowed_values";a:3:{i:1;s:4:"High";i:2;s:6:"Medium";i:3;s:3:"Low";}s:23:"allowed_values_function";s:0:"";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:23:"field_data_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:27:"field_revision_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:2:"49";}', + 'cardinality' => '1', + 'translatable' => '1', + 'deleted' => '0', + ], + ]; + $test[0]['source_data']['field_config_instance'] = [ + [ + 'id' => '76', + 'field_id' => '4', + 'field_name' => 'field_color', + 'entity_type' => 'node', + 'bundle' => 'blog', + 'data' => 'a:7:{s:5:"label";s:5:"Color";s:6:"widget";a:5:{s:6:"weight";s:2:"11";s:4:"type";s:14:"options_select";s:6:"module";s:7:"options";s:6:"active";i:1;s:8:"settings";a:0:{}}s:8:"settings";a:2:{s:18:"user_register_form";b:0;s:23:"entity_translation_sync";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"list_default";s:8:"settings";a:0:{}s:6:"module";s:4:"list";s:6:"weight";i:10;}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";N;}', + 'deleted' => '0', + ], + [ + 'id' => '77', + 'field_id' => '2', + 'field_name' => 'field_rating', + 'entity_type' => 'node', + 'bundle' => 'blog', + 'data' => 'a:7:{s:5:"label";s:6:"Rating";s:6:"widget";a:5:{s:6:"weight";s:2:"12";s:4:"type";s:15:"options_buttons";s:6:"module";s:7:"options";s:6:"active";i:1;s:8:"settings";a:0:{}}s:8:"settings";a:2:{s:18:"user_register_form";b:0;s:23:"entity_translation_sync";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"list_default";s:8:"settings";a:0:{}s:6:"module";s:4:"list";s:6:"weight";i:11;}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";N;}', + 'deleted' => '0', + ], + ]; + + $test[0]['source_data']['i18n_string'] = [ + [ + 'lid' => '764', + 'textgroup' => 'field', + 'context' => 'field_color:blog:label', + 'objectid' => 'blog', + 'type' => 'field_color', + 'property' => 'label', + 'objectindex' => '0', + 'format' => '', + ], + [ + 'lid' => '1', + 'textgroup' => 'field', + 'context' => 'field_rating:#allowed_values:1', + 'objectid' => '#allowed_values', + 'type' => 'field_rating', + 'property' => '1', + 'objectindex' => '0', + 'format' => '', + ], + [ + 'lid' => '2', + 'textgroup' => 'field', + 'context' => 'field_rating:#allowed_values:2', + 'objectid' => '#allowed_values', + 'type' => 'field_rating', + 'property' => '2', + 'objectindex' => '0', + 'format' => '', + ], + [ + 'lid' => '3', + 'textgroup' => 'field', + 'context' => 'field_rating:#allowed_values:3', + 'objectid' => '#allowed_values', + 'type' => 'field_rating', + 'property' => '3', + 'objectindex' => '0', + 'format' => '', + ], + ]; + $test[0]['source_data']['locales_target'] = [ + [ + 'lid' => '764', + 'translation' => 'Color', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', + ], + [ + 'lid' => '1', + 'translation' => 'Haute', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', + ], + [ + 'lid' => '2', + 'translation' => 'Moyenne', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', + ], + [ + 'lid' => '3', + 'translation' => 'Faible', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', + ], + [ + 'lid' => '768', + 'translation' => 'Rating', + 'language' => 'fr', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', + ], + ]; + $test[0]['expected_results'] = [ + [ + 'i18n_lid' => '1', + 'textgroup' => 'field', + 'context' => 'field_rating:#allowed_values:1', + 'objectid' => '#allowed_values', + 'type' => 'list_text', + 'property' => '1', + 'objectindex' => '0', + 'format' => '', + 'language' => 'fr', + 'translation' => 'Haute', + 'plid' => 0, + 'plural' => 0, + 'i18n_status' => 0, + 'field_name' => 'field_rating', + 'data' => 'a:7:{s:12:"translatable";b:1;s:12:"entity_types";a:0:{}s:8:"settings";a:3:{s:14:"allowed_values";a:3:{i:1;s:4:"High";i:2;s:6:"Medium";i:3;s:3:"Low";}s:23:"allowed_values_function";s:0:"";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:23:"field_data_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:27:"field_revision_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:2:"49";}', + 'bundle' => 'blog', + 'entity_type' => 'node', + 'i18n_type' => 'field_rating', + ], + [ + 'i18n_lid' => '2', + 'textgroup' => 'field', + 'context' => 'field_rating:#allowed_values:2', + 'objectid' => '#allowed_values', + 'type' => 'list_text', + 'property' => '2', + 'objectindex' => '0', + 'format' => '', + 'language' => 'fr', + 'translation' => 'Moyenne', + 'plid' => 0, + 'plural' => 0, + 'i18n_status' => 0, + 'field_name' => 'field_rating', + 'data' => 'a:7:{s:12:"translatable";b:1;s:12:"entity_types";a:0:{}s:8:"settings";a:3:{s:14:"allowed_values";a:3:{i:1;s:4:"High";i:2;s:6:"Medium";i:3;s:3:"Low";}s:23:"allowed_values_function";s:0:"";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:23:"field_data_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:27:"field_revision_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:2:"49";}', + 'bundle' => 'blog', + 'entity_type' => 'node', + 'i18n_type' => 'field_rating', + ], + [ + 'i18n_lid' => '3', + 'textgroup' => 'field', + 'context' => 'field_rating:#allowed_values:3', + 'objectid' => '#allowed_values', + 'type' => 'list_text', + 'property' => '3', + 'objectindex' => '0', + 'format' => '', + 'language' => 'fr', + 'translation' => 'Faible', + 'plid' => 0, + 'plural' => 0, + 'i18n_status' => 0, + 'field_name' => 'field_rating', + 'data' => 'a:7:{s:12:"translatable";b:1;s:12:"entity_types";a:0:{}s:8:"settings";a:3:{s:14:"allowed_values";a:3:{i:1;s:4:"High";i:2;s:6:"Medium";i:3;s:3:"Low";}s:23:"allowed_values_function";s:0:"";s:23:"entity_translation_sync";b:0;}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:23:"field_data_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:27:"field_revision_field_rating";a:1:{s:5:"value";s:18:"field_rating_value";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:1:{s:5:"value";a:1:{i:0;s:5:"value";}}s:2:"id";s:2:"49";}', + 'bundle' => 'blog', + 'entity_type' => 'node', + 'i18n_type' => 'field_rating', + ], + ]; + + return $test; + } + +} diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index 87f234fc261e..f68df7420366 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -4991,6 +4991,15 @@ 'data' => 'a:7:{s:5:"label";s:6:"Rating";s:6:"widget";a:5:{s:6:"weight";s:2:"12";s:4:"type";s:15:"options_buttons";s:6:"module";s:7:"options";s:6:"active";i:1;s:8:"settings";a:0:{}}s:8:"settings";a:2:{s:18:"user_register_form";b:0;s:23:"entity_translation_sync";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"list_default";s:8:"settings";a:0:{}s:6:"module";s:4:"list";s:6:"weight";i:11;}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";N;}', 'deleted' => '0', )) +->values(array( + 'id' => '78', + 'field_id' => '6', + 'field_name' => 'field_boolean', + 'entity_type' => 'node', + 'bundle' => 'blog', + 'data' => 'a:6:{s:5:"label";s:7:"Boolean";s:6:"widget";a:4:{s:4:"type";s:13:"options_onoff";s:6:"weight";s:2:"14";s:8:"settings";a:1:{s:13:"display_label";i:0;}s:6:"module";s:7:"options";}s:8:"settings";a:2:{s:18:"user_register_form";b:0;s:23:"entity_translation_sync";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:12:"list_default";s:8:"settings";a:0:{}s:6:"module";s:4:"list";s:6:"weight";i:12;}}s:8:"required";b:0;s:11:"description";s:0:"";}', + 'deleted' => '0', +)) ->execute(); $connection->schema()->createTable('field_data_body', array( 'fields' => array( @@ -5494,7 +5503,17 @@ 'deleted' => '0', 'entity_id' => '1', 'revision_id' => '1', - 'language' => 'und', + 'language' => 'fr', + 'delta' => '0', + 'field_boolean_value' => '1', +)) +->values(array( + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'deleted' => '0', + 'entity_id' => '1', + 'revision_id' => '1', + 'language' => 'is', 'delta' => '0', 'field_boolean_value' => '1', )) @@ -10595,7 +10614,27 @@ 'deleted' => '0', 'entity_id' => '1', 'revision_id' => '1', - 'language' => 'und', + 'language' => 'en', + 'delta' => '0', + 'field_boolean_value' => '1', +)) +->values(array( + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'deleted' => '0', + 'entity_id' => '1', + 'revision_id' => '1', + 'language' => 'fr', + 'delta' => '0', + 'field_boolean_value' => '1', +)) +->values(array( + 'entity_type' => 'node', + 'bundle' => 'test_content_type', + 'deleted' => '0', + 'entity_id' => '1', + 'revision_id' => '1', + 'language' => 'is', 'delta' => '0', 'field_boolean_value' => '1', )) @@ -18873,6 +18912,22 @@ 'plural' => '0', 'i18n_status' => '0', )) +->values(array( + 'lid' => '687', + 'translation' => 'is - Off', + 'language' => 'is', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) +->values(array( + 'lid' => '688', + 'translation' => 'is - 1', + 'language' => 'is', + 'plid' => '0', + 'plural' => '0', + 'i18n_status' => '0', +)) ->values(array( 'lid' => '87', 'translation' => 'is - VocabTranslate', diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php index 9d06bbcd2cde..9827798d2abf 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/Upgrade7Test.php @@ -74,7 +74,7 @@ protected function getEntityCounts() { 'contact_form' => 3, 'contact_message' => 0, 'editor' => 2, - 'field_config' => 72, + 'field_config' => 73, 'field_storage_config' => 55, 'file' => 3, 'filter_format' => 7, -- GitLab