1 <!-- JS imports, etc. -->
2 <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/simple.js[% ctx.cache_key %]"></script>
3 [% INCLUDE "opac/i18n_strings.tt2" %]
5 [% IF ctx.want_jquery || ctx.readonly %]
6 <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/common/build/js/jquery.min.js[% ctx.cache_key %]"></script>
7 [% END; # ctx.want_jquery %]
10 <script type="text/javascript">
11 $(document).ready(function() {
12 $('a').removeAttr('href');
13 $('a').click(function(event) { event.preventDefault(); });
14 $('button').prop('disabled', true);
15 $('button').click(function(event) { event.preventDefault(); });
16 $('input').prop('disabled', true);
17 $('input').click(function(event) { event.preventDefault(); });
18 $('select').prop('disabled', true);
19 $('select').click(function(event) { event.preventDefault(); });
20 $('textarea').prop('disabled', true);
21 $('textarea').click(function(event) { event.preventDefault(); });
26 [% IF ctx.get_org_setting(ctx.search_ou, 'opac.patron.custom_jquery') %]
27 [% custom_jquery = ctx.get_org_setting(ctx.search_ou, 'opac.patron.custom_jquery') %]
28 [% '<script>'; custom_jquery ; '</script>' %]
31 <!-- DOB validation for Patron Registration in OPAC -->
32 <script type="text/javascript">
33 function dobValidate(input) {
34 var validformat = /^(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/
36 if (input.value != '' && !validformat.test(input.value))
37 alert("[% l('You have entered an invalid date, or an improperly formatted date. Please enter Date of Birth in YYYY-MM-DD or YYYY/MM/DD format and try again.') %]")
40 if (returnval == false) input.select()
45 <!-- Password Visibility Checkbox -->
47 // Show the checkbox if JS is enabled
48 document.getElementById('password_visibility').style.display = 'block';
49 let checkbox = document.getElementById('password_visibility_checkbox');
50 let input = document.getElementById('password_field');
51 checkbox.addEventListener('change', () => {
54 input.setAttribute('aria-description', "[% l('Your password is visible!') %]");
57 input.type = 'password';
58 input.setAttribute('aria-description', "[% l('Your password is not visible.') %]");
62 // If the form is submitted revert the password field to a password input
63 let form = document.getElementById('opac-login-form');
64 form.addEventListener('submit', () => {
65 input.type = 'password';
69 [%- IF ctx.use_stripe %]
70 <script type="text/javascript">unHideMe($("pay_fines_now"));[%# the DOM is loaded now, right? %]</script>
73 [%- IF ctx.is_staff %]
74 <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/staff.js[% ctx.cache_key %]"></script>
75 [% IF ctx.page == 'record' %]
76 [% IF ctx.search_result_index >= 0 %]
78 rdetail_next_prev_actions(
79 "[% ctx.search_result_index %]",
80 "[% ctx.hit_count %]",
81 "[% ctx.prev_rec_url || '' %]",
82 "[% ctx.next_rec_url || '' %]",
83 "[% mkurl(ctx.first_search_record, {page => 0}) %]",
84 "[% mkurl(ctx.opac_root _ '/results', {find_last => 1, page => POSIX.floor(ctx.hit_count / ctx.page_size)}) %]",
85 "[% mkurl(ctx.opac_root _ '/results', {}, ['expand','cnoffset']) %]"
89 [% IF ctx.mfhd_summaries.size %]
91 window.mfhdDetails = [
92 [% FOR summary IN ctx.mfhd_summaries %]
93 [% IF summary.sre_id != -1 %]
95 'id' : '[% summary.sre_id %]',
96 'label' : '[% summary.location | replace("'", "\\'") %]',
97 'entryNum' : [% loop.index %],
98 'owning_lib' : '[% summary.owning_lib %]'
108 [%- IF ENV.OILS_NOVELIST_URL AND ctx.page == 'record';
109 url = ENV.OILS_NOVELIST_URL;
110 IF CGI.https; url = url.replace('^http:', 'https:'); END; %]
111 <script type='text/javascript' id='EIT' src='[% url %]'></script>
113 [%- IF ctx.page == 'record' AND ctx.google_books_preview %]
114 <script src='[% ctx.media_prefix %]/js/ui/default/opac/ac_google_books.js[% ctx.cache_key %]' async defer></script>
118 window.egStrings = [];
119 window.egStrings['CONFIRM_BASKET_EMPTY'] = "[% l('Remove all records from basket?') %]";
121 <script src='[% ctx.media_prefix %]/js/ui/default/opac/record_selectors.js[% ctx.cache_key %]' async defer></script>
123 <!-- Require some inputs and selections for browsers that don't support required form field element -->
124 [% IF ctx.page == 'place_hold' %]
125 <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/holds-validation.js[% ctx.cache_key %]">
129 [%- IF want_dojo; -%]
130 <script type="text/javascript">
132 locale: "[% ctx.locale | lower | replace('_', '-') %]",
137 <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/dojo/dojo.js?[% ctx.eg_cache_hash %]"></script>
139 [%- # So the following works in Mozilla and Chrome, but not in IE8.
140 # Seems like it /should/ work anywhere, though, and obviate the
141 # next three script tags: %]
142 <!-- <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/DojoSRF.js?[% ctx.eg_cache_hash %]"></script> -->
144 <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/opensrf/opensrf.js?[% ctx.eg_cache_hash %]"></script>
145 <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/opensrf/opensrf_xhr.js?[% ctx.eg_cache_hash %]"></script>
146 <script type="text/javascript" src="[% ctx.media_prefix %]/js/dojo/opensrf/JSON_v1.js?[% ctx.eg_cache_hash %]"></script>
148 [% IF use_autosuggest.enabled == "t" AND basic_search != "f"; %]
149 <script type="module">
150 import {ListBoxCombobox} from '[% ctx.media_prefix %]/js/ui/default/opac/autosuggest.module.js';
151 document.addEventListener('DOMContentLoaded', () => {new ListBoxCombobox('search_box').attach()}, {once: true})
153 [% END; # use_autosuggest %]
155 [% INCLUDE "opac/parts/acjs.tt2" IF ctx.page == 'record' %]
156 [% IF ctx.page == 'advanced' %]
157 <script type="text/javascript"
158 src="[% ctx.media_prefix %]/js/ui/default/opac/copyloc.js[% ctx.cache_key %]"></script>
161 [% IF ebook_api.enabled == 'true' %]
162 [% INCLUDE "opac/parts/ebook_api/base_js.tt2" %]
163 [% INCLUDE "opac/parts/ebook_api/login_js.tt2" IF (ctx.page == 'login') %]
165 <script src='[% ctx.media_prefix %]/js/ui/default/opac/test_notification.js'></script>
166 <!-- provide a JS friendly org unit hash -->
167 <script type="text/javascript">
169 [% FOR org_unit IN ctx.aou_list %]
170 [% org_unit.id %] : {
171 id : "[% org_unit.id %]",
172 name : "[% org_unit.name | replace('"', '\"') %]",
173 parent_ou : "[% org_unit.parent_ou %]",
174 depth : "[% org_unit.ou_type.depth %]",
175 can_have_vols : "[% org_unit.ou_type.can_have_vols %]"
176 }[%- ',' UNLESS loop.last -%]
181 <script type="text/javascript">if ($('client_tz_id')) { $('client_tz_id').value = OpenSRF.tz }</script>
182 [%- END; # want_dojo -%]
184 [%- IF ctx.max_cart_size; %]
185 <script type="text/javascript">var max_cart_size = [% ctx.max_cart_size %];</script>
187 <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/accordion.js[% ctx.cache_key %]"></script>
189 <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/common/build/js/glide/css/glide.core.min.css[% ctx.cache_key %]">
190 <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/common/build/js/glide/css/glide.theme.min.css[% ctx.cache_key %]">