diff --git a/core/modules/language/migration_templates/d6_language_negotiation_settings.yml b/core/modules/language/migration_templates/d6_language_negotiation_settings.yml index 097f706..bc5c133 100644 --- a/core/modules/language/migration_templates/d6_language_negotiation_settings.yml +++ b/core/modules/language/migration_templates/d6_language_negotiation_settings.yml @@ -6,13 +6,14 @@ source: plugin: variable variables: - language_negotiation - constants: - session_parameter: 'language' - selected_langcode: 'site_default' process: - 'session/parameter': 'constants/session_parameter' - 'selected_langcode': 'constants/selected_langcode' - 'url/source': + session/parameter: + plugin: default_value + default_value: 'language' + selected_langcode: + plugin: default_value + default_value: 'site_default' + url/source: plugin: static_map source: language_negotiation map: diff --git a/core/modules/language/migration_templates/d6_language_types.yml b/core/modules/language/migration_templates/d6_language_types.yml new file mode 100644 index 0000000..05ce300 --- /dev/null +++ b/core/modules/language/migration_templates/d6_language_types.yml @@ -0,0 +1,52 @@ +id: d6_language_types +label: Language types +migration_tags: + - Drupal 6 +source: + plugin: variable + variables: + - language_negotiation +process: + all: + plugin: default_value + default_value: + - 'language_interface' + - 'language_content' + - 'language_url' + configurable: + plugin: default_value + default_value: + - 'language_interface' + negotiation/language_content/enabled: + plugin: default_value + default_value: + 'language-interface': 0 + negotiation/language_url/enabled: + plugin: default_value + default_value: + 'language-url': 0 + 'language-url-fallback': 1 + negotiation/language_interface/enabled: + plugin: static_map + source: language_negotiation + map: + # LANGUAGE_NEGOTIATION_NONE = 0 + # LANGUAGE_NEGOTIATION_PATH_DEFAULT = 1 + # LANGUAGE_NEGOTIATION_PATH = 2 + # LANGUAGE_NEGOTIATION_DOMAIN = 3 + 0: + 'language-selected': 0 + 1: + 'language-url': 0 + 'language-selected': 1 + 2: + 'language-url': 0 + 'language-user': 1 + 'language-browser': 2 + 'language-selected': 3 + 3: + 'language-url': 0 + 'language-selected': 1 +destination: + plugin: config + config_name: language.types diff --git a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php index 3ddc293..aa70638 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php @@ -118,4 +118,92 @@ public function testLanguageDomains() { $this->assertSame($config->get('url.domains'), $expected_domains); } + /** + * Tests the migration of language types with default path prefix. + */ + public function testLanguageTypesWithDefaultPathPrefix() { + $this->executeMigration('d6_language_types'); + + $config = $this->config('language.types'); + $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']); + $this->assertSame($config->get('configurable'), ['language_interface']); + $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]); + $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]); + $expected = [ + 'language-url' => 0, + 'language-selected' => 1, + ]; + $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected); + } + + /** + * Tests the migration of language types with no negotiation. + */ + public function testLanguageTypesWithNoNegotiation() { + $this->sourceDatabase->update('variable') + ->fields(array('value' => serialize(0))) + ->condition('name', 'language_negotiation') + ->execute(); + + $this->executeMigration('d6_language_types'); + + $config = $this->config('language.types'); + $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']); + $this->assertSame($config->get('configurable'), ['language_interface']); + $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]); + $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]); + $expected = [ + 'language-selected' => 0, + ]; + $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected); + } + + /** + * Tests the migration of language types with path prefix negotiation. + */ + public function testLanguageTypesWithPathPrefix() { + $this->sourceDatabase->update('variable') + ->fields(array('value' => serialize(2))) + ->condition('name', 'language_negotiation') + ->execute(); + + $this->executeMigration('d6_language_types'); + + $config = $this->config('language.types'); + $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']); + $this->assertSame($config->get('configurable'), ['language_interface']); + $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]); + $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]); + $expected = [ + 'language-url' => 0, + 'language-user' => 1, + 'language-browser' => 2, + 'language-selected' => 3, + ]; + $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected); + } + + /** + * Tests the migration of language types with domain negotiation. + */ + public function testLanguageTypesWithDomain() { + $this->sourceDatabase->update('variable') + ->fields(array('value' => serialize(3))) + ->condition('name', 'language_negotiation') + ->execute(); + + $this->executeMigration('d6_language_types'); + + $config = $this->config('language.types'); + $this->assertSame($config->get('all'), ['language_interface', 'language_content', 'language_url']); + $this->assertSame($config->get('configurable'), ['language_interface']); + $this->assertSame($config->get('negotiation.language_content.enabled'), ['language-interface' => 0]); + $this->assertSame($config->get('negotiation.language_url.enabled'), ['language-url' => 0, 'language-url-fallback' => 1]); + $expected = [ + 'language-url' => 0, + 'language-selected' => 1, + ]; + $this->assertSame($config->get('negotiation.language_interface.enabled'), $expected); + } + } diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php index 13b9fa6..668e698 100644 --- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php @@ -290,6 +290,10 @@ class MigrateUpgradeForm extends ConfirmFormBase { 'source_module' => 'locale', 'destination_module' => 'language', ], + 'd6_language_types' => [ + 'source_module' => 'locale', + 'destination_module' => 'language', + ], 'language' => [ 'source_module' => 'locale', 'destination_module' => 'language',