diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 3a54a491f55..6abe08a571b 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2549,43 +2549,32 @@ function language_multilingual() { /** * Returns a list of configured languages. * - * @param $only_enabled - * (optional) Whether to return only enabled languages. - * * @return * An associative array of languages, keyed by the language code, ordered by * weight ascending and name ascending. */ -function language_list($only_enabled = FALSE) { +function language_list() { $languages = &drupal_static(__FUNCTION__); // Initialize master language list. if (!isset($languages)) { - // Initialize local language list caches. - $languages = array('all' => array(), 'enabled' => array()); - - // Fill in master language list based on current configuration. $default = language_default(); if (language_multilingual() || module_exists('language')) { // Use language module configuration if available. - $languages['all'] = db_query('SELECT * FROM {language} ORDER BY weight ASC, name ASC')->fetchAllAssoc('langcode'); + $languages = db_query('SELECT * FROM {language} ORDER BY weight ASC, name ASC')->fetchAllAssoc('langcode'); } else { // No language module, so use the default language only. - $languages['all'][$default->langcode] = $default; + $languages = array($default->langcode => $default); } // Initialize default property so callers have an easy reference and can - // save the same object without data loss. Also fill in the filtered list - // of enabled languages only. - foreach ($languages['all'] as $langcode => $language) { - $languages['all'][$langcode]->default = ($langcode == $default->langcode); - if ($language->enabled) { - $languages['enabled'][$langcode] = $languages['all'][$langcode]; - } + // save the same object without data loss. + foreach ($languages as $langcode => $language) { + $languages[$langcode]->default = ($langcode == $default->langcode); } } - return $only_enabled ? $languages['enabled'] : $languages['all']; + return $languages; } /** @@ -2636,7 +2625,6 @@ function language_default() { 'langcode' => 'en', 'name' => 'English', 'direction' => 0, - 'enabled' => 1, 'weight' => 0, )); $default->default = TRUE; diff --git a/core/includes/language.inc b/core/includes/language.inc index 01d418a318f..8e5f1ac6912 100644 --- a/core/includes/language.inc +++ b/core/includes/language.inc @@ -342,8 +342,7 @@ function language_negotiation_method_invoke($method_id, $method = NULL) { if (!isset($results[$method_id])) { global $user; - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); if (!isset($method)) { $negotiation_info = language_negotiation_info(); diff --git a/core/includes/update.inc b/core/includes/update.inc index 2715fdf6b3c..e5c62d83882 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -184,20 +184,42 @@ function update_prepare_d8_language() { db_drop_field('languages', 'prefix'); db_drop_field('languages', 'domain'); db_drop_field('languages', 'native'); + db_drop_field('languages', 'enabled'); + + // Update language count. + variable_set('language_count', db_query('SELECT COUNT(language) FROM {languages}')->fetchField()); // Rename the languages table to language. db_rename_table('languages', 'language'); - // Finally install/enable the language module. We need to use the update - // specific version of this function to ensure schema conflicts don't happen - // due to our updated data. + // Install/enable the language module. We need to use the update specific + // version of this function to ensure schema conflicts don't happen due to + // our updated data. $modules = array('language'); update_module_add_to_system($modules); update_module_enable($modules); // Rename 'language' column to 'langcode'. - require_once DRUPAL_ROOT . '/core/modules/language/language.install'; - language_update_8000(); + db_drop_primary_key('language'); + $langcode_spec = array( + 'type' => 'varchar', + 'length' => 12, + 'not null' => TRUE, + 'default' => '', + 'description' => "Language code, e.g. 'de' or 'en-US'.", + ); + db_change_field('language', 'language', 'langcode', $langcode_spec, array('primary key' => array('langcode'))); + + // Update the 'language_default' system variable with the langcode change. + $language_default = variable_get('language_default'); + if (!empty($language_default)) { + if (isset($language_default->language)) { + $language_default->langcode = $language_default->language; + unset($language_default->language); + } + unset($language_default->enabled); + variable_set('language_default', $language_default); + } } } diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index e341094782d..b05a1306e96 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -19,7 +19,6 @@ function language_admin_overview_form($form, &$form_state) { '#tree' => TRUE, '#header' => array( t('Name'), - t('Enabled'), t('Default'), t('Weight'), t('Operations'), @@ -32,13 +31,6 @@ function language_admin_overview_form($form, &$form_state) { $form['languages'][$langcode]['name'] = array( '#markup' => check_plain($language->name), ); - $form['languages'][$langcode]['enabled'] = array( - '#type' => 'checkbox', - '#title' => t('Enable @title', array('@title' => $language->name)), - '#title_display' => 'invisible', - '#default_value' => (int) $language->enabled, - '#disabled' => $langcode == $default->langcode, - ); $form['languages'][$langcode]['default'] = array( '#type' => 'radio', '#parents' => array('site_default'), @@ -154,21 +146,6 @@ function language_admin_overview_form_submit($form, &$form_state) { foreach ($languages as $langcode => $language) { $language->default = ($form_state['values']['site_default'] == $langcode); $language->weight = $form_state['values']['languages'][$langcode]['weight']; - - if ($language->default || $old_default->langcode == $langcode) { - // Automatically enable the default language and the language which was - // default previously (because we will not get the value from that - // disabled checkbox). - $form_state['values']['languages'][$langcode]['enabled'] = 1; - } - $language->enabled = (int) !empty($form_state['values']['languages'][$langcode]['enabled']); - - // If the interface language has been disabled make sure that the form - // redirect includes the new default language as a query parameter. - if ($language->enabled == FALSE && $langcode == $GLOBALS['language_interface']->langcode) { - $form_state['redirect'] = array('admin/config/regional/language', array('language' => $languages[$form_state['values']['site_default']])); - } - language_save($language); } @@ -483,7 +460,6 @@ function language_negotiation_configure_form_table(&$form, $type) { '#language_negotiation_info' => array(), '#show_operations' => FALSE, 'weight' => array('#tree' => TRUE), - 'enabled' => array('#tree' => TRUE), ); $negotiation_info = $form['#language_negotiation_info']; @@ -694,8 +670,7 @@ function language_negotiation_configure_url_form($form, &$form_state) { ), ); - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); $prefixes = language_negotiation_url_prefixes(); $domains = language_negotiation_url_domains(); foreach ($languages as $langcode => $language) { @@ -731,8 +706,7 @@ function language_negotiation_configure_url_form($form, &$form_state) { * the prefix and domain are only blank for the default. */ function language_negotiation_configure_url_form_validate($form, &$form_state) { - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); // Count repeated values for uniqueness check. $count = array_count_values($form_state['values']['prefix']); diff --git a/core/modules/language/language.install b/core/modules/language/language.install index 92f61a08eae..5a962fa0c06 100644 --- a/core/modules/language/language.install +++ b/core/modules/language/language.install @@ -76,12 +76,6 @@ function language_schema() { 'default' => 0, 'description' => 'Direction of language (Left-to-Right = 0, Right-to-Left = 1).', ), - 'enabled' => array( - 'type' => 'int', - 'not null' => TRUE, - 'default' => 0, - 'description' => 'Enabled flag (1 = Enabled, 0 = Disabled).', - ), 'weight' => array( 'type' => 'int', 'not null' => TRUE, @@ -96,31 +90,3 @@ function language_schema() { ); return $schema; } - -/** - * Rename {language}.language to {language}.langcode. - * - * @see update_prepare_d8_language() - */ -function language_update_8000() { - // Rename language column to langcode and set it again as the primary key. - if (db_field_exists('language', 'language')) { - db_drop_primary_key('language'); - $langcode_spec = array( - 'type' => 'varchar', - 'length' => 12, - 'not null' => TRUE, - 'default' => '', - 'description' => "Language code, e.g. 'de' or 'en-US'.", - ); - db_change_field('language', 'language', 'langcode', $langcode_spec, array('primary key' => array('langcode'))); - } - - // Update the 'language_default' system variable, if configured. - $language_default = variable_get('language_default'); - if (!empty($language_default) && isset($language_default->language)) { - $language_default->langcode = $language_default->language; - unset($language_default->language); - variable_set('language_default', $language_default); - } -} diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 34f1a59dd2e..63b3743e963 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -165,10 +165,6 @@ function language_save($language) { $language->direction = isset($predefined[$language->langcode][2]) ? $predefined[$language->langcode][2] : LANGUAGE_LTR; } - // Set to enabled for the default language and unless specified otherwise. - if (!empty($language->default) || !isset($language->enabled)) { - $language->enabled = TRUE; - } // Let other modules modify $language before saved. module_invoke_all('language_presave', $language); @@ -192,7 +188,7 @@ function language_save($language) { } // Update language count based on enabled language count. - variable_set('language_count', db_query('SELECT COUNT(langcode) FROM {language} WHERE enabled = 1')->fetchField()); + variable_set('language_count', db_query('SELECT COUNT(langcode) FROM {language}')->fetchField()); // Kill the static cache in language_list(). drupal_static_reset('language_list'); @@ -220,9 +216,7 @@ function language_delete($langcode) { ->condition('langcode', $language->langcode) ->execute(); - if ($language->enabled) { - variable_set('language_count', variable_get('language_count', 1) - 1); - } + variable_set('language_count', variable_get('language_count', 1) - 1); drupal_static_reset('language_list'); diff --git a/core/modules/language/language.negotiation.inc b/core/modules/language/language.negotiation.inc index 56deb3ec726..6269e8b203e 100644 --- a/core/modules/language/language.negotiation.inc +++ b/core/modules/language/language.negotiation.inc @@ -293,8 +293,7 @@ function language_url_fallback($language = NULL, $language_type = LANGUAGE_TYPE_ * Translation links may be provided by other modules. */ function language_switcher_url($type, $path) { - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); $links = array(); foreach ($languages as $language) { @@ -316,8 +315,7 @@ function language_switcher_session($type, $path) { $param = variable_get('language_negotiation_session_param', 'language'); $language_query = isset($_SESSION[$param]) ? $_SESSION[$param] : $GLOBALS[$type]->langcode; - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); $links = array(); $query = $_GET; @@ -353,8 +351,7 @@ function language_url_rewrite_url(&$path, &$options) { $languages = &$drupal_static_fast['languages']; if (!isset($languages)) { - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); $languages = array_flip(array_keys($languages)); } @@ -439,8 +436,7 @@ function language_url_rewrite_session(&$path, &$options) { if (!isset($query_rewrite)) { global $user; if (!$user->uid) { - // Get the enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); $query_param = check_plain(variable_get('language_negotiation_session_param', 'language')); $query_value = isset($_GET[$query_param]) ? check_plain($_GET[$query_param]) : NULL; $query_rewrite = isset($languages[$query_value]) && language_negotiation_method_enabled(LANGUAGE_NEGOTIATION_SESSION); diff --git a/core/modules/language/language.test b/core/modules/language/language.test index 31951418f27..f0000e1e015 100644 --- a/core/modules/language/language.test +++ b/core/modules/language/language.test @@ -74,20 +74,6 @@ class LanguageListTest extends DrupalWebTestCase { $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertText(t('The default language cannot be deleted.'), t('Failed to delete the default language.')); - // Check if we can disable a language. - $edit = array( - 'languages[en][enabled]' => FALSE, - ); - $this->drupalPost(NULL, $edit, t('Save configuration')); - $this->assertNoFieldChecked('edit-languages-en-enabled', t('Language disabled.')); - - // Set disabled language to be the default and ensure it is re-enabled. - $edit = array( - 'site_default' => 'en', - ); - $this->drupalPost(NULL, $edit, t('Save configuration')); - $this->assertFieldChecked('edit-languages-en-enabled', t('Default language re-enabled.')); - // Ensure 'edit' link works. $this->clickLink(t('edit')); $this->assertTitle(t('Edit language | Drupal'), t('Page title is "Edit language".')); @@ -100,11 +86,16 @@ class LanguageListTest extends DrupalWebTestCase { $this->assertRaw($name, t('The language has been updated.')); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.')); + // Change back the default language. + $edit = array( + 'site_default' => 'en', + ); + $this->drupalPost(NULL, $edit, t('Save configuration')); // Ensure 'delete' link works. $this->drupalGet('admin/config/regional/language'); $this->clickLink(t('delete')); $this->assertText(t('Are you sure you want to delete the language'), t('"delete" link is correct.')); - // Delete an enabled language. + // Delete a language. $this->drupalGet('admin/config/regional/language/delete/' . $langcode); // First test the 'cancel' link. $this->clickLink(t('Cancel')); @@ -122,20 +113,13 @@ class LanguageListTest extends DrupalWebTestCase { $this->assertResponse(404, t('Language no longer found.')); // Make sure the "language_count" variable has been updated correctly. drupal_static_reset('language_list'); - $enabled_languages = language_list(TRUE); - $this->assertEqual(variable_get('language_count', 1), count($enabled_languages), t('Language count is correct.')); - // Delete a disabled language. - // Disable an enabled language. - $edit = array( - 'languages[fr][enabled]' => FALSE, - ); - $this->drupalPost($path, $edit, t('Save configuration')); - $this->assertNoFieldChecked('edit-languages-fr-enabled', t('French language disabled.')); - // Get the count of enabled languages. - drupal_static_reset('language_list'); - $enabled_languages = language_list(TRUE); - // Delete the disabled language. + $languages = language_list(); + $this->assertEqual(variable_get('language_count', 1), count($languages), t('Language count is correct.')); + // Delete French. $this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete')); + // Get the count of languages. + drupal_static_reset('language_list'); + $languages = language_list(); // We need raw here because %language and %langcode will add HTML. $t_args = array('%language' => 'French', '%langcode' => 'fr'); $this->assertRaw(t('The %language (%langcode) language has been removed.', $t_args), t('Disabled language has been removed.')); @@ -144,7 +128,7 @@ class LanguageListTest extends DrupalWebTestCase { $this->drupalGet('admin/config/regional/language/delete/fr'); $this->assertResponse(404, t('Language no longer found.')); // Make sure the "language_count" variable has not changed. - $this->assertEqual(variable_get('language_count', 1), count($enabled_languages), t('Language count is correct.')); + $this->assertEqual(variable_get('language_count', 1), count($languages), t('Language count is correct.')); // Ensure we can delete the English language. Right now English is the only // language so we must add a new language and make it the default before @@ -245,7 +229,6 @@ class LanguageDependencyInjectionTest extends DrupalWebTestCase { 'langcode' => 'fr', 'name' => 'French', 'direction' => 0, - 'enabled' => 1, 'weight' => 0, 'default' => TRUE, ); diff --git a/core/modules/locale/locale.admin.inc b/core/modules/locale/locale.admin.inc index d74f71455dc..4a4867c2d80 100644 --- a/core/modules/locale/locale.admin.inc +++ b/core/modules/locale/locale.admin.inc @@ -45,9 +45,7 @@ function locale_date_format_language_overview_page() { array('data' => t('Operations'), 'colspan' => '2'), ); - // Get the enabled languages only. - $languages = language_list(TRUE); - + $languages = language_list(); foreach ($languages as $langcode => $language) { $row = array(); $row[] = $language->name; diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc index ed3d3a6990a..8cd4fd18cd1 100644 --- a/core/modules/locale/locale.bulk.inc +++ b/core/modules/locale/locale.bulk.inc @@ -12,7 +12,7 @@ include_once DRUPAL_ROOT . '/core/includes/gettext.inc'; */ function locale_translate_import_form($form, &$form_state) { drupal_static_reset('language_list'); - $languages = language_list(TRUE); + $languages = language_list(); // Initialize a language list to the ones available, including English if we // are to translate Drupal to English as well. @@ -127,7 +127,7 @@ function locale_translate_import_form_submit($form, &$form_state) { * Builds form to export Gettext translation files. */ function locale_translate_export_form($form, &$form_state) { - $languages = language_list(TRUE); + $languages = language_list(); $language_options = array(); foreach ($languages as $langcode => $language) { if ($langcode != 'en' || locale_translate_english()) { diff --git a/core/modules/locale/locale.pages.inc b/core/modules/locale/locale.pages.inc index 74603a9fe39..8f260521bcf 100644 --- a/core/modules/locale/locale.pages.inc +++ b/core/modules/locale/locale.pages.inc @@ -156,7 +156,7 @@ function locale_translation_filters() { // Get all languages, except English drupal_static_reset('language_list'); - $languages = language_list(TRUE); + $languages = language_list(); $language_options = array(); foreach ($languages as $langcode => $language) { if ($langcode != 'en' || locale_translate_english()) { diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test index bb3c6e777d4..fa78e146860 100644 --- a/core/modules/locale/locale.test +++ b/core/modules/locale/locale.test @@ -1930,24 +1930,6 @@ class LocaleUserLanguageFunctionalTest extends DrupalWebTestCase { 'direction' => '0', ); $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language')); - - // Add custom language and disable it. - // Code for the language. - $langcode_disabled = 'xx-yy'; - // The English name for the language. This will be translated. - $name_disabled = $this->randomName(16); - $edit = array( - 'predefined_langcode' => 'custom', - 'langcode' => $langcode_disabled, - 'name' => $name_disabled, - 'direction' => '0', - ); - $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language')); - // Disable the language. - $edit = array( - 'languages[' . $langcode_disabled . '][enabled]' => FALSE, - ); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); $this->drupalLogout(); // Login as normal user and edit account settings. @@ -1958,8 +1940,6 @@ class LocaleUserLanguageFunctionalTest extends DrupalWebTestCase { $this->assertText(t('Language'), t('Language selector available.')); // Ensure custom language is present. $this->assertText($name, t('Language present on form.')); - // Ensure disabled language isn't present. - $this->assertNoText($name_disabled, t('Disabled language not present on form.')); // Switch to our custom language. $edit = array( 'preferred_langcode' => $langcode, @@ -2289,25 +2269,6 @@ class LocaleContentFunctionalTest extends DrupalWebTestCase { ); $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language')); - // Add disabled custom language. - // Code for the language. - $langcode_disabled = 'xx-yy'; - // The English name for the language. - $name_disabled = $this->randomName(16); - $edit = array( - 'predefined_langcode' => 'custom', - 'langcode' => $langcode_disabled, - 'name' => $name_disabled, - 'direction' => '0', - ); - $this->drupalPost('admin/config/regional/language/add', $edit, t('Add custom language')); - // Disable second custom language. - $path = 'admin/config/regional/language'; - $edit = array( - 'languages[' . $langcode_disabled . '][enabled]' => FALSE, - ); - $this->drupalPost($path, $edit, t('Save configuration')); - // Set "Basic page" content type to use multilingual support. $this->drupalGet('admin/structure/types/manage/page'); $this->assertText(t('Multilingual support'), t('Multilingual support fieldset present on content type configuration form.')); @@ -2328,10 +2289,8 @@ class LocaleContentFunctionalTest extends DrupalWebTestCase { $this->drupalGet('node/add/page'); // Verify language select list is present. $this->assertFieldByName('langcode', NULL, t('Language select present on add Basic page form.')); - // Ensure enabled language appears. - $this->assertText($name, t('Enabled language present.')); - // Ensure disabled language doesn't appear. - $this->assertNoText($name_disabled, t('Disabled language not present.')); + // Ensure language appears. + $this->assertText($name, t('Language present.')); // Create "Basic page" content. $node_title = $this->randomName(); @@ -2520,7 +2479,7 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase { // is for some reason not found when doing translate search. This might // be some bug. drupal_static_reset('language_list'); - $languages = language_list(TRUE); + $languages = language_list(); variable_set('language_default', $languages['vi']); // First visit this page to make sure our target string is searchable. $this->drupalGet('admin/config'); @@ -2780,15 +2739,6 @@ class LocaleUrlRewritingTest extends DrupalWebTestCase { $edit['predefined_langcode'] = 'fr'; $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); - // Install Italian language. - $edit = array(); - $edit['predefined_langcode'] = 'it'; - $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); - - // Disable Italian language. - $edit = array('languages[it][enabled]' => FALSE); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); - // Enable URL language detection and selection. $edit = array('language_interface[enabled][language-url]' => 1); $this->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings')); @@ -2800,13 +2750,9 @@ class LocaleUrlRewritingTest extends DrupalWebTestCase { } /** - * Check that disabled or non-installed languages are not considered. + * Check that non-installed languages are not considered. */ function testUrlRewritingEdgeCases() { - // Check URL rewriting with a disabled language. - $languages = language_list(); - $this->checkUrl($languages['it'], t('Path language is ignored if language is disabled.'), t('URL language negotiation does not work with disabled languages')); - // Check URL rewriting with a non-installed language. $non_existing = language_default(); $non_existing->langcode = $this->randomName(); diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc index ac18da785ea..5388a875db1 100644 --- a/core/modules/node/node.admin.inc +++ b/core/modules/node/node.admin.inc @@ -106,7 +106,7 @@ function node_filters() { // Language filter if language support is present. if (language_multilingual()) { - $languages = language_list(TRUE); + $languages = language_list(); $language_options = array(LANGUAGE_NOT_SPECIFIED => t('- None -')); foreach ($languages as $langcode => $language) { $language_options[$langcode] = $language->name; diff --git a/core/modules/node/node.module b/core/modules/node/node.module index bdd5051f085..c961edda63f 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -2857,7 +2857,7 @@ function node_form_search_form_alter(&$form, $form_state) { // Languages: $language_options = array(); - foreach (language_list(TRUE) as $langcode => $language) { + foreach (language_list() as $langcode => $language) { $language_options[$langcode] = $language->name; } if (count($language_options) > 1) { diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index 4e94b2613de..3ca34e03891 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -176,7 +176,7 @@ function node_form($form, &$form_state, $node) { $form['#node'] = $node; if (variable_get('node_type_language_' . $node->type, 0) && module_exists('language')) { - $languages = language_list(TRUE); + $languages = language_list(); $language_options = array(); foreach ($languages as $langcode => $language) { $language_options[$langcode] = $language->name; diff --git a/core/modules/openid/openid.module b/core/modules/openid/openid.module index 9ba3e4b278b..8b404f5880f 100644 --- a/core/modules/openid/openid.module +++ b/core/modules/openid/openid.module @@ -263,7 +263,7 @@ function openid_form_user_register_form_alter(&$form, &$form_state) { $candidate_langcodes[] = $parts[0] . '-' . $parts[2]; $candidate_langcodes[] = $parts[0] . '-' . $parts[1] . '-' . $parts[2]; } - $enabled_languages = language_list(TRUE); + $enabled_languages = language_list(); // Iterate over the generated permutations starting with the longest (most // specific) strings. foreach (array_reverse($candidate_langcodes) as $candidate_langcode) { diff --git a/core/modules/path/path.admin.inc b/core/modules/path/path.admin.inc index 24921b8f1f7..9e22cffd318 100644 --- a/core/modules/path/path.admin.inc +++ b/core/modules/path/path.admin.inc @@ -145,7 +145,7 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali // A hidden value unless language.module is enabled. if (module_exists('language')) { - $languages = language_list(TRUE); + $languages = language_list(); foreach ($languages as $langcode => $language) { $language_options[$langcode] = $language->name; } diff --git a/core/modules/path/path.test b/core/modules/path/path.test index 4dcd611c550..0066071d0f4 100644 --- a/core/modules/path/path.test +++ b/core/modules/path/path.test @@ -532,9 +532,8 @@ class PathMonolingualTestCase extends PathTestCase { $edit = array('site_default' => 'fr'); $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); - // Disable English. - $edit = array('languages[en][enabled]' => FALSE); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); + // Delete English. + $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete')); // Verify that French is the only language. $this->assertFalse(language_multilingual(), t('Site is mono-lingual')); diff --git a/core/modules/search/search.test b/core/modules/search/search.test index 3fcfb0c1fe9..b6f5ae8e044 100644 --- a/core/modules/search/search.test +++ b/core/modules/search/search.test @@ -1986,16 +1986,14 @@ class SearchLanguageTestCase extends SearchWebTestCase { $this->drupalPost('search/node', $edit, t('Advanced search')); $this->assertFieldByXPath('//input[@name="keys"]', 'language:fr', t('Language filter added to query.')); - // Change the default language and disable English. + // Change the default language and delete English. $path = 'admin/config/regional/language'; $this->drupalGet($path); $this->assertFieldChecked('edit-site-default-en', t('English is the default language.')); $edit = array('site_default' => 'fr'); $this->drupalPost(NULL, $edit, t('Save configuration')); $this->assertNoFieldChecked('edit-site-default-en', t('Default language updated.')); - $edit = array('languages[en][enabled]' => FALSE); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); - $this->assertNoFieldChecked('edit-languages-en-enabled', t('Language disabled.')); + $this->drupalPost('admin/config/regional/language/delete/en', array(), t('Delete')); // Check that there are again no languages displayed. $this->drupalGet('search/node'); diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 200a3350b53..0976d1b873f 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -3921,17 +3921,15 @@ function system_date_format_save($date_format, $dfid = 0) { drupal_write_record('date_formats', $info, $keys); } - // Retrieve an array of language objects for enabled languages. - $languages = language_list(TRUE); + $languages = language_list(); $locale_format = array(); $locale_format['type'] = $date_format['type']; $locale_format['format'] = $date_format['format']; - // Check if the suggested language codes are configured and enabled. + // Check if the suggested language codes are configured. if (!empty($date_format['locales'])) { foreach ($date_format['locales'] as $langcode) { - // Only proceed if language is enabled. if (isset($languages[$langcode])) { $is_existing = (bool) db_query_range('SELECT 1 FROM {date_format_locale} WHERE type = :type AND language = :language', 0, 1, array(':type' => $date_format['type'], ':language' => $langcode))->fetchField(); if (!$is_existing) { diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module index fa73df58866..d35a6bc4eaa 100644 --- a/core/modules/translation/translation.module +++ b/core/modules/translation/translation.module @@ -136,28 +136,6 @@ function translation_form_node_form_alter(&$form, &$form_state) { if (translation_supported_type($form['#node']->type)) { $node = $form['#node']; - // Build two lists with the disabled and enabled languages. - $languages = language_list(); - $grouped_languages = array(); - foreach ($languages as $langcode => $language) { - $grouped_languages[(int) $language->enabled][$langcode] = $language; - } - - $translator_widget = !empty($grouped_languages[0]) && user_access('translate content'); - $groups = array(t('Disabled'), t('Enabled')); - // Allow translators to enter content in disabled languages. Translators - // might need to distinguish between enabled and disabled languages, hence - // we divide them in two option groups. - if ($translator_widget) { - $options = array($groups[1] => array(LANGUAGE_NOT_SPECIFIED => t('- None -'))); - foreach (array(1, 0) as $status) { - $group = $groups[$status]; - foreach ($grouped_languages[$status] as $langcode => $language) { - $options[$group][$langcode] = $language->name; - } - } - $form['langcode']['#options'] = $options; - } if (!empty($node->translation_source)) { // We are creating a translation. Add values and lock language field. $form['translation_source'] = array('#type' => 'value', '#value' => $node->translation_source); @@ -170,13 +148,7 @@ function translation_form_node_form_alter(&$form, &$form_state) { unset($form['langcode']['#options'][LANGUAGE_NOT_SPECIFIED]); foreach (translation_node_get_translations($node->tnid) as $langcode => $translation) { if ($translation->nid != $node->nid) { - if ($translator_widget) { - $group = $groups[(int)!isset($disabled_languages[$langcode])]; - unset($form['langcode']['#options'][$group][$langcode]); - } - else { - unset($form['langcode']['#options'][$langcode]); - } + unset($form['langcode']['#options'][$langcode]); } } // Add translation values and workflow options. @@ -223,7 +195,7 @@ function translation_node_view($node, $view_mode) { // If the site has no translations or is not multilingual we have no content // translation links to display. if (isset($node->tnid) && language_multilingual() && $translations = translation_node_get_translations($node->tnid)) { - $languages = language_list(TRUE); + $languages = language_list(); // There might be a language provider enabled defining custom language // switch links which need to be taken into account while generating the @@ -236,8 +208,7 @@ function translation_node_view($node, $view_mode) { $links = array(); foreach ($translations as $langcode => $translation) { - // Do not show links to the same node, to unpublished translations or to - // translations in disabled languages. + // Do not show links to the same node or to unpublished translations. if ($translation->status && isset($languages[$langcode]) && $langcode != $node->langcode) { $language = $languages[$langcode]; $key = "translation_$langcode"; diff --git a/core/modules/translation/translation.test b/core/modules/translation/translation.test index c0e158c24c3..d6939a85347 100644 --- a/core/modules/translation/translation.test +++ b/core/modules/translation/translation.test @@ -33,11 +33,6 @@ class TranslationTestCase extends DrupalWebTestCase { // Add languages. $this->addLanguage('en'); $this->addLanguage('es'); - $this->addLanguage('it'); - - // Disable Italian to test the translation behavior with disabled languages. - $edit = array('languages[it][enabled]' => FALSE); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); // Set "Basic page" content type to use multilingual support with // translation. @@ -126,13 +121,6 @@ class TranslationTestCase extends DrupalWebTestCase { $this->drupalPost('node/' . $node_translation->nid . '/edit', $edit, t('Save')); $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node_translation_title)), t('Translated node updated.')); - // Confirm that disabled languages are an option for translators when - // creating nodes. - $this->drupalGet('node/add/page'); - $this->assertFieldByXPath('//select[@name="langcode"]//option', 'it', t('Italian (disabled) is available in language selection.')); - $translation_it = $this->createTranslation($node, $this->randomName(), $this->randomName(), 'it'); - $this->assertRaw($translation_it->body[LANGUAGE_NOT_SPECIFIED][0]['value'], t('Content created in Italian (disabled).')); - // Confirm that language neutral is an option for translators when there are // disabled languages. $this->drupalGet('node/add/page'); @@ -140,11 +128,10 @@ class TranslationTestCase extends DrupalWebTestCase { $node2 = $this->createPage($this->randomName(), $this->randomName(), LANGUAGE_NOT_SPECIFIED); $this->assertRaw($node2->body[LANGUAGE_NOT_SPECIFIED][0]['value'], t('Language neutral content created with disabled languages available.')); - // Leave just one language enabled and check that the translation overview + // Leave just one language installed and check that the translation overview // page is still accessible. $this->drupalLogin($this->admin_user); - $edit = array('languages[es][enabled]' => FALSE); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); + $this->drupalPost('admin/config/regional/language/delete/es', array(), t('Delete')); $this->drupalLogin($this->translator); $this->drupalGet('node/' . $node->nid . '/translate'); $this->assertRaw(t('Translations of %title', array('%title' => $node->title)), t('Translation overview page available with only one language enabled.')); @@ -154,17 +141,14 @@ class TranslationTestCase extends DrupalWebTestCase { * Checks that the language switch links behave properly. */ function testLanguageSwitchLinks() { - // Create a Basic page in English and its translations in Spanish and - // Italian. + // Create a Basic page in English and its translation in Spanish. $node = $this->createPage($this->randomName(), $this->randomName(), 'en'); $translation_es = $this->createTranslation($node, $this->randomName(), $this->randomName(), 'es'); - $translation_it = $this->createTranslation($node, $this->randomName(), $this->randomName(), 'it'); - // Check that language switch links are correctly shown only for enabled - // languages. + // Check that language switch links are correctly shown for languages + // we have translations for. $this->assertLanguageSwitchLinks($node, $translation_es); $this->assertLanguageSwitchLinks($translation_es, $node); - $this->assertLanguageSwitchLinks($node, $translation_it, FALSE); // Check that links to the displayed translation appear only in the language // switcher block. @@ -195,10 +179,9 @@ class TranslationTestCase extends DrupalWebTestCase { * Tests that the language switcher block alterations work as intended. */ function testLanguageSwitcherBlockIntegration() { - // Enable Italian to have three items in the language switcher block. + // Add Italian to have three items in the language switcher block. $this->drupalLogin($this->admin_user); - $edit = array('languages[it][enabled]' => TRUE); - $this->drupalPost('admin/config/regional/language', $edit, t('Save configuration')); + $this->addLanguage('it'); $this->resetCaches(); $this->drupalLogin($this->translator); @@ -286,7 +269,7 @@ class TranslationTestCase extends DrupalWebTestCase { // Check to make sure that language has not already been installed. $this->drupalGet('admin/config/regional/language'); - if (strpos($this->drupalGetContent(), 'languages[' . $language_code . '][enabled]') === FALSE) { + if (strpos($this->drupalGetContent(), 'languages[' . $language_code . ']') === FALSE) { // Doesn't have language installed so add it. $edit = array(); $edit['predefined_langcode'] = $language_code; @@ -301,15 +284,9 @@ class TranslationTestCase extends DrupalWebTestCase { $this->assertRaw(t('The language %language has been created and can now be used.', array('%language' => $languages[$language_code]->name)), t('Language has been created.')); } } - elseif ($this->xpath('//input[@type="checkbox" and @name=:name and @checked="checked"]', array(':name' => 'languages[' . $language_code . '][enabled]'))) { - // It's installed and enabled. No need to do anything. - $this->assertTrue(true, 'Language [' . $language_code . '] already installed and enabled.'); - } else { - // It's installed but not enabled. Enable it. + // It's installed. No need to do anything. $this->assertTrue(true, 'Language [' . $language_code . '] already installed.'); - $this->drupalPost(NULL, array('languages[' . $language_code . '][enabled]' => TRUE), t('Save configuration')); - $this->assertRaw(t('Configuration saved.'), t('Language successfully enabled.')); } } diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 545f2bf3c32..639755ba4b7 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -1094,8 +1094,7 @@ function user_account_form(&$form, &$form_state) { $form['#validate'][] = 'user_validate_picture'; if (module_exists('language') && language_multilingual()) { - // Get list of enabled languages only. - $languages = language_list(TRUE); + $languages = language_list(); // If the user is being created, we set the user language to the page language. $user_preferred_language = $register ? $language_interface : user_preferred_language($account);