summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Pott2013-07-18 22:53:52 (GMT)
committer Alex Pott2013-07-18 22:53:52 (GMT)
commit535ed4185bfe9520511c59f64b0112b3b16c8364 (patch)
tree90acf0171ec305bf9806bedf6930e3e991c4f50e
parent92f74b2824b4d8ff8438600cde8771df24099c58 (diff)
Issue #1812048 by mikeker, Pancho, dawehner, tim.plunkett: Build the exposed form using form API functions.
-rw-r--r--core/modules/views/css/views.exposed_form.css20
-rw-r--r--core/modules/views/css/views.module.css10
-rw-r--r--core/modules/views/templates/views-exposed-form.html.twig67
-rw-r--r--core/modules/views/views.module10
-rw-r--r--core/modules/views/views.theme.inc43
5 files changed, 35 insertions, 115 deletions
diff --git a/core/modules/views/css/views.exposed_form.css b/core/modules/views/css/views.exposed_form.css
new file mode 100644
index 0000000..273e598
--- /dev/null
+++ b/core/modules/views/css/views.exposed_form.css
@@ -0,0 +1,20 @@
+/**
+ * @file
+ * Styling for Views exposed forms.
+ */
+.views-exposed-form .form-item {
+ /* Display exposed form elements horizontally. */
+ float: left; /* LTR */
+ margin-right: .25em; /* LTR */
+}
+[dir="rtl"] .views-exposed-form .form-item {
+ float: right;
+ margin-left: .25em;
+}
+
+.views-exposed-form .form-actions {
+ clear: left; /* LTR */
+}
+[dir="rtl"] .views-exposed-form .form-actions {
+ clear: right;
+}
diff --git a/core/modules/views/css/views.module.css b/core/modules/views/css/views.module.css
index e422122..707b712 100644
--- a/core/modules/views/css/views.module.css
+++ b/core/modules/views/css/views.module.css
@@ -1,13 +1,3 @@
-.views-exposed-form .views-exposed-widget {
- display: inline-block;
-}
-
-.views-exposed-form .form-item,
-.views-exposed-form .form-submit {
- margin-top: 0;
- margin-bottom: 0;
-}
-
/* table style column align */
.views-align-left {
text-align: left;
diff --git a/core/modules/views/templates/views-exposed-form.html.twig b/core/modules/views/templates/views-exposed-form.html.twig
index d4986e6..5a34f2f 100644
--- a/core/modules/views/templates/views-exposed-form.html.twig
+++ b/core/modules/views/templates/views-exposed-form.html.twig
@@ -4,21 +4,7 @@
* Default theme implementation of a views exposed form.
*
* Available variables:
- * - widgets: A list of exposed form widgets. Each widget contains:
- * - label: The sanitized label of the widget.
- * - id: The ID of the widget, if available.
- * - operator: The select element for the operator widget.
- * - description: The sanitized description of the widget.
- * - widget: The widget itself.
- * - index: the widget's row index.
* - form: A render element representing the form.
- * - sort_by: An optional select element to sort the view by fields.
- * - sort_order: An optional select element with ascending or
- * descending order options.
- * - items_per_page: An optional select element for the available items per
- * page.
- * - offset: An optional textfield to define the offset of the view.
- * - reset_button: An optional button to reset the exposed filter applied.
*
* @see template_preprocess_views_exposed_form()
*
@@ -32,55 +18,6 @@
#}
{{ q }}
{% endif %}
-<div class="views-exposed-form">
- <div class="views-exposed-widgets clearfix">
- {% for index, widget in widgets %}
- <div id="{{ widget.id }}-wrapper" class="views-exposed-widget views-widget-{{ index }}">
- {% if widget.label %}
- <label for="{{ widget.id }}">
- {{ widget.label }}
- </label>
- {% endif %}
- {% if widget.operator %}
- <div class="views-operator">
- {{ widget.operator }}
- </div>
- {% endif %}
- <div class="views-widget">
- {{ widget.widget }}
- </div>
- {% if widget.description %}
- <div class="description">
- {{ widget.description }}
- </div>
- {% endif %}
- </div>
- {% endfor %}
- {% if form.sort_by %}
- <div class="views-exposed-widget views-widget-sort-by">
- {{ form.sort_by }}
- </div>
- <div class="views-exposed-widget views-widget-sort-order">
- {{ form.sort_order }}
- </div>
- {% endif %}
- {% if form.items_per_page %}
- <div class="views-exposed-widget views-widget-per-page">
- {{ form.items_per_page }}
- </div>
- {% endif %}
- {% if form.offset %}
- <div class="views-exposed-widget views-widget-offset">
- {{ form.offset }}
- </div>
- {% endif %}
- <div class="views-exposed-widget views-submit-button">
- {{ form }}
- </div>
- {% if form.reset_button %}
- <div class="views-exposed-widget views-reset-button">
- {{ form.reset_button }}
- </div>
- {% endif %}
- </div>
+<div class="views-exposed-form clearfix">
+ {{ form }}
</div>
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 5c4bb60..7e164f2 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -830,6 +830,13 @@ function views_library_info() {
array('system', 'drupal'),
),
);
+ $libraries['views.exposed-form'] = array(
+ 'title' => 'Views exposed form',
+ 'version' => VERSION,
+ 'css' => array(
+ "$path/css/views.exposed_form.css",
+ ),
+ );
return $libraries;
}
@@ -1351,7 +1358,8 @@ function views_exposed_form($form, &$form_state) {
}
}
- $form['submit'] = array(
+ $form['actions'] = array('#type' => 'actions');
+ $form['actions']['submit'] = array(
// Prevent from showing up in $_GET.
'#name' => '',
'#type' => 'submit',
diff --git a/core/modules/views/views.theme.inc b/core/modules/views/views.theme.inc
index 5ee5143..f88413d 100644
--- a/core/modules/views/views.theme.inc
+++ b/core/modules/views/views.theme.inc
@@ -1038,52 +1038,17 @@ function template_preprocess_views_view_row_rss(&$variables) {
function template_preprocess_views_exposed_form(&$variables) {
$form = &$variables['form'];
- // Put all single checkboxes together in the last spot.
- $checkboxes = array();
-
if (!empty($form['q'])) {
$variables['q'] = $form['q'];
}
- $variables['widgets'] = array();
- foreach ($form['#info'] as $id => $info) {
- // Set aside checkboxes.
- if (isset($form[$info['value']]['#type']) && $form[$info['value']]['#type'] == 'checkbox') {
- $checkboxes[] = $form[$info['value']];
- continue;
- }
- $widget = new stdClass();
- // set up defaults so that there's always something there.
- $widget->label = $widget->operator = $widget->widget = $widget->description = '';
-
- $widget->id = isset($form[$info['value']]['#id']) ? $form[$info['value']]['#id'] : '';
+ // Include basic theming for exposed forms.
+ $form['#attached']['library'][] = array('views', 'views.exposed-form');
+ foreach ($form['#info'] as $id => $info) {
if (!empty($info['label'])) {
- $widget->label = check_plain($info['label']);
- }
- if (!empty($info['operator']) && isset($form[$info['operator']])) {
- $widget->operator = $form[$info['operator']];
+ $form[$info['value']]['#title'] = $info['label'];
}
-
- $widget->widget = $form[$info['value']];
-
- if (!empty($info['description'])) {
- $widget->description = check_plain($info['description']);
- }
-
- $variables['widgets'][$id] = $widget;
- // Unset the widget, so that it doesn't get rendered twice.
- unset($form[$info['value']]);
- }
-
- // Wrap up all the checkboxes we set aside into a widget.
- if (!empty($checkboxes)) {
- $widget = new stdClass();
- // set up defaults so that there's always something there.
- $widget->label = $widget->operator = $widget->widget = NULL;
- $widget->id = 'checkboxes';
- $widget->widget = $checkboxes;
- $variables['widgets']['checkboxes'] = $widget;
}
}