diff --git a/lib/Drupal/config_translation/Form/ConfigTranslationManageForm.php b/lib/Drupal/config_translation/Form/ConfigTranslationManageForm.php index 253c157..f2b5f8c 100644 --- a/lib/Drupal/config_translation/Form/ConfigTranslationManageForm.php +++ b/lib/Drupal/config_translation/Form/ConfigTranslationManageForm.php @@ -136,7 +136,7 @@ class ConfigTranslationManageForm implements FormInterface { if ($element instanceof Element) { // Build sub-structure and include it with a wrapper in the form // if there are any translatable elements there. - $sub_build = $this->buildConfigForm($element, $config[$key], $base_config[$key], TRUE, $key); + $sub_build = $this->buildConfigForm($element, $config[$key], $base_config[$key], TRUE, $element_key); if (!empty($sub_build)) { $build[$key] = array( '#type' => 'details', diff --git a/lib/Drupal/config_translation/Tests/ConfigTranslationUITest.php b/lib/Drupal/config_translation/Tests/ConfigTranslationUITest.php index 7880a84..36d3ca0 100644 --- a/lib/Drupal/config_translation/Tests/ConfigTranslationUITest.php +++ b/lib/Drupal/config_translation/Tests/ConfigTranslationUITest.php @@ -21,7 +21,7 @@ class ConfigTranslationUITest extends WebTestBase { * * @var array */ - public static $modules = array('contact', 'config_translation'); + public static $modules = array('contact', 'config_translation', 'views', 'views_ui'); /** * Languages to enable. @@ -299,6 +299,49 @@ class ConfigTranslationUITest extends WebTestBase { } /** + * Test case for views translation interface. + */ + function testViewsTranslationUI() { + $description = 'A list of nodes marked for display on the front page.'; + $human_readable_name = 'Frontpage'; + $display_settings_master = 'Master'; + $display_options_master = '(Empty)'; + $translation_base_url = 'admin/structure/views/view/frontpage/translate'; + + $this->drupalGet($translation_base_url); + + // Check 'Add' link of French to visit add page. + $this->assertLinkByHref($translation_base_url . '/add/fr'); + $this->clickLink(t('Add')); + + // Make sure original text is present on this page. + $this->assertRaw($description); + $this->assertRaw($human_readable_name); + + // Update Views Fields for French. + $edit = array( + '0[description][translation]' => $description . " FR", + '0[label][translation]' => $human_readable_name . " FR", + '0[display][default][display.default.display_title][translation]' => $display_settings_master . " FR", + '0[display][default][display_options][display.default.display_options.title][translation]' => $display_options_master . " FR", + ); + $this->drupalPost($translation_base_url . '/add/fr', $edit, t('Save translation')); + $this->assertRaw(t('Updated French configuration translations successfully.')); + + // Check for edit, delete links (and no 'add' link) for French language. + $this->assertNoLinkByHref($translation_base_url . '/add/fr'); + $this->assertLinkByHref($translation_base_url . '/edit/fr'); + $this->assertLinkByHref($translation_base_url . '/delete/fr'); + + // Check translation saved proper. + $this->drupalGet($translation_base_url . '/edit/fr'); + $this->assertFieldByName('0[description][translation]', $description . " FR"); + $this->assertFieldByName('0[label][translation]', $human_readable_name . " FR"); + $this->assertFieldByName('0[display][default][display.default.display_title][translation]', $display_settings_master . " FR"); + $this->assertFieldByName('0[display][default][display_options][display.default.display_options.title][translation]', $display_options_master . " FR"); + } + + /** * Test translation storage in locale storage. */ function testLocaleDBStorage() {