Bug 11299: (follow-up) Correct rebase errors and add message class to dialog
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / addbiblio.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Koha &rsaquo; Cataloging &rsaquo; [% 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' %]
9 <script>
10     var CAN_user_parameters_manage_auth_values = "[% CAN_user_parameters_manage_auth_values | html %]";
11     $.fn.select2.defaults.set("width", "100%" );
12 </script>
13 [% Asset.js("js/cataloging.js") | $raw %]
14 [% Asset.js("js/browser.js") | $raw %]
15 <script>
16     var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
17     browser.show();
18
19     $(window).load(function(){
20         $("#loading").hide();
21     });
22     var Sticky;
23     $(document).ready(function() {
24
25         [% IF bib_doesnt_exist %]
26             $("#addbibliotabs").hide();
27             $("#toolbar").hide();
28         [% END %]
29
30         var $tabs = $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
31             $("#"+ui.panel.id+" input:eq(0)").focus();
32         });
33         $( "ul.sortable_field", $tabs ).sortable({
34             axis: "y",
35             containment: $("#addbibliotabs")
36         });
37         $( "ul.sortable_subfield", $tabs ).sortable({
38             axis: "y",
39             containment: "parent"
40         });
41
42         [% IF tab %]
43             link = $("a[href='#[% tab | html %]']");
44             selectTab( link );
45         [% END %]
46
47         Sticky = $("#toolbar");
48         Sticky.hcSticky({
49             stickTo: "#f",
50             stickyClass: "floating"
51         });
52
53         /* check cookie to hide/show marcdocs*/
54         if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
55             toggleMARCdocLinks(false);
56         } else {
57             toggleMARCdocLinks(true);
58         }
59
60         $("#marcDocsSelect").click(function(){
61             if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
62                 toggleMARCdocLinks(true);
63             } else {
64                 toggleMARCdocLinks(false);
65             }
66         });
67
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)
74         } else {
75             [% UNLESS Koha.Preference("hide_marc") %]
76                 toggleMARCTagLinks(true)
77             [% ELSE %]
78                 toggleMARCTagLinks(false);
79             [% END %]
80         }
81
82         $("#marcTagsSelect").click(function(){
83             if( Cookies.get("marctags_[% borrowernumber | html %]") == 'hide'){
84                 toggleMARCTagLinks(true)
85             } else {
86                 toggleMARCTagLinks(false);
87             }
88         });
89
90         $("#z3950search").click(function(){
91             PopupZ3950();
92         });
93
94         $("#linkerbutton").click(function(){
95             AutomaticLinker();
96         });
97
98         $("#saverecord").click(function(){
99             $(".btn-group").removeClass("open");
100             onOption();
101             return false;
102         });
103
104         $("#saveandview").click(function(){
105             $(".btn-group").removeClass("open");
106             redirect("view");
107             return false;
108         });
109
110         $("#saveanditems").click(function(){
111             $(".btn-group").removeClass("open");
112             redirect("items");
113             return false;
114         });
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);
121             return false;
122         });
123
124         $( '#switcheditor' ).click( function() {
125             var breedingid = [% breedingid || "null" | html %];
126
127             if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
128
129             Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
130
131             var biblionumber = [% biblionumber || "null" | html %];
132
133             if ( biblionumber ) {
134                 window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
135             } else {
136                 window.location = '/cgi-bin/koha/cataloguing/editor.pl';
137             }
138
139             return false;
140         } );
141         $(".change-framework").on("click", function(){
142             var frameworkcode = $(this).data("frameworkcode");
143             $("#frameworkcode").val( frameworkcode );
144             Changefwk();
145         });
146
147         $(".toolbar-tabs a").on("click",function(e){
148             e.preventDefault();
149             selectTab( $(this ) );
150         });
151
152         $(".tag_anchor").on("click", function(e){
153             e.preventDefault();
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 );
162         });
163
164     });
165
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();
173     }
174
175     function redirect(dest){
176         $("#redirect").attr("value",dest);
177         return Check();
178     }
179
180     [% IF ( CAN_user_editcatalogue_edit_items ) %]
181         var onOption = function () {
182             return Check();
183         }
184 [% END %]
185
186 /**
187 * this function append button for create new authority if not found
188 */
189
190 function addCreateAuthorityButton(tag_subfield_line, heading, tag_index) {
191     var title = _("Create authority");
192     var elem = $('<a href="#" title="' + title + '"><i class="fa fa-plus-circle"></i></a>');
193     tag_subfield_line.append(elem);
194     var tag_subfield_line_a = $('.subfield_line[id^=subfield' + heading.tag + 'a]').eq(tag_index);
195     var subfield_a = tag_subfield_line_a.children('.input_marceditor').eq(0);
196     var index = subfield_a.attr('id');
197     elem.click(function() {
198         var popup = window.open("", "new_auth_popup",'fullscreen,toolbar=false,scrollbars=yes');
199         if(popup !== null) {
200             // Create a new form that will be POSTed in the new window
201             var form = $('<form>').attr({
202             method: 'post',
203             action: "/cgi-bin/authorities/authorities.pl",
204             target: "new_auth_popup"
205             });
206             //add the authtypecode
207             form.append($('<input>').attr({
208                 type: 'hidden',
209                 name: 'authtypecode',
210                 value: heading.auth_type
211             }));
212             form.append($('<input>').attr({
213                 type: 'hidden',
214                 name: 'tagreport',
215                 value: heading.tag_to_report
216             }));
217             form.append($('<input>').attr({
218                 type: 'hidden',
219                 name: 'tagbiblio',
220                 value: heading.tag
221             }));
222             form.append($('<input>').attr({
223                 type: 'hidden',
224                 name: 'index',
225                 value: index
226             }));
227             $('.tag[id^=tag_' + heading.tag + '_]').eq(tag_index).find(':input').each(function(){
228                 form.append($('<input>').attr({
229                     type: 'hidden',
230                     name: this.name.split('_',4).join(''),
231                     value: $(this).val()
232                 }));
233             });
234
235             $('body').append(form);
236             form.submit();
237             form.remove();
238         }
239         return false;
240     });
241
242 }
243
244 /**
245  * Updates the authid for every heading field
246  * Adds visual feedback for the changes made on the form.
247  */
248 function updateHeadingLinks(links) {
249     var current_tag = '';
250     var tag_index = 0;
251
252     // Delete the old message dialog and create a new one
253     $('#autolinker_dialog').remove();
254     var message_dialog = $('<div id="autolinker_dialog" class="dialog message"><strong>' + _("Automatic authority link results:") + '</strong><ul></ul></div>');
255     var message_dialog_ul = message_dialog.find('ul');
256
257     $.each(links, function(index, heading) {
258         if(current_tag == heading.tag) {
259             tag_index++;
260         }
261         else {
262             current_tag = heading.tag;
263             tag_index = 0;
264         }
265
266         // Find the $9 field to update
267         var tag_subfield_line = $('.subfield_line[id^=subfield' + heading.tag + '9]').eq(tag_index);
268         var subfield = tag_subfield_line.children('.input_marceditor').eq(0);
269
270         // Delete the old status if one exists
271         tag_subfield_line.children('.subfield_status').remove();
272
273         // If the field wasn't modified. Skip it.
274         if(heading.status == 'UNCHANGED') {
275             return;
276         }
277
278
279         // Make the subfield line visible and update its value
280         tag_subfield_line.show();
281         subfield.val(heading.authid);
282
283         // Add the new status
284         var image = '<i class="fa fa-close no_matching_authority" </i> ';
285         var message = '';
286         var field_class = 'no_matching_authority_field';
287         switch(heading.status) {
288             case 'LOCAL_FOUND':
289                 image = '<i class="fa fa-check matching_authority"</i> ';
290                 message = _("A matching authority was found in the local database.");
291                 field_class = 'matching_authority_field';
292                 break;
293             case 'CREATED':
294                 image = '<i class="fa fa-check matching_authority"></i> ';
295                 message = _("No matching authority found. A new authority was created automatically.");
296                 field_class = 'matching_authority_field';
297                 break;
298             case 'MULTIPLE_MATCH':
299                 message = _("More than one local match found. Possibly a duplicate authority!");
300                 break;
301             case 'NONE_FOUND':
302                 message = _("No matching authority found.");
303                 break;
304             default:
305                 message = heading.status;
306                 break;
307         }
308
309         subfield[0].classList.add(field_class);
310         tag_subfield_line.find('i').each(function() {
311             this.remove();
312         });
313         tag_subfield_line.append(image);
314
315         // Add the message to the dialog
316         message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
317
318         // Add a link to create a new authority if none was found
319         if(heading.status == 'NONE_FOUND' && tag_subfield_line.find('i').length == 1) {
320             addCreateAuthorityButton(tag_subfield_line, heading , tag_index);
321         }
322     });
323
324     if(message_dialog.find('li').length == 0) {
325         message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
326     }
327     $('#addbibliotabs').before(message_dialog);
328 }
329
330 /**
331  * Use an ajax request to automatically find authority links for the current record
332  */
333 function AutomaticLinker() {
334     // Show the Loading overlay
335     $("#loading").show();
336
337     // Remove fields that are completely empty
338     $('#f').find('.tag').each(function() {
339         var empty = true;
340         $(this).find('.input_marceditor').each(function() {
341             if($(this).val() != '') {
342                 empty = false;
343                 return false;
344             }
345         });
346         if(empty) {
347             UnCloneField($(this).attr('id'));
348         }
349     });
350
351     // Get all the form values to post via AJAX
352     var form_data = {};
353     $('#f').find(':input').each(function(){
354         form_data[this.name] = $(this).val();
355     });
356     delete form_data[''];
357
358     // Send the data to automatic_linker.pl
359     $.ajax({
360         url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
361         type:'post',
362         data: form_data,
363         dataType: 'json',
364         error: function(xhr) {
365             alert("Error : \n" + xhr.responseText);
366         },
367         success: function(json) {
368             switch(json.status) {
369                 case 'UNAUTHORIZED':
370                     alert(_("Error : You do not have the permissions necessary to use this functionality."));
371                     break;
372                 case 'OK':
373                     updateHeadingLinks(json.links);
374                     break;
375             }
376         },
377         complete: function() {
378             $("#loading").hide();
379         }
380     });
381 }
382
383
384 function PopupMARCFieldDoc(field) {
385     [% IF Koha.Preference('marcfielddocurl') %]
386         var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
387         docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
388         docurl = docurl.replace("{FIELD}", ""+field);
389         docurl = docurl.replace("{LANG}", "[% lang | html %]");
390         window.open(docurl);
391     [% ELSIF ( marcflavour == 'MARC21' ) %]
392         _MARC21FieldDoc(field);
393     [% ELSIF ( marcflavour == 'UNIMARC' ) %]
394         _UNIMARCFieldDoc(field);
395     [% END %]
396 }
397     function confirmnotdup(redirect){
398         $("#confirm_not_duplicate").attr("value","1");
399         $("#redirect").attr("value",redirect);
400         Check();
401     }
402
403     function Dopop(link,i) {
404         defaultvalue = document.getElementById(i).value;
405         window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
406     }
407
408     /**
409      * this function open a popup to search on z3950 server.
410      */
411     function PopupZ3950() {
412         var strQuery = GetZ3950Terms();
413         if(strQuery){
414             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');
415         }
416     }
417
418     function PopupMARCFieldDoc(field) {
419         [% IF Koha.Preference('marcfielddocurl') %]
420             var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
421             docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
422             docurl = docurl.replace("{FIELD}", ""+field);
423             docurl = docurl.replace("{LANG}", "[% lang | html %]");
424             window.open(docurl);
425         [% ELSIF ( marcflavour == 'MARC21' ) %]
426             _MARC21FieldDoc(field);
427         [% ELSIF ( marcflavour == 'UNIMARC' ) %]
428             _UNIMARCFieldDoc(field);
429         [% END %]
430     }
431
432     function _MARC21FieldDoc(field) {
433         if(field == 0) {
434             window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
435         } else if (field >= 90 && field <= 99 ){
436             window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
437         } else if (field >= 590 && field <= 599 ){
438             window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
439         } else if (field >= 690 && field <= 699 ){
440             window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
441         } else if (field < 900) {
442             window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
443         } else {
444             window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
445         }
446     }
447
448     function _UNIMARCFieldDoc(field) {
449         /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
450            seems to be the only version available that can be linked to per tag.  More recent
451            versions of the UNIMARC standard are available on the IFLA website only as
452            PDFs!
453         */
454         var url;
455         if (field == 0) {
456             url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
457         } else {
458             var first = field.substring(0,1);
459             url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
460             if (first == 0) url = url + "b";
461             url = first == 9
462                   ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
463                   : url + field;
464         }
465         window.open(url);
466     }
467
468     /*
469      * Functions to hide/show marc docs and tags links
470      */
471
472     function toggleMARCdocLinks(flag){
473         if( flag === true ){
474             $(".marcdocs").show();
475             Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
476             $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
477         } else {
478             $(".marcdocs").hide();
479             Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
480             $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
481         }
482     }
483
484     function toggleMARCTagLinks(flag){
485         if( flag === true ){
486             $(".tagnum").show();
487             $(".subfieldcode").show();
488             Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
489             $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
490         } else {
491             $(".tagnum").hide();
492             $(".subfieldcode").hide();
493             Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
494             $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
495         }
496     }
497
498     /**
499      * check if mandatory/important subfields are written
500      * @param mandatory true to check for mandatories, false for importants
501      */
502     function AreFieldsNotOk (mandatory = true) {
503         var fields = new Array();
504         var subfields = new Array();
505         var tab = new Array();
506         var label = new Array();
507         var flag=0;
508         var tabflag= new Array();
509         var StrAlert = "";
510         var notFilledClass = "subfield_not_filled";
511
512         if (mandatory) {
513             [% FOREACH BIG_LOO IN BIG_LOOP %]
514                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
515                     [% IF ( innerloo.mandatory ) %]
516                         fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
517                     [% END %]
518                     [% FOREACH subfield_loo IN innerloo.subfield_loop %]
519                         [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
520                             tab.push("[% BIG_LOO.number | html %]");
521                             label.push("[% subfield_loo.marc_lib | $raw %]");
522                         [% END %]
523                     [% END %]
524                 [% END %]
525             [% END %]
526             StrAlert = _("Can't save this record because the following field aren't filled:");
527         } else {
528             [% FOREACH BIG_LOO IN BIG_LOOP %]
529                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
530                     [% IF ( innerloo.important ) %]
531                     fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
532                     [% END %]
533                     [% FOREACH subfield_loo IN innerloo.subfield_loop %]
534                         [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
535                             tab.push("[% BIG_LOO.number | html %]");
536                             label.push("[% subfield_loo.marc_lib | $raw %]");
537                         [% END %]
538                     [% END %]
539                 [% END %]
540             [% END %]
541             StrAlert = _("A few important fields are not filled:");
542             notFilledClass = "important_subfield_not_filled";
543         }
544
545         StrAlert += "\n\n";
546         for(var i=0,len=subfields.length; i<len ; i++){
547             var tag=subfields[i].substr(4,3);
548             var subfield=subfields[i].substr(17,1);
549             var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
550             if (tabflag[tag+subfield+tagnumber] ==  null) {
551                 tabflag[tag+subfield+tagnumber]=new Array();
552                 tabflag[tag+subfield+tagnumber][0]=0;
553             }
554             if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
555                 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
556
557                 var elt = document.getElementById(subfields[i]);
558                 if ( elt.nodeName == 'SELECT' ) {
559                     $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
560                 } else {
561                     elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
562                 }
563                 $('#' + subfields[i]).focus();
564                 tabflag[tag+subfield+tagnumber][1]=label[i];
565                 tabflag[tag+subfield+tagnumber][2]=tab[i];
566             } else {
567                 tabflag[tag+subfield+tagnumber][0] = 1;
568             }
569         }
570         for (var tagsubfieldid in tabflag){
571             if (tabflag[tagsubfieldid][0]==0){
572                 var tag=tagsubfieldid.substr(0,3);
573                 var subfield=tagsubfieldid.substr(3,1);
574                 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
575                 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
576                 flag=1;
577             }
578         }
579
580         /* Check for mandatories/importants field(not subfields) */
581         for(var i=0,len=fields.length; i<len; i++){
582             isempty  = true;
583             arr      = fields[i];
584             divid    = "tag_" + arr[0] + "_" + arr[1];
585             varegexp = new RegExp("^tag_" + arr[0] + "_code_");
586
587             if(parseInt(arr[0]) >= 10){
588                 elem = document.getElementById(divid);
589                 eleminputs = elem.getElementsByTagName('input');
590
591                 for(var j=0,len2=eleminputs.length; j<len2; j++){
592
593                     if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
594                         inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
595
596                         for( var k=0; k<len2; k++){
597                             if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
598                                 isempty = false
599                             }
600                         }
601
602                         elemselect = elem.getElementsByTagName('select');
603                         for( var k=0; k<elemselect.length; k++){
604                             if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
605                                 isempty = false
606                             }
607                         }
608                     }
609                 }
610
611                 elemtextareas = elem.getElementsByTagName('textarea');
612                 for(var j=0,len2=elemtextareas.length; j<len2; j++){
613                     // this bit assumes that the only textareas in this context would be for subfields
614                     if (elemtextareas[j].value) {
615                         isempty = false;
616                     }
617                 }
618             } else {
619                 isempty = false;
620             }
621
622             if(isempty){
623                 flag = 1;
624                 StrAlert += "\t* ";
625                 if (mandatory) {
626                     StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
627                 } else {
628                     StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
629                 }
630                 StrAlert += "\n";
631             }
632
633         }
634
635         if(flag){
636             return StrAlert;
637         } else {
638             return flag;
639         }
640     }
641
642     /**
643      *
644      *
645      */
646     function Check(){
647         var StrAlert = AreFieldsNotOk();
648         if( ! StrAlert ){
649             var StrWarning = AreFieldsNotOk(false);
650             if (StrWarning){
651                 StrWarning += "\n" + _("Are you sure you want to save?");
652                 var r=confirm(StrWarning);
653                 if (! r){
654                     return false;
655                 }
656             }
657             document.f.submit();
658             return true;
659         } else {
660             alert(StrAlert);
661             return false;
662         }
663     }
664
665     /**
666      * check if z3950 mandatories are set or not
667      */
668     function GetZ3950Terms(){
669         var frameworkcode = document.getElementById("frameworkcode").value;
670         var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
671         var mandatories = new Array();
672         var mandatories_label = new Array();
673         [% FOREACH BIG_LOO IN BIG_LOOP %]
674             [% FOREACH innerloo IN BIG_LOO.innerloop %]
675                 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
676                     [% IF ( subfield_loo.z3950_mandatory ) %]
677                         mandatories.push("[% subfield_loo.id | html %]");
678                         mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
679                     [% END %]
680                 [% END %]
681             [% END %]
682         [% END %]
683
684         for(var i=0,len=mandatories.length; i<len ; i++){
685             var field_value = document.getElementById(mandatories[i]).value;
686             if( field_value ){
687                 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
688             }
689         }
690         return strQuery;
691     }
692
693     function Changefwk() {
694         var f = document.f;
695         f.op.value = "[% op | html %]";
696         f.biblionumber.value = "[% biblionumberdata | html %]";
697         f.changed_framework.value = "changed";
698         f.submit();
699     }
700
701 </script>
702 [% Asset.css("css/addbiblio.css") | $raw %]
703 </head>
704 <body id="cat_addbiblio" class="cat">
705
706    <div id="loading">
707        <div>Loading, please wait...</div>
708    </div>
709
710     [% INCLUDE 'header.inc' %]
711
712     <div id="breadcrumbs">
713         <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
714         <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo;
715         [% IF ( biblionumber ) %]
716             Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
717         [% ELSE %]
718             Add MARC record
719         [% END %]
720     </div>
721
722     <div class="main container-fluid">
723         <div class="row">
724             <div class="col-md-10 col-md-offset-1">
725
726                 <h1>
727                     [% IF ( biblionumber ) %]
728                         Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
729                     [% ELSE %]
730                         Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
731                     [% END %]
732                 </h1>
733
734                 [% UNLESS ( number ) %]
735                     <!-- show duplicate warning on tab 0 only -->
736                     [% IF ( duplicatebiblionumber ) %]
737                         <div class="dialog alert">
738                             <h3>Duplicate record suspected</h3>
739                             <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 %]&amp;popup=1', 'DuplicateBiblio','800','600'); return false;">[% duplicatetitle | html %] <i class="fa fa-window-restore"></i></a> ?</p>
740                             [% IF ( CAN_user_editcatalogue_edit_items ) %]
741                                 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
742                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
743                                     <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
744                                 </form>
745                             [% ELSE %]
746                                 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
747                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
748                                     <input type="submit" value="Yes: View existing items" />
749                                 </form>
750                             [% END %]
751                             <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
752                                 [% IF ( CAN_user_editcatalogue_edit_items ) %]
753                                     <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
754                                 [% ELSE %]
755                                     <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
756                                 [% END %]
757                             </form>
758                         </div> <!-- /.dialog.alert -->
759                     [% END # /IF duplicatebiblionumber %]
760                 [% END # /UNLESS number %]
761
762                 [% IF ( done ) %]
763                     <script>
764                         opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
765                         opener.document.forms['f'].title.value='[% title | html %]';
766                         window.close();
767                     </script>
768                 [% ELSE %]
769                     <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
770                         <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
771                         <input type="hidden" value="" id="current_tab" name="current_tab" />
772                         <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
773                 [% END %]
774
775                 <div id="toolbar" class="btn-toolbar">
776                     [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
777                         [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
778                             <!-- Action is under fast cataloging - Save button redirecting to items -->
779                             <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
780                         [% ELSE %]
781                             <!-- Not using fast cataloging - Display split menu -->
782                             <div class="btn-group">
783                                 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
784                                 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
785                                 <span class="caret"></span>
786                                 </button>
787                                 <ul class="dropdown-menu">
788                                     <li><a id="saveandview" href="#">Save and view record</a></li>
789                                     <li><a id="saveanditems" href="#">Save and edit items</a></li>
790                                     <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
791                                 </ul>
792                             </div>
793                         [% END %]
794                     [% ELSE %]
795                         <!-- User cannot edit items - single button redirecting to view -->
796                         <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
797                     [% END # /IF CAN_user_editcatalogue_edit_items %]
798
799                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
800                         [% IF biblionumber %]
801                             <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>
802                         [% ELSE %]
803                             <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
804                         [% END %]
805                         [% IF ( CAN_user_editauthorities ) %]
806                             <div class="btn-group"><a class="btn btn-default" href="#" id="linkerbutton"><i class="fa fa-refresh"></i> Link authorities automatically</a></div>
807                         [% END %]
808                     [% END %]
809
810                     <div class="btn-group">
811                         <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
812                         <ul id="settings-menu" class="dropdown-menu">
813                             [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
814                                 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
815                             [% END %]
816                             [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
817                                 <li>
818                                     <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
819                                 <li>
820                                     <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
821                                 </li>
822                             [% END %]
823                             <li class="dropdown-header">Change framework</li>
824                             <li>
825                                 <a href="#" class="change-framework" data-frameworkcode="">
826                                     [% IF ( frameworkcode ) %]
827                                        <i class="fa fa-fw">&nbsp;</i>
828                                     [% ELSE %]
829                                         <i class="fa fa-fw fa-check"></i>
830                                     [% END %]
831                                     Default
832                                 </a>
833                             </li>
834                             [% FOREACH framework IN frameworks%]
835                                 <li>
836                                     <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
837                                         [% IF framework.frameworkcode == frameworkcode %]
838                                             <i class="fa fa-fw fa-check"></i>
839                                         [% ELSE %]
840                                             <i class="fa fa-fw">&nbsp;</i>
841                                         [% END %]
842                                         [% framework.frameworktext | html %]
843                                     </a>
844                                 </li>
845                             [% END %]
846                         </ul> <!-- /#settings-menu -->
847                     </div> <!-- /.btn-group -->
848                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
849                         [% IF (biblionumber) %]
850                             [% IF ( BiblioDefaultViewmarc ) %]
851                                 <div class="btn-group">
852                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
853                                 </div>
854                             [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
855                                 <div class="btn-group">
856                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
857                                 </div>
858                             [% ELSIF ( BiblioDefaultViewisbd ) %]
859                                 <div class="btn-group">
860                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
861                                 </div>
862                             [% ELSE %]
863                                 <div class="btn-group">
864                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
865                                 </div>
866                             [% END %]
867                         [% ELSE %]
868                             <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
869                         [% END %]
870                     [% END # /UNLESS circborrowernumber %]
871                     <div class="toolbar-tabs-container">
872                         [% IF ( BIG_LOOP.size > 1 ) %]
873                             <ul class="toolbar-tabs">
874                                 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
875                                     [% IF loop.first %]
876                                         <li class="selected">
877                                     [% ELSE %]
878                                         <li>
879                                     [% END %]
880                                         <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
881                                     </li>
882                                 [%- END -%]
883                             </ul>
884                         [% END %]
885                         <ul class="tag_anchors_list">
886                             [% FOREACH BIG_LOO IN BIG_LOOP %]
887                                 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
888                                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
889                                     [% IF ( innerloo.tag ) %]
890                                         <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
891                                             <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>
892                                         </li>
893                                     [% END %]
894                                 [% END %]
895                             [% END %]
896                         </ul>
897                     </div>
898                 </div> <!-- /#toolbar.btn-toolbar -->
899
900                 [% IF bib_doesnt_exist %]
901                     <div class="dialog alert">
902                         The record you are trying to edit doesn't exist.<br>
903                         <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>.
904                     </div>
905                 [% END %]
906
907                 [% IF ( popup ) %]
908                         <input type="hidden" name="mode" value="popup" />
909                 [% END %]
910                 <input type="hidden" name="op" value="addbiblio" />
911                 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
912                 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
913                 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
914                 <input type="hidden" name="changed_framework" value="" />
915
916                 <div id="addbibliotabs" class="toptabs numbered">
917                     <ul>
918                         [% FOREACH BIG_LOO IN BIG_LOOP %]
919                             <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
920                         [% END %]
921                     </ul>
922
923                     [% FOREACH BIG_LOO IN BIG_LOOP %]
924                         <div id="tab[% BIG_LOO.number | html %]XX">
925
926                             [% IF ( BIG_LOOP.size > 1 ) %]
927                                 <h3>Section [% BIG_LOO.number | html %]</h3>
928                             [% END %]
929                             [% previous = "" %]
930                             [% FOREACH innerloo IN BIG_LOO.innerloop %]
931                                 [% IF ( innerloo.tag ) %]
932                                 [% IF innerloo.tag != previous %]
933                                     [% IF previous != "" %]
934                                         </ul>
935                                     [% END %]
936                                     [% previous = innerloo.tag %]
937                                     [% IF ( innerloo.repeatable ) %]
938                                         <ul class="sortable_field">
939                                     [% ELSE %]
940                                         <ul>
941                                     [% END %]
942                                 [% END %]
943                                     [% IF ( innerloo.repeatable ) %]
944                                         <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
945                                     [% ELSE %]
946                                         <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
947                                     [% END %]
948                                         <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
949                                             [% IF advancedMARCEditor %]
950                                                 <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>
951                                             [% ELSE %]
952                                                 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
953                                                 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;">&nbsp;?</a>[% END %]
954                                             [% END %]
955
956                                             [% IF ( innerloo.fixedfield ) %]
957                                                 <input type="text"
958                                                     tabindex="1"
959                                                     class="indicator flat"
960                                                     style="display:none;"
961                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
962                                                     size="1"
963                                                     maxlength="1"
964                                                     value="[% innerloo.indicator1 | html %]" />
965                                                 <input type="text"
966                                                     tabindex="1"
967                                                     class="indicator flat"
968                                                     style="display:none;"
969                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
970                                                     size="1"
971                                                     maxlength="1"
972                                                     value="[% innerloo.indicator2 | html %]" />
973                                             [% ELSE %]
974                                                 <input type="text"
975                                                     tabindex="1"
976                                                     class="indicator flat"
977                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
978                                                     size="1"
979                                                     maxlength="1"
980                                                     value="[% innerloo.indicator1 | html %]" />
981                                                 <input type="text"
982                                                     tabindex="1"
983                                                     class="indicator flat"
984                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
985                                                     size="1"
986                                                     maxlength="1"
987                                                     value="[% innerloo.indicator2 | html %]" />
988                                             [% END # /IF innerloo.fixedfield %] -
989
990                                             [% UNLESS advancedMARCEditor %]
991                                                 <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>
992                                             [% END %]
993
994                                             <span class="field_controls">
995                                                 [% IF ( innerloo.repeatable ) %]
996                                                     <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">
997                                                         <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
998                                                     </a>
999                                                 [% END %]
1000                                                 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
1001                                                     <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
1002                                                 </a>
1003                                             </span> <!-- /.field_controls -->
1004                                         </div> <!-- /div.tag_title -->
1005
1006                                         <ul class="sortable_subfield">
1007                                         [% FOREACH subfield_loo IN innerloo.subfield_loop %]
1008                                             <!--  One line on the marc editor -->
1009                                             <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
1010                                                 <div class="subfieldcode">
1011                                                     <input type="text"
1012                                                             title="[% subfield_loo.marc_lib | $raw %]"
1013                                                             style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
1014                                                             name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
1015                                                             value="[% subfield_loo.subfield | html %]"
1016                                                             size="1"
1017                                                             maxlength="1"
1018                                                             class="flat"
1019                                                             tabindex="0" />
1020                                                 </div>
1021                                                 [% UNLESS advancedMARCEditor %]
1022                                                     [% IF ( subfield_loo.mandatory ) %]
1023                                                         <div class="subfield subfield_mandatory">
1024                                                     [% ELSIF ( subfield_loo.important ) %]
1025                                                         <div class="subfield subfield_important">
1026                                                     [% ELSE %]
1027                                                         <div class="subfield">
1028                                                     [% END %]
1029                                                         [% IF ( subfield_loo.fixedfield ) %]
1030                                                             <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">
1031                                                         [% ELSE %]
1032                                                             <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1033                                                         [% END %]
1034                                                         [% subfield_loo.marc_lib | $raw %]
1035                                                         </label>
1036                                                     </div>
1037                                                 [% END %]
1038
1039                                                 [% SET mv = subfield_loo.marc_value %]
1040                                                 <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor">
1041                                                     [% IF ( mv.type == 'text' ) %]
1042                                                         [% IF ( mv.readonly == 1 ) %]
1043                                                             <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" />
1044                                                         [% ELSE %]
1045                                                             <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 -%]" />
1046                                                         [% END %]
1047
1048                                                     [% ELSIF ( mv.type == 'text_complex' ) %]
1049                                                         <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 -%]" />
1050                                                         [% mv.javascript | $raw %]
1051                                                     [% ELSIF ( mv.type == 'hidden' ) %]
1052                                                         <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 -%]" />
1053                                                     [% ELSIF ( mv.type == 'textarea' ) %]
1054                                                         <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
1055                                                     [% ELSIF ( mv.type == 'select' ) %]
1056                                                     [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
1057                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
1058                                                     [% ELSE %]
1059                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1060                                                     [% END %]
1061                                                         [% FOREACH aval IN mv.values %]
1062                                                             [% IF aval == mv.default %]
1063                                                             <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1064                                                             [% ELSE %]
1065                                                             <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1066                                                             [% END %]
1067                                                         [% END %]
1068                                                         </select>
1069                                                     [% END  # /IF (mv.type...) %]
1070                                                 </div>
1071                                                 [% IF ( subfield_loo.mandatory ) %]
1072                                                     <div class="subfield_loop_mandatory">
1073                                                         <span class="required">Required</span>
1074                                                     </div>
1075                                                 [% ELSIF ( subfield_loo.important ) %]
1076                                                     <div class="subfield_loop_mandatory">
1077                                                         <span class="important">Important</span>
1078                                                     </div>
1079                                                 [% END %]
1080                                                 <div class="subfield_controls">
1081                                                     [% IF ( mv.type == 'text' ) %]
1082                                                         [% IF ( mv.authtype ) %]
1083                                                             <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>
1084                                                         [% END %]
1085                                                     [% ELSIF ( mv.type == 'text_complex' ) %]
1086                                                             [% IF mv.noclick %]
1087                                                                 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1088                                                             [% ELSE %]
1089                                                                 [% IF mv.plugin == "upload.pl" %]
1090                                                                     <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>
1091                                                                 [% ELSE %]
1092                                                                     <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1093                                                                 [% END %]
1094                                                             [% END %]
1095                                                         </span>
1096                                                     [% END %]
1097                                                     [% IF ( subfield_loo.repeatable ) %]
1098                                                         <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;">
1099                                                             <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
1100                                                         </a>
1101                                                         <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
1102                                                             <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
1103                                                         </a>
1104                                                     [% END %]
1105                                                 </div>
1106                                             </li> <!-- /.subfield_line -->
1107                                             <!-- End of the line -->
1108                                         [% END # /FOREACH subfield_loop %]
1109                                         </ul> <!--  /.sortable_subfield -->
1110                                     </li> <!-- /.tag.clearfix -->
1111                                 [% END %]<!-- if innerloo.tag -->
1112                             [% END # /FOREACH BIG_LOO.innerloop %]
1113                             </ul> <!--  /.sortable_field -->
1114                         </div> <!-- /#tabXXX -->
1115                     [% END # /FOREACH BIG_LOOP %]
1116                 </div><!-- /#addbibliotabs -->
1117
1118                 [%# Fields for fast cataloging %]
1119                 <input type="hidden" name="barcode" value="[% barcode | html %]" />
1120                 <input type="hidden" name="branch" value="[% branch | html %]" />
1121                 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
1122                 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
1123                 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
1124                 [%# End of fields for fast cataloging %]
1125             </form> <!-- /name=f -->
1126
1127             [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1128
1129         </div> <!-- /.col-md-10.col-md-offset-1 -->
1130     </div> <!-- /.row -->
1131
1132 [% INCLUDE 'intranet-bottom.inc' %]