diff --git a/core/modules/field/modules/text/text.test b/core/modules/field/modules/text/text.test index 7e99bdd..f191da0 100644 --- a/core/modules/field/modules/text/text.test +++ b/core/modules/field/modules/text/text.test @@ -443,7 +443,7 @@ class TextTranslationTestCase extends WebTestBase { $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); // Set "Article" content type to use multilingual support with translation. - $edit = array('node_type_language_locked' => FALSE, 'node_type_language_translation_enabled' => TRANSLATION_ENABLED); + $edit = array('node_type_language_hidden' => FALSE, 'node_type_language_translation_enabled' => TRANSLATION_ENABLED); $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type')); $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Article')), t('Article content type has been updated.')); } diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleCommentLanguageTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleCommentLanguageTest.php index 0d37b1d..9bb8bc0 100644 --- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleCommentLanguageTest.php +++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleCommentLanguageTest.php @@ -38,7 +38,7 @@ class LocaleCommentLanguageTest extends WebTestBase { $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); // Set "Article" content type to use multilingual support. - $edit = array('node_type_language_locked' => FALSE); + $edit = array('node_type_language_hidden' => FALSE); $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type')); // Enable content language negotiation UI. diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php index 4a3c37a..fbedc33 100644 --- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php +++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleContentTest.php @@ -84,7 +84,7 @@ class LocaleContentTest extends WebTestBase { $this->drupalGet('admin/structure/types/manage/page'); $this->assertText(t('Language settings'), t('Multilingual support fieldset present on content type configuration form.')); $edit = array( - 'node_type_language_locked' => FALSE, + 'node_type_language_hidden' => 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('Basic page content type has been updated.')); @@ -152,7 +152,7 @@ class LocaleContentTest extends WebTestBase { // Set "Article" content type to use multilingual support. $this->drupalGet('admin/structure/types/manage/article'); $edit = array( - 'node_type_language_locked' => FALSE, + 'node_type_language_hidden' => FALSE, ); $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type')); $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Article')), t('Article content type has been updated.')); diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php index f002d8c..92af494 100644 --- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php +++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleMultilingualFieldsTest.php @@ -44,7 +44,7 @@ class LocaleMultilingualFieldsTest extends WebTestBase { // Set "Basic page" content type to use multilingual support. $edit = array( - 'node_type_language_locked' => FALSE, + 'node_type_language_hidden' => 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('Basic page content type has been updated.')); diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php index 62342d8..098e276 100644 --- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php +++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php @@ -52,7 +52,7 @@ class LocaleUninstallTest extends WebTestBase { $this->assertEqual(drupal_container()->get(LANGUAGE_TYPE_INTERFACE)->langcode, $this->langcode, t('Current language: %lang', array('%lang' => drupal_container()->get(LANGUAGE_TYPE_INTERFACE)->langcode))); // Enable multilingual workflow option for articles. - variable_set('node_type_language_locked_article',FALSE); + variable_set('node_type_language_hidden_article',FALSE); // Change JavaScript translations directory. variable_set('locale_js_directory', 'js_translations'); // Build the JavaScript translation file for French. diff --git a/core/modules/node/content_types.inc b/core/modules/node/content_types.inc index d740a2d..ffa796c 100644 --- a/core/modules/node/content_types.inc +++ b/core/modules/node/content_types.inc @@ -187,12 +187,17 @@ function node_type_form($form, &$form_state, $type = NULL) { if (module_exists('language')) { $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 preferred language"), + LANGUAGE_NOT_SPECIFIED => t('Not specified'), + LANGUAGE_NOT_APPLICABLE => t('Not applicable'), + LANGUAGE_MULTIPLE => t('Multiple languages'), + 'site_default' => t("Site's default language"), + 'current_interface' => t('Current interface language'), + 'authors_default' => t("Author's preferred language"), + ); + $lang_descriptions = array( + LANGUAGE_NOT_SPECIFIED => t('Use this setting if the language is not (yet) specified'), + LANGUAGE_NOT_APPLICABLE => t('Use this setting if an language assignement is not applicable'), + LANGUAGE_MULTIPLE => t('Use this setting if a single content contains multiple languages'), ); foreach ($languages as $langcode => $language) { $lang_options[$langcode] = $language->name; @@ -210,12 +215,12 @@ function node_type_form($form, &$form_state, $type = NULL) { '#title' => t('Default language'), '#options' => $lang_options, '#default_value' => variable_get('node_type_language_default_' . $type->type, 'site_default'), + '#description' => t('Explanation of the language options is found on the languages list page.', array('@languages_list_page' => url('admin/config/regional/language'))), ); - $form['language']['node_type_language_locked'] = array( + $form['language']['node_type_language_hidden'] = array( '#type' => 'checkbox', - '#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.'), + '#title' => t('Hide language selector'), + '#default_value' => variable_get('node_type_language_hidden_' . $type->type, TRUE), ); } $form['display'] = array( diff --git a/core/modules/node/content_types.js b/core/modules/node/content_types.js index 582ed5e..7c0abdd 100644 --- a/core/modules/node/content_types.js +++ b/core/modules/node/content_types.js @@ -24,8 +24,6 @@ Drupal.behaviors.contentTypes = { $('fieldset#edit-language', context).drupalSetSummary(function(context) { var vals = []; - vals.push($(".form-item-node-type-language-default select option:selected", context).text()); - $('input:checked', context).next('label').each(function() { vals.push(Drupal.checkPlain($(this).text())); }); @@ -43,15 +41,6 @@ Drupal.behaviors.contentTypes = { } return vals.join(', '); }); - $('#edit-node-type-language-default, #edit-node-type-language-locked', context).change(function(context) { - if ($('#edit-node-type-language-default').val() == 'und' && $('#edit-node-type-language-locked').attr('checked')) { - $('#edit-node-type-language-translation-enabled').attr('disabled', true); - $('#edit-node-type-language-translation-enabled').removeAttr('checked'); - } else { - $('#edit-node-type-language-translation-enabled').removeAttr('disabled'); - } - }); - $('#edit-node-type-language-default', context).trigger('change'); } }; diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php index 38d96aa..16d9275 100644 --- a/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php +++ b/core/modules/node/lib/Drupal/node/Tests/NodeTypeInitialLanguageTest.php @@ -2,7 +2,7 @@ /** * @file - * Definition of Drupal\node\Tests\NodeTypeTest. + * Definition of Drupal\node\Tests\NodeTypeInitalLanguageTest. */ namespace Drupal\node\Tests; @@ -10,7 +10,7 @@ namespace Drupal\node\Tests; /** * Tests related to node type initial language. */ -class NodeTypeInitalLanguageTestCase extends NodeTestBase { +class NodeTypeInitialLanguageTest extends NodeTestBase { public static function getInfo() { return array( 'name' => 'Node type initial language', @@ -34,11 +34,10 @@ class NodeTypeInitalLanguageTestCase extends NodeTestBase { 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->assertFieldChecked('edit-node-type-language-hidden', 'Language selector is hidden 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.'); + $this->assertNoField('langcode', 'Language is not selectable on node add/edit page by default.'); // Adds a new language and set it as default. $edit = array( @@ -51,17 +50,21 @@ class NodeTypeInitalLanguageTestCase extends NodeTestBase { $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); // Tests the initial language after changing the site default language. + // First unhide the language selector + $edit = array( + 'node_type_language_hidden' => FALSE, + ); + $this->drupalPost('admin/structure/types/manage/article', $edit, t('Save content type')); $this->drupalGet('node/add/article'); + $this->assertField('langcode', "Language is selectable on node add/edit page when language not hidden."); $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.'); + $this->assertOptionSelected('edit-langcode', 'en', 'The inital language is the defined language.'); } } diff --git a/core/modules/node/node.install b/core/modules/node/node.install index f551cad..2175734 100644 --- a/core/modules/node/node.install +++ b/core/modules/node/node.install @@ -459,7 +459,7 @@ function node_uninstall() { ->condition('name', 'node_submitted_' . $type) ->condition('name', 'node_permissions_' . $type) ->condition('name', 'node_type_language_default_' . $type) - ->condition('name', 'node_type_language_locked_' . $type) + ->condition('name', 'node_type_language_hidden_' . $type) ) ->execute(); // TODO: node_type_language_translation_enabled_ in the translation module @@ -554,7 +554,7 @@ function node_update_8003() { variable_set('node_type_language_default_' . $type, LANGUAGE_NOT_SPECIFIED); $node_type_language = variable_get('node_type_language_' . $type, 0); if ($node_type_language == 0) { - variable_set('node_type_language_locked_' . $type, TRUE); + variable_set('node_type_language_hidden_' . $type, TRUE); } if ($node_type_language == 2) { variable_set('node_type_language_translation_enabled_' . $type, 2); diff --git a/core/modules/node/node.module b/core/modules/node/node.module index ab030ca..6e6af36 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -640,6 +640,8 @@ function node_field_extra_fields() { function node_type_get_default_langcode($node_type) { $default_value = variable_get('node_type_language_default_' . $node_type, 'site_default'); + $language_interface = drupal_container()->get(LANGUAGE_TYPE_INTERFACE); + if ($default_value == LANGUAGE_NOT_SPECIFIED) { return LANGUAGE_NOT_SPECIFIED; } @@ -649,11 +651,11 @@ function node_type_get_default_langcode($node_type) { $default_value = language_default()->langcode; break; - case 'current': + case 'current_interface': $default_value = $language_interface->langcode; break; - case 'user_default': + case 'authors_default': global $user; if (!empty($user->preferred_langcode)) { $default_value = $user->preferred_langcode; diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index 6c3b350..5b120dc 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -199,6 +199,9 @@ function node_form($form, &$form_state, Node $node) { '#options' => $language_options, '#empty_value' => LANGUAGE_NOT_SPECIFIED, ); + if (variable_get('node_type_language_hidden_' . $node->type, TRUE)) { + $form['langcode']['#access'] = FALSE; + } } else { $form['langcode'] = array( diff --git a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php index 7e37f4c..961df51 100644 --- a/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php +++ b/core/modules/path/lib/Drupal/path/Tests/PathLanguageTest.php @@ -42,7 +42,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_language_hidden_page', FALSE); variable_set('node_type_language_translation_enabled_page', TRANSLATION_ENABLED); $english_node = $this->drupalCreateNode(array('type' => 'page')); diff --git a/core/modules/poll/lib/Drupal/poll/Tests/PollTranslateTest.php b/core/modules/poll/lib/Drupal/poll/Tests/PollTranslateTest.php index f2cf74c..168166e 100644 --- a/core/modules/poll/lib/Drupal/poll/Tests/PollTranslateTest.php +++ b/core/modules/poll/lib/Drupal/poll/Tests/PollTranslateTest.php @@ -50,7 +50,7 @@ class PollTranslateTest extends PollTestBase { // Set "Poll" content type to use multilingual support with translation. $this->drupalGet('admin/structure/types/manage/poll'); - $edit = array('node_type_language_locked' => FALSE, 'node_type_language_translation_enabled' => TRANSLATION_ENABLED); + $edit = array('node_type_language_hidden' => FALSE, 'node_type_language_translation_enabled' => TRANSLATION_ENABLED); $this->drupalPost('admin/structure/types/manage/poll', $edit, t('Save content type')); $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Poll')), t('Poll content type has been updated.')); diff --git a/core/modules/translation/language_types.js b/core/modules/translation/language_types.js deleted file mode 100644 index 0fe5f3d..0000000 --- a/core/modules/translation/language_types.js +++ /dev/null @@ -1,7 +0,0 @@ -jQuery(document).ready(function() { - jQuery("form select[name='node_type_language_default']").change( function(data) { - if (data.target.value == 'zxx' || data.target.value == 'und' || data.target.value == 'mul') { - jQuery(".form-item-node-type-language-translation-enabled").hide(); - } else { jQuery(".form-item-node-type-language-translation-enabled").show(); }; - }) -}); diff --git a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php index d9e8f9e..a685376 100644 --- a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php +++ b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php @@ -42,7 +42,7 @@ class TranslationTest extends WebTestBase { // Set "Basic page" content type to use multilingual support with // translation. $this->drupalGet('admin/structure/types/manage/page'); - $edit = array('node_type_language_locked' => FALSE, 'node_type_language_translation_enabled' => TRANSLATION_ENABLED); + $edit = array('node_type_language_hidden' => FALSE, 'node_type_language_translation_enabled' => TRANSLATION_ENABLED); $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('Basic page content type has been updated.')); @@ -221,7 +221,7 @@ class TranslationTest extends WebTestBase { // Disable translation support to check that the language switcher is left // untouched only for new nodes. $this->drupalLogin($this->admin_user); - $edit = array('node_type_language_locked' => TRUE, 'node_type_language_translation_enabled' => FALSE); + $edit = array('node_type_language_hidden' => TRUE, 'node_type_language_translation_enabled' => FALSE); $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type')); $this->drupalLogin($this->translator); diff --git a/core/modules/translation/translation.js b/core/modules/translation/translation.js new file mode 100644 index 0000000..00ccd83 --- /dev/null +++ b/core/modules/translation/translation.js @@ -0,0 +1,21 @@ +(function ($) { + +"use strict"; + +Drupal.behaviors.TranslationEnable = { + attach: function (context) { + $('#edit-node-type-language-default, #edit-node-type-language-hidden', context).change(function(context) { + var default_language = $('#edit-node-type-language-default').val(); + + if ((default_language == 'und' || default_language == 'zxx' || default_language == 'mul') && $('#edit-node-type-language-hidden').attr('checked')) { + $('.form-item-node-type-language-translation-enabled').hide(); + $('#edit-node-type-language-translation-enabled').removeAttr('checked'); + } else { + $('.form-item-node-type-language-translation-enabled').show(); + } + }); + $('#edit-node-type-language-default', context).trigger('change'); + } +}; + +})(jQuery); \ No newline at end of file diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module index 2654aac..9768e77 100644 --- a/core/modules/translation/translation.module +++ b/core/modules/translation/translation.module @@ -122,7 +122,7 @@ function translation_form_node_type_form_alter(&$form, &$form_state) { // Hide form element if default language is a constant. // TODO: When form #states allows OR values change this to use form #states. $form['#attached']['js'] = array( - drupal_get_path('module', 'translation') . '/language_types.js', + drupal_get_path('module', 'translation') . '/translation.js', ); // Add translation option to content type form. $form['language']['node_type_language_translation_enabled'] = array( @@ -131,6 +131,7 @@ 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' => "", ); } @@ -139,7 +140,7 @@ function translation_form_node_type_form_alter(&$form, &$form_state) { */ function translation_node_type_language_translation_enabled_validate($element, &$form_state, $form){ $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) { + if ($language_default && $form_state['values']['node_type_language_hidden'] && $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.')); } }