]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/templates-bootstrap/opac/parts/advanced/global_row.tt2
LP#1778972: Tweaks and fixes to Bootstrap 4 template
[Evergreen.git] / Open-ILS / src / templates-bootstrap / opac / parts / advanced / global_row.tt2
1 [%
2     contains_options = [
3         {value => 'contains', label => l('Contains')},
4         {value => 'nocontains', label => l('Does not contain')},
5         {value => 'phrase', label => l('Contains phrase')},
6         {value => 'exact', label => l('Matches exactly')},
7         {value => 'starts', label => l('Starts with')}
8     ];
9     contains = CGI.param('contains');
10     queries = CGI.param('query');
11     bools = CGI.param('bool');
12     qtypes = CGI.param('qtype');
13     rowcount = 2;
14
15     # scalar.merge treats the scalar as a 1-item array
16     WHILE queries.size < rowcount; queries = queries.merge(['']); END;
17     WHILE bools.size < rowcount; bools = bools.merge(['and']); END;
18     WHILE qtypes.size < rowcount; qtypes = qtypes.merge(search.default_qtypes.${qtypes.size} ? [search.default_qtypes.${qtypes.size}] : ['keyword']); END;
19
20     FOR qtype IN qtypes;
21         c = contains.shift;
22         b = bools.shift;
23         q = queries.shift; %]
24
25 <!-- tag the second row so the bool column won't be hidden -->
26 <tr[% IF loop.index == 1 %] id="adv_global_row"[% END %]>
27
28     <td class="td-left py-3">
29         <div class="row">
30             <div class="col-2">
31             <!-- bool selector.  hide for first row.  safe to ignore first bool value in form submission -->
32                 <select aria-label="[% l('Boolean search operator') %]"
33                 name='bool' [% IF loop.first %] class='d-none' [% ELSE %] class='form-control' [% END %]>
34                     <option value='and' [% b == 'and' ? 'selected="selected"' : '' %]>[% l('And') %]</option>
35                     <option value='or' [% b == 'or' ? 'selected="selected"' : '' %]>[% l('Or') %]</option>
36                 </select>
37             </div>
38             <div class="col-3">
39                 <!-- keyword, subject, etc. selector -->
40                 <span>
41                     [% INCLUDE "opac/parts/qtype_selector.tt2"
42                         query_type=qtype %]
43                 </span>
44             </div>
45             <div class="col-3">
46                 <select class='form-control w-100' aria-label="[% l('Search phrase match strictness') %]"
47                 name='contains'>
48                 [% FOR o IN contains_options; -%]
49                 <option value="[% o.value %]" [% c == o.value ? ' selected="selected"' : '' %]>[% o.label %]</option>
50                 [% END %]
51                 </select>
52             </div>
53             <div class="col-4">
54                 <input class="form-control" aria-label="[% l('Search term') %]"
55                 type='text' size='18' name='query' value="[% q | html %]"  [% IF loop.index == 0 %] autofocus [% END %] />
56             </div>
57         </div>
58     </td>
59     <td class="px-2">
60         <a href="javascript:;" class="btn btn-remove btn-sm" aria-label="Remove This Row"
61             title="[% l('Remove row') %]"
62             aria-label="[% l('Remove row') %]"
63             onclick='return killRowIfAtLeast(2, this);'>
64                <i class="fas fa-times" aria-hidden="true"></i>
65             </a></td>
66 </tr>
67 [% END %]