Lines 37-66
Link Here
|
37 |
<div class="form-field form-field-select"> |
37 |
<div class="form-field form-field-select"> |
38 |
<label class="form-field-label" for="[% name | html %]">[% INCLUDE form_label label=name %]</label> |
38 |
<label class="form-field-label" for="[% name | html %]">[% INCLUDE form_label label=name %]</label> |
39 |
<select id="[% name | html %]_op" name="[% name | html %]_op"> |
39 |
<select id="[% name | html %]_op" name="[% name | html %]_op"> |
40 |
<option value="=">is</option> |
40 |
[% IF query.param(name _ '_op') == '=' || !query.param(name _ '_op') %] |
41 |
<option value="!=" >is not</option> |
41 |
<option value="=" selected="selected">is</option> |
|
|
42 |
<option value="!=" >is not</option> |
43 |
[% ELSE %] |
44 |
<option value="=">is</option> |
45 |
<option value="!=" selected="selected">is not</option> |
46 |
[% END %] |
42 |
</select> |
47 |
</select> |
43 |
<select id="[% name | html %]" name="[% name | html %]" multiple="multiple" size="[% options.size < 4 ? options.size + 1 : 4 | html %]"> |
48 |
<select id="[% name | html %]" name="[% name | html %]" multiple="multiple" size="[% options.size < 4 ? options.size + 1 : 4 | html %]"> |
44 |
<option value="" selected="selected"> |
49 |
[% IF query.param(name).size == 0 %] |
45 |
[% IF (empty_option) %][% INCLUDE form_label label=empty_option %][% ELSE %]<span>All</span>[% END %] |
50 |
<option value="" selected="selected"> |
46 |
</option> |
51 |
[% IF (empty_option) %][% INCLUDE form_label label=empty_option %][% ELSE %]<span>All</span>[% END %] |
|
|
52 |
</option> |
53 |
[% END %] |
47 |
[% FOREACH option IN options %] |
54 |
[% FOREACH option IN options %] |
|
|
55 |
[% IF query.param(name).grep(option.value).size %] |
56 |
<option value="[% option.value | html %]" selected="selected">[% option.label | html %]</option> |
57 |
[% ELSE %] |
48 |
<option value="[% option.value | html %]">[% option.label | html %]</option> |
58 |
<option value="[% option.value | html %]">[% option.label | html %]</option> |
|
|
59 |
[% END %] |
49 |
[% END %] |
60 |
[% END %] |
50 |
</select> |
61 |
</select> |
51 |
</div> |
62 |
</div> |
52 |
[% END %] |
63 |
[% END %] |
53 |
|
64 |
|
54 |
[% BLOCK form_field_select_option %] |
65 |
[% BLOCK form_field_select_option %] |
55 |
<option value="[% value | html %]">[% INCLUDE form_label label=value %]</option> |
66 |
[% IF query.param('f').$i == value || query.param('f') == value %] |
|
|
67 |
<option value="[% value | html %]" selected="selected">[% INCLUDE form_label label=value %]</option> |
68 |
[% ELSE %] |
69 |
<option value="[% value | html %]">[% INCLUDE form_label label=value %]</option> |
70 |
[% END %] |
56 |
[% END %] |
71 |
[% END %] |
57 |
|
72 |
|
58 |
[% BLOCK form_field_select_text %] |
73 |
[% BLOCK form_field_select_text %] |
|
|
74 |
[% SET i = loop.index %] |
59 |
<div class="form-field form-field-select-text"> |
75 |
<div class="form-field form-field-select-text"> |
60 |
<select name="c" class="form-field-conjunction" disabled="disabled"> |
76 |
[% IF loop.first || !query.param('f') %] |
61 |
<option value="and">AND</option> |
77 |
<select name="c" class="form-field-conjunction" disabled="disabled"> |
62 |
<option value="or">OR</option> |
78 |
<option value="and">AND</option> |
63 |
</select> |
79 |
<option value="or">OR</option> |
|
|
80 |
</select> |
81 |
[% ELSE %] |
82 |
[% SET j = i - 1 %] |
83 |
<select name="c" class="form-field-conjunction"> |
84 |
[% IF query.param('c').$j == 'and' %] |
85 |
<option value="and" selected="selected">AND</option> |
86 |
<option value="or">OR</option> |
87 |
[% ELSE %] |
88 |
<option value="and">AND</option> |
89 |
<option value="or" selected="selected">OR</option> |
90 |
[% END %] |
91 |
</select> |
92 |
[% END %] |
64 |
<select name="f" class="form-field-column"> |
93 |
<select name="f" class="form-field-column"> |
65 |
[% INCLUDE form_field_select_option value='barcode' %] |
94 |
[% INCLUDE form_field_select_option value='barcode' %] |
66 |
[% INCLUDE form_field_select_option value='itemcallnumber' %] |
95 |
[% INCLUDE form_field_select_option value='itemcallnumber' %] |
Lines 84-105
Link Here
|
84 |
</optgroup> |
113 |
</optgroup> |
85 |
[% END %] |
114 |
[% END %] |
86 |
</select> |
115 |
</select> |
87 |
[% IF params.exists('op') %] |
116 |
<select name="op" class="form-field-not"> |
88 |
<select name="op" class="form-field-not"> |
117 |
[% IF query.param('op').$i == 'not like' || query.param('op') == 'not like' %] |
89 |
<option value="like">is</option> |
118 |
<option value="like">is</option> |
90 |
[% IF params.op == 'not like' %] |
119 |
<option value="not like" selected="selected">is not</option> |
91 |
<option value="not like" selected="selected">is not</option> |
120 |
[% ELSE %] |
92 |
[% ELSE %] |
121 |
<option value="like">is</option> |
93 |
<option value="not like">is not</option> |
122 |
<option value="not like">is not</option> |
94 |
[% END %] |
123 |
[% END %] |
95 |
</select> |
124 |
</select> |
96 |
[% ELSE %] |
125 |
<input type="text" name="q" class="form-field-value" value="[% query.param('q').$i ? query.param('q').$i : query.param('q') | html %]"/> |
97 |
<select name="op" class="form-field-not"> |
|
|
98 |
<option value="like">is</option> |
99 |
<option value="not like">is not</option> |
100 |
</select> |
101 |
[% END %] |
102 |
<input type="text" name="q" class="form-field-value" value="" /> |
103 |
</div> |
126 |
</div> |
104 |
[% END %] |
127 |
[% END %] |
105 |
|
128 |
|
Lines 210-225
Link Here
|
210 |
[% END %] |
233 |
[% END %] |
211 |
<div class="form-field"> |
234 |
<div class="form-field"> |
212 |
<label class="form-field-label">Availability:</label> |
235 |
<label class="form-field-label">Availability:</label> |
213 |
<input type="radio" name="onloan" id="onloan_indifferent" value="" checked="checked"/> |
236 |
[% IF query.param('onloan') == '' %] |
|
|
237 |
<input type="radio" name="onloan" id="onloan_indifferent" value="" checked="checked"/> |
238 |
[% ELSE %] |
239 |
<input type="radio" name="onloan" id="onloan_indifferent" value=""/> |
240 |
[% END %] |
214 |
<label for="onloan_indifferent">Ignore</label> |
241 |
<label for="onloan_indifferent">Ignore</label> |
215 |
<input type="radio" name="onloan" id="onloan_yes" value="IS NOT NULL" /> |
242 |
[% IF query.param('onloan') == 'IS NOT NULL' %] |
|
|
243 |
<input type="radio" name="onloan" id="onloan_yes" value="IS NOT NULL" checked="checked"/> |
244 |
[% ELSE %] |
245 |
<input type="radio" name="onloan" id="onloan_yes" value="IS NOT NULL"/> |
246 |
[% END %] |
216 |
<label for="onloan_yes">Checked out</label> |
247 |
<label for="onloan_yes">Checked out</label> |
217 |
<input type="radio" name="onloan" id="onloan_no" value="IS NULL" /> |
248 |
[% IF query.param('onloan') == 'IS NULL' %] |
|
|
249 |
<input type="radio" name="onloan" id="onloan_no" value="IS NULL" checked="checked"/> |
250 |
[% ELSE %] |
251 |
<input type="radio" name="onloan" id="onloan_no" value="IS NULL"/> |
252 |
[% END %] |
218 |
<label for="onloan_no">Not checked out</label> |
253 |
<label for="onloan_no">Not checked out</label> |
219 |
</div> |
254 |
</div> |
220 |
</fieldset> |
255 |
</fieldset> |
221 |
<fieldset> |
256 |
<fieldset> |
222 |
[% INCLUDE form_field_select_text %] |
257 |
[% IF !query.param('f') %] |
|
|
258 |
[% INCLUDE form_field_select_text %] |
259 |
[% ELSE %] |
260 |
[% FOREACH field IN query.param('f') %] |
261 |
[% INCLUDE form_field_select_text %] |
262 |
[% END %] |
263 |
[% END %] |
223 |
<p class="hint">You can use the following wildcard characters: % _</p> |
264 |
<p class="hint">You can use the following wildcard characters: % _</p> |
224 |
<p class="hint">% matches any number of characters</p> |
265 |
<p class="hint">% matches any number of characters</p> |
225 |
<p class="hint">_ matches only a single character</p> |
266 |
<p class="hint">_ matches only a single character</p> |
Lines 227-238
Link Here
|
227 |
<fieldset> |
268 |
<fieldset> |
228 |
<div class="form-field"> |
269 |
<div class="form-field"> |
229 |
<label class="form-field-label" for="itemcallnumber_from">From call number:</label> |
270 |
<label class="form-field-label" for="itemcallnumber_from">From call number:</label> |
230 |
<input type="text" id="itemcallnumber_from" name="itemcallnumber_from" value="" /> |
271 |
<input type="text" id="itemcallnumber_from" name="itemcallnumber_from" value="[% query.param('itemcallnumber_from') | html %]" /> |
231 |
<span class="hint">(inclusive)</span> |
272 |
<span class="hint">(inclusive)</span> |
232 |
</div> |
273 |
</div> |
233 |
<div class="form-field"> |
274 |
<div class="form-field"> |
234 |
<label class="form-field-label" for="itemcallnumber_to">To call number:</label> |
275 |
<label class="form-field-label" for="itemcallnumber_to">To call number:</label> |
235 |
<input type="text" id="itemcallnumber_to" name="itemcallnumber_to" value="" /> |
276 |
<input type="text" id="itemcallnumber_to" name="itemcallnumber_to" value="[% query.param('itemcallnumber_to') | html %]" /> |
236 |
<span class="hint">(inclusive)</span> |
277 |
<span class="hint">(inclusive)</span> |
237 |
</div> |
278 |
</div> |
238 |
[% IF ( has_new_status ) %] |
279 |
[% IF ( has_new_status ) %] |
Lines 241-261
Link Here
|
241 |
<div class="form-field"> |
282 |
<div class="form-field"> |
242 |
<label class="form-field-label" for="issues_op">Checkout count:</label> |
283 |
<label class="form-field-label" for="issues_op">Checkout count:</label> |
243 |
<select id="issues_op" name="issues_op"> |
284 |
<select id="issues_op" name="issues_op"> |
244 |
<option value=">">></option> |
285 |
[% IF query.param('issues_op') == '>' %] |
245 |
<option value="<"><</option> |
286 |
<option value=">" selected="selected">></option> |
246 |
<option value="=">=</option> |
287 |
[% ELSE %] |
247 |
<option value="!=">!=</option> |
288 |
<option value=">">></option> |
|
|
289 |
[% END %] |
290 |
[% IF query.param('issues_op') == '<' %] |
291 |
<option value="<" selected="selected"><</option> |
292 |
[% ELSE %] |
293 |
<option value="<"><</option> |
294 |
[% END %] |
295 |
[% IF query.param('issues_op') == '=' %] |
296 |
<option value="=" selected="selected">=</option> |
297 |
[% ELSE %] |
298 |
<option value="=">=</option> |
299 |
[% END %] |
300 |
[% IF query.param('issues_op') == '!=' %] |
301 |
<option value="!=" selected="selected">!=</option> |
302 |
[% ELSE %] |
303 |
<option value="!=">!=</option> |
304 |
[% END %] |
248 |
</select> |
305 |
</select> |
249 |
<input type="text" name="issues" /> |
306 |
<input type="text" name="issues" value="[% query.param('issues') | html %]"/> |
250 |
</div> |
307 |
</div> |
251 |
<div class="form-field"> |
308 |
<div class="form-field"> |
252 |
<label class="form-field-label" for="datelastborrowed_op">Last checkout date:</label> |
309 |
<label class="form-field-label" for="datelastborrowed_op">Last checkout date:</label> |
253 |
<select id="datelastborrowed_op" name="datelastborrowed_op"> |
310 |
<select id="datelastborrowed_op" name="datelastborrowed_op"> |
254 |
<option value=">">After</option> |
311 |
[% IF query.param('datelastborrowed_op') == '>' %] |
255 |
<option value="<">Before</option> |
312 |
<option value=">" selected="selected">After</option> |
256 |
<option value="=">On</option> |
313 |
[% ELSE %] |
|
|
314 |
<option value=">">After</option> |
315 |
[% END %] |
316 |
[% IF query.param('datelastborrowed_op') == '<' %] |
317 |
<option value="<" selected="selected">Before</option> |
318 |
[% ELSE %] |
319 |
<option value="<">Before</option> |
320 |
[% END %] |
321 |
[% IF query.param('datelastborrowed_op') == '=' %] |
322 |
<option value="=" selected="selected">On</option> |
323 |
[% ELSE %] |
324 |
<option value="=">On</option> |
325 |
[% END %] |
257 |
</select> |
326 |
</select> |
258 |
<input type="text" name="datelastborrowed" /> |
327 |
<input type="text" name="datelastborrowed" value="[% query.param('datelastborrowed') | html %]"/> |
259 |
<span class="hint">ISO Format (YYYY-MM-DD)</span> |
328 |
<span class="hint">ISO Format (YYYY-MM-DD)</span> |
260 |
</div> |
329 |
</div> |
261 |
</fieldset> |
330 |
</fieldset> |
Lines 368-373
Link Here
|
368 |
} |
437 |
} |
369 |
} |
438 |
} |
370 |
|
439 |
|
|
|
440 |
function getParams($form) { |
441 |
var params = []; |
442 |
$form.find('select:not(:disabled) option:selected,input[type="text"]:not(:disabled),input[type="hidden"]:not(:disabled),input[type="radio"]:checked').each(function() { |
443 |
if ( $(this).prop('tagName').toLowerCase() == 'option' ) { |
444 |
var name = $(this).parents('select').first().attr('name'); |
445 |
var value = $(this).val(); |
446 |
params.push({ 'name': name, 'value': value }); |
447 |
} else { |
448 |
params.push({ 'name': $(this).attr('name'), 'value': $(this).val() }); |
449 |
} |
450 |
}); |
451 |
return params; |
452 |
} |
453 |
|
371 |
function submitForm($form) { |
454 |
function submitForm($form) { |
372 |
var tr = '' |
455 |
var tr = '' |
373 |
+ ' <tr>' |
456 |
+ ' <tr>' |
Lines 451-456
Link Here
|
451 |
$('#item-search-block').show(); |
534 |
$('#item-search-block').show(); |
452 |
}); |
535 |
}); |
453 |
|
536 |
|
|
|
537 |
var getShareableLink = $('<a>') |
538 |
.attr('href', '#') |
539 |
.html("<i class='fa fa-copy'></i> " + _("Copy shareable link") ) |
540 |
.addClass('btn btn-secondary') |
541 |
.on('click', function(e) { |
542 |
e.preventDefault(); |
543 |
var params = getParams( $('#itemsearchform') ); |
544 |
params = params.map(p => { |
545 |
if(p.name === 'format') { |
546 |
return { ...p, value: 'shareable' }; |
547 |
} |
548 |
return p; |
549 |
}) |
550 |
var url = window.location.origin + window.location.pathname + '?' + $.param(params); |
551 |
navigator.clipboard.writeText(url); |
552 |
$(this).tooltip({trigger: 'manual', title: 'Copied!'}).tooltip('show'); |
553 |
}); |
554 |
|
454 |
var results_heading = $('<div>').addClass('results-heading') |
555 |
var results_heading = $('<div>').addClass('results-heading') |
455 |
.append("<h1>" + _("Item search results") + "</h1>") |
556 |
.append("<h1>" + _("Item search results") + "</h1>") |
456 |
.append($('<p>').append(advSearchLink)) |
557 |
.append($('<p>').append(advSearchLink)) |
Lines 458-478
Link Here
|
458 |
.addClass("btn-toolbar") |
559 |
.addClass("btn-toolbar") |
459 |
.attr("id","toolbar") |
560 |
.attr("id","toolbar") |
460 |
.append(editSearchLink) |
561 |
.append(editSearchLink) |
|
|
562 |
.append(getShareableLink) |
461 |
); |
563 |
); |
462 |
$('#results-wrapper').empty() |
564 |
$('#results-wrapper').empty() |
463 |
.append(results_heading) |
565 |
.append(results_heading) |
464 |
.append(table); |
566 |
.append(table); |
465 |
|
567 |
|
466 |
var params = []; |
568 |
var params = getParams($form); |
467 |
$form.find('select:not(:disabled) option:selected,input[type="text"]:not(:disabled),input[type="hidden"]:not(:disabled),input[type="radio"]:checked').each(function() { |
|
|
468 |
if ( $(this).prop('tagName').toLowerCase() == 'option' ) { |
469 |
var name = $(this).parents('select').first().attr('name'); |
470 |
var value = $(this).val(); |
471 |
params.push({ 'name': name, 'value': value }); |
472 |
} else { |
473 |
params.push({ 'name': $(this).attr('name'), 'value': $(this).val() }); |
474 |
} |
475 |
}); |
476 |
|
569 |
|
477 |
$('#results').dataTable($.extend(true, {}, dataTablesDefaults, { |
570 |
$('#results').dataTable($.extend(true, {}, dataTablesDefaults, { |
478 |
"destroy": true, |
571 |
"destroy": true, |
479 |
- |
|
|