diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php index 35832e8..1651079 100644 --- a/core/modules/menu/lib/Drupal/menu/MenuFormController.php +++ b/core/modules/menu/lib/Drupal/menu/MenuFormController.php @@ -64,16 +64,14 @@ public function form(array $form, array &$form_state) { $form['links'] = menu_overview_form($form['links'], $form_state); } - // $form['langcode'] is not wrapped in a check if language module exists - // check because the language_select form element works also without the - // language module being installed. - // http://drupal.org/node/1749954 documents the new element. $form['langcode'] = array( '#type' => 'language_select', '#title' => t('Menu language'), '#languages' => Language::STATE_ALL, '#default_value' => $menu->langcode, ); + // Unlike the menu langcode, the default language configuration for menu + // links only works with language module installed. if (\Drupal::moduleHandler()->moduleExists('language')) { $form['default_menu_links_language'] = array( '#type' => 'details', @@ -121,12 +119,6 @@ protected function actions(array $form, array &$form_state) { * Submit handler to update the bundle for the default language configuration. */ public function languageConfigurationSubmit(array &$form, array &$form_state) { - $menu = $this->entity; - // Delete the old language settings for the menu, if the machine name - // is changed. - if ($menu && $menu->id() && $menu->id() != $form_state['values']['id']) { - language_clear_default_configuration('menu_item', $menu->id()); - } // Since the machine name is not known yet, and it can be changed anytime, // we have to also update the bundle property for the default language // configuration in order to have the correct bundle value. diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php index 73f4107..3c3b0fb 100644 --- a/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php +++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php @@ -25,7 +25,7 @@ class MenuLanguageTest extends WebTestBase { public static function getInfo() { return array( 'name' => 'Menu language', - 'description' => 'Create menu in non-English language and menu link item.', + 'description' => 'Create menu and menu links in non-English language, and edit language settings.', 'group' => 'Menu' ); } @@ -64,7 +64,7 @@ function testMenuLanguage() { 'default_language[language_show]' => TRUE, ); $this->drupalPost('admin/structure/menu/add', $edit, t('Save')); - // Assert the new menu is in that language and the menu link defaults. + // Check menu language and item language configuration. $this->assertOptionSelected('edit-langcode', $edit['langcode'], 'The menu language was correctly selected.'); $this->assertOptionSelected('edit-default-language-langcode', $edit['default_language[langcode]'], 'The menu link default language was correctly selected.'); $this->assertFieldChecked('edit-default-language-language-show'); @@ -74,9 +74,8 @@ function testMenuLanguage() { $this->assertEqual($language_settings['langcode'], 'bb'); $this->assertEqual($language_settings['language_show'], TRUE); - // Start testing menu link things. - // Just link to front page. - $sample_link_path=''; + // Test menu link language. + $sample_link_path = ''; // Add a menu link. $title = $this->randomName(16); @@ -128,13 +127,6 @@ function testMenuLanguage() { // Check that the language selector is not available on menu link add page. $this->drupalGet('admin/structure/menu/manage/' . $menu_name . '/add'); $this->assertNoField('edit-langcode', 'The language selector field was hidden the page'); - - // Delete custom menu. - // @todo Test deleting a custom menu also deletes the language settings config. - // https://drupal.org/node/2017127 - // Check that the language settings are not still there. - // $language_settings = language_get_default_configuration('taxonomy_term', $edit['vid']); - // $this->assertEqual($language_settings['langcode'], 'bb'); } /** diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php index 9946e79..c86a00e 100644 --- a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php +++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkFormController.php @@ -157,10 +157,7 @@ public function form(array $form, array &$form_state) { ); // Get the default langcode and show language select value. - // @todo Make this work with bundle instead of menu_name. Uses menu_name - // right now to get around ->bundle being 'tools' for all new menu items. - // http://drupal.org/node/2014617 - $language_configuration = \Drupal::moduleHandler()->invoke('language', 'get_default_configuration', array('menu_link', $menu_link->menu_name)); + $language_configuration = \Drupal::moduleHandler()->invoke('language', 'get_default_configuration', array('menu_link', $menu_link->bundle())); if ($menu_link->isNew()) { // Adding a new menu link, use the default from language settings config.