|
Lines 74-344
Link Here
|
| 74 |
[% Asset.js('js/i18n.js') | $raw %] |
74 |
[% Asset.js('js/i18n.js') | $raw %] |
| 75 |
</head> |
75 |
</head> |
| 76 |
<body id="sci_main" class="sci"> |
76 |
<body id="sci_main" class="sci"> |
| 77 |
[% INCLUDE 'masthead-sci.inc' %] |
77 |
<div id="wrapper"> |
| 78 |
|
78 |
[% INCLUDE 'masthead-sci.inc' %] |
| 79 |
<main class="main"> |
79 |
|
| 80 |
<div class="container-fluid"> |
80 |
<main class="main"> |
| 81 |
<div class="row"> |
81 |
<div class="container-fluid"> |
| 82 |
<div class="col order-first order-md-first order-lg-2"> |
82 |
<div class="row"> |
| 83 |
<div id="masthead"> |
83 |
<div class="col order-first order-md-first order-lg-2"> |
| 84 |
<h1>[% LibraryName | html %] Self check-in</h1> |
84 |
<div id="masthead"> |
| 85 |
</div> |
85 |
<h1>[% LibraryName | html %] Self check-in</h1> |
| 86 |
|
|
|
| 87 |
[% IF ( nopermission ) %] |
| 88 |
[%# This is what is displayed if user doesn't have permission %] |
| 89 |
<div class="alert alert-warning"> |
| 90 |
<h2>Access denied</h2> |
| 91 |
<p>Sorry, this self check-in station has lost authentication. Please contact the administrator to resolve this problem.</p> |
| 92 |
</div> |
| 93 |
[% ELSIF ( different_ip ) %] |
| 94 |
[%# This is what is displayed if user doesn't have permission %] |
| 95 |
<div class="alert alert-warning"> |
| 96 |
<h2>Session lost</h2> |
| 97 |
<p>You are accessing self check-in from a different IP address! Please log in again.</p> |
| 98 |
</div> |
86 |
</div> |
| 99 |
[% ELSIF ( checkins ) %] |
87 |
|
| 100 |
[%# We have results from a check-in attempt %] |
88 |
[% IF ( nopermission ) %] |
| 101 |
<div id="checkins" class="sci_results_list"> |
89 |
[%# This is what is displayed if user doesn't have permission %] |
| 102 |
[% IF ( success && success.size > 0 || errors && errors.size > 0 ) %] |
90 |
<div class="alert alert-warning"> |
| 103 |
<table id="sci_bcheckins_table" class="table table-bordered table-striped dataTable no-footer"> |
91 |
<h2>Access denied</h2> |
| 104 |
<caption><h2>Results</h2></caption> |
92 |
<p>Sorry, this self check-in station has lost authentication. Please contact the administrator to resolve this problem.</p> |
| 105 |
<thead> |
93 |
</div> |
| 106 |
<th>Barcode</th> |
94 |
[% ELSIF ( different_ip ) %] |
| 107 |
<th>Status</th> |
95 |
[%# This is what is displayed if user doesn't have permission %] |
| 108 |
</thead> |
96 |
<div class="alert alert-warning"> |
| 109 |
<tbody> |
97 |
<h2>Session lost</h2> |
| 110 |
[% FOREACH success_line IN success %] |
98 |
<p>You are accessing self check-in from a different IP address! Please log in again.</p> |
| 111 |
<tr> |
99 |
</div> |
| 112 |
<td>[% success_line.barcode | html %]</td> |
100 |
[% ELSIF ( checkins ) %] |
| 113 |
<td>Checked in</td> |
101 |
[%# We have results from a check-in attempt %] |
| 114 |
</tr> |
102 |
<div id="checkins" class="sci_results_list"> |
| 115 |
[% END %] |
103 |
[% IF ( success && success.size > 0 || errors && errors.size > 0 ) %] |
| 116 |
[% FOREACH error IN errors %] |
104 |
<table id="sci_bcheckins_table" class="table table-bordered table-striped dataTable no-footer"> |
| 117 |
<tr> |
105 |
<caption><h2>Results</h2></caption> |
| 118 |
<td>[% error.barcode | html %]</td> |
106 |
<thead> |
| 119 |
<td>Not checked in [% PROCESS error_message messages=error.messages %]</td> |
107 |
<th>Barcode</th> |
| 120 |
</tr> |
108 |
<th>Status</th> |
| 121 |
[% END %] |
109 |
</thead> |
| 122 |
</tbody> |
110 |
<tbody> |
| 123 |
</table> |
111 |
[% FOREACH success_line IN success %] |
| 124 |
<div> |
112 |
<tr> |
| 125 |
<a href="/cgi-bin/koha/sci/sci-main.pl" id="sci_finish_button" class="btn btn-primary" role="button"><i class="fa fa-check" aria-hidden="true"></i> Finish</a> |
113 |
<td>[% success_line.barcode | html %]</td> |
| 126 |
</div> |
114 |
<td>Checked in</td> |
| 127 |
[% ELSE %] |
115 |
</tr> |
| 128 |
<div class="alert alert-warning"> |
116 |
[% END %] |
| 129 |
<p>Your request included no check-ins.</p> |
117 |
[% FOREACH error IN errors %] |
| 130 |
</div> |
118 |
<tr> |
| 131 |
[% END %] |
119 |
<td>[% error.barcode | html %]</td> |
| 132 |
</div> |
120 |
<td>Not checked in [% PROCESS error_message messages=error.messages %]</td> |
| 133 |
[% ELSE %] |
121 |
</tr> |
| 134 |
[%# Prompt for barcodes %] |
122 |
[% END %] |
| 135 |
<div id="new_checkins" class="sci_entry"> |
123 |
</tbody> |
| 136 |
<form id="scan_form" name="scan_form" method="post" action="/cgi-bin/koha/sci/sci-main.pl"> |
124 |
</table> |
| 137 |
[% INCLUDE 'csrf-token.inc' %] |
125 |
<div> |
| 138 |
<legend class="sr-only">Scan</legend> |
126 |
<a href="/cgi-bin/koha/sci/sci-main.pl" id="sci_finish_button" class="btn btn-primary" role="button"><i class="fa fa-check" aria-hidden="true"></i> Finish</a> |
| 139 |
<div class="row"> |
|
|
| 140 |
<div class="col-auto"> |
| 141 |
<label for="barcode_input">Scan the item or enter its barcode:</label> |
| 142 |
</div> |
| 143 |
<div class="col-4"> |
| 144 |
<input id="barcode_input" name="barcode_input" size="20" type="text" class="focus form-control" autocomplete="off" /> |
| 145 |
</div> |
127 |
</div> |
| 146 |
<div class="col-auto"> |
128 |
[% ELSE %] |
| 147 |
<button id="sci_append_button" type="submit" class="btn btn-primary"> Submit </button> |
129 |
<div class="alert alert-warning"> |
|
|
130 |
<p>Your request included no check-ins.</p> |
| 148 |
</div> |
131 |
</div> |
| 149 |
</div> |
132 |
[% END %] |
| 150 |
<!-- /.row --> |
133 |
</div> |
| 151 |
<div class="row"> |
134 |
[% ELSE %] |
| 152 |
<div class="col"> |
135 |
[%# Prompt for barcodes %] |
| 153 |
<div class="sci_input_append"> |
136 |
<div id="new_checkins" class="sci_entry"> |
| 154 |
<table id="sci_barcodes_table" class="table table-bordered table-striped dataTable no-footer" style="display: none;"> |
137 |
<form id="scan_form" name="scan_form" method="post" action="/cgi-bin/koha/sci/sci-main.pl"> |
| 155 |
<caption class="sr-only">Barcodes</caption> |
138 |
[% INCLUDE 'csrf-token.inc' %] |
| 156 |
<thead> |
139 |
<legend class="sr-only">Scan</legend> |
| 157 |
<th class="barcodes_column">Barcode</th> |
140 |
<div class="row"> |
| 158 |
</thead> |
141 |
<div class="col-auto"> |
| 159 |
<tbody> </tbody> |
142 |
<label for="barcode_input">Scan the item or enter its barcode:</label> |
| 160 |
</table> |
143 |
</div> |
| 161 |
<!-- /#sci_barcodes_table --> |
144 |
<div class="col-4"> |
|
|
145 |
<input id="barcode_input" name="barcode_input" size="20" type="text" class="focus form-control" autocomplete="off" /> |
| 162 |
</div> |
146 |
</div> |
| 163 |
<!-- .sci_input_append --> |
147 |
<div class="col-auto"> |
| 164 |
<input type="hidden" name="op" value="cud-check_in" /> |
148 |
<button id="sci_append_button" type="submit" class="btn btn-primary"> Submit </button> |
| 165 |
<div id="button_bar"> |
|
|
| 166 |
<button id="sci_checkin_button" type="submit" class="btn btn-primary" style="display: none;"> <i class="fa fa-check-square" aria-hidden="true"></i> <span>Check in</span> </button> |
| 167 |
<a href="/cgi-bin/koha/sci/sci-main.pl" class="btn btn-danger" role="button" style="display: none;" id="sci_refresh_button"> <i class="fa fa-times" aria-hidden="true"></i> <span>Cancel</span> </a> |
| 168 |
</div> |
149 |
</div> |
| 169 |
<!-- /#button_bar --> |
|
|
| 170 |
</div> |
150 |
</div> |
| 171 |
<!-- /.col --> |
151 |
<!-- /.row --> |
| 172 |
</div> |
152 |
<div class="row"> |
| 173 |
<!-- /.row --> |
153 |
<div class="col"> |
| 174 |
</form> |
154 |
<div class="sci_input_append"> |
| 175 |
<!-- /#scan_form --> |
155 |
<table id="sci_barcodes_table" class="table table-bordered table-striped dataTable no-footer" style="display: none;"> |
| 176 |
</div> |
156 |
<caption class="sr-only">Barcodes</caption> |
| 177 |
<!-- / #new_checkins --> |
157 |
<thead> |
| 178 |
[% END # /IF ( nopermission ) %] |
158 |
<th class="barcodes_column">Barcode</th> |
| 179 |
|
159 |
</thead> |
| 180 |
[% IF ( SelfCheckInMainUserBlock ) %] |
160 |
<tbody> </tbody> |
| 181 |
<div id="scimainuserblock"> [% PROCESS koha_news_block news => SelfCheckInMainUserBlock %] </div> |
161 |
</table> |
| 182 |
[% END %] |
162 |
<!-- /#sci_barcodes_table --> |
|
|
163 |
</div> |
| 164 |
<!-- .sci_input_append --> |
| 165 |
<input type="hidden" name="op" value="cud-check_in" /> |
| 166 |
<div id="button_bar"> |
| 167 |
<button id="sci_checkin_button" type="submit" class="btn btn-primary" style="display: none;"> <i class="fa fa-check-square" aria-hidden="true"></i> <span>Check in</span> </button> |
| 168 |
<a href="/cgi-bin/koha/sci/sci-main.pl" class="btn btn-danger" role="button" style="display: none;" id="sci_refresh_button"> <i class="fa fa-times" aria-hidden="true"></i> <span>Cancel</span> </a> |
| 169 |
</div> |
| 170 |
<!-- /#button_bar --> |
| 171 |
</div> |
| 172 |
<!-- /.col --> |
| 173 |
</div> |
| 174 |
<!-- /.row --> |
| 175 |
</form> |
| 176 |
<!-- /#scan_form --> |
| 177 |
</div> |
| 178 |
<!-- / #new_checkins --> |
| 179 |
[% END # /IF ( nopermission ) %] |
| 180 |
|
| 181 |
[% IF ( SelfCheckInMainUserBlock ) %] |
| 182 |
<div id="scimainuserblock"> [% PROCESS koha_news_block news => SelfCheckInMainUserBlock %] </div> |
| 183 |
[% END %] |
| 184 |
</div> |
| 185 |
<!-- / #masthead --> |
| 183 |
</div> |
186 |
</div> |
| 184 |
<!-- / #masthead --> |
187 |
<!-- / .row --> |
| 185 |
</div> |
188 |
</div> |
| 186 |
<!-- / .row --> |
189 |
<!-- / .container-fluid --> |
| 187 |
</div> |
190 |
</main> |
| 188 |
<!-- / .container-fluid --> |
191 |
<!-- / .main --> |
| 189 |
</main> |
192 |
|
| 190 |
<!-- / .main --> |
193 |
[%# Help modal %] |
| 191 |
|
194 |
<div id="helpModal" class="modal" tabindex="-1" role="dialog" aria-labelledby="helpModalLabel" aria-hidden="true"> |
| 192 |
[%# Help modal %] |
195 |
<div class="modal-dialog"> |
| 193 |
<div id="helpModal" class="modal" tabindex="-1" role="dialog" aria-labelledby="helpModalLabel" aria-hidden="true"> |
196 |
<div class="modal-content"> |
| 194 |
<div class="modal-dialog"> |
197 |
<div class="modal-header"> |
| 195 |
<div class="modal-content"> |
198 |
<h1 class="modal-title" id="helpModalLabel">Self check-in help</h1> |
| 196 |
<div class="modal-header"> |
199 |
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> |
| 197 |
<h1 class="modal-title" id="helpModalLabel">Self check-in help</h1> |
200 |
</div> |
| 198 |
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> |
201 |
<!-- /.modal-header --> |
| 199 |
</div> |
202 |
<div class="modal-body"> |
| 200 |
<!-- /.modal-header --> |
203 |
<ul> |
| 201 |
<div class="modal-body"> |
204 |
<li>Scan each item or enter its barcode. A list with the entered barcodes will be displayed.</li> |
| 202 |
<ul> |
205 |
<li>Click the 'Check in' button to confirm.</li> |
| 203 |
<li>Scan each item or enter its barcode. A list with the entered barcodes will be displayed.</li> |
206 |
<li>The operation results will be displayed for each entered barcode.</li> |
| 204 |
<li>Click the 'Check in' button to confirm.</li> |
207 |
<li>The 'Finish' button is presented to start over.</li> |
| 205 |
<li>The operation results will be displayed for each entered barcode.</li> |
208 |
<li>At any step, clicking the 'Cancel' button will erase the scanned barcodes and start over.</li> |
| 206 |
<li>The 'Finish' button is presented to start over.</li> |
209 |
</ul> |
| 207 |
<li>At any step, clicking the 'Cancel' button will erase the scanned barcodes and start over.</li> |
210 |
</div> |
| 208 |
</ul> |
211 |
<!-- /.modal-body --> |
| 209 |
</div> |
212 |
<div class="modal-footer"> |
| 210 |
<!-- /.modal-body --> |
213 |
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Close</button> |
| 211 |
<div class="modal-footer"> |
214 |
</div> |
| 212 |
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Close</button> |
|
|
| 213 |
</div> |
215 |
</div> |
|
|
216 |
<!-- /.modal-content --> |
| 214 |
</div> |
217 |
</div> |
| 215 |
<!-- /.modal-content --> |
218 |
<!-- /.modal-dialog --> |
| 216 |
</div> |
219 |
</div> |
| 217 |
<!-- /.modal-dialog --> |
220 |
<!-- /#helpModal --> |
| 218 |
</div> |
|
|
| 219 |
<!-- /#helpModal --> |
| 220 |
|
221 |
|
| 221 |
</body> |
222 |
</body> |
| 222 |
|
223 |
|
| 223 |
[% INCLUDE 'opac-bottom.inc' %] |
224 |
[% INCLUDE 'opac-bottom.inc' %] |
| 224 |
[% BLOCK jsinclude %] |
225 |
[% BLOCK jsinclude %] |
| 225 |
<script> |
226 |
<script> |
| 226 |
function mungeHistory() { |
227 |
function mungeHistory() { |
| 227 |
// prevent back button from allowing form resubmission |
228 |
// prevent back button from allowing form resubmission |
| 228 |
if (history && history.pushState) { |
229 |
if (history && history.pushState) { |
| 229 |
history.replaceState(null, document.title, window.location.href); |
230 |
history.replaceState(null, document.title, window.location.href); |
|
|
231 |
} |
| 230 |
} |
232 |
} |
| 231 |
} |
|
|
| 232 |
|
233 |
|
| 233 |
function dofocus() { |
234 |
function dofocus() { |
| 234 |
$(".focus:last").select(); |
235 |
$(".focus:last").select(); |
| 235 |
} |
236 |
} |
|
|
237 |
|
| 238 |
var barcodes = []; |
| 239 |
|
| 240 |
$( window ).on( "load", function() { |
| 241 |
dofocus(); |
| 242 |
}); |
| 236 |
|
243 |
|
| 237 |
var barcodes = []; |
244 |
$( window ).on( "unload", function() { |
|
|
245 |
mungeHistory(); |
| 246 |
}); |
| 238 |
|
247 |
|
| 239 |
$( window ).on( "load", function() { |
248 |
$(document).ready(function() { |
|
|
249 |
// Barcodes scanning table initially hidden |
| 250 |
$("#sci_barcodes_table").hide(); |
| 251 |
|
| 252 |
// Control the 'append' button behaviour |
| 253 |
$("#sci_append_button").on('click', function(e) { |
| 254 |
// Make sure the form is not submitted by the button |
| 255 |
e.preventDefault(); |
| 256 |
|
| 257 |
var barcode = $('#barcode_input').val().trim(); // Trim whitespace from input |
| 258 |
|
| 259 |
if (barcode !== "") { |
| 260 |
// Properly escape the barcode value by using .text() for display |
| 261 |
var barcodeHtml = $('<tr style="font-size: initial;"><td></td></tr>'); |
| 262 |
barcodeHtml.find('td').text(barcode).append( |
| 263 |
$('<input>').attr({ |
| 264 |
type: 'hidden', |
| 265 |
name: 'barcode', |
| 266 |
value: barcode |
| 267 |
}) |
| 268 |
); |
| 269 |
|
| 270 |
$('#sci_barcodes_table tbody').append(barcodeHtml); |
| 271 |
|
| 272 |
// Make sure the table is now displayed |
| 273 |
$("#sci_barcodes_table").show(); |
| 274 |
$('#sci_checkin_button').show(); |
| 275 |
$('#sci_refresh_button').show(); |
| 276 |
|
| 277 |
// Add barcode to the array |
| 278 |
barcodes.push(barcode); |
| 279 |
} |
| 280 |
|
| 281 |
// Clear the input and reset the focus |
| 282 |
$('#barcode_input').val(''); |
| 240 |
dofocus(); |
283 |
dofocus(); |
| 241 |
}); |
284 |
}); |
| 242 |
|
285 |
|
| 243 |
$( window ).on( "unload", function() { |
286 |
$(".helpModal-trigger").on("click", function(e) { |
| 244 |
mungeHistory(); |
287 |
e.preventDefault(); |
|
|
288 |
$("#helpModal").modal("show"); |
| 245 |
}); |
289 |
}); |
| 246 |
|
290 |
|
| 247 |
$(document).ready(function() { |
291 |
// Set focus at the beginning |
| 248 |
// Barcodes scanning table initially hidden |
|
|
| 249 |
$("#sci_barcodes_table").hide(); |
| 250 |
|
| 251 |
// Control the 'append' button behaviour |
| 252 |
$("#sci_append_button").on('click', function(e) { |
| 253 |
// Make sure the form is not submitted by the button |
| 254 |
e.preventDefault(); |
| 255 |
|
| 256 |
var barcode = $('#barcode_input').val().trim(); // Trim whitespace from input |
| 257 |
|
| 258 |
if (barcode !== "") { |
| 259 |
// Properly escape the barcode value by using .text() for display |
| 260 |
var barcodeHtml = $('<tr style="font-size: initial;"><td></td></tr>'); |
| 261 |
barcodeHtml.find('td').text(barcode).append( |
| 262 |
$('<input>').attr({ |
| 263 |
type: 'hidden', |
| 264 |
name: 'barcode', |
| 265 |
value: barcode |
| 266 |
}) |
| 267 |
); |
| 268 |
|
| 269 |
$('#sci_barcodes_table tbody').append(barcodeHtml); |
| 270 |
|
| 271 |
// Make sure the table is now displayed |
| 272 |
$("#sci_barcodes_table").show(); |
| 273 |
$('#sci_checkin_button').show(); |
| 274 |
$('#sci_refresh_button').show(); |
| 275 |
|
| 276 |
// Add barcode to the array |
| 277 |
barcodes.push(barcode); |
| 278 |
} |
| 279 |
|
| 280 |
// Clear the input and reset the focus |
| 281 |
$('#barcode_input').val(''); |
| 282 |
dofocus(); |
292 |
dofocus(); |
| 283 |
}); |
293 |
}); |
| 284 |
|
294 |
|
| 285 |
$(".helpModal-trigger").on("click", function(e) { |
|
|
| 286 |
e.preventDefault(); |
| 287 |
$("#helpModal").modal("show"); |
| 288 |
}); |
| 289 |
|
295 |
|
| 290 |
// Set focus at the beginning |
296 |
var idleTime = 0; |
| 291 |
dofocus(); |
297 |
$(document).ready(function () { |
| 292 |
}); |
298 |
//Increment the idle time counter every second |
|
|
299 |
var idleInterval = setInterval(timerIncrement, 1000); |
| 293 |
|
300 |
|
| 294 |
|
301 |
//Zero the idle timer on mouse movement. |
| 295 |
var idleTime = 0; |
302 |
$(this).mousemove(function (e) { |
| 296 |
$(document).ready(function () { |
303 |
idleTime = 0; |
| 297 |
//Increment the idle time counter every second |
304 |
}); |
| 298 |
var idleInterval = setInterval(timerIncrement, 1000); |
305 |
$(this).keypress(function (e) { |
| 299 |
|
306 |
idleTime = 0; |
| 300 |
//Zero the idle timer on mouse movement. |
307 |
}); |
| 301 |
$(this).mousemove(function (e) { |
|
|
| 302 |
idleTime = 0; |
| 303 |
}); |
| 304 |
$(this).keypress(function (e) { |
| 305 |
idleTime = 0; |
| 306 |
}); |
308 |
}); |
| 307 |
}); |
|
|
| 308 |
|
309 |
|
| 309 |
function timerIncrement() { |
310 |
function timerIncrement() { |
| 310 |
if ( $("#sci_finish_button").is(":visible") || $("#sci_refresh_button").is(":visible") ) { |
311 |
if ( $("#sci_finish_button").is(":visible") || $("#sci_refresh_button").is(":visible") ) { |
| 311 |
idleTime = idleTime + 1; |
312 |
idleTime = idleTime + 1; |
| 312 |
idleTimeout = [% refresh_timeout | html %]; |
313 |
idleTimeout = [% refresh_timeout | html %]; |
| 313 |
if (idleTime >= idleTimeout ) { |
314 |
if (idleTime >= idleTimeout ) { |
| 314 |
location.href = '/cgi-bin/koha/sci/sci-main.pl'; |
315 |
location.href = '/cgi-bin/koha/sci/sci-main.pl'; |
|
|
316 |
} |
| 315 |
} |
317 |
} |
| 316 |
} |
318 |
} |
| 317 |
} |
|
|
| 318 |
|
319 |
|
| 319 |
|
320 |
|
| 320 |
function checkBarcodeInput() { |
321 |
function checkBarcodeInput() { |
| 321 |
var inputField = document.getElementById("barcode_input"); |
322 |
var inputField = document.getElementById("barcode_input"); |
| 322 |
var button = document.getElementById("sci_append_button"); |
323 |
var button = document.getElementById("sci_append_button"); |
| 323 |
|
324 |
|
| 324 |
if (inputField.value.trim() === "") { |
325 |
if (inputField.value.trim() === "") { |
| 325 |
button.disabled = true; |
326 |
button.disabled = true; |
| 326 |
} else { |
327 |
} else { |
| 327 |
button.disabled = false; |
328 |
button.disabled = false; |
|
|
329 |
} |
| 328 |
} |
330 |
} |
| 329 |
} |
|
|
| 330 |
|
331 |
|
| 331 |
checkBarcodeInput(); |
332 |
checkBarcodeInput(); |
| 332 |
|
333 |
|
| 333 |
document.getElementById("barcode_input").addEventListener("input", checkBarcodeInput); |
334 |
document.getElementById("barcode_input").addEventListener("input", checkBarcodeInput); |
| 334 |
|
335 |
|
| 335 |
document.getElementById("sci_append_button").addEventListener("click", function() { |
336 |
document.getElementById("sci_append_button").addEventListener("click", function() { |
| 336 |
setTimeout(checkBarcodeInput, 10); |
337 |
setTimeout(checkBarcodeInput, 10); |
| 337 |
}); |
338 |
}); |
| 338 |
</script> |
|
|
| 339 |
[% IF ( Koha.Preference('SelfCheckInUserJS') ) %] |
| 340 |
<script> |
| 341 |
[% Koha.Preference('SelfCheckInUserJS') | $raw %] |
| 342 |
</script> |
339 |
</script> |
|
|
340 |
[% IF ( Koha.Preference('SelfCheckInUserJS') ) %] |
| 341 |
<script> |
| 342 |
[% Koha.Preference('SelfCheckInUserJS') | $raw %] |
| 343 |
</script> |
| 344 |
[% END %] |
| 343 |
[% END %] |
345 |
[% END %] |
| 344 |
[% END %] |
346 |
</div> |
| 345 |
- |
|
|