diff --git a/core/modules/filter/filter.admin.inc b/core/modules/filter/filter.admin.inc index 806c1d78170e03d3f6fc588fca01101a47d7fa95..d09ee6964e2019d19bf8096ed195a6b99c9ccef8 100644 --- a/core/modules/filter/filter.admin.inc +++ b/core/modules/filter/filter.admin.inc @@ -236,15 +236,20 @@ function filter_admin_format_form($form, &$form_state, $format) { // Filter order (tabledrag). $form['filters']['order'] = array( - '#type' => 'item', + '#type' => 'table', + // For filter.admin.js + '#attributes' => array('id' => 'filter-order'), '#title' => t('Filter processing order'), - '#theme' => 'filter_admin_format_filter_order', - // This item is used as a pure wrapping container with heading. Ignore its - // value, since 'filters' should only contain filter definitions. - // @see http://drupal.org/node/1829202 + '#tabledrag' => array( + array('order', 'sibling', 'filter-order-weight'), + ), + '#tree' => FALSE, '#input' => FALSE, + '#theme_wrappers' => array('form_element'), ); foreach ($filter_info as $name => $filter) { + $form['filters']['order'][$name]['#attributes']['class'][] = 'draggable'; + $form['filters']['order'][$name]['#weight'] = $filters[$name]->weight; $form['filters']['order'][$name]['filter'] = array( '#markup' => $filter['title'], ); @@ -255,9 +260,12 @@ function filter_admin_format_form($form, &$form_state, $format) { '#delta' => 50, '#default_value' => $filters[$name]->weight, '#parents' => array('filters', $name, 'weight'), + '#attributes' => array('class' => array('filter-order-weight')), ); - $form['filters']['order'][$name]['#weight'] = $filters[$name]->weight; } + // Make sure filters are in the correct order, since filter_get_filters() + // doesn't return sorted filters. + uasort($form['filters']['order'], 'element_sort'); // Filter settings. $form['filter_settings'] = array( @@ -290,37 +298,6 @@ function filter_admin_format_form($form, &$form_state, $format) { return $form; } -/** - * Returns HTML for a text format's filter order form. - * - * @param array $variables - * An associative array containing: - * - element: A render element representing the form. - * - * @ingroup themeable - */ -function theme_filter_admin_format_filter_order($variables) { - $element = $variables['element']; - - // Filter order (tabledrag). - $rows = array(); - foreach (element_children($element, TRUE) as $name) { - $element[$name]['weight']['#attributes']['class'][] = 'filter-order-weight'; - $rows[] = array( - 'data' => array( - drupal_render($element[$name]['filter']), - drupal_render($element[$name]['weight']), - ), - 'class' => array('draggable'), - ); - } - $output = drupal_render_children($element); - $output .= theme('table', array('rows' => $rows, 'attributes' => array('id' => 'filter-order'))); - drupal_add_tabledrag('filter-order', 'order', 'sibling', 'filter-order-weight', NULL, NULL, TRUE); - - return $output; -} - /** * Form validation handler for filter_admin_format_form(). * diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module index 5de251c10dc69cbe490f33b31199bc65b2886482..c08555d5fa4e1d12b997770f2fb88f1cd3112c45 100644 --- a/core/modules/filter/filter.module +++ b/core/modules/filter/filter.module @@ -67,10 +67,6 @@ function filter_help($path, $arg) { */ function filter_theme() { return array( - 'filter_admin_format_filter_order' => array( - 'render element' => 'element', - 'file' => 'filter.admin.inc', - ), 'filter_tips' => array( 'variables' => array('tips' => NULL, 'long' => FALSE), 'file' => 'filter.pages.inc',