diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index 6fd1fd6..01d9ecf 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -363,20 +363,18 @@ function language_admin_predefined_list() { /** * Builds the configuration form for language negotiation. */ -function language_negotiation_configure_form() { +function language_negotiation_configure_form($form, &$form_state, $language_type) { language_negotiation_include(); $form = array( '#submit' => array('language_negotiation_configure_form_submit'), '#theme' => 'language_negotiation_configure_form', - '#language_types' => language_types_get_configurable(FALSE), + '#language_types' => array($language_type), '#language_types_info' => language_types_info(), '#language_negotiation_info' => language_negotiation_info(), ); - foreach ($form['#language_types'] as $type) { - language_negotiation_configure_form_table($form, $type); - } + language_negotiation_configure_form_table($form, $language_type); $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array( @@ -569,7 +567,6 @@ function language_negotiation_configure_form_submit($form, &$form_state) { // configuration. language_types_set(); - $form_state['redirect'] = 'admin/config/regional/language/detection'; drupal_set_message(t('Language negotiation configuration saved.')); } diff --git a/core/modules/language/language.module b/core/modules/language/language.module index d0b91bf..62119c3 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -108,7 +108,7 @@ function language_menu() { $items['admin/config/regional/language/detection'] = array( 'title' => 'Detection and selection', 'page callback' => 'drupal_get_form', - 'page arguments' => array('language_negotiation_configure_form'), + 'page arguments' => array('language_negotiation_configure_form', LANGUAGE_TYPE_INTERFACE), 'access arguments' => array('administer languages'), 'weight' => 10, 'file' => 'language.admin.inc', @@ -163,6 +163,22 @@ function language_menu() { 'file' => 'language.admin.inc', ); + // Creates a menu entry for each language type. + $language_types_info = language_types_info(); + foreach (language_types_get_configurable(FALSE) as $index => $language_type) { + $items['admin/config/regional/language/detection/' . $language_type] = array( + 'title' => $language_types_info[$language_type]['name'], + 'description' => $language_types_info[$language_type]['description'], + 'page callback' => 'drupal_get_form', + 'page arguments' => array('language_negotiation_configure_form', 5), + 'access arguments' => array('administer languages'), + 'file' => 'language.admin.inc', + 'weight' => $index, + 'type' => MENU_LOCAL_TASK, + ); + } + // Set the default tab + $items['admin/config/regional/language/detection/' . LANGUAGE_TYPE_INTERFACE]['type'] = MENU_DEFAULT_LOCAL_TASK; return $items; }