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