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