Lines 4-23
Link Here
|
4 |
[% INCLUDE 'doc-head-open.inc' %] |
4 |
[% INCLUDE 'doc-head-open.inc' %] |
5 |
<title>Koha › Cataloging › [% title | html %] [% IF ( author ) %] by [% author | html %][% END %] (Record #[% biblionumber | html %]) › Holdings</title> |
5 |
<title>Koha › Cataloging › [% title | html %] [% IF ( author ) %] by [% author | html %][% END %] (Record #[% biblionumber | html %]) › Holdings</title> |
6 |
[% INCLUDE 'doc-head-close.inc' %] |
6 |
[% INCLUDE 'doc-head-close.inc' %] |
|
|
7 |
[% INCLUDE 'calendar.inc' %] |
7 |
[% Asset.js("lib/hc-sticky.js") | $raw %] |
8 |
[% Asset.js("lib/hc-sticky.js") | $raw %] |
|
|
9 |
[% INCLUDE 'select2.inc' %] |
10 |
<script> |
11 |
[% IF Koha.Preference('CreateAVFromCataloguing') && CAN_user_parameters_manage_auth_values %] |
12 |
var auth_values_creation = 1; |
13 |
[% ELSE %] |
14 |
var auth_values_creation = 0; |
15 |
[% END %] |
16 |
$.fn.select2.defaults.set("width", "100%" ); |
17 |
</script> |
8 |
[% Asset.js("js/cataloging.js") | $raw %] |
18 |
[% Asset.js("js/cataloging.js") | $raw %] |
9 |
[% Asset.js("js/browser.js") | $raw %] |
19 |
[% Asset.js("js/browser.js") | $raw %] |
10 |
[% Asset.css("css/addholding.css") | $raw %] |
|
|
11 |
[% INCLUDE 'select2.inc' %] |
12 |
</head> |
13 |
|
14 |
<body id="cat_addholding" class="cat"> |
15 |
|
16 |
<script> |
20 |
<script> |
17 |
var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10)); |
21 |
var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10)); |
18 |
browser.show(); |
22 |
browser.show(); |
19 |
|
23 |
|
20 |
$(window).load(function() { |
24 |
$(window).load(function(){ |
21 |
$("#loading").hide(); |
25 |
$("#loading").hide(); |
22 |
}); |
26 |
}); |
23 |
var Sticky; |
27 |
var Sticky; |
Lines 39-45
Link Here
|
39 |
selectTab( link ); |
43 |
selectTab( link ); |
40 |
[% END %] |
44 |
[% END %] |
41 |
|
45 |
|
42 |
|
|
|
43 |
Sticky = $("#toolbar"); |
46 |
Sticky = $("#toolbar"); |
44 |
Sticky.hcSticky({ |
47 |
Sticky.hcSticky({ |
45 |
stickTo: "#f", |
48 |
stickTo: "#f", |
Lines 83-88
Link Here
|
83 |
} |
86 |
} |
84 |
}); |
87 |
}); |
85 |
|
88 |
|
|
|
89 |
$("#z3950search").click(function(){ |
90 |
PopupZ3950(); |
91 |
}); |
92 |
|
93 |
$("#linkerbutton").click(function(){ |
94 |
AutomaticLinker(); |
95 |
}); |
96 |
|
86 |
$("#saverecord").click(function(){ |
97 |
$("#saverecord").click(function(){ |
87 |
$(".btn-group").removeClass("open"); |
98 |
$(".btn-group").removeClass("open"); |
88 |
onOption(); |
99 |
onOption(); |
Lines 110-121
Link Here
|
110 |
}); |
121 |
}); |
111 |
|
122 |
|
112 |
$( '#switcheditor' ).click( function() { |
123 |
$( '#switcheditor' ).click( function() { |
|
|
124 |
var breedingid = [% breedingid || "null" | html %]; |
125 |
|
126 |
if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false; |
113 |
|
127 |
|
114 |
if ( !confirm( _("Any changes will not be saved. Continue?") ) ) return false; |
128 |
Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/', sameSite: 'Lax' } ); |
115 |
|
129 |
|
116 |
Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } ); |
130 |
var holding_id = [% holding_id || "null" | html %]; |
117 |
|
131 |
|
118 |
var holding_id = [% holding_id || "''" | html %]; |
|
|
119 |
window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber + '/holdings/' + holding_id; |
132 |
window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber + '/holdings/' + holding_id; |
120 |
|
133 |
|
121 |
return false; |
134 |
return false; |
Lines 133-146
Link Here
|
133 |
|
146 |
|
134 |
$(".tag_anchor").on("click", function(e){ |
147 |
$(".tag_anchor").on("click", function(e){ |
135 |
e.preventDefault(); |
148 |
e.preventDefault(); |
136 |
var toolbar_height = $("#toolbar").outerHeight(); |
|
|
137 |
$(".tag_anchor").removeClass("selected"); |
149 |
$(".tag_anchor").removeClass("selected"); |
138 |
$(this).addClass("selected"); |
150 |
$(this).addClass("selected"); |
139 |
var link = this.href; |
151 |
var link = this.href; |
140 |
var linkid = link.substring( link.indexOf("#") + 1 ); |
152 |
var linkid = link.substring( link.indexOf("#") + 1 ); |
141 |
var dest = $("#" + linkid ); |
153 |
window.scrollTo( 0, getScrollto( linkid, "toolbar" ) ); |
142 |
var yoffset = dest.offset(); |
154 |
}); |
143 |
window.scrollTo( 0, yoffset.top - toolbar_height - 20 ); |
155 |
|
|
|
156 |
$("body").on("click", ".linkfield", function(e){ |
157 |
e.preventDefault(); |
158 |
var tab = $(this).data("tab"); |
159 |
var field = $(this).data("field"); |
160 |
var tablink = $("a[data-tabid='" + tab + "']" ); |
161 |
selectTab( tablink ); |
162 |
window.scrollTo( 0, getScrollto( field, "toolbar" ) ); |
163 |
}); |
164 |
|
165 |
$("body").on("click", ".show-errors", function(e){ |
166 |
document.getElementById("form-errors").scrollIntoView(); |
144 |
}); |
167 |
}); |
145 |
|
168 |
|
146 |
}); |
169 |
}); |
Lines 154-159
Link Here
|
154 |
$(".tag_anchors_" + tabid ).addClass("tab_selected").show(); |
177 |
$(".tag_anchors_" + tabid ).addClass("tab_selected").show(); |
155 |
} |
178 |
} |
156 |
|
179 |
|
|
|
180 |
/** |
181 |
* Returns a roughly ideal position to scroll an element into view |
182 |
* @param {string} target - The HTML id of the element to scroll into view |
183 |
* @param {string} elemid - The HTML id of the element which might obscure |
184 |
* the view of the target element e.g. a floating toolbar |
185 |
* @return {number} - The y-coordinate to pass to window.scrollTo() |
186 |
*/ |
187 |
function getScrollto( target, elemid ){ |
188 |
var dest = $("#" + target ); |
189 |
var yoffset = dest.offset(); |
190 |
|
191 |
if( elemid != "" ){ |
192 |
var element = $("#" + elemid ); |
193 |
var elem_height = element.outerHeight(); |
194 |
} else { |
195 |
elem_height = 0; |
196 |
} |
197 |
return yoffset.top - elem_height - 20; |
198 |
} |
199 |
|
157 |
function redirect(dest){ |
200 |
function redirect(dest){ |
158 |
$("#redirect").attr("value",dest); |
201 |
$("#redirect").attr("value",dest); |
159 |
return Check(); |
202 |
return Check(); |
Lines 165-181
Link Here
|
165 |
} |
208 |
} |
166 |
[% END %] |
209 |
[% END %] |
167 |
|
210 |
|
|
|
211 |
function PopupMARCFieldDoc(field) { |
212 |
[% IF Koha.Preference('marcfielddocurl') %] |
213 |
var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]"; |
214 |
docurl = docurl.replace("{MARC}", "[% marcflavour | html %]"); |
215 |
docurl = docurl.replace("{FIELD}", ""+field); |
216 |
docurl = docurl.replace("{LANG}", "[% lang | html %]"); |
217 |
window.open(docurl); |
218 |
[% ELSIF ( marcflavour == 'MARC21' ) %] |
219 |
_MARC21FieldDoc(field); |
220 |
[% ELSIF ( marcflavour == 'UNIMARC' ) %] |
221 |
_UNIMARCFieldDoc(field); |
222 |
[% END %] |
223 |
} |
224 |
function confirmnotdup(redirect){ |
225 |
$("#confirm_not_duplicate").attr("value","1"); |
226 |
$("#redirect").attr("value",redirect); |
227 |
Check(); |
228 |
} |
229 |
|
168 |
function Dopop(link,i) { |
230 |
function Dopop(link,i) { |
169 |
defaultvalue = document.getElementById(i).value; |
231 |
defaultvalue = document.getElementById(i).value; |
170 |
window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes'); |
232 |
window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes'); |
171 |
} |
233 |
} |
172 |
|
234 |
|
173 |
function PopupMARCFieldDoc(field) { |
235 |
/** |
174 |
[% IF ( marcflavour == 'MARC21' ) %] |
236 |
* this function open a popup to search on z3950 server. |
175 |
_MARC21FieldDoc(field); |
237 |
*/ |
176 |
[% ELSIF ( marcflavour == 'UNIMARC' ) %] |
238 |
function PopupZ3950() { |
177 |
_UNIMARCFieldDoc(field); |
239 |
var strQuery = GetZ3950Terms(); |
178 |
[% END %] |
240 |
if(strQuery){ |
|
|
241 |
window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=[% biblionumber | html %]"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); |
242 |
} |
179 |
} |
243 |
} |
180 |
|
244 |
|
181 |
function _MARC21FieldDoc(field) { |
245 |
function _MARC21FieldDoc(field) { |
Lines 190-198
Link Here
|
190 |
|
254 |
|
191 |
function _UNIMARCFieldDoc(field) { |
255 |
function _UNIMARCFieldDoc(field) { |
192 |
/* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but |
256 |
/* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but |
193 |
seems to be the only version available that can be linked to per tag. More recent |
257 |
seems to be the only version available that can be linked to per tag. More recent |
194 |
versions of the UNIMARC standard are available on the IFLA website only as |
258 |
versions of the UNIMARC standard are available on the IFLA website only as |
195 |
PDFs! |
259 |
PDFs! |
196 |
*/ |
260 |
*/ |
197 |
var url; |
261 |
var url; |
198 |
if (field == 0) { |
262 |
if (field == 0) { |
Lines 202-225
Link Here
|
202 |
url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#"; |
266 |
url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#"; |
203 |
if (first == 0) url = url + "b"; |
267 |
if (first == 0) url = url + "b"; |
204 |
url = first == 9 |
268 |
url = first == 9 |
205 |
? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm" |
269 |
? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm" |
206 |
: url + field; |
270 |
: url + field; |
207 |
} |
271 |
} |
208 |
window.open(url); |
272 |
window.open(url); |
209 |
} |
273 |
} |
210 |
|
274 |
|
211 |
/* |
275 |
/* |
212 |
* Functions to hide/show marc docs and tags links |
276 |
* Functions to hide/show marc docs and tags links |
213 |
*/ |
277 |
*/ |
214 |
|
278 |
|
215 |
function toggleMARCdocLinks(flag){ |
279 |
function toggleMARCdocLinks(flag){ |
216 |
if( flag === true ){ |
280 |
if( flag === true ){ |
217 |
$(".marcdocs").show(); |
281 |
$(".marcdocs").show(); |
218 |
$.cookie("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 }); |
282 |
Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365, sameSite: 'Lax' }); |
219 |
$("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o'); |
283 |
$("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o'); |
220 |
} else { |
284 |
} else { |
221 |
$(".marcdocs").hide(); |
285 |
$(".marcdocs").hide(); |
222 |
$.cookie("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 }); |
286 |
Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365, sameSite: 'Lax' }); |
223 |
$("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o'); |
287 |
$("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o'); |
224 |
} |
288 |
} |
225 |
} |
289 |
} |
Lines 228-247
Link Here
|
228 |
if( flag === true ){ |
292 |
if( flag === true ){ |
229 |
$(".tagnum").show(); |
293 |
$(".tagnum").show(); |
230 |
$(".subfieldcode").show(); |
294 |
$(".subfieldcode").show(); |
231 |
$.cookie("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 }); |
295 |
Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365, sameSite: 'Lax' }); |
232 |
$("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o'); |
296 |
$("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o'); |
233 |
} else { |
297 |
} else { |
234 |
$(".tagnum").hide(); |
298 |
$(".tagnum").hide(); |
235 |
$(".subfieldcode").hide(); |
299 |
$(".subfieldcode").hide(); |
236 |
$.cookie("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 }); |
300 |
Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365, sameSite: 'Lax' }); |
237 |
$("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o'); |
301 |
$("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o'); |
238 |
} |
302 |
} |
239 |
} |
303 |
} |
240 |
|
304 |
|
241 |
/** |
305 |
/** |
242 |
* check if mandatory subfields are written |
306 |
* check if mandatory/important subfields are written |
243 |
*/ |
307 |
* @param mandatory true to check for mandatories, false for importants |
244 |
function AreFieldsNotOk(){ |
308 |
*/ |
|
|
309 |
function AreFieldsNotOk (mandatory = true) { |
245 |
var mandatories = new Array(); |
310 |
var mandatories = new Array(); |
246 |
var mandatoriesfields = new Array(); |
311 |
var mandatoriesfields = new Array(); |
247 |
var tab = new Array(); |
312 |
var tab = new Array(); |
Lines 333-345
Link Here
|
333 |
isempty = false; |
398 |
isempty = false; |
334 |
} |
399 |
} |
335 |
|
400 |
|
336 |
if (isempty) { |
401 |
if(isempty){ |
337 |
flag = 1; |
402 |
flag = true; |
338 |
StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n"; |
403 |
if (mandatory) { |
|
|
404 |
mandatoryFields[ arr[0] ] = { |
405 |
importance: "mandatory", |
406 |
elemid: "div_indicator_" + divid, |
407 |
tab: arr[3] |
408 |
} |
409 |
} else { |
410 |
mandatoryFields[ arr[0] ] = { |
411 |
importance: "important", |
412 |
elemid: "div_indicator_" + divid, |
413 |
tab: arr[3] |
414 |
} |
415 |
} |
339 |
} |
416 |
} |
|
|
417 |
|
340 |
} |
418 |
} |
341 |
|
419 |
|
342 |
if (flag) { |
420 |
if( Object.entries(mandatoryFields).length > 0 ){ |
|
|
421 |
StrAlert += "<h4>" + _("The following fields aren't filled:") + "</h4>"; |
422 |
StrAlert += "<ul>"; |
423 |
for( var prop in mandatoryFields ){ |
424 |
if( mandatoryFields[prop]["importance"] == "mandatory" ){ |
425 |
StrAlert += "<li>" + _("Field %s is mandatory, at least one of its subfields must be filled.").format( prop ) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + mandatoryFields[prop]["tab"] + '" data-field="' + mandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
426 |
} else { |
427 |
StrAlert += "<li>" + _("Field %s is important, at least one of its subfields must be filled.").format(prop) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + mandatoryFields[prop]["tab"] + '" data-field="' + mandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
428 |
} |
429 |
} |
430 |
StrAlert += "</ul>"; |
431 |
} |
432 |
StrAlert += "</div>"; |
433 |
if ( flag ) { |
434 |
$("#show-errors").html('<button type="button" class="btn btn-danger show-errors"><i class="fa fa-warning"></i> ' + _("Errors") + '</span>'); |
343 |
return StrAlert; |
435 |
return StrAlert; |
344 |
} else { |
436 |
} else { |
345 |
return flag; |
437 |
return flag; |
Lines 347-374
Link Here
|
347 |
} |
439 |
} |
348 |
|
440 |
|
349 |
/** |
441 |
/** |
350 |
* |
442 |
* Run checks for mandatory and important fields |
351 |
* |
443 |
* Output errors if necessary, or submit the form |
352 |
*/ |
444 |
*/ |
353 |
function Check(){ |
445 |
function Check(){ |
354 |
var StrAlert = AreFieldsNotOk(); |
446 |
var StrAlert = AreFieldsNotOk(); |
355 |
if( ! StrAlert ){ |
447 |
var StrWarning = AreFieldsNotOk( false ); |
356 |
var StrWarning = AreFieldsNotOk(false); |
448 |
if( !StrAlert && StrWarning ){ |
357 |
if (StrWarning){ |
449 |
// Check important fields |
358 |
StrWarning += "\n" + _("Are you sure you want to save?"); |
450 |
$("#check_errors").html( StrWarning ); |
359 |
var r=confirm(StrWarning); |
451 |
$('html, body').animate({ scrollTop: 0 }, 'fast'); |
360 |
if (! r){ |
452 |
|
361 |
return false; |
453 |
var r=confirm( _("Important fields(s) are not filled. Are you sure you want to save?" ) ); |
362 |
} |
454 |
if (! r){ |
|
|
455 |
return false; |
456 |
} else { |
457 |
document.f.submit(); |
458 |
return true; |
459 |
} |
460 |
} else if( StrAlert ){ |
461 |
var strAll = StrAlert; |
462 |
if( StrWarning ){ |
463 |
strAll += StrWarning; |
363 |
} |
464 |
} |
|
|
465 |
$("#check_errors").html( strAll ); |
466 |
$('html, body').animate({ scrollTop: 0 }, 'fast'); |
467 |
Sticky.hcSticky('refresh'); |
468 |
return false; |
469 |
} else if( !StrAlert && !StrWarning ){ |
364 |
document.f.submit(); |
470 |
document.f.submit(); |
365 |
return true; |
471 |
return true; |
366 |
} else { |
|
|
367 |
alert(StrAlert); |
368 |
return false; |
369 |
} |
472 |
} |
370 |
} |
473 |
} |
371 |
|
474 |
|
|
|
475 |
/** |
476 |
* check if z3950 mandatories are set or not |
477 |
*/ |
478 |
function GetZ3950Terms(){ |
479 |
var frameworkcode = document.getElementById("frameworkcode").value; |
480 |
var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode); |
481 |
var mandatories = new Array(); |
482 |
var mandatories_label = new Array(); |
483 |
[% FOREACH BIG_LOO IN BIG_LOOP %] |
484 |
[% FOREACH innerloo IN BIG_LOO.innerloop %] |
485 |
[% FOREACH subfield_loo IN innerloo.subfield_loop %] |
486 |
[% IF ( subfield_loo.z3950_mandatory ) %] |
487 |
mandatories.push("[% subfield_loo.id | html %]"); |
488 |
mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]"); |
489 |
[% END %] |
490 |
[% END %] |
491 |
[% END %] |
492 |
[% END %] |
493 |
|
494 |
for(var i=0,len=mandatories.length; i<len ; i++){ |
495 |
var field_value = document.getElementById(mandatories[i]).value; |
496 |
if( field_value ){ |
497 |
strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value); |
498 |
} |
499 |
} |
500 |
return strQuery; |
501 |
} |
502 |
|
372 |
function Changefwk() { |
503 |
function Changefwk() { |
373 |
var f = document.f; |
504 |
var f = document.f; |
374 |
f.op.value = "[% op | html %]"; |
505 |
f.op.value = "[% op | html %]"; |
Lines 378-387
Link Here
|
378 |
f.submit(); |
509 |
f.submit(); |
379 |
} |
510 |
} |
380 |
|
511 |
|
381 |
$(document).ready(function() { |
512 |
/* Wrap a value in HTML without putting HTML in translatable string */ |
382 |
$('.subfield_line select').select2(); |
513 |
function formatFieldName( string ){ |
383 |
}); |
514 |
return "<strong><em>" + string + "</em></strong>"; |
|
|
515 |
} |
516 |
|
517 |
// $(document).ready(function() { |
518 |
// $('.subfield_line select').select2(); |
519 |
// }); |
384 |
</script> |
520 |
</script> |
|
|
521 |
[% Asset.css("css/addholding.css") | $raw %] |
522 |
</head> |
523 |
<body id="cat_addholding" class="cat"> |
385 |
|
524 |
|
386 |
<div id="loading"> |
525 |
<div id="loading"> |
387 |
<div>Loading, please wait...</div> |
526 |
<div>Loading, please wait...</div> |
Lines 389-400
Link Here
|
389 |
|
528 |
|
390 |
[% INCLUDE 'header.inc' %] |
529 |
[% INCLUDE 'header.inc' %] |
391 |
|
530 |
|
392 |
<div id="breadcrumbs"> |
531 |
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb"> |
393 |
<a href="/cgi-bin/koha/mainpage.pl">Home</a> › |
532 |
<ol> |
394 |
<a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> › |
533 |
<li> |
395 |
Edit <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]">[% title | html %] [% IF ( author ) %] by [% author | html %][% END %] (Record #[% biblionumber | html %])</a> › |
534 |
<a href="/cgi-bin/koha/mainpage.pl">Home</a> |
396 |
<a href="/cgi-bin/koha/cataloguing/addholding.pl?biblionumber=[% biblionumber | uri %]">Holdings</a> |
535 |
</li> |
397 |
</div> |
536 |
<li> |
|
|
537 |
<a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> |
538 |
</li> |
539 |
<li> |
540 |
Editing <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]"> |
541 |
<em>[% title | html %]</em> (Record number [% biblionumber | html %])</a> |
542 |
[% IF ( author ) %] by [% author | html %][% END %] |
543 |
</li> |
544 |
<li> |
545 |
<a aria-current="page" href="/cgi-bin/koha/cataloguing/addholding.pl?biblionumber=[% biblionumber | uri %]">Holdings</a> |
546 |
</li> |
547 |
</ol> |
548 |
</nav> |
398 |
|
549 |
|
399 |
<div class="main container-fluid"> |
550 |
<div class="main container-fluid"> |
400 |
<div class="row"> |
551 |
<div class="row"> |
Lines 440-449
Link Here
|
440 |
<div class="btn-group"> |
591 |
<div class="btn-group"> |
441 |
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button> |
592 |
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button> |
442 |
<ul id="settings-menu" class="dropdown-menu"> |
593 |
<ul id="settings-menu" class="dropdown-menu"> |
443 |
[% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 %] |
594 |
[% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %] |
444 |
[% # disabled until supported <li><a href="#" id="switcheditor">Switch to advanced editor</a></li> %] |
595 |
<li><a href="#" id="switcheditor">Switch to advanced editor</a></li> |
445 |
[% END %] |
596 |
[% END %] |
446 |
[% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %] |
597 |
[% UNLESS advancedMARCEditor %] |
447 |
<li> |
598 |
<li> |
448 |
<a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a> |
599 |
<a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a> |
449 |
<li> |
600 |
<li> |
Lines 479-485
Link Here
|
479 |
<a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | url %]">Cancel</a> |
630 |
<a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | url %]">Cancel</a> |
480 |
</div> |
631 |
</div> |
481 |
<div class="toolbar-tabs-container"> |
632 |
<div class="toolbar-tabs-container"> |
482 |
[% IF ( BIG_LOOP.size > 1 ) %] |
633 |
[% IF ( BIG_LOOP && BIG_LOOP.size > 1 ) %] |
483 |
<ul class="toolbar-tabs"> |
634 |
<ul class="toolbar-tabs"> |
484 |
[%- FOREACH BIG_LOO IN BIG_LOOP -%] |
635 |
[%- FOREACH BIG_LOO IN BIG_LOOP -%] |
485 |
[% IF loop.first %] |
636 |
[% IF loop.first %] |
Lines 532-548
Link Here
|
532 |
[% previous = "" %] |
683 |
[% previous = "" %] |
533 |
[% FOREACH innerloo IN BIG_LOO.innerloop %] |
684 |
[% FOREACH innerloo IN BIG_LOO.innerloop %] |
534 |
[% IF ( innerloo.tag ) %] |
685 |
[% IF ( innerloo.tag ) %] |
535 |
[% IF innerloo.tag != previous %] |
686 |
[% IF innerloo.tag != previous %] |
536 |
[% IF previous != "" %] |
687 |
[% IF previous != "" %] |
537 |
</ul> |
688 |
</ul> |
538 |
[% END %] |
689 |
[% END %] |
539 |
[% previous = innerloo.tag %] |
690 |
[% previous = innerloo.tag %] |
540 |
[% IF ( innerloo.repeatable ) %] |
691 |
[% IF ( innerloo.repeatable ) %] |
541 |
<ul class="sortable_field"> |
692 |
<ul class="sortable_field"> |
542 |
[% ELSE %] |
693 |
[% ELSE %] |
543 |
<ul> |
694 |
<ul> |
544 |
[% END %] |
|
|
545 |
[% END %] |
695 |
[% END %] |
|
|
696 |
[% END %] |
546 |
[% IF ( innerloo.repeatable ) %] |
697 |
[% IF ( innerloo.repeatable ) %] |
547 |
<li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]"> |
698 |
<li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]"> |
548 |
[% ELSE %] |
699 |
[% ELSE %] |
Lines 553-559
Link Here
|
553 |
<a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib | html %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;">[% innerloo.tag | html %]</a> |
704 |
<a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib | html %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;">[% innerloo.tag | html %]</a> |
554 |
[% ELSE %] |
705 |
[% ELSE %] |
555 |
<span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span> |
706 |
<span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span> |
556 |
[% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>[% END %] |
707 |
<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a> |
557 |
[% END %] |
708 |
[% END %] |
558 |
|
709 |
|
559 |
[% IF ( innerloo.fixedfield ) %] |
710 |
[% IF ( innerloo.fixedfield ) %] |
Lines 610-694
Link Here
|
610 |
[% FOREACH subfield_loo IN innerloo.subfield_loop %] |
761 |
[% FOREACH subfield_loo IN innerloo.subfield_loop %] |
611 |
<!-- One line on the marc editor --> |
762 |
<!-- One line on the marc editor --> |
612 |
<li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]"> |
763 |
<li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]"> |
|
|
764 |
<div class="subfieldcode"> |
765 |
<input type="text" |
766 |
title="[% subfield_loo.marc_lib | html %]" |
767 |
style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" |
768 |
name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" |
769 |
value="[% subfield_loo.subfield | html %]" |
770 |
size="1" |
771 |
maxlength="1" |
772 |
class="flat" |
773 |
tabindex="0" /> |
774 |
</div> |
613 |
[% UNLESS advancedMARCEditor %] |
775 |
[% UNLESS advancedMARCEditor %] |
614 |
[% IF ( subfield_loo.fixedfield ) %] |
776 |
[% IF ( subfield_loo.mandatory ) %] |
615 |
<label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" style="display:none;" class="labelsubfield"> |
777 |
<div class="subfield subfield_mandatory"> |
|
|
778 |
[% ELSIF ( subfield_loo.important ) %] |
779 |
<div class="subfield subfield_important"> |
616 |
[% ELSE %] |
780 |
[% ELSE %] |
617 |
<label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield"> |
781 |
<div class="subfield"> |
618 |
[% END %] |
782 |
[% END %] |
619 |
[% END %] |
783 |
[% IF ( subfield_loo.fixedfield ) %] |
620 |
|
784 |
<label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" style="display:none;" class="labelsubfield"> |
621 |
<span class="subfieldcode"> |
|
|
622 |
<input type="text" |
623 |
title="[% subfield_loo.marc_lib | html %]" |
624 |
style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" |
625 |
name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" |
626 |
value="[% subfield_loo.subfield | html %]" |
627 |
size="1" |
628 |
maxlength="1" |
629 |
class="flat" |
630 |
tabindex="0" /> |
631 |
</span> |
632 |
|
633 |
[% UNLESS advancedMARCEditor %] |
634 |
[% IF ( subfield_loo.mandatory ) %] |
635 |
<span class="subfield subfield_mandatory"> |
636 |
[% ELSIF ( subfield_loo.important ) %] |
637 |
<span class="subfield subfield_important"> |
638 |
[% ELSE %] |
785 |
[% ELSE %] |
639 |
<span class="subfield"> |
786 |
<label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield"> |
640 |
[% END %] |
787 |
[% END %] |
641 |
[% subfield_loo.marc_lib | $raw %] |
788 |
[% subfield_loo.marc_lib | $raw %] |
642 |
</span> |
789 |
</label> |
643 |
</label> |
790 |
</div> |
644 |
[% END %] |
791 |
[% END %] |
645 |
|
792 |
|
646 |
[% SET mv = subfield_loo.marc_value %] |
793 |
[% SET mv = subfield_loo.marc_value %] |
647 |
[% IF ( mv.type == 'text' ) %] |
794 |
<div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor"> |
648 |
[% IF ( mv.readonly == 1 ) %] |
795 |
[% IF ( mv.type == 'text' ) %] |
649 |
<input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor readonly" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" readonly="readonly" /> |
796 |
[% IF ( mv.readonly == 1 ) %] |
650 |
[% ELSE %] |
797 |
<input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor readonly" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" readonly="readonly" /> |
651 |
<input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> |
798 |
[% ELSE %] |
652 |
[% END %] |
799 |
<input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> |
|
|
800 |
[% END %] |
653 |
|
801 |
|
654 |
[% IF ( mv.authtype ) %] |
802 |
[% ELSIF ( mv.type == 'text_complex' ) %] |
655 |
<span class="subfield_controls"><a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype | html -%]','holding'); return false;" tabindex="1" title="Tag editor">Tag editor</a></span> |
803 |
<input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> |
|
|
804 |
[% mv.javascript | $raw %] |
805 |
[% ELSIF ( mv.type == 'hidden' ) %] |
806 |
<input tabindex="1" type="hidden" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" /> |
807 |
[% ELSIF ( mv.type == 'textarea' ) %] |
808 |
<textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea> |
809 |
[% ELSIF ( mv.type == 'select' ) %] |
810 |
[% IF mv.category AND CAN_user_parameters_manage_auth_values %] |
811 |
<select name="[%- mv.name | html -%]" tabindex="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]"> |
812 |
[% ELSE %] |
813 |
<select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]"> |
656 |
[% END %] |
814 |
[% END %] |
657 |
[% ELSIF ( mv.type == 'text_complex' ) %] |
815 |
[% FOREACH aval IN mv.values %] |
658 |
<input type="text" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" value="[%- mv.value | html -%]" class="input_marceditor framework_plugin" tabindex="1" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" /> |
816 |
[% IF aval == mv.default %] |
659 |
<span class="subfield_controls"> |
817 |
<option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option> |
660 |
[% IF mv.noclick %] |
818 |
[% ELSE %] |
661 |
<span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span> |
819 |
<option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option> |
662 |
[% ELSE %] |
820 |
[% END %] |
|
|
821 |
[% END %] |
822 |
</select> |
823 |
[% END # /IF (mv.type...) %] |
824 |
</div> |
825 |
[% IF ( subfield_loo.mandatory ) %] |
826 |
<div class="subfield_loop_mandatory"> |
827 |
<span class="required">Required</span> |
828 |
</div> |
829 |
[% ELSIF ( subfield_loo.important ) %] |
830 |
<div class="subfield_loop_mandatory"> |
831 |
<span class="important">Important</span> |
832 |
</div> |
833 |
[% END %] |
834 |
<div class="subfield_controls"> |
835 |
[% IF ( mv.type == 'text' ) %] |
836 |
[% IF ( mv.authtype ) %] |
837 |
<a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype | html -%]','holding'); return false;" tabindex="1" title="Tag editor">Tag editor</a> |
838 |
[% END %] |
839 |
[% ELSIF ( mv.type == 'text_complex' ) %] |
840 |
[% IF mv.noclick %] |
841 |
<span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span> |
842 |
[% ELSE %] |
663 |
[% IF mv.plugin == "upload.pl" %] |
843 |
[% IF mv.plugin == "upload.pl" %] |
664 |
<a href="#" id="buttonDot_[% mv.id | html %]" class="tag_editor upload framework_plugin" tabindex="1"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> |
844 |
<a href="#" id="buttonDot_[% mv.id | html %]" class="tag_editor upload framework_plugin" tabindex="1"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> |
665 |
[% ELSE %] |
845 |
[% ELSE %] |
666 |
<a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a> |
846 |
<a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a> |
667 |
[% END %] |
847 |
[% END %] |
668 |
[% END %] |
848 |
[% END %] |
669 |
</span> |
849 |
</span> |
670 |
[% mv.javascript | $raw %] |
|
|
671 |
[% ELSIF ( mv.type == 'hidden' ) %] |
672 |
<input tabindex="1" type="hidden" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" size="[%- mv.size | html -%]" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" /> |
673 |
[% ELSIF ( mv.type == 'textarea' ) %] |
674 |
<textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea> |
675 |
[% ELSIF ( mv.type == 'select' ) %] |
676 |
<select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]"> |
677 |
[% FOREACH aval IN mv.values %] |
678 |
[% IF aval == mv.default %] |
679 |
<option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option> |
680 |
[% ELSE %] |
681 |
<option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option> |
682 |
[% END %] |
683 |
[% END %] |
850 |
[% END %] |
684 |
</select> |
|
|
685 |
[% END # /IF (mv.type...) %] |
686 |
[% IF ( subfield_loo.mandatory ) %] |
687 |
<span class="required">Required</span> |
688 |
[% ELSIF ( subfield_loo.important ) %] |
689 |
<span class="important">Important</span> |
690 |
[% END %] |
691 |
<span class="subfield_controls"> |
692 |
[% IF ( subfield_loo.repeatable ) %] |
851 |
[% IF ( subfield_loo.repeatable ) %] |
693 |
<a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]','[% advancedMARCEditor | html %]'); return false;"> |
852 |
<a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]','[% advancedMARCEditor | html %]'); return false;"> |
694 |
<img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /> |
853 |
<img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /> |
Lines 697-713
Link Here
|
697 |
<img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /> |
856 |
<img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /> |
698 |
</a> |
857 |
</a> |
699 |
[% END %] |
858 |
[% END %] |
700 |
</span> |
859 |
</div> |
701 |
</li> <!-- /.subfield_line --> |
860 |
</li> <!-- /.subfield_line --> |
702 |
<!-- End of the line --> |
861 |
<!-- End of the line --> |
703 |
[% END # /FOREACH subfield_loop %] |
862 |
[% END # /FOREACH subfield_loop %] |
704 |
</ul> <!-- /.sortable_subfield --> |
863 |
</ul> <!-- /.sortable_subfield --> |
705 |
</li> <!-- /.tag.clearfix --> |
864 |
</li> <!-- /.tag.clearfix --> |
706 |
[% END %]<!-- if innerloo.tag --> |
865 |
[% END %]<!-- if innerloo.tag --> |
707 |
[% END %]<!-- BIG_LOO.innerloop --> |
866 |
[% END # /FOREACH BIG_LOO.innerloop %] |
708 |
</ul> <!-- /.sortable_field --> |
867 |
</ul> <!-- /.sortable_field --> |
709 |
</div> <!-- /#tabXXX --> |
868 |
</div> <!-- /#tabXXX --> |
710 |
[% END %]<!-- BIG_LOOP --> |
869 |
[% END # /FOREACH BIG_LOOP %] |
711 |
</div><!-- /#addholdingtabs --> |
870 |
</div><!-- /#addholdingtabs --> |
712 |
</form> <!-- /name=f --> |
871 |
</form> <!-- /name=f --> |
713 |
</div> <!-- /.col-md-10.col-md-offset-1 --> |
872 |
</div> <!-- /.col-md-10.col-md-offset-1 --> |
714 |
- |
|
|