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.