<!-- fid_adlr: search - advanced - layout --> <?php // Set page title. $this->headTitle($this->translate('Advanced Search')); // Disable top search box -- this page has a special layout. // finc: reenable searchbox by commenting out following line - refs #22361 //$this->layout()->searchbox = false; // Set up breadcrumbs: $this->layout()->breadcrumbs = '<li>'; $lastSearchLink = $this->searchMemory()->getLastSearchLink($this->transEsc('Search')); $this->layout()->breadcrumbs .= !empty($lastSearchLink) ? $lastSearchLink : $this->transEsc('Search'); $this->layout()->breadcrumbs .= '</li> <li class="active">' . $this->transEsc('Advanced') . '</li>'; // Set up saved search details: if (isset($this->saved) && is_object($this->saved)) { $searchDetails = $this->saved->getParams()->getQuery(); if ($searchDetails instanceof \VuFindSearch\Query\Query) { // Not an advanced query -- ignore it. $searchDetails = $groups = false; } else { $groups = $searchDetails->getQueries(); } $hasDefaultsApplied = $this->saved->getParams()->hasDefaultsApplied(); $searchFilters = $this->saved->getParams()->getFilterList(); $hiddenFilters = $this->saved->getParams()->getHiddenFilters(); } else { $hasDefaultsApplied = $searchDetails = $searchFilters = $groups = false; $hiddenFilters = $this->searchTabs()->getHiddenFilters($this->searchClassId, true); } // Step 1: Load the javascript $this->headScript()->appendFile( isset($this->advancedSearchJsOverride) ? $this->advancedSearchJsOverride : 'advanced_search.js' ); // Step 2: Build the page $this->headScript()->appendScript( $this->partial( isset($this->buildPageOverride) ? $this->buildPageOverride : 'search/advanced/build_page.phtml', ['options' => $this->options, 'searchDetails' => $searchDetails] ) ); // Collect previous search queries $setSearchGroups = []; $setGroupCount = 0; $setQueries = []; if (isset($searchDetails) && is_object($searchDetails)) { foreach ($searchDetails->getQueries() as $group => $searchGroup) { $setSearchGroups[$group] = $searchGroup->isNegated() ? 'NOT' : $searchGroup->getOperator(); if ($setGroupCount < $group) { $setGroupCount = $group; } if (!isset($setQueries[$group])) { $setQueries[$group] = []; } foreach ($searchGroup->getQueries() as $search) { $setQueries[$group][] = $search; } } } ?> <?=$this->flashmessages()?> <div role="search"> <form name="searchForm" id="advSearchForm" method="get" action="<?=$this->url($this->options->getSearchAction())?>"> <?php foreach ($hiddenFilters as $key => $filter): ?> <?php foreach ($filter as $value): ?> <input type="hidden" name="hiddenFilters[]" value="<?=$this->escapeHtmlAttr($key) . ':' . $this->escapeHtmlAttr($value)?>" /> <?php endforeach; ?> <?php endforeach; ?> <div class="<?=$this->layoutClass('mainbody')?>"> <?php $lastSort = $this->searchMemory()->getLastSort($this->searchClassId); ?> <?php if (!empty($lastSort)): ?> <input type="hidden" name="sort" value="<?=$this->escapeHtmlAttr($lastSort)?>" /> <?php endif; ?> <div class="clearfix"> <?php /* finc: offcanvas behaviour for xs #17601 */ ?> <span class="offcanvas-toggler"> <a class="search-filter-toggle btn btn-primary visible-xs visible-sm" href="#myresearch-sidebar" data-toggle="offcanvas" aria-label="<?=$this->transEsc('sidebar_expand')?>"> <?=$this->transEsc('offcanvas-toggler-search-tips')?> </a> </span> <?php /* finc uses h1 */ ?> <h1 class="pull-left flip"><?=$this->transEsc('Advanced Search')?></h1> <div id="groupJoin" class="form-inline pull-right flip"> <label for="groupJoinOptions"><?=$this->transEsc("search_match")?>:</label> <select id="groupJoinOptions" name="join" class="form-control"> <option value="AND"<?php if($searchDetails && $searchDetails->getOperator() == 'ALL'):?> selected<?php endif; ?>><?= $this->transEsc('group_AND') ?></option> <option value="OR"<?php if($searchDetails && $searchDetails->getOperator() == 'OR'):?> selected<?php endif; ?>><?= $this->transEsc('group_OR') ?></option> </select> </div> </div> <?php /* finc: keep icon inside link for consistent functionality */ ?> <span id="groupPlaceHolder" class="hidden"> <?php /* fid_adlr: adapt layout, remove "btn btn-default" #16502 */ ?> <a href="javascript:void(0);" onClick="addGroup();return false" role="button"> <i class="fa fa-plus" aria-hidden="true"></i><?= $this->transEsc('add_search_group') ?> </a> </span> <?php /* fallback to a fixed set of search groups/fields if JavaScript is turned off */ ?> <div class="no-js"> <?php if(!empty($this->formOverride)): ?> <?=$this->formOverride ?> <?php else: ?> <?php for($group = 0; $group < 3 || $group <= $setGroupCount; $group++): ?> <?php if($group == 0): ?> <div id="new_group_template"> <?php endif; ?> <?php /* finc add roles, aria-label #19418 */ ?> <div id="group<?=$group ?>" class="adv-group" role="group" aria-label="<?=$this->transEsc('adv_search_searchgroup')?> <?=$group?>"> <div class="adv-group-terms"> <?php /* remove label in favor of more detailed labelling */ /* <label class="adv-group-label" for="search_lookfor<?=$group ?>_0"><?=$this->transEsc("adv_search_label")?>:</label> */ ?> <?php for($search = 0; $search < 3 || (isset($setQueries[$group]) && $search < count($setQueries[$group])); $search++): ?> <?php if($group == 0 && $search == 0): ?> <div id="new_search_template"> <?php else: ?> <?php endif; ?> <div id="search<?=$group . '_' . $search ?>" class="adv-search"> <?php /* finc uses fieldset and label for more consistent formatting - check again in VF 7 or 8.x */ ?> <fieldset> <legend class="sr-only"> <?=$this->transEsc("adv_search_searchfield")?> <?=$search + 1?> </legend> <div class="adv-input"> <label for="search_lookfor<?=$group . '_' . $search?>"> <?=$this->transEsc("search_terms")?>: </label> <input name="lookfor<?=$group ?>[]" id="search_lookfor<?=$group . '_' . $search ?>" class="adv-term-input form-control" type="text"<?php if (isset($setQueries[$group][$search])): ?> value="<?=$this->escapeHtml($setQueries[$group][$search]->getString())?>"<?php endif; ?>> </div> <div class="adv-select"> <label for="type<?=$group . '_' . $search?>"><?=$this->transEsc("Search type")?>:</label> <?php /* finc: add id #19418 */ ?> <select id="type<?=$group . '_' . $search?>" class="adv-term-type form-control" name="type<?=$group ?>[]"> <?php foreach ($this->options->getAdvancedHandlers() as $searchVal => $searchDesc): ?> <option value="<?=$this->escapeHtml($searchVal)?>"<?php if(isset($setQueries[$group][$search]) && $searchVal == $setQueries[$group][$search]->getHandler()):?> selected<?php endif;?>><?=$this->transEsc($searchDesc)?></option> <?php endforeach; ?> </select> </div> <a href="javascript:void(0);" class="adv-term-remove hidden"> <?php /* finc: add span for screenreader */ ?> <span class="sr-only"><?=$this->transEsc("remove")?></span> <i class="fa fa-times" aria-hidden="true"></i> </a> </fieldset> </div> <?php if($group == 0 && $search == 0): ?> </div> <?php /* finc: moving entire original icon tag inside link WILL BUST removal-button functionality! (As this will also 'shift search_place_holder') Therefore Keep 'search_place_holder' separate and move icon only ! */ ?> <span class="float-left"> <?php /* finc: remove classname fa fa-plus-circle #11813 */ ?> <span class="search_place_holder hidden" aria-hidden="true"></span> <?php /* fid_adlr: adapt layout, remove "btn btn-default" #16502 */ ?> <a href="javascript:void(0);" class="add_search_link hidden" role="button"><i class="fa fa-plus" aria-hidden="true"></i> <?=$this->transEsc("add_search")?></a> </span> <?php endif; ?> <?php endfor; ?> </div> <div class="adv-group-match"> <?php /* finc: add missing labels #18209 */ ?> <label class="search_bool" for="search_bool<?=$group ?>"><?=$this->transEsc("search_match")?>: </label> <select name="bool<?=$group ?>[]" id="search_bool<?=$group ?>" class="form-control"> <option value="AND"<?php if(isset($setSearchGroups[$group]) && 'AND' == $setSearchGroups[$group]):?> selected<?php endif; ?>><?=$this->transEsc("search_AND")?></option> <option value="OR"<?php if(isset($setSearchGroups[$group]) && 'OR' == $setSearchGroups[$group]):?> selected<?php endif; ?>><?=$this->transEsc("search_OR")?></option> <option value="NOT"<?php if(isset($setSearchGroups[$group]) && 'NOT' == $setSearchGroups[$group]):?> selected<?php endif; ?>><?=$this->transEsc("search_NOT")?></option> </select> </div> <?php /* fid_adlr: adapt layout, remove "btn btn-default" #16502 */ ?> <a href="javascript:void(0);" class="adv-group-close hidden" role="button"><i class="fa fa-close"></i> <?=$this->transEsc("del_search")?></a> </div> <?php if($group == 0): ?> </div> <?php endif; ?> <?php endfor; ?> <?php endif; ?> </div> <?php /* finc: introduce 'fnd-btn'-class to swap submit and clear buttons for consistency */ ?> <div class="adv-submit"> <?php /* fid_adlr: adapt layout, change btn-transparent to btn-primary #16502 */ ?> <input class="clear-btn btn btn-primary" type="button" value="<?=$this->transEsc('Clear')?>" aria-label="<?=$this->transEsc('Clear')?>"> <input class="fnd-btn btn btn-primary" type="submit" value="<?= $this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"> </div> <?php if (isset($this->extraAdvancedControls)): ?> <div class="clearfix"> <?=$this->extraAdvancedControls ?> </div> <div class="adv-submit margin-t"> <?php /* fid_adlr: adapt layout, change btn-transparent to btn-primary #16502 */ ?> <input class="clear-btn btn btn-primary" type="button" value="<?=$this->transEsc('Clear')?>" aria-label="<?=$this->transEsc('Clear')?>"> <input class="fnd-btn btn btn-primary" type="submit" value="<?= $this->transEsc('Find')?>" aria-label="<?= $this->transEsc('Find')?>"> </div> <?php endif; ?> </div> <?php /* finc: add id myresearch-sidebar #17908 */ ?> <div class="<?=$this->layoutClass('sidebar')?>" id="myresearch-sidebar"> <?php /* finc: add button #17601 */ ?> <button class="close-offcanvas btn btn-primary" data-toggle="offcanvas"><?=$this->transEsc('navigate_back') ?></button> <?php if ($hasDefaultsApplied): ?> <input type="hidden" name="dfApplied" value="1" /> <?php endif ?> <?php if (!empty($searchFilters)): ?> <h2><?=$this->transEsc("adv_search_filters")?></h2> <div class="facet-group"> <label class="checkbox"> <input type="checkbox" checked="checked" class="checkbox-select-all"/> <?=$this->transEsc("adv_search_select_all")?> </label> </div> <?php foreach ($searchFilters as $field => $data): ?> <div class="facet-group"> <div class="title"><?=$this->transEsc($field)?></div> <?php foreach ($data as $value): ?> <label class="facet checkbox"><input class="checkbox-select-item" type="checkbox" checked="checked" name="filter[]" value='<?=$this->escapeHtmlAttr($value['field'])?>:"<?=$this->escapeHtmlAttr($value['value'])?>"' /> <?=$this->escapeHtml($value['displayText'])?></label> <?php endforeach; ?> </div> <?php endforeach; ?> <?php endif; ?> <h2><?=$this->transEsc("Search Tips")?></h2> <div class="facet-group"> <a class="facet help-link" data-lightbox href="<?=$this->url('help-home')?>?topic=advsearch&_=<?=time() ?>"><?=$this->transEsc("Help with Advanced Search")?></a> <a class="facet help-link" data-lightbox href="<?=$this->url('help-home')?>?topic=search&_=<?=time() ?>"><?=$this->transEsc("Help with Search Operators")?></a> </div> </div> </form> </div> <!-- fid_adlr: search - advanced - layout - END -->