Author: sevein
Date: Tue Jun  5 13:44:10 2012
New Revision: 11736

Log:
A few more fixes in the advanced search, including clearing the filters when 
the toggle button is clicked

Modified:
   branches/2.0/apps/qubit/modules/search/actions/advancedAction.class.php
   branches/2.0/apps/qubit/modules/search/actions/indexAction.class.php
   branches/2.0/apps/qubit/modules/search/templates/_advancedSearch.php
   branches/2.0/apps/qubit/modules/search/templates/advancedSuccess.php
   branches/2.0/js/dominion.js

Modified: 
branches/2.0/apps/qubit/modules/search/actions/advancedAction.class.php
==============================================================================
--- branches/2.0/apps/qubit/modules/search/actions/advancedAction.class.php     
Tue Jun  5 12:59:59 2012        (r11735)
+++ branches/2.0/apps/qubit/modules/search/actions/advancedAction.class.php     
Tue Jun  5 13:44:10 2012        (r11736)
@@ -26,8 +26,7 @@
       'levelOfDescription',
       'materialType',
       'mediaType',
-      'repository',
-      'searchFields'
+      'repository'
     );
 
   protected function addField($name)
@@ -137,12 +136,6 @@
         $this->form->setWidget($name, new sfWidgetFormSelect(array('choices' 
=> $choices)));
 
         break;
-
-      case 'searchFields':
-        $this->form->setValidator($name, new sfValidatorPass);
-        $this->form->setWidget($name, new sfWidgetFormInputHidden);
-
-        break;
     }
   }
 
@@ -153,6 +146,8 @@
       return;
     }
 
+    $this->hasFilters = true;
+
     switch ($field->getName())
     {
       case 'copyrightStatus':
@@ -195,140 +190,150 @@
         $queryBool->addMust($query);
 
         break;
+    }
+  }
 
-      case 'searchFields':
-        foreach ($value as $key => $item)
-        {
-          if (empty($item['query']))
-          {
-            continue;
-          }
+  public function execute($request)
+  {
+    if ('print' == $request->getGetParameter('media'))
+    {
+      $this->getResponse()->addStylesheet('print-preview', 'last');
+    }
 
-          $queryText = new Elastica_Query_Text();
+    if (!isset($request->limit))
+    {
+      $request->limit = sfConfig::get('app_hits_per_page');
+    }
 
-          switch ($item['field'])
-          {
-            case 'identifier':
-              $queryText->setFieldQuery('identifier', $item['query']);
+    $this->form = new sfForm;
+    $this->form->getValidatorSchema()->setOption('allow_extra_fields', true);
 
-              break;
+    foreach ($this::$NAMES as $name)
+    {
+      $this->addField($name);
+    }
 
-            case 'title':
-              $queryText->setFieldQuery('i18n.title', $item['query']);
+    $this->form->bind($request->getRequestParameters() + 
$request->getGetParameters() + $request->getPostParameters());
 
-              break;
+    if ($this->form->isValid())
+    {
+      $query = new Elastica_Query;
+      $queryBool = new Elastica_Query_Bool();
 
-            case 'scopeAndContent':
-              $queryText->setFieldQuery('i18n.scopeAndContet', $item['query']);
+      // Process filters passing $queryBool
+      $this->hasFilters = false;
+      foreach ($this->form as $field)
+      {
+        if (isset($this->request[$field->getName()]))
+        {
+          $this->processField($field, $queryBool);
+        }
+      }
 
-              break;
+      if (!is_array($request->searchFields))
+      {
+        $request->searchFields = array($request->searchFields);
+      }
 
-            case 'archivalHistory':
-              $queryText->setFieldQuery('i18n.archivalHistory', 
$item['query']);
+      $hasAnySearchField = false;
+      foreach ($request->searchFields as $key => $item)
+      {
+        if (empty($item['query']))
+        {
+          continue;
+        }
 
-              break;
+        $hasAnySearchField = true;
 
-            case 'extentAndMedium':
-              $queryText->setFieldQuery('i18n.extentAndMedium', 
$item['query']);
+        $queryText = new Elastica_Query_Text();
 
-              break;
+        switch ($item['field'])
+        {
+          case 'identifier':
+            $queryText->setFieldQuery('identifier', $item['query']);
 
-            case 'creatorHistory':
-              $queryText->setFieldQuery('', $item['query']);
+            break;
 
-              break;
+          case 'title':
+            $queryText->setFieldQuery('i18n.title', $item['query']);
 
-            case 'subject':
-              $queryText->setFieldQuery('', $item['query']);
+            break;
 
-              break;
+          case 'scopeAndContent':
+            $queryText->setFieldQuery('i18n.scopeAndContet', $item['query']);
 
-            case 'name':
-              $queryText->setFieldQuery('', $item['query']);
+            break;
 
-              break;
+          case 'archivalHistory':
+            $queryText->setFieldQuery('i18n.archivalHistory', $item['query']);
 
-            case 'place':
-              $queryText->setFieldQuery('', $item['query']);
+            break;
 
-              break;
+          case 'extentAndMedium':
+            $queryText->setFieldQuery('i18n.extentAndMedium', $item['query']);
 
-            default:
-              $queryText->setFieldQuery('_all', $item['query']);
+            break;
 
-              break;
-          }
+          case 'creatorHistory':
+            $queryText->setFieldQuery('', $item['query']);
 
-          if (0 == $key)
-          {
-            $item['operator'] == 'add';
-          }
+            break;
 
-          switch ($item['operator'])
-          {
-            case 'not':
-              $queryBool->addMustNot($queryText);
+          case 'subject':
+            $queryText->setFieldQuery('', $item['query']);
 
-              break;
+            break;
 
-            case 'or':
-              $queryBool->addShould($queryText);
+          case 'name':
+            $queryText->setFieldQuery('', $item['query']);
 
-              break;
+            break;
 
-            case 'add':
-            default:
-              $queryBool->addMust($queryText);
+          case 'place':
+            $queryText->setFieldQuery('', $item['query']);
 
-              break;
-          }
-        }
+            break;
 
-        break;
+          default:
+            $queryText->setFieldQuery('_all', $item['query']);
 
-    }
-  }
+            break;
+        }
 
-  public function execute($request)
-  {
-    if ('print' == $request->getGetParameter('media'))
-    {
-      $this->getResponse()->addStylesheet('print-preview', 'last');
-    }
+        if (0 == $key)
+        {
+          $item['operator'] == 'add';
+        }
 
-    if (!isset($request->limit))
-    {
-      $request->limit = sfConfig::get('app_hits_per_page');
-    }
+        switch ($item['operator'])
+        {
+          case 'not':
+            $queryBool->addMustNot($queryText);
 
-    $this->form = new sfForm;
-    $this->form->getValidatorSchema()->setOption('allow_extra_fields', true);
+            break;
 
-    foreach ($this::$NAMES as $name)
-    {
-      $this->addField($name);
-    }
+          case 'or':
+            $queryBool->addShould($queryText);
 
-    $this->form->bind($request->getRequestParameters() + 
$request->getGetParameters() + $request->getPostParameters());
+            break;
 
-    if ($this->form->isValid())
-    {
-      $query = new Elastica_Query;
-      $queryBool = new Elastica_Query_Bool();
+          case 'add':
+          default:
+            $queryBool->addMust($queryText);
 
-      // Process filters passing $queryBool
-      foreach ($this->form as $field)
-      {
-        if (isset($this->request[$field->getName()]))
-        {
-          $this->processField($field, $queryBool);
+            break;
         }
       }
 
+      // Interrupt execution because inexistence of search fields
+      if (!$hasAnySearchField)
+      {
+        return;
+      }
+
       $query->setQuery($queryBool);
 
       // Add facets to list related items
-      /*
       foreach (array('repository.id', 'digitalObject.mediaTypeId') as $field)
       {
         $facet = new Elastica_Facet_Terms($field);
@@ -336,7 +341,6 @@
         $facet->setSize(50);
         $query->addFacet($facet);
       }
-      */
 
       $resultSet = 
QubitSearch::getInstance()->index->getType('QubitInformationObject')->search($query);
 

Modified: branches/2.0/apps/qubit/modules/search/actions/indexAction.class.php
==============================================================================
--- branches/2.0/apps/qubit/modules/search/actions/indexAction.class.php        
Tue Jun  5 12:59:59 2012        (r11735)
+++ branches/2.0/apps/qubit/modules/search/actions/indexAction.class.php        
Tue Jun  5 13:44:10 2012        (r11736)
@@ -324,7 +324,7 @@
 
     foreach ($this->request->getGetParameters() as $param => $value)
     {
-      if (in_array(strtr($param, '_', '.'), $this->facets))
+      if (in_array(strtr($param, '_', '.'), array($this->facets)))
       {
         foreach (explode(',', $value) as $facetValue)
         {

Modified: branches/2.0/apps/qubit/modules/search/templates/_advancedSearch.php
==============================================================================
--- branches/2.0/apps/qubit/modules/search/templates/_advancedSearch.php        
Tue Jun  5 12:59:59 2012        (r11735)
+++ branches/2.0/apps/qubit/modules/search/templates/_advancedSearch.php        
Tue Jun  5 13:44:10 2012        (r11736)
@@ -5,7 +5,7 @@
   <?php echo get_partial('search/searchFields') ?>
 
   <p class="headline">
-    <button class="btn" id="toggle-filters"><?php echo __('Add filter/limit') 
?></button>
+    <button class="btn<?php echo $hasFilters ? ' active' : '' ?>" 
id="toggle-filters"><?php echo __('Add filter/limit') ?></button>
   </p>
 
   <div id="filters" class="row-fluid">

Modified: branches/2.0/apps/qubit/modules/search/templates/advancedSuccess.php
==============================================================================
--- branches/2.0/apps/qubit/modules/search/templates/advancedSuccess.php        
Tue Jun  5 12:59:59 2012        (r11735)
+++ branches/2.0/apps/qubit/modules/search/templates/advancedSuccess.php        
Tue Jun  5 13:44:10 2012        (r11736)
@@ -25,7 +25,7 @@
 
       <div id="content">
         <?php if ('print' != $sf_request->getParameter('media')): ?>
-          <?php echo get_partial('search/advancedSearch', array('form' => 
$form, 'action' => 'advanced')) ?>
+          <?php echo get_partial('search/advancedSearch', array('form' => 
$form, 'action' => 'advanced', 'hasFilters' => $hasFilters)) ?>
         <?php else: ?>
           <?php echo get_partial('search/printAdvancedSearchTerms', 
array('queryTerms' => $queryTerms)) ?>
         <?php endif; ?>

Modified: branches/2.0/js/dominion.js
==============================================================================
--- branches/2.0/js/dominion.js Tue Jun  5 12:59:59 2012        (r11735)
+++ branches/2.0/js/dominion.js Tue Jun  5 13:44:10 2012        (r11736)
@@ -4,6 +4,18 @@
 
   /****
    ****
+   ****  Tools
+   ****
+   ****/
+
+  function clearFormFields($element)
+  {
+    $element.find('input:text, input:password, input:file, select').val('');
+    $element.find('input:radio, 
input:checkbox').removeAttr('checked').removeAttr('selected');
+  }
+
+  /****
+   ****
    ****  Generic
    ****
    ****/
@@ -464,7 +476,7 @@
         this.$criteria.last().hide();
       }
 
-      if (!this.$element.find('toggle-filters').hasClass('active'))
+      if (!this.$element.find('#toggle-filters').hasClass('active'))
       {
         this.$filters.hide();
       }
@@ -491,6 +503,10 @@
           event.preventDefault();
           this.$filters.slideToggle('fast');
           $target.toggleClass('active');
+          if (!$target.hasClass('active'))
+          {
+            clearFormFields(this.$filters);
+          }
           break;
       }
     },

-- 
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/qubit-commits?hl=en.

Reply via email to