#338055 by plach: Fixed Ensure non-default languages always have a path prefix
parent
0222fa7003
commit
a7300192fb
|
@ -107,7 +107,9 @@ function theme_locale_languages_overview_form($variables) {
|
||||||
function locale_languages_overview_form_submit($form, &$form_state) {
|
function locale_languages_overview_form_submit($form, &$form_state) {
|
||||||
$languages = language_list();
|
$languages = language_list();
|
||||||
$default = language_default();
|
$default = language_default();
|
||||||
|
$url_prefixes = variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) == LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX;
|
||||||
$enabled_count = 0;
|
$enabled_count = 0;
|
||||||
|
|
||||||
foreach ($languages as $langcode => $language) {
|
foreach ($languages as $langcode => $language) {
|
||||||
if ($form_state['values']['site_default'] == $langcode || $default->language == $langcode) {
|
if ($form_state['values']['site_default'] == $langcode || $default->language == $langcode) {
|
||||||
// Automatically enable the default language and the language
|
// Automatically enable the default language and the language
|
||||||
|
@ -115,6 +117,16 @@ function locale_languages_overview_form_submit($form, &$form_state) {
|
||||||
// value from that disabled checkbox).
|
// value from that disabled checkbox).
|
||||||
$form_state['values']['enabled'][$langcode] = 1;
|
$form_state['values']['enabled'][$langcode] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If language URL prefixes are enabled we must clear language domains and
|
||||||
|
// assign a valid prefix to each non-default language.
|
||||||
|
if ($url_prefixes) {
|
||||||
|
$language->domain = '';
|
||||||
|
if (empty($language->prefix) && $form_state['values']['site_default'] != $langcode) {
|
||||||
|
$language->prefix = $langcode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($form_state['values']['enabled'][$langcode]) {
|
if ($form_state['values']['enabled'][$langcode]) {
|
||||||
$enabled_count++;
|
$enabled_count++;
|
||||||
$language->enabled = 1;
|
$language->enabled = 1;
|
||||||
|
@ -122,19 +134,25 @@ function locale_languages_overview_form_submit($form, &$form_state) {
|
||||||
else {
|
else {
|
||||||
$language->enabled = 0;
|
$language->enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$language->weight = $form_state['values']['weight'][$langcode];
|
$language->weight = $form_state['values']['weight'][$langcode];
|
||||||
|
|
||||||
db_update('languages')
|
db_update('languages')
|
||||||
->fields(array(
|
->fields(array(
|
||||||
'enabled' => $language->enabled,
|
'enabled' => $language->enabled,
|
||||||
'weight' => $language->weight,
|
'weight' => $language->weight,
|
||||||
|
'prefix' => $language->prefix,
|
||||||
|
'domain' => $language->domain,
|
||||||
))
|
))
|
||||||
->condition('language', $langcode)
|
->condition('language', $langcode)
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
$languages[$langcode] = $language;
|
$languages[$langcode] = $language;
|
||||||
}
|
}
|
||||||
drupal_set_message(t('Configuration saved.'));
|
|
||||||
variable_set('language_default', $languages[$form_state['values']['site_default']]);
|
variable_set('language_default', $languages[$form_state['values']['site_default']]);
|
||||||
variable_set('language_count', $enabled_count);
|
variable_set('language_count', $enabled_count);
|
||||||
|
drupal_set_message(t('Configuration saved.'));
|
||||||
|
|
||||||
// Changing the language settings impacts the interface.
|
// Changing the language settings impacts the interface.
|
||||||
cache_clear_all('*', 'cache_page', TRUE);
|
cache_clear_all('*', 'cache_page', TRUE);
|
||||||
|
|
|
@ -90,6 +90,11 @@ class LocaleConfigurationTest extends DrupalWebTestCase {
|
||||||
$this->assertNoFieldChecked('edit-site-default-en', t('Default language updated.'));
|
$this->assertNoFieldChecked('edit-site-default-en', t('Default language updated.'));
|
||||||
$this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.'));
|
$this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.'));
|
||||||
|
|
||||||
|
// Check if a valid language prefix is added after changing the default
|
||||||
|
// language.
|
||||||
|
$this->drupalGet('admin/config/regional/language/edit/en');
|
||||||
|
$this->assertFieldByXPath('//input[@name="prefix"]', 'en', t('A valid path prefix has been added to the previous default language.'));
|
||||||
|
|
||||||
// Ensure we can't delete the default language.
|
// Ensure we can't delete the default language.
|
||||||
$this->drupalGet('admin/config/regional/language/delete/' . $langcode);
|
$this->drupalGet('admin/config/regional/language/delete/' . $langcode);
|
||||||
$this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.'));
|
$this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.'));
|
||||||
|
|
Loading…
Reference in New Issue