Index: includes/locale.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/locale.inc,v retrieving revision 1.231 diff -u -p -r1.231 locale.inc --- includes/locale.inc 9 Oct 2009 16:33:13 -0000 1.231 +++ includes/locale.inc 10 Oct 2009 22:48:59 -0000 @@ -79,27 +79,70 @@ function locale_languages_overview_form( } /** + * Preprocess variables for theme_locale_languages_overview_form(). + * + * @see theme_locale_languages_overview_form(). + * + * @ingroup themeable + */ +function template_preprocess_locale_languages_overview_form(&$variables) { + $default = language_default(); + $variables['operations_links'] = array(); + foreach ($variables['form']['name'] as $key => $element) { + // Do not take form control structures. + if (is_array($element) && element_child($key)) { + // Disable checkbox for the default language, because it cannot be + // disabled. + if ($key == $default->language) { + $variables['form']['enabled'][$key]['#attributes']['disabled'] = 'disabled'; + } + // Add operations links appropriate for each language. + $variables['operations_links'][$key][] = array( + 'title' => t('edit'), + 'href' => 'admin/config/regional/language/edit/' . $key, + ); + if ($key != 'en' && $key != $default->language) { + $variables['operations_links'][$key][] = array( + 'title' => t('delete'), + 'href' => 'admin/config/regional/language/delete/' . $key, + ); + } + } + } +} + +/** * Theme the language overview form. * * @param $variables * An associative array containing: * - form: @todo: document + * - operations_links: An associative array keyed on language code. For each + * language, the value of the array is itself an array of links, suitable + * for passing to theme('links'). * * @return * A themed HTML string representing the form. * + * @see template_preprocess_locale_languages_overview_form() + * * @ingroup themeable */ function theme_locale_languages_overview_form($variables) { $form = $variables['form']; + $operations_links = $variables['operations_links']; $default = language_default(); foreach ($form['name'] as $key => $element) { // Do not take form control structures. if (is_array($element) && element_child($key)) { - // Disable checkbox for the default language, because it cannot be disabled. - if ($key == $default->language) { - $form['enabled'][$key]['#attributes']['disabled'] = 'disabled'; + // theme('links', array('links' => $operations_links[$key])) would create + // an unordered list of links, but we just want a space separated set of + // links. + $operations_links_rendered = array(); + foreach ($operations_links[$key] as $link) { + $operations_links_rendered[] = l($link['title'], $link['href'], $link); } + $operations_links_rendered = implode(' ', $operations_links_rendered); $rows[] = array( 'data' => array( '' . drupal_render($form['name'][$key]) . '', @@ -109,7 +152,7 @@ function theme_locale_languages_overview array('data' => drupal_render($form['enabled'][$key]), 'align' => 'center'), drupal_render($form['site_default'][$key]), drupal_render($form['weight'][$key]), - l(t('edit'), 'admin/config/regional/language/edit/' . $key) . (($key != 'en' && $key != $default->language) ? ' ' . l(t('delete'), 'admin/config/regional/language/delete/' . $key) : '') + $operations_links_rendered, ), 'class' => array('draggable'), ); Index: modules/locale/locale.module =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v retrieving revision 1.262 diff -u -p -r1.262 locale.module --- modules/locale/locale.module 10 Oct 2009 16:48:38 -0000 1.262 +++ modules/locale/locale.module 10 Oct 2009 22:49:00 -0000 @@ -369,6 +369,8 @@ function locale_theme() { return array( 'locale_languages_overview_form' => array( 'arguments' => array('form' => array()), + 'path' => 'includes', + 'file' => 'locale.inc', ), 'locale_languages_configure_form' => array( 'arguments' => array('form' => array()),