Bug 30952: Staff interface redesign (header)
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / catalogue / advsearch.tt
1 [% USE raw %]
2 [% USE Koha %]
3 [% USE Asset %]
4 [% USE Branches %]
5 [% SET footerjs = 1 %]
6 [% INCLUDE 'doc-head-open.inc' %]
7 <title>Advanced search &rsaquo; Catalog &rsaquo; Koha</title>
8 [% INCLUDE 'doc-head-close.inc' %]
9 </head>
10
11 [%- BLOCK language_limit_select -%]
12     <select name="limit" id="[% ln_id | html %]">
13         <option value="">No limit</option>
14         [% FOREACH ln_loo IN ln_loop %]
15             [% IF ( ln_loo.selected or selected == ln_loo.iso639_2_code ) %]
16                 <option value="[% ln_index | html %],rtrn:[% ln_loo.iso639_2_code | html %]" selected="selected">
17                     [% ln_loo.language_description | html %]
18                 </option>
19             [% ELSE %]
20                 <option value="[% ln_index | html %],rtrn:[% ln_loo.iso639_2_code | html %]">
21                     [% ln_loo.language_description | html %]
22                 </option>
23             [% END %]
24         [% END %]
25     </select>
26 [%- END -%]
27
28 <body id="catalog_advsearch" class="catalog">
29 [% WRAPPER 'header.inc' %]
30     [% INCLUDE 'adv-search.inc' %]
31 [% END %]
32
33 [% WRAPPER 'sub-header.inc' %]
34 <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
35     <ol>
36         <li>
37             <a href="/cgi-bin/koha/mainpage.pl"><i class="fa fa-home"></i></a>
38         </li>
39         <li>
40             <a href="#" aria-current="page">
41                 Advanced search
42             </a>
43         </li>
44     </ol>
45 </nav>
46 [% END %]
47
48 <div class="main container-fluid">
49     <div class="row">
50         <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
51
52             <form action="search.pl" method="get">
53                 <div id="advanced-search">
54                     <input type="hidden" name="advsearch" value="1"/>
55                     <h1>Advanced search</h1>
56                     <p>
57                         <a href="/cgi-bin/koha/catalogue/itemsearch.pl">Go to item search</a>
58                         [% IF searchid %]
59                             <div id="previous_search_link"></div>
60                         [% END %]
61                     </p>
62
63                     <!-- SEARCH BUTTONS -->
64                     <div id="toolbar" class="btn-toolbar">
65                         <fieldset class="action" id="submit1">
66                             <div class="btn-group">
67                                 <button class="btn btn-default" type="submit" accesskey="s"><i class="fa fa-search"></i> Search</button>
68                             </div>
69                             <div class="btn-group">
70                             [% IF ( expanded_options ) %]
71                                 <a href="/cgi-bin/koha/catalogue/search.pl?expanded_options=0" class="btn btn-link"><i class="fa fa-search-minus"></i> Fewer options</a>
72                             </div>
73                             [% ELSE %]
74                                 <a href="/cgi-bin/koha/catalogue/search.pl?expanded_options=1" class="btn btn-link"><i class="fa fa-search-plus"></i> More options</a>
75                             </div>
76                             [% END %]
77                             <div class="btn-group">
78                                 <a href="/cgi-bin/koha/catalogue/search.pl?do=Clear&expanded_options=[% expanded_options | uri %]" class="btn btn-link"><i class="fa fa-trash"></i> Clear fields</a>
79                             </div>
80                         </fieldset> <!-- /.action -->
81                     </div> <!-- /#toolbar -->
82                     <!-- /SEARCH BUTTONS -->
83
84                     [% IF ( outer_servers_loop ) %]
85                         <!-- DATABASES -->
86                         <fieldset>
87                             <legend>Select local databases</legend>
88                             [% FOREACH local_servers_loo IN local_servers_loop %]
89                                 [% IF ( local_servers_loo.checked ) %]
90                                     <input type="checkbox" id="[% local_servers_loo.id | html %]" name="[% local_servers_loo.name | html %]" checked="checked" value="[% local_servers_loo.value | html %]" />
91                                 [% ELSE %]
92                                     <input type="checkbox" id="[% local_servers_loo.id | html %]" name="[% local_servers_loo.name | html %]" value="[% local_servers_loo.value | html %]" />
93                                 [% END %]
94                                 <label for="[% local_servers_loo.id | html %]">
95                                     <img width="16" height="16" alt="[% local_servers_loo.id | html %]" src="[% themelang | html %]/img/[% local_servers_loo.icon | html %]" /> [% local_servers_loo.label | html %]
96                                 </label>
97                             [% END # /FOREACH local_servers_loo %]
98                         </fieldset>
99                         <!-- /DATABASES -->
100                     [% END # /IF ( outer_servers_loop ) %]
101
102                     [% IF ( outer_servers_loop ) %]
103                         <!-- REMOTE DATABASES -->
104                         <fieldset id="databases">
105                             <legend>Select remote databases</legend>
106                             [% FOREACH outer_servers_loo IN outer_servers_loop %]
107                                 [% IF ( outer_servers_loo.checked ) %]
108                                     <input type="checkbox" id="[% outer_servers_loo.id | html %]" name="[% outer_servers_loo.name | html %]" checked="checked" value="[% outer_servers_loo.value | html %]" />
109                                 [% ELSE %]
110                                     <input type="checkbox" id="[% outer_servers_loo.id | html %]" name="[% outer_servers_loo.name | html %]" value="[% outer_servers_loo.value | html %]" />
111                                 [% END %]
112                                 <label for="[% outer_servers_loo.id | html %]">
113                                     <img alt="[% outer_servers_loo.id | html %]" src="[% themelang | html %]/images/[% outer_servers_loo.icon | html %]" />[% outer_servers_loo.label | html %]
114                                 </label>
115                             [% END # /FOREACH outer_servers_loo %]
116                         </fieldset> <!-- /#databases -->
117                         <!-- /REMOTE DATABASES -->
118                     [% END %]
119
120                     <!-- BOOLEAN SEARCH OPTIONS -->
121                     <fieldset id="searchterms">
122                         <legend>Search for </legend>
123                         [% FOREACH query IN queries %]
124                             [% IF ( expanded_options ) %]
125                                 [% IF loop.first %]
126                                     <div class="search-term-row" style="text-indent: 4.25em;">
127                                 [% ELSE %]
128                                     <div class="search-term-row">
129                                         [% SET opindex = loop.index - 1 %]
130                                         <select name="op">
131                                             [% IF operators.$opindex == 'OR' %]
132                                                 <option value="AND">and</option>
133                                                 <option value="OR" selected="selected">or</option>
134                                                 <option value="NOT">not</option>
135                                             [% ELSIF operators.$opindex == 'NOT' %]
136                                                 <option value="AND">and</option>
137                                                 <option value="OR">or</option>
138                                                 <option value="NOT" selected="selected">not</option>
139                                             [% ELSE %]
140                                                 <option value="AND" selected="selected">and</option>
141                                                 <option value="OR">or</option>
142                                                 <option value="NOT">not</option>
143                                             [% END %]
144                                         </select>
145                                 [% END # /IF loop.first %]
146                             [% ELSE %]
147                                 <div>
148                             [% END # /IF ( expanded_options ) %]
149
150                             [% SET preselect = 'ms_' _ indexes.${loop.index}.replace(',','comma') %]
151                             [% INCLUDE 'search_indexes.inc' %]
152                             <input type="text" size="30" name="q" title="Enter search terms" value="[% query | html %]" />
153                             [% IF ( expanded_options ) %]
154                                 [% IF ( loop.last ) %]
155                                     <a href="JavaScript:add_field();" id="ButtonPlus" title="Add another field">[+]</a>
156                                 [% END %]
157                                 [% IF ( loop.first ) %]
158                                     <label for="scan">Scan indexes:</label> <input type="checkbox" name="scan" id="scan" value="1" />
159                                 [% END %]
160                             [% END # /IF ( expanded_options ) %]
161                             </div> <!-- /.search-term-row -->
162                         [% END # /FOREACH query IN queries %]
163
164                         [% IF Koha.Preference('SearchEngine') == 'Elasticsearch' %]
165                             [% IF ( expanded_options ) %]
166                                 <p>
167                                     [% IF Koha.Preference('ElasticsearchMARCFormat') == 'ARRAY' %]
168                                         <label><input type="checkbox" name="whole_record" /> Search entire MARC record</label>
169                                     [% END %]
170                                     <span id="weight_search">
171                                         <label><input type="checkbox" name="weight_search" checked="checked" /> Apply field weights to search</label>
172                                     </span>
173                                 <p>
174                             [% ELSE %]
175                                 <input type="hidden" name="weight_search" value="1" />
176                             [% END # /IF ( expanded_options ) %]
177                         [% END #/IF Koha.Preference('SearchEngine') %]
178                     </fieldset> <!-- /#searchterms -->
179                     <!-- /BOOLEAN SEARCH OPTIONS -->
180                 </div> <!-- /#advanced-search -->
181
182                 <!-- MC-TYPE LIMITS -->
183                 <div id="advsearches" class="toptabs">
184                     <ul class="nav nav-tabs" role="tablist">
185                         [% FOREACH advsearchloo IN advancedsearchesloop %]
186                             <li role="presentation" id="advsearch-tab-[% advsearchloo.advanced_search_type | html %]">
187                                 <a href="#advsearch-[% advsearchloo.advanced_search_type | uri %]" aria-controls="advsearch-[% advsearchloo.advanced_search_type | uri %]" role="tab" data-toggle="tab">
188                                     [% IF ( advsearchloo.advanced_search_type == 'itemtypes' ) %]<span>Item type</span>
189                                     [% ELSIF ( advsearchloo.advanced_search_type == 'ccode' ) %]<span>Collection</span>
190                                     [% ELSIF ( advsearchloo.advanced_search_type == 'loc' ) %]<span>Shelving location</span>
191                                     [% ELSE %]<span>Something else</span>
192                                     [% END %]
193                                 </a>
194                             </li>
195                         [% END # /FOREACH advsearchloo %]
196                     </ul>
197
198                     <div class="tab-content">
199                         [% FOREACH advsearchloo IN advancedsearchesloop %]
200                             <div id="advsearch-[% advsearchloo.advanced_search_type | html %]"  role="tabpanel" class="tab-pane advsearch">
201                                 <h4>Limit to any of the following:</h4>
202                                 <table>
203                                     <tr>
204                                         [% FOREACH itemtypeloo IN advsearchloo.code_loop %]
205                                             <td>
206                                                 [% SET limit_key = 'mc-' _ itemtypeloo.ccl _ "_" _ itemtypeloo.code %]
207                                                 [% IF limits.$limit_key.defined %]
208                                                     [% limits.delete( limit_key ) %]
209                                                     <input type="checkbox" checked="checked" id="[% itemtypeloo.ccl FILTER remove(',') | html %]-[% itemtypeloo.number | html %]" name="limit" value="mc-[% itemtypeloo.ccl | html %]:[% itemtypeloo.code | html %]"/>
210                                                 [% ELSE %]
211                                                     <input type="checkbox" id="[% itemtypeloo.ccl FILTER remove(',') | html %]-[% itemtypeloo.number | html %]" name="limit" value="mc-[% itemtypeloo.ccl | html %]:[% itemtypeloo.code | html %]"/>
212                                                 [% END # /IF limits.$limit_key.defined %]
213                                                 <label for="[% itemtypeloo.ccl FILTER remove(',') | html %]-[% itemtypeloo.number | html %]">
214                                                     [% UNLESS ( Koha.Preference('OpacNoItemTypeImages') ) %]
215                                                         [% IF ( itemtypeloo.imageurl ) %]
216                                                             <img src="[% itemtypeloo.imageurl | html %]" alt="[% itemtypeloo.description | html %]" />
217                                                         [% END %]
218                                                             &nbsp;
219                                                     [% END %]
220                                                     [% itemtypeloo.description | html %]
221                                                 </label>
222                                             </td>
223                                             [% IF ( loop.last ) %]
224                                                 </tr>
225                                             [% ELSE %]
226                                                 [% UNLESS ( loop.count % 5 ) %]
227                                                     </tr>
228                                                     <tr>
229                                                 [% END %]
230                                             [% END # /IF ( loop.last ) %]
231                                         [% END # /FOREACH itemtypeloo %]
232                                 </table>
233                             </div> <!-- /#advsearch-[% advsearchloo.advanced_search_type | html %] -->
234                         [% END # /FOREACH advsearchloo %]
235                     </div> <!-- /.tab-content -->
236                 </div> <!-- /#advsearches -->
237                 <!-- /MC-TYPE LIMIT -->
238
239                 [% IF ( expanded_options ) %]
240                     <!-- BASIC LIMITS -->
241                     <fieldset id="basiclimits">
242                         <legend>Limits</legend>
243                         <fieldset id="pubrange">
244                             <!-- PUB / COPY YEAR LIMIT --><!-- FIXME: add publication,copyright,acquisition options -->
245                             <p>
246                                 <label for="limit-yr">Year: </label>
247                                 [% SET year_limit_key = 'yr,st-numeric' %]
248                                 <input type="text" size="15" name="limit-yr" id="limit-yr" value="[% limits.$year_limit_key.0 | html %]"/>&nbsp;&nbsp;(format: yyyy-yyyy)
249                                 [% IF limits.$year_limit_key.defined %]
250                                     [% limits.delete(year_limit_key) %]
251                                 [% END %]
252                             </p>
253                             <!-- /PUB / COPY YEAR LIMIT -->
254                         </fieldset> <!-- /#pubrange -->
255
256                         <fieldset id="language">
257                             <!-- LANGUAGE LIMIT -->
258                             <p>
259                                 <label for="language-limit">Language: </label>
260                                 [% PROCESS language_limit_select ln_loop=search_languages_loop ln_id='language-limit' ln_index='ln' selected = limits.${'ln,rtrn'}.0 %]
261                                 [% limits.delete( 'ln,rtrn' ) %]
262                                 <label for="language-original-limit">Language of original: </label>
263                                 [% PROCESS language_limit_select ln_loop=search_languages_loop ln_id='language-original-limit' ln_index='language-original' selected = limits.${'language-original,rtrn'}.0 %]
264                                 [% limits.delete( 'language-original,rtrn' ) %]
265                             </p>
266                             <!-- /LANGUAGE LIMIT -->
267                         </fieldset> <!-- /#language -->
268                     </fieldset> <!-- /#basiclimits -->
269                     <!-- /BASIC LIMITS -->
270                 [% END # /IF ( expanded_options ) %]
271
272                 [% IF ( UNIMARC ) %]
273                     [% INCLUDE 'subtypes_unimarc.inc' %]
274                 [% ELSE %]
275                     [% PROCESS 'subtype_limits.inc' %]
276                     <!-- SUBTYPE LIMITS -->
277                     <fieldset id="subtype">
278                         <legend>Subtype limits</legend><p>
279                         [% PROCESS subtype_dropdowns %]
280                         <fieldset id="current_subtype_limits">
281                             <legend>Current subtype limits</legend>
282                             [% FOREACH subtype IN ['aud','fic','bio','ctype','l-format'] %]
283                                 [% FOREACH limit IN limits.$subtype %]
284                                     <span>
285                                         <input name="limit" value="[% subtype | html %]:[% limit | html %]" type="hidden">
286                                         <label for="subtype_limit_[% loop.index() | html %]">[%# PROCESS subtype_limits_description subtype_limit = subtype _':' _ limit #%]</label>
287                                         <input type="checkbox" class="toggle_limit" name="subtype_limit_[% loop.index() | html %]" checked="checked">
288                                     </span>
289                                 [% END %]
290                                 [% limits.delete( subtype ) %]
291                             [% END # /FOREACH subtype %]
292                         </fieldset> <!-- #current_subtype_limits -->
293                     </fieldset> <!-- /#subtype -->
294                 [% END # /IF ( UNIMARC ) %]
295
296                 <!-- AVAILABILITY LIMITS -->
297                 <fieldset id="availability">
298                     <legend>Location and availability</legend>
299                     <fieldset id="currently-avail">
300                         [% IF limit_available %]
301                             <p><label for="available-items">Only items currently available:</label> <input type="checkbox" id="available-items" name="limit" value="available"  checked="checked" /></p>
302                         [% ELSE %]
303                             <p><label for="available-items">Only items currently available:</label> <input type="checkbox" id="available-items" name="limit" value="available" /></p>
304                         [% END %]
305                     </fieldset> <!-- /#currently-avail -->
306
307                     <fieldset id="select-libs">
308                         <p>
309                             <label for="branchloop">Individual libraries:</label>
310                             <select name="limit" id="branchloop">
311                                 <option value="">All libraries</option>
312                                 [%# FIXME Should not we filter the libraries displayed? %]
313                                 [% PROCESS options_for_libraries prefix => "branch:" libraries => Branches.all( unfiltered => 1, do_not_select_my_library => 1, selected => limits.branch.0 ) %]
314                                 [% limits.delete('branch') %]
315                             </select> <!-- /#branchloop -->
316                         </p>
317                         [% IF search_groups %]
318                             <p>OR</p>
319                             <p>
320                                 <label for="categoryloop">Groups of libraries: </label>
321                                 <select name="limit" id="categoryloop">
322                                     <option value=""> -- none -- </option>
323                                     [% FOREACH sg IN search_groups %]
324                                         [% UNLESS sg.branchcode %]
325                                             [% IF limits.multibranchlimit.0 == sg.id %]
326                                                 <option selected="selected" value="multibranchlimit:[% sg.id | html %]">[% sg.title | html %]</option>
327                                             [% ELSE %]
328                                                 <option value="multibranchlimit:[% sg.id | html %]">[% sg.title | html %]</option>
329                                             [% END %]
330                                         [% END %]
331                                     [% END %]
332                                     [% limits.delete('multibranchlimit') %]
333                                 </select> <!-- /#categoryloop -->
334                             </p>
335                         [% END # /search_groups %]
336                     </fieldset> <!-- /#select-libs -->
337                 </fieldset> <!-- /#availability -->
338                 <!-- /AVAILABILITY LIMITS -->
339
340                 <!-- OTHER LIMITS (facets, etc.) -->
341                 [% IF limits.size %]
342                     <fieldset id="">
343                         <legend>Other limits</legend>
344                         <p>
345                             [% FOREACH key IN limits.keys %]
346                                 [% FOREACH limit IN limits.$key %]
347                                     <span>
348                                         <input type="hidden" name="limit" value="[% key | html %]:[% limit | html %]">
349                                         <label for="other_[% key _ loop.index() | html %]">[% key | html %]:[% limit | html %]</label>
350                                         <input type="checkbox" class="toggle_limit" name="other_[% key _ loop.index() | html %]" checked="checked">
351                                     </span>
352                                 [% END %]
353                             [% END %]
354                         </p>
355                     </fieldset>
356                 [% END # /IF limits.size %]
357                 <!-- /OTHER LIMITS (facets, etc.) -->
358
359                 <!-- RANK LIMITS -->
360                 <fieldset id="sortby">
361                     <legend>Sorting</legend>
362                     <p>
363                         <label for="sort_by">Sort by: </label>
364                         <select id="sort_by" name="sort_by">
365                             [% INCLUDE 'resort_form.inc' sort_by = sort %]
366                         </select>
367                     </p>
368                 </fieldset> <!-- /#sortby -->
369                 <!-- /RANK LIMITS -->
370             </form>
371         </div>
372     </div>
373
374 [% MACRO jsinclude BLOCK %]
375     [% Asset.js("lib/hc-sticky.js") | $raw %]
376     [% Asset.js("js/browser.js") | $raw %]
377     <script>
378         /**
379          *  Function add_field();
380          *  This function allows to display a new field to search.
381          */
382         function add_field() {
383             var ButtonPlus = document.getElementById("ButtonPlus");
384             var line = ButtonPlus.parentNode;
385             var dad  = line.parentNode;
386             dad.appendChild(line.cloneNode(true));
387             line.removeChild(ButtonPlus);
388         }
389
390         var Sticky;
391         $(document).ready(function() {
392             $("input[name=q]:eq(0)").focus();
393             if( $(".tab-pane.active").length < 1 ){
394                 $("#advsearches a:first").tab("show");
395             }
396             Sticky = $("#toolbar");
397             Sticky.hcSticky({
398                 stickTo: ".main",
399                 stickyClass: "floating"
400             });
401             [% IF search_groups %]
402                 function branch_limit() {
403                     if( $("#branchloop").val() != "" ){
404                         $("#categoryloop").val("").prop('disabled',true);
405                     } else {
406                         $("#categoryloop").prop('disabled',false);
407                     }
408                     if ( $("#categoryloop").val() != "" ){
409                         $("#branchloop").val("").prop('disabled',true);
410                     } else {
411                         $("#branchloop").prop('disabled',false);
412                     }
413                 }
414                 branch_limit();
415                 $("#branchloop,#categoryloop").on("change",function(){
416                     branch_limit();
417                 });
418             [% END %]
419
420             if( $("#current_subtype_limits input").length == 0 ){
421                 $("#current_subtype_limits").hide();
422             }
423             $(".toggle_limit").on('click',function(){
424                 $(this).siblings("[type='hidden']").prop('disabled', !this.checked);
425             });
426
427             [% IF searchid %]
428                 browser = KOHA.browser('[% searchid | html %]');
429                 browser.show_back_link();
430             [% END %]
431
432         });
433     </script>
434 [% END %]
435
436 [% INCLUDE 'intranet-bottom.inc' %]