diff --git a/module/VuFind/src/VuFind/Controller/AbstractSearch.php b/module/VuFind/src/VuFind/Controller/AbstractSearch.php index a7a6e5bea6656579d621a09f5843999eb9fdbd67..b0a7da3c53191bbca5b4f23a5009cd7160d775b9 100644 --- a/module/VuFind/src/VuFind/Controller/AbstractSearch.php +++ b/module/VuFind/src/VuFind/Controller/AbstractSearch.php @@ -741,6 +741,7 @@ class AbstractSearch extends AbstractBase 'data' => $list, 'exclude' => $this->params()->fromQuery('facetexclude', 0), 'facet' => $facet, + 'operator' => $this->params()->fromQuery('facetop', 'AND'), 'page' => $page, 'results' => $results, 'anotherPage' => $facets[$facet]['more'], diff --git a/themes/bootstrap3/js/facets.js b/themes/bootstrap3/js/facets.js index 4c0fb043e797c940faa85b0eb8bb8ef9d1946c86..7f1bb27c33d3731e3816ad5d566a19b5d560629e 100644 --- a/themes/bootstrap3/js/facets.js +++ b/themes/bootstrap3/js/facets.js @@ -101,15 +101,14 @@ function initFacetTree(treeNode, inSidebar) /* --- Lightbox Facets --- */ VuFind.register('lightbox_facets', function LightboxFacets() { - var ajaxUrl; - function lightboxFacetSorting() { var sortButtons = $('.js-facet-sort'); - function sortAjax(sort) { + function sortAjax(button) { + var sort = button.dataset.sort; var list = $('#facet-list-' + sort); if (list.find('.js-facet-item').length === 0) { list.find('.js-facet-next-page').text(VuFind.translate('loading') + '...'); - $.ajax(ajaxUrl + '&layout=lightbox&facetsort=' + sort) + $.ajax(button.href + '&layout=lightbox') .done(function facetSortTitleDone(data) { list.prepend($('<span>' + data + '</span>').find('.js-facet-item')); list.find('.js-facet-next-page').text(VuFind.translate('more') + ' ...'); @@ -120,14 +119,13 @@ VuFind.register('lightbox_facets', function LightboxFacets() { sortButtons.removeClass('active'); } sortButtons.click(function facetSortButton() { - sortAjax(this.dataset.sort); + sortAjax(this); $(this).addClass('active'); return false; }); } - function setup(url) { - ajaxUrl = url; + function setup() { lightboxFacetSorting(); $('.js-facet-next-page').click(function facetLightboxMore() { var button = $(this); @@ -137,11 +135,12 @@ VuFind.register('lightbox_facets', function LightboxFacets() { } button.attr('disabled', 1); button.text(VuFind.translate('loading') + '...'); - $.ajax(ajaxUrl + '&layout=lightbox&facetpage=' + page + '&facetsort=' + this.dataset.sort) + $.ajax(this.href + '&layout=lightbox') .done(function facetLightboxMoreDone(data) { var htmlDiv = $('<div>' + data + '</div>'); var list = htmlDiv.find('.js-facet-item'); button.before(list); + console.log(list); if (list.length && htmlDiv.find('.js-facet-next-page').length) { button.attr('data-page', page + 1); button.text(VuFind.translate('more') + ' ...'); @@ -152,7 +151,7 @@ VuFind.register('lightbox_facets', function LightboxFacets() { }); return false; }); - var margin = 180; + var margin = 230; $('#modal').on('show.bs.modal', function facetListHeight() { $('#modal .lightbox-scroll').css('max-height', window.innerHeight - margin); }); diff --git a/themes/bootstrap3/templates/search/facet-list.phtml b/themes/bootstrap3/templates/search/facet-list.phtml index 3ded3628ce8fc7e832590d826b4d3529a48731c9..cb070b85ad5462145d2da75c246b3947bcf80b5e 100644 --- a/themes/bootstrap3/templates/search/facet-list.phtml +++ b/themes/bootstrap3/templates/search/facet-list.phtml @@ -5,12 +5,13 @@ $this->sort = 'default'; $this->sortOptions = [ 'default' => 'default' ]; } + $urlBase = $this->url($facetLightbox) . $results->getUrlQuery()->getParams() . '&facet=' . urlencode($this->facet) . '&facetexclude=' . $this->exclude . '&facetop=' . $this->operator; ?> <? if (count($this->sortOptions) > 1): ?> <label><?=$this->translate('Sort') ?></label> <div class="btn-group"> <? foreach ($this->sortOptions as $key=>$sort): ?> - <a href="<?=$this->url($facetLightbox) . $results->getUrlQuery()->getParams() . '&facet=' . urlencode($this->facet) . '&facetpage=1&facetsort=' . urlencode($key) ?>" class="btn btn-default js-facet-sort<? if($this->sort == $key): ?> active<? endif; ?>" data-sort="<?=$key ?>" data-lightbox-ignore><?=$this->translate($sort) ?></a> + <a href="<?=$urlBase . '&facetpage=1&facetsort=' . urlencode($key) ?>" class="btn btn-default js-facet-sort<? if($this->sort == $key): ?> active<? endif; ?>" data-sort="<?=$key ?>" data-lightbox-ignore><?=$this->translate($sort) ?></a> <? endforeach; ?> </div> <? endif; ?> @@ -20,7 +21,7 @@ <div class="full-facet-list list-group<? if(!$active): ?> hidden<? endif; ?>" id="facet-list-<?=$this->escapeHtmlAttr($key) ?>"> <? if ($active): ?> <? if ($this->page > 1): ?> - <a href="<?=$this->url($facetLightbox) . $results->getUrlQuery()->getParams() . '&facet=' . urlencode($this->facet) . '&facetpage=' . ($this->page-1) . '&facetsort=' . $this->sort ?>" class="list-group-item js-facet-prev-page" data-page="<?=($this->page+1) ?>" data-sort="<?=$this->sort ?>" data-limit="<?=count($this->data) ?>" data-lightbox-ignore><?=$this->translate('prev') ?> ...</a> + <a href="<?=$urlBase . '&facetpage=' . ($this->page-1) . '&facetsort=' . $this->sort ?>" class="list-group-item js-facet-prev-page" data-page="<?=($this->page+1) ?>" data-sort="<?=$this->sort ?>" data-limit="<?=count($this->data) ?>" data-lightbox-ignore><?=$this->translate('prev') ?> ...</a> <? endif; ?> <? foreach ($this->data as $item): ?> <? $toggleUrl = $item['isApplied'] @@ -29,8 +30,8 @@ ?> <? $subLinks = $this->exclude && !$item['isApplied']; ?> <? if ($subLinks): ?> - <li class="list-group-item"> - <a href="<?=$toggleUrl ?>" data-lightbox-ignore class="js-facet-item" data-title="<?=$this->escapeHtmlAttr($item['displayText']) ?>" data-count="<?=$item['count'] ?>"<? if($item['isApplied']): ?> title="<?=$this->transEsc('applied_filter') ?>"<? endif;?>> + <li class="list-group-item js-facet-item"> + <a href="<?=$toggleUrl ?>" data-lightbox-ignore data-title="<?=$this->escapeHtmlAttr($item['displayText']) ?>" data-count="<?=$item['count'] ?>"<? if($item['isApplied']): ?> title="<?=$this->transEsc('applied_filter') ?>"<? endif;?>> <? else: ?> <a href="<?=$toggleUrl ?>" data-lightbox-ignore class="js-facet-item list-group-item<? if($item['isApplied']): ?> active<?endif;?>" data-title="<?=$this->escapeHtmlAttr($item['displayText']) ?>" data-count="<?=$item['count'] ?>"<? if($item['isApplied']): ?> title="<?=$this->transEsc('applied_filter') ?>"<? endif;?>> <? endif; ?> @@ -54,7 +55,7 @@ <span class="badge"> <?=$this->localizedNumber($item['count']) ?> <? if ($this->exclude): ?> - <a href="<?=$this->url($options->getSearchAction()) . $this->results->getUrlQuery()->addFacet($title, $thisFacet['value'], 'NOT') ?>" title="<?=$this->transEsc('exclude_facet') ?>"><i class="fa fa-times" aria-hidden="true"></i></a> + <a href="<?=$this->url($options->getSearchAction()) . $this->results->getUrlQuery()->addFacet($this->facet, $item['value'], 'NOT') ?>" title="<?=$this->transEsc('exclude_facet') ?>" data-lightbox-ignore><i class="fa fa-times" aria-hidden="true"></i></a> <? endif; ?> </span> <? endif; ?> @@ -62,14 +63,10 @@ <? endforeach; ?> <? endif; ?> <? if ($this->anotherPage): ?> - <a href="<?=$this->url($facetLightbox) . $results->getUrlQuery()->getParams() . '&facet=' . urlencode($this->facet) . '&facetpage=' . ($this->page+1) . '&facetsort=' . urlencode($key) ?>" class="list-group-item js-facet-next-page" data-page="<?=($this->page+1) ?>" data-sort="<?=$this->escapeHtmlAttr($key) ?>" data-lightbox-ignore><?=$this->translate('more') ?> ...</a> + <a href="<?=$urlBase . '&facetpage=' . ($this->page+1) . '&facetsort=' . urlencode($key) ?>" class="list-group-item js-facet-next-page" data-page="<?=($this->page+1) ?>" data-sort="<?=$this->escapeHtmlAttr($key) ?>" data-lightbox-ignore><?=$this->translate('more') ?> ...</a> <? endif; ?> </div> <? endforeach; ?> </div> <button class="btn btn-default lightbox-only" data-dismiss="modal"><?=$this->translate('close') ?></button> -<? - $url = str_replace('&', '&', $this->url($facetLightbox) . $results->getUrlQuery()->getParams() . '&facet=' . urlencode($this->facet)); - $script = "VuFind.lightbox_facets.setup('{$url}');"; -?> -<?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET'); ?> \ No newline at end of file +<?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, 'VuFind.lightbox_facets.setup();', 'SET'); ?>