4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Koha › Cataloging › [% IF ( biblionumber ) %]Editing [% title | html %] (Record number [% biblionumber | html %])[% ELSE %]Add MARC record[% END %]</title>
6 [% INCLUDE 'doc-head-close.inc' %]
7 [% Asset.js("lib/hc-sticky.js") | $raw %]
8 [% INCLUDE 'select2.inc' %]
10 var CAN_user_parameters_manage_auth_values = "[% CAN_user_parameters_manage_auth_values | html %]";
11 $.fn.select2.defaults.set("width", "100%" );
13 [% Asset.js("js/cataloging.js") | $raw %]
14 [% Asset.js("js/browser.js") | $raw %]
16 var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
19 $(window).load(function(){
23 $(document).ready(function() {
25 [% IF bib_doesnt_exist %]
26 $("#addbibliotabs").hide();
30 var $tabs = $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
31 $("#"+ui.panel.id+" input:eq(0)").focus();
33 $( "ul.sortable_field", $tabs ).sortable({
35 containment: $("#addbibliotabs")
37 $( "ul.sortable_subfield", $tabs ).sortable({
43 link = $("a[href='#[% tab | html %]']");
47 Sticky = $("#toolbar");
50 stickyClass: "floating"
53 /* check cookie to hide/show marcdocs*/
54 if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
55 toggleMARCdocLinks(false);
57 toggleMARCdocLinks(true);
60 $("#marcDocsSelect").click(function(){
61 if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
62 toggleMARCdocLinks(true);
64 toggleMARCdocLinks(false);
68 /* check cookie to hide/show marc tags*/
69 var marctags_cookie = Cookies.get("marctags_[% borrowernumber | html %]");
70 if( marctags_cookie == 'hide'){
71 toggleMARCTagLinks(false);
72 } else if( marctags_cookie == 'show'){
73 toggleMARCTagLinks(true)
75 [% UNLESS Koha.Preference("hide_marc") %]
76 toggleMARCTagLinks(true)
78 toggleMARCTagLinks(false);
82 $("#marcTagsSelect").click(function(){
83 if( Cookies.get("marctags_[% borrowernumber | html %]") == 'hide'){
84 toggleMARCTagLinks(true)
86 toggleMARCTagLinks(false);
90 $("#z3950search").click(function(){
94 $("#linkerbutton").click(function(){
98 $("#saverecord").click(function(){
99 $(".btn-group").removeClass("open");
104 $("#saveandview").click(function(){
105 $(".btn-group").removeClass("open");
110 $("#saveanditems").click(function(){
111 $(".btn-group").removeClass("open");
115 $("#saveandcontinue").click(function(){
116 $(".btn-group").removeClass("open");
117 var tab = $("#addbibliotabs li.ui-tabs-active:first a").attr('href');
118 tab = tab.replace('#', '');
119 $("#current_tab").val(tab);
120 redirect("just_save", tab);
124 $( '#switcheditor' ).click( function() {
125 var breedingid = [% breedingid || "null" | html %];
127 if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
129 Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
131 var biblionumber = [% biblionumber || "null" | html %];
133 if ( biblionumber ) {
134 window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
136 window.location = '/cgi-bin/koha/cataloguing/editor.pl';
141 $(".change-framework").on("click", function(){
142 var frameworkcode = $(this).data("frameworkcode");
143 $("#frameworkcode").val( frameworkcode );
147 $(".toolbar-tabs a").on("click",function(e){
149 selectTab( $(this ) );
152 $(".tag_anchor").on("click", function(e){
154 var toolbar_height = $("#toolbar").outerHeight();
155 $(".tag_anchor").removeClass("selected");
156 $(this).addClass("selected");
157 var link = this.href;
158 var linkid = link.substring( link.indexOf("#") + 1 );
159 var dest = $("#" + linkid );
160 var yoffset = dest.offset();
161 window.scrollTo( 0, yoffset.top - toolbar_height - 20 );
166 function selectTab( tablink ){
167 $(".toolbar-tabs li").removeClass("selected");
168 tablink.parent().addClass("selected");
169 var tabid = tablink.data("tabid");
170 $('#addbibliotabs').selectTabByID("#tab" + tabid + "XX");
171 $(".tag_anchors").removeClass("tab_selected").hide();
172 $(".tag_anchors_" + tabid ).addClass("tab_selected").show();
175 function redirect(dest){
176 $("#redirect").attr("value",dest);
180 [% IF ( CAN_user_editcatalogue_edit_items ) %]
181 var onOption = function () {
186 function confirmnotdup(redirect){
187 $("#confirm_not_duplicate").attr("value","1");
188 $("#redirect").attr("value",redirect);
192 function Dopop(link,i) {
193 defaultvalue = document.getElementById(i).value;
194 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
198 * this function open a popup to search on z3950 server.
200 function PopupZ3950() {
201 var strQuery = GetZ3950Terms();
203 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');
208 * this function append button for create new authority if not found
211 function addCreateAuthorityButton(tag_subfield_line, heading, tag_index) {
212 var title = _("Create authority");
213 var elem = $('<a href="#" title="' + title + '"><i class="fa fa-plus-circle"></i></a>');
214 tag_subfield_line.append(elem);
215 var tag_subfield_line_a = $('.subfield_line[id^=subfield' + heading.tag + 'a]').eq(tag_index);
216 var subfield_a = tag_subfield_line_a.children('.input_marceditor').eq(0);
217 var index = subfield_a.attr('id');
218 elem.click(function() {
219 var popup = window.open("", "new_auth_popup",'fullscreen,toolbar=false,scrollbars=yes');
221 // Create a new form that will be POSTed in the new window
222 var form = $('<form>').attr({
224 action: "../authorities/authorities.pl",
225 target: "new_auth_popup"
227 //add the authtypecode
228 form.append($('<input>').attr({
230 name: 'authtypecode',
231 value: heading.auth_type
233 form.append($('<input>').attr({
236 value: heading.tag_to_report
238 form.append($('<input>').attr({
243 form.append($('<input>').attr({
248 $('.tag[id^=tag_' + heading.tag + '_]').eq(tag_index).find(':input').each(function(){
249 form.append($('<input>').attr({
251 name: this.name.split('_',4).join(''),
256 $('body').append(form);
266 * Updates the authid for every heading field
267 * Adds visual feedback for the changes made on the form.
269 function updateHeadingLinks(links) {
270 var current_tag = '';
273 // Delete the old message dialog and create a new one
274 $('#autolinker_dialog').remove();
275 var message_dialog = $('<div id="autolinker_dialog" class="dialog"><strong>' + _("Automatic authority link results:") + '</strong><ul></ul></div>');
276 var message_dialog_ul = message_dialog.find('ul');
278 $.each(links, function(index, heading) {
279 if(current_tag == heading.tag) {
283 current_tag = heading.tag;
287 // Find the $9 field to update
288 var tag_subfield_line = $('.subfield_line[id^=subfield' + heading.tag + '9]').eq(tag_index);
289 var subfield = tag_subfield_line.children('.input_marceditor').eq(0);
291 // Delete the old status if one exists
292 tag_subfield_line.children('.subfield_status').remove();
294 // If the field wasn't modified. Skip it.
295 if(heading.status == 'UNCHANGED') {
300 // Make the subfield line visible and update its value
301 tag_subfield_line.show();
302 subfield.val(heading.authid);
304 // Add the new status
305 var image = '<i class="fa fa-close no_matching_authority" </i> ';
307 var field_class = 'no_matching_authority_field';
308 switch(heading.status) {
310 image = '<i class="fa fa-check matching_authority"</i> ';
311 message = _("A matching authority was found in the local database.");
312 field_class = 'matching_authority_field';
315 image = '<i class="fa fa-check matching_authority"></i> ';
316 message = _("No matching authority found. A new authority was created automatically.");
317 field_class = 'matching_authority_field';
319 case 'MULTIPLE_MATCH':
320 message = _("More than one local match found. Possibly a duplicate authority!");
323 message = _("No matching authority found.");
326 message = heading.status;
330 subfield[0].classList.add(field_class);
331 tag_subfield_line.find('i').each(function() {
334 tag_subfield_line.append(image);
336 // Add the message to the dialog
337 message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
339 // Add a link to create a new authority if none was found
340 if(heading.status == 'NONE_FOUND' && tag_subfield_line.find('i').length == 1) {
341 addCreateAuthorityButton(tag_subfield_line, heading , tag_index);
345 if(message_dialog.find('li').length == 0) {
346 message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
348 $('#addbibliotabs').before(message_dialog);
352 * Use an ajax request to automatically find authority links for the current record
354 function AutomaticLinker() {
355 // Show the Loading overlay
356 $("#loading").show();
358 // Remove fields that are completely empty
359 $('#f').find('.tag').each(function() {
361 $(this).find('.input_marceditor').each(function() {
362 if($(this).val() != '') {
368 UnCloneField($(this).attr('id'));
372 // Get all the form values to post via AJAX
374 $('#f').find(':input').each(function(){
375 form_data[this.name] = $(this).val();
377 delete form_data[''];
379 // Send the data to automatic_linker.pl
381 url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
385 error: function(xhr) {
386 alert("Error : \n" + xhr.responseText);
388 success: function(json) {
389 switch(json.status) {
391 alert(_("Error : You do not have the permissions necessary to use this functionality."));
394 updateHeadingLinks(json.links);
398 complete: function() {
399 $("#loading").hide();
405 function PopupMARCFieldDoc(field) {
406 [% IF Koha.Preference('marcfielddocurl') %]
407 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
408 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
409 docurl = docurl.replace("{FIELD}", ""+field);
410 docurl = docurl.replace("{LANG}", "[% lang | html %]");
412 [% ELSIF ( marcflavour == 'MARC21' ) %]
413 _MARC21FieldDoc(field);
414 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
415 _UNIMARCFieldDoc(field);
418 function confirmnotdup(redirect){
419 $("#confirm_not_duplicate").attr("value","1");
420 $("#redirect").attr("value",redirect);
424 function Dopop(link,i) {
425 defaultvalue = document.getElementById(i).value;
426 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
430 * this function open a popup to search on z3950 server.
432 function PopupZ3950() {
433 var strQuery = GetZ3950Terms();
435 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');
439 function PopupMARCFieldDoc(field) {
440 [% IF Koha.Preference('marcfielddocurl') %]
441 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
442 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
443 docurl = docurl.replace("{FIELD}", ""+field);
444 docurl = docurl.replace("{LANG}", "[% lang | html %]");
446 [% ELSIF ( marcflavour == 'MARC21' ) %]
447 _MARC21FieldDoc(field);
448 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
449 _UNIMARCFieldDoc(field);
453 function _MARC21FieldDoc(field) {
455 window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
456 } else if (field >= 90 && field <= 99 ){
457 window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
458 } else if (field >= 590 && field <= 599 ){
459 window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
460 } else if (field >= 690 && field <= 699 ){
461 window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
462 } else if (field < 900) {
463 window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
465 window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
469 function _UNIMARCFieldDoc(field) {
470 /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
471 seems to be the only version available that can be linked to per tag. More recent
472 versions of the UNIMARC standard are available on the IFLA website only as
477 url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
479 var first = field.substring(0,1);
480 url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
481 if (first == 0) url = url + "b";
483 ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
490 * Functions to hide/show marc docs and tags links
493 function toggleMARCdocLinks(flag){
495 $(".marcdocs").show();
496 Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
497 $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
499 $(".marcdocs").hide();
500 Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
501 $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
505 function toggleMARCTagLinks(flag){
508 $(".subfieldcode").show();
509 Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
510 $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
513 $(".subfieldcode").hide();
514 Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
515 $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
520 * check if mandatory/important subfields are written
521 * @param mandatory true to check for mandatories, false for importants
523 function AreFieldsNotOk (mandatory = true) {
524 var fields = new Array();
525 var subfields = new Array();
526 var tab = new Array();
527 var label = new Array();
529 var tabflag= new Array();
531 var notFilledClass = "subfield_not_filled";
534 [% FOREACH BIG_LOO IN BIG_LOOP %]
535 [% FOREACH innerloo IN BIG_LOO.innerloop %]
536 [% IF ( innerloo.mandatory ) %]
537 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
539 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
540 [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
541 tab.push("[% BIG_LOO.number | html %]");
542 label.push("[% subfield_loo.marc_lib | $raw %]");
547 StrAlert = _("Can't save this record because the following field aren't filled:");
549 [% FOREACH BIG_LOO IN BIG_LOOP %]
550 [% FOREACH innerloo IN BIG_LOO.innerloop %]
551 [% IF ( innerloo.important ) %]
552 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
554 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
555 [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
556 tab.push("[% BIG_LOO.number | html %]");
557 label.push("[% subfield_loo.marc_lib | $raw %]");
562 StrAlert = _("A few important fields are not filled:");
563 notFilledClass = "important_subfield_not_filled";
567 for(var i=0,len=subfields.length; i<len ; i++){
568 var tag=subfields[i].substr(4,3);
569 var subfield=subfields[i].substr(17,1);
570 var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
571 if (tabflag[tag+subfield+tagnumber] == null) {
572 tabflag[tag+subfield+tagnumber]=new Array();
573 tabflag[tag+subfield+tagnumber][0]=0;
575 if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
576 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
578 var elt = document.getElementById(subfields[i]);
579 if ( elt.nodeName == 'SELECT' ) {
580 $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
582 elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
584 $('#' + subfields[i]).focus();
585 tabflag[tag+subfield+tagnumber][1]=label[i];
586 tabflag[tag+subfield+tagnumber][2]=tab[i];
588 tabflag[tag+subfield+tagnumber][0] = 1;
591 for (var tagsubfieldid in tabflag){
592 if (tabflag[tagsubfieldid][0]==0){
593 var tag=tagsubfieldid.substr(0,3);
594 var subfield=tagsubfieldid.substr(3,1);
595 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
596 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
601 /* Check for mandatories/importants field(not subfields) */
602 for(var i=0,len=fields.length; i<len; i++){
605 divid = "tag_" + arr[0] + "_" + arr[1];
606 varegexp = new RegExp("^tag_" + arr[0] + "_code_");
608 if(parseInt(arr[0]) >= 10){
609 elem = document.getElementById(divid);
610 eleminputs = elem.getElementsByTagName('input');
612 for(var j=0,len2=eleminputs.length; j<len2; j++){
614 if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
615 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
617 for( var k=0; k<len2; k++){
618 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
623 elemselect = elem.getElementsByTagName('select');
624 for( var k=0; k<elemselect.length; k++){
625 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
632 elemtextareas = elem.getElementsByTagName('textarea');
633 for(var j=0,len2=elemtextareas.length; j<len2; j++){
634 // this bit assumes that the only textareas in this context would be for subfields
635 if (elemtextareas[j].value) {
647 StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
649 StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
668 var StrAlert = AreFieldsNotOk();
670 var StrWarning = AreFieldsNotOk(false);
672 StrWarning += "\n" + _("Are you sure you want to save?");
673 var r=confirm(StrWarning);
687 * check if z3950 mandatories are set or not
689 function GetZ3950Terms(){
690 var frameworkcode = document.getElementById("frameworkcode").value;
691 var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
692 var mandatories = new Array();
693 var mandatories_label = new Array();
694 [% FOREACH BIG_LOO IN BIG_LOOP %]
695 [% FOREACH innerloo IN BIG_LOO.innerloop %]
696 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
697 [% IF ( subfield_loo.z3950_mandatory ) %]
698 mandatories.push("[% subfield_loo.id | html %]");
699 mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
705 for(var i=0,len=mandatories.length; i<len ; i++){
706 var field_value = document.getElementById(mandatories[i]).value;
708 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
714 function Changefwk() {
716 f.op.value = "[% op | html %]";
717 f.biblionumber.value = "[% biblionumberdata | html %]";
718 f.changed_framework.value = "changed";
723 [% Asset.css("css/addbiblio.css") | $raw %]
725 <body id="cat_addbiblio" class="cat">
728 <div>Loading, please wait...</div>
731 [% INCLUDE 'header.inc' %]
733 <div id="breadcrumbs">
734 <a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
735 <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> ›
736 [% IF ( biblionumber ) %]
737 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
743 <div class="main container-fluid">
745 <div class="col-md-10 col-md-offset-1">
748 [% IF ( biblionumber ) %]
749 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
751 Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
755 [% UNLESS ( number ) %]
756 <!-- show duplicate warning on tab 0 only -->
757 [% IF ( duplicatebiblionumber ) %]
758 <div class="dialog alert">
759 <h3>Duplicate record suspected</h3>
760 <p>Is this a duplicate of <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber | uri %]" onclick="openWindow('/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber | uri %]&popup=1', 'DuplicateBiblio','800','600'); return false;">[% duplicatetitle | html %] <i class="fa fa-window-restore"></i></a> ?</p>
761 [% IF ( CAN_user_editcatalogue_edit_items ) %]
762 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
763 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
764 <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
767 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
768 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
769 <input type="submit" value="Yes: View existing items" />
772 <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
773 [% IF ( CAN_user_editcatalogue_edit_items ) %]
774 <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
776 <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
779 </div> <!-- /.dialog.alert -->
780 [% END # /IF duplicatebiblionumber %]
781 [% END # /UNLESS number %]
785 opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
786 opener.document.forms['f'].title.value='[% title | html %]';
790 <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
791 <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
792 <input type="hidden" value="" id="current_tab" name="current_tab" />
793 <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
796 <div id="toolbar" class="btn-toolbar">
797 [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
798 [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
799 <!-- Action is under fast cataloging - Save button redirecting to items -->
800 <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
802 <!-- Not using fast cataloging - Display split menu -->
803 <div class="btn-group">
804 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
805 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
806 <span class="caret"></span>
808 <ul class="dropdown-menu">
809 <li><a id="saveandview" href="#">Save and view record</a></li>
810 <li><a id="saveanditems" href="#">Save and edit items</a></li>
811 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
816 <!-- User cannot edit items - single button redirecting to view -->
817 <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
818 [% END # /IF CAN_user_editcatalogue_edit_items %]
820 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
821 [% IF biblionumber %]
822 <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Replace record via Z39.50/SRU search</a></div>
824 <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
826 [% IF ( CAN_user_editauthorities ) %]
827 <div class="btn-group"><a class="btn btn-default" href="#" id="linkerbutton"><i class="fa fa-refresh"></i> Link authorities automatically</a></div>
831 <div class="btn-group">
832 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
833 <ul id="settings-menu" class="dropdown-menu">
834 [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
835 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
837 [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
839 <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
841 <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
844 <li class="dropdown-header">Change framework</li>
846 <a href="#" class="change-framework" data-frameworkcode="">
847 [% IF ( frameworkcode ) %]
848 <i class="fa fa-fw"> </i>
850 <i class="fa fa-fw fa-check"></i>
855 [% FOREACH framework IN frameworks%]
857 <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
858 [% IF framework.frameworkcode == frameworkcode %]
859 <i class="fa fa-fw fa-check"></i>
861 <i class="fa fa-fw"> </i>
863 [% framework.frameworktext | html %]
867 </ul> <!-- /#settings-menu -->
868 </div> <!-- /.btn-group -->
869 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
870 [% IF (biblionumber) %]
871 [% IF ( BiblioDefaultViewmarc ) %]
872 <div class="btn-group">
873 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
875 [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
876 <div class="btn-group">
877 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
879 [% ELSIF ( BiblioDefaultViewisbd ) %]
880 <div class="btn-group">
881 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
884 <div class="btn-group">
885 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
889 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
891 [% END # /UNLESS circborrowernumber %]
892 <div class="toolbar-tabs-container">
893 [% IF ( BIG_LOOP.size > 1 ) %]
894 <ul class="toolbar-tabs">
895 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
897 <li class="selected">
901 <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
906 <ul class="tag_anchors_list">
907 [% FOREACH BIG_LOO IN BIG_LOOP %]
908 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
909 [% FOREACH innerloo IN BIG_LOO.innerloop %]
910 [% IF ( innerloo.tag ) %]
911 <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
912 <a class="tag_anchor" id="tag_anchor_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]" title="tag_anchor_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]" href="#div_indicator_tag_[% innerloo.tag | uri %]_[% innerloo.index | uri %][% innerloo.random | uri %]">[% innerloo.tag | uri %]</a>
919 </div> <!-- /#toolbar.btn-toolbar -->
921 [% IF bib_doesnt_exist %]
922 <div class="dialog alert">
923 The record you are trying to edit doesn't exist.<br>
924 <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=">Add a new record</a> or <a href="/cgi-bin/koha/catalogue/search.pl">do a catalog search</a>.
929 <input type="hidden" name="mode" value="popup" />
931 <input type="hidden" name="op" value="addbiblio" />
932 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
933 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
934 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
935 <input type="hidden" name="changed_framework" value="" />
937 <div id="addbibliotabs" class="toptabs numbered">
939 [% FOREACH BIG_LOO IN BIG_LOOP %]
940 <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
944 [% FOREACH BIG_LOO IN BIG_LOOP %]
945 <div id="tab[% BIG_LOO.number | html %]XX">
947 [% IF ( BIG_LOOP.size > 1 ) %]
948 <h3>Section [% BIG_LOO.number | html %]</h3>
951 [% FOREACH innerloo IN BIG_LOO.innerloop %]
952 [% IF ( innerloo.tag ) %]
953 [% IF innerloo.tag != previous %]
954 [% IF previous != "" %]
957 [% previous = innerloo.tag %]
958 [% IF ( innerloo.repeatable ) %]
959 <ul class="sortable_field">
964 [% IF ( innerloo.repeatable ) %]
965 <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
967 <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
969 <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
970 [% IF advancedMARCEditor %]
971 <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>
973 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
974 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>[% END %]
977 [% IF ( innerloo.fixedfield ) %]
980 class="indicator flat"
981 style="display:none;"
982 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
985 value="[% innerloo.indicator1 | html %]" />
988 class="indicator flat"
989 style="display:none;"
990 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
993 value="[% innerloo.indicator2 | html %]" />
997 class="indicator flat"
998 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
1001 value="[% innerloo.indicator1 | html %]" />
1004 class="indicator flat"
1005 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
1008 value="[% innerloo.indicator2 | html %]" />
1009 [% END # /IF innerloo.fixedfield %] -
1011 [% UNLESS advancedMARCEditor %]
1012 <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib | html %]</a>
1015 <span class="field_controls">
1016 [% IF ( innerloo.repeatable ) %]
1017 <a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]','0','[% advancedMARCEditor | html %]'); return false;" title="Repeat this Tag">
1018 <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
1021 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
1022 <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
1024 </span> <!-- /.field_controls -->
1025 </div> <!-- /div.tag_title -->
1027 <ul class="sortable_subfield">
1028 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
1029 <!-- One line on the marc editor -->
1030 <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
1031 <div class="subfieldcode">
1033 title="[% subfield_loo.marc_lib | $raw %]"
1034 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
1035 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
1036 value="[% subfield_loo.subfield | html %]"
1042 [% UNLESS advancedMARCEditor %]
1043 [% IF ( subfield_loo.mandatory ) %]
1044 <div class="subfield subfield_mandatory">
1045 [% ELSIF ( subfield_loo.important ) %]
1046 <div class="subfield subfield_important">
1048 <div class="subfield">
1050 [% IF ( subfield_loo.fixedfield ) %]
1051 <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">
1053 <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1055 [% subfield_loo.marc_lib | $raw %]
1060 [% SET mv = subfield_loo.marc_value %]
1061 <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor">
1062 [% IF ( mv.type == 'text' ) %]
1063 [% IF ( mv.readonly == 1 ) %]
1064 <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" />
1066 <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 -%]" />
1069 [% ELSIF ( mv.type == 'text_complex' ) %]
1070 <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 -%]" />
1071 [% mv.javascript | $raw %]
1072 [% ELSIF ( mv.type == 'hidden' ) %]
1073 <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 -%]" />
1074 [% ELSIF ( mv.type == 'textarea' ) %]
1075 <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
1076 [% ELSIF ( mv.type == 'select' ) %]
1077 [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
1078 <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
1080 <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1082 [% FOREACH aval IN mv.values %]
1083 [% IF aval == mv.default %]
1084 <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1086 <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1090 [% END # /IF (mv.type...) %]
1092 [% IF ( subfield_loo.mandatory ) %]
1093 <div class="subfield_loop_mandatory">
1094 <span class="required">Required</span>
1096 [% ELSIF ( subfield_loo.important ) %]
1097 <div class="subfield_loop_mandatory">
1098 <span class="important">Important</span>
1101 <div class="subfield_controls">
1102 [% IF ( mv.type == 'text' ) %]
1103 [% IF ( mv.authtype ) %]
1104 <a href="#" class="buttonDot tag_editor" onclick="openAuth(this.parentNode.parentNode.getElementsByTagName('input')[1].id,'[%- mv.authtype | html -%]','biblio'); return false;" tabindex="1" title="Tag editor">Tag editor</a>
1106 [% ELSIF ( mv.type == 'text_complex' ) %]
1108 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1110 [% IF mv.plugin == "upload.pl" %]
1111 <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>
1113 <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1118 [% IF ( subfield_loo.repeatable ) %]
1119 <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;">
1120 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
1122 <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
1123 <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
1127 </li> <!-- /.subfield_line -->
1128 <!-- End of the line -->
1129 [% END # /FOREACH subfield_loop %]
1130 </ul> <!-- /.sortable_subfield -->
1131 </li> <!-- /.tag.clearfix -->
1132 [% END %]<!-- if innerloo.tag -->
1133 [% END # /FOREACH BIG_LOO.innerloop %]
1134 </ul> <!-- /.sortable_field -->
1135 </div> <!-- /#tabXXX -->
1136 [% END # /FOREACH BIG_LOOP %]
1137 </div><!-- /#addbibliotabs -->
1139 [%# Fields for fast cataloging %]
1140 <input type="hidden" name="barcode" value="[% barcode | html %]" />
1141 <input type="hidden" name="branch" value="[% branch | html %]" />
1142 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
1143 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
1144 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
1145 [%# End of fields for fast cataloging %]
1146 </form> <!-- /name=f -->
1148 [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1150 </div> <!-- /.col-md-10.col-md-offset-1 -->
1151 </div> <!-- /.row -->
1153 [% INCLUDE 'intranet-bottom.inc' %]