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 02:20:41 -0000 @@ -79,27 +79,69 @@ 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(); + 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 +151,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: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.350 diff -u -p -r1.350 menu.inc --- includes/menu.inc 9 Oct 2009 08:02:24 -0000 1.350 +++ includes/menu.inc 10 Oct 2009 02:20:41 -0000 @@ -1741,17 +1741,38 @@ function menu_tab_root_path() { } /** + * Preprocess variables for theme_menu_local_tasks(). + * + * @see theme_menu_local_tasks(). + * + * @ingroup themeable + */ +function template_preprocess_menu_local_tasks(&$variables) { + $variables['primary'] = menu_primary_local_tasks(); + $variables['secondary'] = menu_secondary_local_tasks(); +} + +/** * Returns the rendered local tasks. The default implementation renders them as tabs. * + * @param $variables + * An associative array containing: + * - primary: An HTML string for the primary local tasks. + * - secondary: An HTML string for the secondary local tasks. + * + * @see template_preprocess_menu_local_tasks() + * * @ingroup themeable */ -function theme_menu_local_tasks() { +function theme_menu_local_tasks($variables) { + $primary = $variables['primary']; + $secondary = $variables['secondary']; $output = ''; - if ($primary = menu_primary_local_tasks()) { + if ($primary) { $output .= "