summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Pott2015-07-13 12:51:49 +0100
committerAlex Pott2015-07-13 12:51:49 +0100
commit08baa72aeeb4cc12413cd9ea9636df6c09734bb3 (patch)
tree17f625041042d2c0e0a46602b160813d0a62d157
parent94615a137b1a4d83d0329a53563d5e7bd2265644 (diff)
Issue #1963978 by joelpittet, NickWilde, jmolivas, dimaro, lauriii, Manuel Garcia, 2ndmile, Cottser, tim.plunkett: Convert theme_views_ui_build_group_filter_form() to Twig
-rw-r--r--core/modules/views_ui/templates/views-ui-build-group-filter-form.html.twig57
-rw-r--r--core/modules/views_ui/views_ui.module5
-rw-r--r--core/modules/views_ui/views_ui.theme.inc61
3 files changed, 81 insertions, 42 deletions
diff --git a/core/modules/views_ui/templates/views-ui-build-group-filter-form.html.twig b/core/modules/views_ui/templates/views-ui-build-group-filter-form.html.twig
new file mode 100644
index 0000000..0e05c27
--- /dev/null
+++ b/core/modules/views_ui/templates/views-ui-build-group-filter-form.html.twig
@@ -0,0 +1,57 @@
+{#
+/**
+ * @file
+ * Default theme implementation for Views UI build group filter form.
+ *
+ * Available variables:
+ * - form: A render element representing the form. Contains the following:
+ * - form_description: The exposed filter's description.
+ * - expose_button: The button to toggle the expose filter form.
+ * - group_button: Toggle options between single and grouped filters.
+ * - label: A filter label input field.
+ * - description: A filter description field.
+ * - value: The filters available values.
+ * - optional: A checkbox to require this filter or not.
+ * - remember: A checkbox to remember selected filter value(s) (per user).
+ * - widget: Radio Buttons to select the filter widget.
+ * - add_group: A button to add another row to the table.
+ * - more: A details element for additional field exposed filter fields.
+ * - table: A rendered table element of the group filter form.
+ *
+ * @see template_preprocess_views_ui_build_group_filter_form()
+ *
+ * @ingroup themeable
+ */
+#}
+{{ form.form_description }}
+{{ form.expose_button }}
+{{ form.group_button }}
+<div class="views-left-40">
+ {{ form.optional }}
+ {{ form.remember }}
+</div>
+<div class="views-right-60">
+ {{ form.widget }}
+ {{ form.label }}
+ {{ form.description }}
+</div>
+{#
+ Render the rest of the form elements excluding elements that are rendered
+ elsewhere.
+#}
+{{ form|without(
+ 'form_description',
+ 'expose_button',
+ 'group_button',
+ 'optional',
+ 'remember',
+ 'widget',
+ 'label',
+ 'description',
+ 'add_group',
+ 'more'
+ )
+}}
+{{ table }}
+{{ form.add_group }}
+{{ form.more }}
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 86add67..5dba4fe 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -8,12 +8,8 @@
use Drupal\Component\Utility\Unicode;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Url;
-use Drupal\views\Views;
use Drupal\views\ViewExecutable;
-use Drupal\views_ui\ViewUI;
use Drupal\views\Analyzer;
-use Drupal\Core\Ajax\AjaxResponse;
-use Drupal\Core\Ajax\ReplaceCommand;
use Drupal\Component\Utility\Xss;
/**
@@ -97,7 +93,6 @@ function views_ui_theme() {
'views_ui_build_group_filter_form' => array(
'render element' => 'form',
'file' => 'views_ui.theme.inc',
- 'function' => 'theme_views_ui_build_group_filter_form',
),
// On behalf of a plugin
diff --git a/core/modules/views_ui/views_ui.theme.inc b/core/modules/views_ui/views_ui.theme.inc
index cd259ca..f9b165a 100644
--- a/core/modules/views_ui/views_ui.theme.inc
+++ b/core/modules/views_ui/views_ui.theme.inc
@@ -65,35 +65,18 @@ function template_preprocess_views_ui_display_tab_bucket(&$variables) {
}
/**
- * Theme the build group filter form.
+ * Prepares variables for Views UI build group filter form templates.
*
- * @ingroup themeable
+ * Default template: views-ui-build-group-filter-form.html.twig.
+ *
+ * @param array $variables
+ * An associative array containing:
+ * - form: A render element representing the form.
*/
-function theme_views_ui_build_group_filter_form($variables) {
+function template_preprocess_views_ui_build_group_filter_form(&$variables) {
$form = $variables['form'];
- $more = drupal_render($form['more']);
-
- $output = drupal_render($form['form_description']);
- $output .= drupal_render($form['expose_button']);
- $output .= drupal_render($form['group_button']);
- if (isset($form['required'])) {
- $output .= drupal_render($form['required']);
- }
-
- $output .= drupal_render($form['operator']);
- $output .= drupal_render($form['value']);
-
- $output .= '<div class="views-left-40">';
- $output .= drupal_render($form['optional']);
- $output .= drupal_render($form['remember']);
- $output .= '</div>';
-
- $output .= '<div class="views-right-60">';
- $output .= drupal_render($form['widget']);
- $output .= drupal_render($form['label']);
- $output .= drupal_render($form['description']);
- $output .= '</div>';
+ // Prepare table of options.
$header = array(
t('Default'),
t('Weight'),
@@ -103,14 +86,14 @@ function theme_views_ui_build_group_filter_form($variables) {
t('Operations'),
);
+ // Prepare default selectors.
$form_state = new FormState();
$form['default_group'] = Element\Radios::processRadios($form['default_group'], $form_state, $form);
$form['default_group_multiple'] = Element\Checkboxes::processCheckboxes($form['default_group_multiple'], $form_state, $form);
$form['default_group']['All']['#title'] = '';
- hide($form['default_group_multiple']['All']);
$rows[] = array(
- drupal_render($form['default_group']['All']),
+ ['data' => $form['default_group']['All']],
'',
array(
'data' => \Drupal::config('views.settings')->get('ui.exposed_filter_any_label') == 'old_any' ? t('&lt;Any&gt;') : t('- Any -'),
@@ -118,6 +101,9 @@ function theme_views_ui_build_group_filter_form($variables) {
'class' => array('class' => 'any-default-radios-row'),
),
);
+ // Remove the 'All' default_group form element because it's added to the
+ // table row.
+ unset($variables['form']['default_group']['All']);
foreach (Element::children($form['group_items']) as $group_id) {
$form['group_items'][$group_id]['value']['#title'] = '';
@@ -125,6 +111,10 @@ function theme_views_ui_build_group_filter_form($variables) {
$form['default_group'][$group_id],
$form['default_group_multiple'][$group_id],
];
+ // Remove these fields from the form since they are moved into the table.
+ unset($variables['form']['default_group'][$group_id]);
+ unset($variables['form']['default_group_multiple'][$group_id]);
+
$link = [
'#type' => 'link',
'#url' => Url::fromRoute('<none>', [], [
@@ -145,15 +135,15 @@ function theme_views_ui_build_group_filter_form($variables) {
$remove = [$form['group_items'][$group_id]['remove'], $link];
$data = array(
'default' => ['data' => $default],
- 'weight' => drupal_render($form['group_items'][$group_id]['weight']),
- 'title' => drupal_render($form['group_items'][$group_id]['title']),
- 'operator' => drupal_render($form['group_items'][$group_id]['operator']),
- 'value' => drupal_render($form['group_items'][$group_id]['value']),
+ 'weight' => ['data' => $form['group_items'][$group_id]['weight']],
+ 'title' => ['data' => $form['group_items'][$group_id]['title']],
+ 'operator' => ['data' => $form['group_items'][$group_id]['operator']],
+ 'value' => ['data' => $form['group_items'][$group_id]['value']],
'remove' => ['data' => $remove],
);
$rows[] = array('data' => $data, 'id' => 'views-row-' . $group_id, 'class' => array('draggable'));
}
- $table = array(
+ $variables['table'] = array(
'#type' => 'table',
'#header' => $header,
'#rows' => $rows,
@@ -170,11 +160,8 @@ function theme_views_ui_build_group_filter_form($variables) {
),
);
- // Render the "Add another item" button below the table.
- $add_another = drupal_render($form['add_group']);
- $render_form = drupal_render_children($form);
-
- return $output . $render_form . drupal_render($table) . $add_another . $more;
+ // Hide fields used in table.
+ unset($variables['form']['group_items']);
}
/**