From 450b4334efa86ef8dd1a5dd6eca8558c029c1e31 Mon Sep 17 00:00:00 2001
From: Daniel Wehner <daniel.wehner@erdfisch.de>
Date: Thu, 20 Sep 2012 17:11:20 +0200
Subject: [PATCH] Issue #1789824 by dawehner, tim.plunkett: Convert the handler
 filter from CTools dependent.js to #states.

---
 css/views-admin.ctools-rtl.css |  9 ---------
 css/views-admin.ctools.css     |  8 --------
 css/views-admin.seven.css      | 11 +----------
 includes/admin.inc             | 16 +++++++++++-----
 4 files changed, 12 insertions(+), 32 deletions(-)

diff --git a/css/views-admin.ctools-rtl.css b/css/views-admin.ctools-rtl.css
index a98611382242..c8adea2299b5 100644
--- a/css/views-admin.ctools-rtl.css
+++ b/css/views-admin.ctools-rtl.css
@@ -30,15 +30,6 @@
 
 /* @end */
 
-/* @group Dependent */
-
-.dependent-options {
-  margin-left: 0;
-  margin-right: 18px;
-}
-
-/* @end */
-
 /* @group Export */
 
 /* Override for filter button on the views list screen */
diff --git a/css/views-admin.ctools.css b/css/views-admin.ctools.css
index 153e74141713..ff402d44d903 100644
--- a/css/views-admin.ctools.css
+++ b/css/views-admin.ctools.css
@@ -119,14 +119,6 @@
 
 /* @end */
 
-/* @group Dependent */
-
-.dependent-options {
-  margin-left: 18px; /* LTR */
-}
-
-/* @end */
-
 /* @group Export */
 
 /* Override for filter button on the views list screen */
diff --git a/css/views-admin.seven.css b/css/views-admin.seven.css
index d13f3c219bad..58ce631c6875 100644
--- a/css/views-admin.seven.css
+++ b/css/views-admin.seven.css
@@ -105,15 +105,11 @@ fieldset.fieldset-no-legend {
 }
 
 /* @group Dependent options
- *
- * Dependent options are identified in CTools dependent.js
  */
 
-/* The .dependent-options.form-item is necessary to supercede the Seven .form-item
+/* This is necessary to supercede the Seven .form-item
  * reset declaration that sets the margin to zero.
  */
-.dependent-options,
-.dependent-options.form-item,
 .form-item-options-expose-required,
 .form-item-options-expose-label,
 .form-item-options-expose-description {
@@ -123,10 +119,7 @@ fieldset.fieldset-no-legend {
 .views-admin-dependent .form-item .form-item,
 .views-admin-dependent .form-type-checkboxes,
 .views-admin-dependent .form-type-radios,
-.views-admin-dependent .dependent-options,
 .views-admin-dependent .form-item .form-item,
-.views-admin-dependent .dependent-options .form-type-select,
-.views-admin-dependent .dependent-options .form-type-textfield,
 .form-item-options-expose-required,
 .form-item-options-expose-label,
 .form-item-options-expose-description {
@@ -142,8 +135,6 @@ fieldset.fieldset-no-legend {
 
 /* @end */
 
-/* @end */
-
 /* @group Lists */
 
 .views-admin ul.secondary,
diff --git a/includes/admin.inc b/includes/admin.inc
index c23b460c1644..6321f285fc04 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -3944,7 +3944,6 @@ function views_ui_add_item_form($form, &$form_state) {
       '#type' => 'select',
       '#title' => t('Filter'),
       '#options' => array(),
-      '#attributes' => array('class' => array('ctools-master-dependent')),
     );
 
     $form['options']['name'] = array(
@@ -3954,8 +3953,7 @@ function views_ui_add_item_form($form, &$form_state) {
       '#default_value' => 'all',
     );
 
-    // Group options first to simplify the DOM objects that Views
-    // dependent JS will act upon.
+    // Group options first to simplify the usage of #states.
     $grouped_options = array();
     foreach ($options as $key => $option) {
       $group = preg_replace('/[^a-z0-9]/', '-', strtolower($option['group']));
@@ -3980,7 +3978,6 @@ function views_ui_add_item_form($form, &$form_state) {
     }
 
     foreach ($grouped_options as $group => $group_options) {
-      $form['options']['name'][$group . '_start']['#markup'] = '<div class="ctools-dependent-all ctools-dependent-' . $group . '">';
       $zebra = 0;
       foreach ($group_options as $key => $option) {
         $zebra_class = ($zebra % 2) ? 'odd' : 'even';
@@ -3991,10 +3988,19 @@ function views_ui_add_item_form($form, &$form_state) {
           '#return_value' => $key,
           '#prefix' => "<div class='$zebra_class filterable-option'>",
           '#suffix' => '</div>',
+          '#states' => array(
+            'visible' => array(
+              array(
+                ':input[name="group"]' => array('value' => 'all'),
+              ),
+              array(
+                ':input[name="group"]' => array('value' => $group),
+              ),
+            )
+          )
         );
         $zebra++;
       }
-      $form['options']['name'][$group . '_end']['#markup'] = '</div>';
     }
 
     $form['options']['controls']['group']['#options'] = $groups;
-- 
GitLab