diff --git a/module/VuFind/src/VuFind/Controller/SearchController.php b/module/VuFind/src/VuFind/Controller/SearchController.php index 60dbf50fa63156961bf621495933156a41b00e29..c995ab221a905a04d81021f51f59c221d7a56059 100644 --- a/module/VuFind/src/VuFind/Controller/SearchController.php +++ b/module/VuFind/src/VuFind/Controller/SearchController.php @@ -371,6 +371,10 @@ class SearchController extends AbstractSearch $url->setSuppressQuery(true); } + // We don't want new items hidden filters to propagate to other searches: + $view->ignoreHiddenFilterMemory = true; + $view->ignoreHiddenFiltersInRequest = true; + return $view; } diff --git a/module/VuFind/src/VuFind/Search/SearchTabsHelper.php b/module/VuFind/src/VuFind/Search/SearchTabsHelper.php index 2b63a3df899eeb0b16a568643be09a5904367037..1e15fd959d9fa32e2dfc66f3d33633d72ce98cae 100644 --- a/module/VuFind/src/VuFind/Search/SearchTabsHelper.php +++ b/module/VuFind/src/VuFind/Search/SearchTabsHelper.php @@ -93,12 +93,16 @@ class SearchTabsHelper extends \Zend\View\Helper\AbstractHelper * @param string $searchClassId Active search class * @param bool $returnDefaultsIfEmpty Whether to return default tab filters if * no filters are currently active + * @param bool $ignoreCurrentRequest Whether to ignore hidden filters in + * the current request * * @return array */ - public function getHiddenFilters($searchClassId, $returnDefaultsIfEmpty = true) - { - $filters = $this->request->getQuery('hiddenFilters'); + public function getHiddenFilters($searchClassId, $returnDefaultsIfEmpty = true, + $ignoreCurrentRequest = false + ) { + $filters = $ignoreCurrentRequest + ? null : $this->request->getQuery('hiddenFilters'); if (null === $filters && $returnDefaultsIfEmpty) { $filters = $this->getDefaultTabHiddenFilters($searchClassId); } diff --git a/module/VuFind/src/VuFind/View/Helper/Root/SearchTabs.php b/module/VuFind/src/VuFind/View/Helper/Root/SearchTabs.php index b95d5b7516d3a705dfadb66901267737ea3ff588..b7d685b82d38627cd42307742e704de01ee93574 100644 --- a/module/VuFind/src/VuFind/View/Helper/Root/SearchTabs.php +++ b/module/VuFind/src/VuFind/View/Helper/Root/SearchTabs.php @@ -171,13 +171,17 @@ class SearchTabs extends \Zend\View\Helper\AbstractHelper * @param string $searchClassId Active search class * @param bool $returnDefaultsIfEmpty Whether to return default tab filters if * no filters are currently active + * @param bool $ignoreCurrentRequest Whether to ignore hidden filters in + * the current request * * @return array */ - public function getHiddenFilters($searchClassId, $returnDefaultsIfEmpty = true) - { - return $this->helper - ->getHiddenFilters($searchClassId, $returnDefaultsIfEmpty); + public function getHiddenFilters($searchClassId, $returnDefaultsIfEmpty = true, + $ignoreCurrentRequest = false + ) { + return $this->helper->getHiddenFilters( + $searchClassId, $returnDefaultsIfEmpty, $ignoreCurrentRequest + ); } /** diff --git a/themes/bootstrap3/templates/search/results.phtml b/themes/bootstrap3/templates/search/results.phtml index 3f3e008277273c3d57ec6c8c08ca287e29c8d951..7dbd281dcea14798a94af05e382c00f4b640ccd2 100644 --- a/themes/bootstrap3/templates/search/results.phtml +++ b/themes/bootstrap3/templates/search/results.phtml @@ -10,7 +10,7 @@ // Set up search box: $this->layout()->searchbox = $this->context($this)->renderInContext( 'search/searchbox.phtml', - array( + [ 'lookfor' => $lookfor, 'searchIndex' => $this->params->getSearchHandler(), 'searchType' => $this->params->getSearchType(), @@ -19,8 +19,10 @@ 'checkboxFilters' => $this->params->getCheckboxFacets(), 'filterList' => $this->params->getFilters(), 'hasDefaultsApplied' => $this->params->hasDefaultsApplied(), - 'selectedShards' => $this->params->getSelectedShards() - ) + 'selectedShards' => $this->params->getSelectedShards(), + 'ignoreHiddenFiltersInRequest' => isset($this->ignoreHiddenFiltersInRequest) ? $this->ignoreHiddenFiltersInRequest : false, + 'ignoreHiddenFilterMemory' => isset($this->ignoreHiddenFilterMemory) ? $this->ignoreHiddenFilterMemory : false, + ] ); // Set up breadcrumbs: diff --git a/themes/bootstrap3/templates/search/searchbox.phtml b/themes/bootstrap3/templates/search/searchbox.phtml index 1fb088e5ab62dfd4e0842cf0d010e7306a7e72a9..06b5f799d4532f1151cdee335d711961aa5339d6 100644 --- a/themes/bootstrap3/templates/search/searchbox.phtml +++ b/themes/bootstrap3/templates/search/searchbox.phtml @@ -17,7 +17,8 @@ $lastSort = $this->searchMemory()->getLastSort($this->searchClassId); $lastLimit = $this->searchMemory()->getLastLimit($this->searchClassId); $ignoreHiddenFilterMemory = isset($this->ignoreHiddenFilterMemory) && $this->ignoreHiddenFilterMemory; - $hiddenFilters = $this->searchtabs()->getHiddenFilters($this->searchClassId, $ignoreHiddenFilterMemory); + $ignoreHiddenFiltersInRequest = isset($this->ignoreHiddenFiltersInRequest) && $this->ignoreHiddenFiltersInRequest; + $hiddenFilters = $this->searchtabs()->getHiddenFilters($this->searchClassId, $ignoreHiddenFilterMemory, $ignoreHiddenFiltersInRequest); if (empty($hiddenFilters) && !$ignoreHiddenFilterMemory) { $hiddenFilters = $this->searchMemory()->getLastHiddenFilters($this->searchClassId); if (empty($hiddenFilters)) {