Bug 11299: Add a button to the biblio edition page to automatically add authority...
[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 function confirmnotdup(redirect){
187     $("#confirm_not_duplicate").attr("value","1");
188     $("#redirect").attr("value",redirect);
189     Check();
190 }
191
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');
195 }
196
197 /**
198  * this function open a popup to search on z3950 server.
199  */
200 function PopupZ3950() {
201     var strQuery = GetZ3950Terms();
202     if(strQuery){
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');
204     }
205 }
206
207 /**
208 * this function append button for create new authority if not found
209 */
210
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');
220         if(popup !== null) {
221             // Create a new form that will be POSTed in the new window
222             var form = $('<form>').attr({
223             method: 'post',
224             action: "../authorities/authorities.pl",
225             target: "new_auth_popup"
226             });
227             //add the authtypecode
228             form.append($('<input>').attr({
229                 type: 'hidden',
230                 name: 'authtypecode',
231                 value: heading.auth_type
232             }));
233             form.append($('<input>').attr({
234                 type: 'hidden',
235                 name: 'tagreport',
236                 value: heading.tag_to_report
237             }));
238             form.append($('<input>').attr({
239                 type: 'hidden',
240                 name: 'tagbiblio',
241                 value: heading.tag
242             }));
243             form.append($('<input>').attr({
244                 type: 'hidden',
245                 name: 'index',
246                 value: index
247             }));
248             $('.tag[id^=tag_' + heading.tag + '_]').eq(tag_index).find(':input').each(function(){
249                 form.append($('<input>').attr({
250                     type: 'hidden',
251                     name: this.name.split('_',4).join(''),
252                     value: $(this).val()
253                 }));
254             });
255
256             $('body').append(form);
257             form.submit();
258             form.remove();
259         }
260         return false;
261     });
262
263 }
264
265 /**
266  * Updates the authid for every heading field
267  * Adds visual feedback for the changes made on the form.
268  */
269 function updateHeadingLinks(links) {
270     var current_tag = '';
271     var tag_index = 0;
272
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');
277
278     $.each(links, function(index, heading) {
279         if(current_tag == heading.tag) {
280             tag_index++;
281         }
282         else {
283             current_tag = heading.tag;
284             tag_index = 0;
285         }
286
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);
290
291         // Delete the old status if one exists
292         tag_subfield_line.children('.subfield_status').remove();
293
294         // If the field wasn't modified. Skip it.
295         if(heading.status == 'UNCHANGED') {
296             return;
297         }
298
299
300         // Make the subfield line visible and update its value
301         tag_subfield_line.show();
302         subfield.val(heading.authid);
303
304         // Add the new status
305         var image = '<i class="fa fa-close no_matching_authority" </i> ';
306         var message = '';
307         var field_class = 'no_matching_authority_field';
308         switch(heading.status) {
309             case 'LOCAL_FOUND':
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';
313                 break;
314             case 'CREATED':
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';
318                 break;
319             case 'MULTIPLE_MATCH':
320                 message = _("More than one local match found. Possibly a duplicate authority!");
321                 break;
322             case 'NONE_FOUND':
323                 message = _("No matching authority found.");
324                 break;
325             default:
326                 message = heading.status;
327                 break;
328         }
329
330         subfield[0].classList.add(field_class);
331         tag_subfield_line.find('i').each(function() {
332             this.remove();
333         });
334         tag_subfield_line.append(image);
335
336         // Add the message to the dialog
337         message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
338
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);
342         }
343     });
344
345     if(message_dialog.find('li').length == 0) {
346         message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
347     }
348     $('#addbibliotabs').before(message_dialog);
349 }
350
351 /**
352  * Use an ajax request to automatically find authority links for the current record
353  */
354 function AutomaticLinker() {
355     // Show the Loading overlay
356     $("#loading").show();
357
358     // Remove fields that are completely empty
359     $('#f').find('.tag').each(function() {
360         var empty = true;
361         $(this).find('.input_marceditor').each(function() {
362             if($(this).val() != '') {
363                 empty = false;
364                 return false;
365             }
366         });
367         if(empty) {
368             UnCloneField($(this).attr('id'));
369         }
370     });
371
372     // Get all the form values to post via AJAX
373     var form_data = {};
374     $('#f').find(':input').each(function(){
375         form_data[this.name] = $(this).val();
376     });
377     delete form_data[''];
378
379     // Send the data to automatic_linker.pl
380     $.ajax({
381         url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
382         type:'post',
383         data: form_data,
384         dataType: 'json',
385         error: function(xhr) {
386             alert("Error : \n" + xhr.responseText);
387         },
388         success: function(json) {
389             switch(json.status) {
390                 case 'UNAUTHORIZED':
391                     alert(_("Error : You do not have the permissions necessary to use this functionality."));
392                     break;
393                 case 'OK':
394                     updateHeadingLinks(json.links);
395                     break;
396             }
397         },
398         complete: function() {
399             $("#loading").hide();
400         }
401     });
402 }
403
404
405 function PopupMARCFieldDoc(field) {
406     [% IF Koha.Preference('marcfielddocurl') %]
407         var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
408         docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
409         docurl = docurl.replace("{FIELD}", ""+field);
410         docurl = docurl.replace("{LANG}", "[% lang | html %]");
411         window.open(docurl);
412     [% ELSIF ( marcflavour == 'MARC21' ) %]
413         _MARC21FieldDoc(field);
414     [% ELSIF ( marcflavour == 'UNIMARC' ) %]
415         _UNIMARCFieldDoc(field);
416     [% END %]
417 }
418     function confirmnotdup(redirect){
419         $("#confirm_not_duplicate").attr("value","1");
420         $("#redirect").attr("value",redirect);
421         Check();
422     }
423
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');
427     }
428
429     /**
430      * this function open a popup to search on z3950 server.
431      */
432     function PopupZ3950() {
433         var strQuery = GetZ3950Terms();
434         if(strQuery){
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');
436         }
437     }
438
439     function PopupMARCFieldDoc(field) {
440         [% IF Koha.Preference('marcfielddocurl') %]
441             var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
442             docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
443             docurl = docurl.replace("{FIELD}", ""+field);
444             docurl = docurl.replace("{LANG}", "[% lang | html %]");
445             window.open(docurl);
446         [% ELSIF ( marcflavour == 'MARC21' ) %]
447             _MARC21FieldDoc(field);
448         [% ELSIF ( marcflavour == 'UNIMARC' ) %]
449             _UNIMARCFieldDoc(field);
450         [% END %]
451     }
452
453     function _MARC21FieldDoc(field) {
454         if(field == 0) {
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");
464         } else {
465             window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
466         }
467     }
468
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
473            PDFs!
474         */
475         var url;
476         if (field == 0) {
477             url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
478         } else {
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";
482             url = first == 9
483                   ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
484                   : url + field;
485         }
486         window.open(url);
487     }
488
489     /*
490      * Functions to hide/show marc docs and tags links
491      */
492
493     function toggleMARCdocLinks(flag){
494         if( flag === true ){
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');
498         } else {
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');
502         }
503     }
504
505     function toggleMARCTagLinks(flag){
506         if( flag === true ){
507             $(".tagnum").show();
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');
511         } else {
512             $(".tagnum").hide();
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');
516         }
517     }
518
519     /**
520      * check if mandatory/important subfields are written
521      * @param mandatory true to check for mandatories, false for importants
522      */
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();
528         var flag=0;
529         var tabflag= new Array();
530         var StrAlert = "";
531         var notFilledClass = "subfield_not_filled";
532
533         if (mandatory) {
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 %]"));
538                     [% END %]
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 %]");
543                         [% END %]
544                     [% END %]
545                 [% END %]
546             [% END %]
547             StrAlert = _("Can't save this record because the following field aren't filled:");
548         } else {
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 %]"));
553                     [% END %]
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 %]");
558                         [% END %]
559                     [% END %]
560                 [% END %]
561             [% END %]
562             StrAlert = _("A few important fields are not filled:");
563             notFilledClass = "important_subfield_not_filled";
564         }
565
566         StrAlert += "\n\n";
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;
574             }
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] ;
577
578                 var elt = document.getElementById(subfields[i]);
579                 if ( elt.nodeName == 'SELECT' ) {
580                     $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
581                 } else {
582                     elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
583                 }
584                 $('#' + subfields[i]).focus();
585                 tabflag[tag+subfield+tagnumber][1]=label[i];
586                 tabflag[tag+subfield+tagnumber][2]=tab[i];
587             } else {
588                 tabflag[tag+subfield+tagnumber][0] = 1;
589             }
590         }
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";
597                 flag=1;
598             }
599         }
600
601         /* Check for mandatories/importants field(not subfields) */
602         for(var i=0,len=fields.length; i<len; i++){
603             isempty  = true;
604             arr      = fields[i];
605             divid    = "tag_" + arr[0] + "_" + arr[1];
606             varegexp = new RegExp("^tag_" + arr[0] + "_code_");
607
608             if(parseInt(arr[0]) >= 10){
609                 elem = document.getElementById(divid);
610                 eleminputs = elem.getElementsByTagName('input');
611
612                 for(var j=0,len2=eleminputs.length; j<len2; j++){
613
614                     if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
615                         inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
616
617                         for( var k=0; k<len2; k++){
618                             if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
619                                 isempty = false
620                             }
621                         }
622
623                         elemselect = elem.getElementsByTagName('select');
624                         for( var k=0; k<elemselect.length; k++){
625                             if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
626                                 isempty = false
627                             }
628                         }
629                     }
630                 }
631
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) {
636                         isempty = false;
637                     }
638                 }
639             } else {
640                 isempty = false;
641             }
642
643             if(isempty){
644                 flag = 1;
645                 StrAlert += "\t* ";
646                 if (mandatory) {
647                     StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
648                 } else {
649                     StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
650                 }
651                 StrAlert += "\n";
652             }
653
654         }
655
656         if(flag){
657             return StrAlert;
658         } else {
659             return flag;
660         }
661     }
662
663     /**
664      *
665      *
666      */
667     function Check(){
668         var StrAlert = AreFieldsNotOk();
669         if( ! StrAlert ){
670             var StrWarning = AreFieldsNotOk(false);
671             if (StrWarning){
672                 StrWarning += "\n" + _("Are you sure you want to save?");
673                 var r=confirm(StrWarning);
674                 if (! r){
675                     return false;
676                 }
677             }
678             document.f.submit();
679             return true;
680         } else {
681             alert(StrAlert);
682             return false;
683         }
684     }
685
686     /**
687      * check if z3950 mandatories are set or not
688      */
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 %]");
700                     [% END %]
701                 [% END %]
702             [% END %]
703         [% END %]
704
705         for(var i=0,len=mandatories.length; i<len ; i++){
706             var field_value = document.getElementById(mandatories[i]).value;
707             if( field_value ){
708                 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
709             }
710         }
711         return strQuery;
712     }
713
714     function Changefwk() {
715         var f = document.f;
716         f.op.value = "[% op | html %]";
717         f.biblionumber.value = "[% biblionumberdata | html %]";
718         f.changed_framework.value = "changed";
719         f.submit();
720     }
721
722 </script>
723 [% Asset.css("css/addbiblio.css") | $raw %]
724 </head>
725 <body id="cat_addbiblio" class="cat">
726
727    <div id="loading">
728        <div>Loading, please wait...</div>
729    </div>
730
731     [% INCLUDE 'header.inc' %]
732
733     <div id="breadcrumbs">
734         <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
735         <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo;
736         [% IF ( biblionumber ) %]
737             Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
738         [% ELSE %]
739             Add MARC record
740         [% END %]
741     </div>
742
743     <div class="main container-fluid">
744         <div class="row">
745             <div class="col-md-10 col-md-offset-1">
746
747                 <h1>
748                     [% IF ( biblionumber ) %]
749                         Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
750                     [% ELSE %]
751                         Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
752                     [% END %]
753                 </h1>
754
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 %]&amp;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>
765                                 </form>
766                             [% ELSE %]
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" />
770                                 </form>
771                             [% END %]
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>
775                                 [% ELSE %]
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>
777                                 [% END %]
778                             </form>
779                         </div> <!-- /.dialog.alert -->
780                     [% END # /IF duplicatebiblionumber %]
781                 [% END # /UNLESS number %]
782
783                 [% IF ( done ) %]
784                     <script>
785                         opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
786                         opener.document.forms['f'].title.value='[% title | html %]';
787                         window.close();
788                     </script>
789                 [% ELSE %]
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" />
794                 [% END %]
795
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>
801                         [% ELSE %]
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>
807                                 </button>
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>
812                                 </ul>
813                             </div>
814                         [% END %]
815                     [% ELSE %]
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 %]
819
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>
823                         [% ELSE %]
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>
825                         [% END %]
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>
828                         [% END %]
829                     [% END %]
830
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>
836                             [% END %]
837                             [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
838                                 <li>
839                                     <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
840                                 <li>
841                                     <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
842                                 </li>
843                             [% END %]
844                             <li class="dropdown-header">Change framework</li>
845                             <li>
846                                 <a href="#" class="change-framework" data-frameworkcode="">
847                                     [% IF ( frameworkcode ) %]
848                                        <i class="fa fa-fw">&nbsp;</i>
849                                     [% ELSE %]
850                                         <i class="fa fa-fw fa-check"></i>
851                                     [% END %]
852                                     Default
853                                 </a>
854                             </li>
855                             [% FOREACH framework IN frameworks%]
856                                 <li>
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>
860                                         [% ELSE %]
861                                             <i class="fa fa-fw">&nbsp;</i>
862                                         [% END %]
863                                         [% framework.frameworktext | html %]
864                                     </a>
865                                 </li>
866                             [% END %]
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>
874                                 </div>
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>
878                                 </div>
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>
882                                 </div>
883                             [% ELSE %]
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>
886                                 </div>
887                             [% END %]
888                         [% ELSE %]
889                             <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
890                         [% END %]
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 -%]
896                                     [% IF loop.first %]
897                                         <li class="selected">
898                                     [% ELSE %]
899                                         <li>
900                                     [% END %]
901                                         <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
902                                     </li>
903                                 [%- END -%]
904                             </ul>
905                         [% END %]
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>
913                                         </li>
914                                     [% END %]
915                                 [% END %]
916                             [% END %]
917                         </ul>
918                     </div>
919                 </div> <!-- /#toolbar.btn-toolbar -->
920
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>.
925                     </div>
926                 [% END %]
927
928                 [% IF ( popup ) %]
929                         <input type="hidden" name="mode" value="popup" />
930                 [% END %]
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="" />
936
937                 <div id="addbibliotabs" class="toptabs numbered">
938                     <ul>
939                         [% FOREACH BIG_LOO IN BIG_LOOP %]
940                             <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
941                         [% END %]
942                     </ul>
943
944                     [% FOREACH BIG_LOO IN BIG_LOOP %]
945                         <div id="tab[% BIG_LOO.number | html %]XX">
946
947                             [% IF ( BIG_LOOP.size > 1 ) %]
948                                 <h3>Section [% BIG_LOO.number | html %]</h3>
949                             [% END %]
950                             [% previous = "" %]
951                             [% FOREACH innerloo IN BIG_LOO.innerloop %]
952                                 [% IF ( innerloo.tag ) %]
953                                 [% IF innerloo.tag != previous %]
954                                     [% IF previous != "" %]
955                                         </ul>
956                                     [% END %]
957                                     [% previous = innerloo.tag %]
958                                     [% IF ( innerloo.repeatable ) %]
959                                         <ul class="sortable_field">
960                                     [% ELSE %]
961                                         <ul>
962                                     [% END %]
963                                 [% END %]
964                                     [% IF ( innerloo.repeatable ) %]
965                                         <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
966                                     [% ELSE %]
967                                         <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
968                                     [% END %]
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>
972                                             [% ELSE %]
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;">&nbsp;?</a>[% END %]
975                                             [% END %]
976
977                                             [% IF ( innerloo.fixedfield ) %]
978                                                 <input type="text"
979                                                     tabindex="1"
980                                                     class="indicator flat"
981                                                     style="display:none;"
982                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
983                                                     size="1"
984                                                     maxlength="1"
985                                                     value="[% innerloo.indicator1 | html %]" />
986                                                 <input type="text"
987                                                     tabindex="1"
988                                                     class="indicator flat"
989                                                     style="display:none;"
990                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
991                                                     size="1"
992                                                     maxlength="1"
993                                                     value="[% innerloo.indicator2 | html %]" />
994                                             [% ELSE %]
995                                                 <input type="text"
996                                                     tabindex="1"
997                                                     class="indicator flat"
998                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
999                                                     size="1"
1000                                                     maxlength="1"
1001                                                     value="[% innerloo.indicator1 | html %]" />
1002                                                 <input type="text"
1003                                                     tabindex="1"
1004                                                     class="indicator flat"
1005                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
1006                                                     size="1"
1007                                                     maxlength="1"
1008                                                     value="[% innerloo.indicator2 | html %]" />
1009                                             [% END # /IF innerloo.fixedfield %] -
1010
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>
1013                                             [% END %]
1014
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" />
1019                                                     </a>
1020                                                 [% END %]
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" />
1023                                                 </a>
1024                                             </span> <!-- /.field_controls -->
1025                                         </div> <!-- /div.tag_title -->
1026
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">
1032                                                     <input type="text"
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 %]"
1037                                                             size="1"
1038                                                             maxlength="1"
1039                                                             class="flat"
1040                                                             tabindex="0" />
1041                                                 </div>
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">
1047                                                     [% ELSE %]
1048                                                         <div class="subfield">
1049                                                     [% END %]
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">
1052                                                         [% ELSE %]
1053                                                             <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1054                                                         [% END %]
1055                                                         [% subfield_loo.marc_lib | $raw %]
1056                                                         </label>
1057                                                     </div>
1058                                                 [% END %]
1059
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" />
1065                                                         [% ELSE %]
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 -%]" />
1067                                                         [% END %]
1068
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 %]">
1079                                                     [% ELSE %]
1080                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1081                                                     [% END %]
1082                                                         [% FOREACH aval IN mv.values %]
1083                                                             [% IF aval == mv.default %]
1084                                                             <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1085                                                             [% ELSE %]
1086                                                             <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1087                                                             [% END %]
1088                                                         [% END %]
1089                                                         </select>
1090                                                     [% END  # /IF (mv.type...) %]
1091                                                 </div>
1092                                                 [% IF ( subfield_loo.mandatory ) %]
1093                                                     <div class="subfield_loop_mandatory">
1094                                                         <span class="required">Required</span>
1095                                                     </div>
1096                                                 [% ELSIF ( subfield_loo.important ) %]
1097                                                     <div class="subfield_loop_mandatory">
1098                                                         <span class="important">Important</span>
1099                                                     </div>
1100                                                 [% END %]
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>
1105                                                         [% END %]
1106                                                     [% ELSIF ( mv.type == 'text_complex' ) %]
1107                                                             [% IF mv.noclick %]
1108                                                                 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1109                                                             [% ELSE %]
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>
1112                                                                 [% ELSE %]
1113                                                                     <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1114                                                                 [% END %]
1115                                                             [% END %]
1116                                                         </span>
1117                                                     [% END %]
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" />
1121                                                         </a>
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" />
1124                                                         </a>
1125                                                     [% END %]
1126                                                 </div>
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 -->
1138
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 -->
1147
1148             [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1149
1150         </div> <!-- /.col-md-10.col-md-offset-1 -->
1151     </div> <!-- /.row -->
1152
1153 [% INCLUDE 'intranet-bottom.inc' %]