<!-- 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")?>:&nbsp;</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&amp;_=<?=time() ?>"><?=$this->transEsc("Help with Advanced Search")?></a>
        <a class="facet help-link" data-lightbox href="<?=$this->url('help-home')?>?topic=search&amp;_=<?=time() ?>"><?=$this->transEsc("Help with Search Operators")?></a>
      </div>
    </div>
  </form>
</div>
<!-- fid_adlr: search - advanced - layout - END -->