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.'));
}
}