diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php index 4872d71..f002d8c 100644 --- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php +++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php @@ -47,7 +47,7 @@ class LocaleMultilingualFieldsTest extends WebTestBase { 'node_type_language_locked' => FALSE, ); $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type')); - $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')), t('The content type Basic page has been updated.')); + $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Basic page')), t('Basic page content type has been updated.')); // Make node body translatable. $field = field_info_field('body'); diff --git a/core/modules/node/content_types.inc b/core/modules/node/content_types.inc index 09fb831..d740a2d 100644 --- a/core/modules/node/content_types.inc +++ b/core/modules/node/content_types.inc @@ -188,9 +188,11 @@ function node_type_form($form, &$form_state, $type = NULL) { $languages = language_list(); $lang_options = array( LANGUAGE_NOT_SPECIFIED => t('- None -'), + LANGUAGE_NOT_APPLICABLE => t('- N/A -'), + LANGUAGE_MULTIPLE => t('Multiple Languages'), 'site_default' => t("Site's default"), 'current' => t('Current content language'), - 'user_default' => t("User's default"), + 'user_default' => t("User's preferred language"), ); foreach ($languages as $langcode => $language) { $lang_options[$langcode] = $language->name; @@ -211,7 +213,7 @@ function node_type_form($form, &$form_state, $type = NULL) { ); $form['language']['node_type_language_locked'] = array( '#type' => 'checkbox', - '#title' => t('Lock language'), + '#title' => t('Hide language options'), '#default_value' => variable_get('node_type_language_locked_' . $type->type, TRUE), '#description' => t('Users will not be able to change the default language on content of this type.'), ); diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php new file mode 100644 index 0000000..299d9e0 --- /dev/null +++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php @@ -0,0 +1,68 @@ + 'Node type initial language', + 'description' => 'Tests node type initial language settings.', + 'group' => 'Node', + ); + } + + function setUp() { + parent::setUp(array('language')); + $web_user = $this->drupalCreateUser(array('bypass node access', 'administer content types', 'administer languages')); + $this->drupalLogin($web_user); + } + + /** + * Tests the node type initial language defaults, and modify them. + * + * The default initial language must be the site's default, and the language + * locked option must be on. + */ + function testNodeTypeInitialLanguageDefaults() { + $this->drupalGet('admin/structure/types/manage/article'); + $this->assertOptionSelected('edit-node-type-language-default', 'site_default', 'The default inital language is the site default.'); + $this->assertFieldChecked('edit-node-type-language-locked', 'Language is locked by default.'); + + $this->drupalGet('node/add/article'); + $this->assertRaw('select disabled="disabled" id="edit-langcode"', 'Language is not selectable on node add/edit page when language is locked.'); + $this->assertOptionSelected('edit-langcode', language_default()->langcode, 'The inital language is the site default on the node add page.'); + + // Adds a new language and set it as default. + $edit = array( + 'predefined_langcode' => 'hu', + ); + $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); + $edit = array( + 'site_default' => 'hu', + ); + $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); + + // Tests the initial language after changing the site default language. + $this->drupalGet('node/add/article'); + $this->assertOptionSelected('edit-langcode', 'hu', 'The inital language is the site default on the node add page after the site default language is changed.'); + + // Changes the inital language settings. + $edit = array( + 'node_type_language_default' => 'en', + 'node_type_language_locked' => FALSE, + ); + $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type')); + $this->drupalGet('node/add/article'); + $this->assertNoRaw('select disabled="disabled" id="edit-langcode"', "Language is selectable on node add/edit page when language isn't locked."); + $this->assertOptionSelected('edit-langcode', 'en', 'The inital language is the previously selected language on the node add page.'); + } +} diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 8bbf953..bde18d2 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -644,7 +644,7 @@ function node_type_get_default_langcode($node_type) { return LANGUAGE_NOT_SPECIFIED; } - drupal_container()->get(LANGUAGE_TYPE_INTERFACE); + drupal_container()->get(LANGUAGE_TYPE_CONTENT); switch ($default_value) { case 'site_default': diff --git a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php index 53a7aae..7e37f4c 100644 --- a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php +++ b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php @@ -43,7 +43,7 @@ class PathLanguageTest extends PathTestBase { function testAliasTranslation() { // Set 'page' content type to enable translation. variable_set('node_type_language_locked_page', FALSE); - variable_set('node_type_langauge_translation_enabled_page', TRANSLATION_ENABLED); + variable_set('node_type_language_translation_enabled_page', TRANSLATION_ENABLED); $english_node = $this->drupalCreateNode(array('type' => 'page')); $english_alias = $this->randomName(); diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module index f42d2af..8148cf0 100644 --- a/core/modules/translation/translation.module +++ b/core/modules/translation/translation.module @@ -126,7 +126,11 @@ function translation_form_node_type_form_alter(&$form, &$form_state) { '#return_value' => TRANSLATION_ENABLED, '#default_value' => variable_get('node_type_language_translation_enabled_' . $form['#node_type']->type, FALSE), '#element_validate' => array('translation_node_type_language_translation_enabled_validate'), - '#prefix' => "", + '#states' => array( + 'invisible' => array( + ':input[name="node_type_language_default"]' => array('value' => 'und'), + ), + ), ); } @@ -134,7 +138,8 @@ function translation_form_node_type_form_alter(&$form, &$form_state) { * Checks if default language=none && default language=locked */ function translation_node_type_language_translation_enabled_validate($element, &$form_state, $form){ - if ($form_state['values']['node_type_language_default'] == 'und' && $form_state['values']['node_type_language_locked'] && $form_state['values']['node_type_language_translation_enabled'] == TRANSLATION_ENABLED) { + $language_default = (($form_state['values']['node_type_language_default'] == 'und' || $form_state['values']['node_type_language_default'] == 'zxx' || $form_state['values']['node_type_language_default'] == 'mul') ? TRUE : FALSE); + if ($language_default && $form_state['values']['node_type_language_locked'] && $form_state['values']['node_type_language_translation_enabled'] == TRANSLATION_ENABLED) { form_set_error('node_type_language_translation_enabled', t('Translation cannot be enabled if no default language is set and locked.')); } }