Bug 16314: Show upload link for upload plugin in basic MARC editor
[koha-ffzg.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / addbiblio.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Koha &rsaquo; Cataloging &rsaquo; [% IF ( biblionumber ) %]Editing [% title | html %] (Record number [% biblionumber | html %])[% ELSE %]Add MARC record[% END %]</title>
6 [% INCLUDE 'doc-head-close.inc' %]
7 [% Asset.js("lib/hc-sticky.js") | $raw %]
8 <script>
9     var CAN_user_parameters_manage_auth_values = "[% CAN_user_parameters_manage_auth_values | html %]";
10 </script>
11 [% INCLUDE 'select2.inc' %]
12 [% Asset.js("js/cataloging.js") | $raw %]
13 [% INCLUDE 'strings.inc' %]
14 [% Asset.js("js/browser.js") | $raw %]
15 <script>
16     var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
17     browser.show();
18
19     $(window).load(function(){
20         $("#loading").hide();
21     });
22     var Sticky;
23     $(document).ready(function() {
24
25         [% IF bib_doesnt_exist %]
26             $("#addbibliotabs").hide();
27             $("#toolbar").hide();
28         [% END %]
29
30         var $tabs = $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
31             $("#"+ui.panel.id+" input:eq(0)").focus();
32         });
33         $( "ul.sortable_field", $tabs ).sortable({
34             axis: "y",
35             containment: $("#addbibliotabs")
36         });
37         $( "ul.sortable_subfield", $tabs ).sortable({
38             axis: "y",
39             containment: "parent"
40         });
41
42         [% IF tab %]
43             link = $("a[href='#[% tab | html %]']");
44             selectTab( link );
45         [% END %]
46
47         Sticky = $("#toolbar");
48         Sticky.hcSticky({
49             stickTo: "#f",
50             stickyClass: "floating"
51         });
52
53         /* check cookie to hide/show marcdocs*/
54         if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
55             toggleMARCdocLinks(false);
56         } else {
57             toggleMARCdocLinks(true);
58         }
59
60         $("#marcDocsSelect").click(function(){
61             if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
62                 toggleMARCdocLinks(true);
63             } else {
64                 toggleMARCdocLinks(false);
65             }
66         });
67
68         /* check cookie to hide/show marc tags*/
69         var marctags_cookie = Cookies.get("marctags_[% borrowernumber | html %]");
70         if( marctags_cookie == 'hide'){
71             toggleMARCTagLinks(false);
72         } else if( marctags_cookie == 'show'){
73             toggleMARCTagLinks(true)
74         } else {
75             [% UNLESS Koha.Preference("hide_marc") %]
76                 toggleMARCTagLinks(true)
77             [% ELSE %]
78                 toggleMARCTagLinks(false);
79             [% END %]
80         }
81
82         $("#marcTagsSelect").click(function(){
83             if( Cookies.get("marctags_[% borrowernumber | html %]") == 'hide'){
84                 toggleMARCTagLinks(true)
85             } else {
86                 toggleMARCTagLinks(false);
87             }
88         });
89
90         $("#z3950search").click(function(){
91             PopupZ3950();
92         });
93
94         $("#saverecord").click(function(){
95             $(".btn-group").removeClass("open");
96             onOption();
97             return false;
98         });
99
100         $("#saveandview").click(function(){
101             $(".btn-group").removeClass("open");
102             redirect("view");
103             return false;
104         });
105
106         $("#saveanditems").click(function(){
107             $(".btn-group").removeClass("open");
108             redirect("items");
109             return false;
110         });
111         $("#saveandcontinue").click(function(){
112             $(".btn-group").removeClass("open");
113             var tab = $("#addbibliotabs li.ui-tabs-active:first a").attr('href');
114             tab = tab.replace('#', '');
115             $("#current_tab").val(tab);
116             redirect("just_save", tab);
117             return false;
118         });
119
120         $( '#switcheditor' ).click( function() {
121             var breedingid = [% breedingid || "null" | html %];
122
123             if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
124
125             Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
126
127             var biblionumber = [% biblionumber || "null" | html %];
128
129             if ( biblionumber ) {
130                 window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
131             } else {
132                 window.location = '/cgi-bin/koha/cataloguing/editor.pl';
133             }
134
135             return false;
136         } );
137         $(".change-framework").on("click", function(){
138             var frameworkcode = $(this).data("frameworkcode");
139             $("#frameworkcode").val( frameworkcode );
140             Changefwk();
141         });
142
143         $(".toolbar-tabs a").on("click",function(e){
144             e.preventDefault();
145             selectTab( $(this ) );
146         });
147
148         $(".tag_anchor").on("click", function(e){
149             e.preventDefault();
150             var toolbar_height = $("#toolbar").outerHeight();
151             $(".tag_anchor").removeClass("selected");
152             $(this).addClass("selected");
153             var link = this.href;
154             var linkid = link.substring( link.indexOf("#") + 1 );
155             var dest = $("#" + linkid );
156             var yoffset = dest.offset();
157             window.scrollTo( 0, yoffset.top - toolbar_height - 20 );
158         });
159
160     });
161
162     function selectTab( tablink ){
163         $(".toolbar-tabs li").removeClass("selected");
164         tablink.parent().addClass("selected");
165         var tabid = tablink.data("tabid");
166         $('#addbibliotabs').selectTabByID("#tab" + tabid + "XX");
167         $(".tag_anchors").removeClass("tab_selected").hide();
168         $(".tag_anchors_" + tabid ).addClass("tab_selected").show();
169     }
170
171     function redirect(dest){
172         $("#redirect").attr("value",dest);
173         return Check();
174     }
175
176     [% IF ( CAN_user_editcatalogue_edit_items ) %]
177         var onOption = function () {
178             return Check();
179         }
180     [% END %]
181
182     function confirmnotdup(redirect){
183         $("#confirm_not_duplicate").attr("value","1");
184         $("#redirect").attr("value",redirect);
185         Check();
186     }
187
188     function Dopop(link,i) {
189         defaultvalue = document.getElementById(i).value;
190         window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
191     }
192
193     /**
194      * this function open a popup to search on z3950 server.
195      */
196     function PopupZ3950() {
197         var strQuery = GetZ3950Terms();
198         if(strQuery){
199             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');
200         }
201     }
202
203     function PopupMARCFieldDoc(field) {
204         [% IF Koha.Preference('marcfielddocurl') %]
205             var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
206             docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
207             docurl = docurl.replace("{FIELD}", ""+field);
208             docurl = docurl.replace("{LANG}", "[% lang | html %]");
209             window.open(docurl);
210         [% ELSIF ( marcflavour == 'MARC21' ) %]
211             _MARC21FieldDoc(field);
212         [% ELSIF ( marcflavour == 'UNIMARC' ) %]
213             _UNIMARCFieldDoc(field);
214         [% END %]
215     }
216
217     function _MARC21FieldDoc(field) {
218         if(field == 0) {
219             window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
220         } else if (field >= 90 && field <= 99 ){
221             window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
222         } else if (field >= 590 && field <= 599 ){
223             window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
224         } else if (field >= 690 && field <= 699 ){
225             window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
226         } else if (field < 900) {
227             window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
228         } else {
229             window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
230         }
231     }
232
233     function _UNIMARCFieldDoc(field) {
234         /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
235            seems to be the only version available that can be linked to per tag.  More recent
236            versions of the UNIMARC standard are available on the IFLA website only as
237            PDFs!
238         */
239         var url;
240         if (field == 0) {
241             url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
242         } else {
243             var first = field.substring(0,1);
244             url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
245             if (first == 0) url = url + "b";
246             url = first == 9
247                   ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
248                   : url + field;
249         }
250         window.open(url);
251     }
252
253     /*
254      * Functions to hide/show marc docs and tags links
255      */
256
257     function toggleMARCdocLinks(flag){
258         if( flag === true ){
259             $(".marcdocs").show();
260             Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
261             $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
262         } else {
263             $(".marcdocs").hide();
264             Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
265             $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
266         }
267     }
268
269     function toggleMARCTagLinks(flag){
270         if( flag === true ){
271             $(".tagnum").show();
272             $(".subfieldcode").show();
273             Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
274             $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
275         } else {
276             $(".tagnum").hide();
277             $(".subfieldcode").hide();
278             Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
279             $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
280         }
281     }
282
283     /**
284      * check if mandatory/important subfields are written
285      * @param mandatory true to check for mandatories, false for importants
286      */
287     function AreFieldsNotOk (mandatory = true) {
288         var fields = new Array();
289         var subfields = new Array();
290         var tab = new Array();
291         var label = new Array();
292         var flag=0;
293         var tabflag= new Array();
294         var StrAlert = "";
295         var notFilledClass = "subfield_not_filled";
296
297         if (mandatory) {
298             [% FOREACH BIG_LOO IN BIG_LOOP %]
299                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
300                     [% IF ( innerloo.mandatory ) %]
301                         fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
302                     [% END %]
303                     [% FOREACH subfield_loo IN innerloo.subfield_loop %]
304                         [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
305                             tab.push("[% BIG_LOO.number | html %]");
306                             label.push("[% subfield_loo.marc_lib | $raw %]");
307                         [% END %]
308                     [% END %]
309                 [% END %]
310             [% END %]
311             StrAlert = _("Can't save this record because the following field aren't filled:");
312         } else {
313             [% FOREACH BIG_LOO IN BIG_LOOP %]
314                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
315                     [% IF ( innerloo.important ) %]
316                     fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
317                     [% END %]
318                     [% FOREACH subfield_loo IN innerloo.subfield_loop %]
319                         [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
320                             tab.push("[% BIG_LOO.number | html %]");
321                             label.push("[% subfield_loo.marc_lib | $raw %]");
322                         [% END %]
323                     [% END %]
324                 [% END %]
325             [% END %]
326             StrAlert = _("A few important fields are not filled:");
327             notFilledClass = "important_subfield_not_filled";
328         }
329
330         StrAlert += "\n\n";
331         for(var i=0,len=subfields.length; i<len ; i++){
332             var tag=subfields[i].substr(4,3);
333             var subfield=subfields[i].substr(17,1);
334             var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
335             if (tabflag[tag+subfield+tagnumber] ==  null) {
336                 tabflag[tag+subfield+tagnumber]=new Array();
337                 tabflag[tag+subfield+tagnumber][0]=0;
338             }
339             if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
340                 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
341
342                 var elt = document.getElementById(subfields[i]);
343                 if ( elt.nodeName == 'SELECT' ) {
344                     $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
345                 } else {
346                     elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
347                 }
348                 $('#' + subfields[i]).focus();
349                 tabflag[tag+subfield+tagnumber][1]=label[i];
350                 tabflag[tag+subfield+tagnumber][2]=tab[i];
351             } else {
352                 tabflag[tag+subfield+tagnumber][0] = 1;
353             }
354         }
355         for (var tagsubfieldid in tabflag){
356             if (tabflag[tagsubfieldid][0]==0){
357                 var tag=tagsubfieldid.substr(0,3);
358                 var subfield=tagsubfieldid.substr(3,1);
359                 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
360                 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
361                 flag=1;
362             }
363         }
364
365         /* Check for mandatories/importants field(not subfields) */
366         for(var i=0,len=fields.length; i<len; i++){
367             isempty  = true;
368             arr      = fields[i];
369             divid    = "tag_" + arr[0] + "_" + arr[1];
370             varegexp = new RegExp("^tag_" + arr[0] + "_code_");
371
372             if(parseInt(arr[0]) >= 10){
373                 elem = document.getElementById(divid);
374                 eleminputs = elem.getElementsByTagName('input');
375
376                 for(var j=0,len2=eleminputs.length; j<len2; j++){
377
378                     if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
379                         inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
380
381                         for( var k=0; k<len2; k++){
382                             if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
383                                 isempty = false
384                             }
385                         }
386
387                         elemselect = elem.getElementsByTagName('select');
388                         for( var k=0; k<elemselect.length; k++){
389                             if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
390                                 isempty = false
391                             }
392                         }
393                     }
394                 }
395
396                 elemtextareas = elem.getElementsByTagName('textarea');
397                 for(var j=0,len2=elemtextareas.length; j<len2; j++){
398                     // this bit assumes that the only textareas in this context would be for subfields
399                     if (elemtextareas[j].value) {
400                         isempty = false;
401                     }
402                 }
403             } else {
404                 isempty = false;
405             }
406
407             if(isempty){
408                 flag = 1;
409                 StrAlert += "\t* ";
410                 if (mandatory) {
411                     StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
412                 } else {
413                     StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
414                 }
415                 StrAlert += "\n";
416             }
417
418         }
419
420         if(flag){
421             return StrAlert;
422         } else {
423             return flag;
424         }
425     }
426
427     /**
428      *
429      *
430      */
431     function Check(){
432         var StrAlert = AreFieldsNotOk();
433         if( ! StrAlert ){
434             var StrWarning = AreFieldsNotOk(false);
435             if (StrWarning){
436                 StrWarning += "\n" + _("Are you sure you want to save?");
437                 var r=confirm(StrWarning);
438                 if (! r){
439                     return false;
440                 }
441             }
442             document.f.submit();
443             return true;
444         } else {
445             alert(StrAlert);
446             return false;
447         }
448     }
449
450     /**
451      * check if z3950 mandatories are set or not
452      */
453     function GetZ3950Terms(){
454         var frameworkcode = document.getElementById("frameworkcode").value;
455         var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
456         var mandatories = new Array();
457         var mandatories_label = new Array();
458         [% FOREACH BIG_LOO IN BIG_LOOP %]
459             [% FOREACH innerloo IN BIG_LOO.innerloop %]
460                 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
461                     [% IF ( subfield_loo.z3950_mandatory ) %]
462                         mandatories.push("[% subfield_loo.id | html %]");
463                         mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
464                     [% END %]
465                 [% END %]
466             [% END %]
467         [% END %]
468
469         for(var i=0,len=mandatories.length; i<len ; i++){
470             var field_value = document.getElementById(mandatories[i]).value;
471             if( field_value ){
472                 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
473             }
474         }
475         return strQuery;
476     }
477
478     function Changefwk() {
479         var f = document.f;
480         f.op.value = "[% op | html %]";
481         f.biblionumber.value = "[% biblionumberdata | html %]";
482         f.changed_framework.value = "changed";
483         f.submit();
484     }
485
486 </script>
487 [% Asset.css("css/addbiblio.css") | $raw %]
488
489 </head>
490 <body id="cat_addbiblio" class="cat">
491
492    <div id="loading">
493        <div>Loading, please wait...</div>
494    </div>
495
496     [% INCLUDE 'header.inc' %]
497
498     <div id="breadcrumbs">
499         <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
500         <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo;
501         [% IF ( biblionumber ) %]
502             Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
503         [% ELSE %]
504             Add MARC record
505         [% END %]
506     </div>
507
508     <div class="main container-fluid">
509         <div class="row">
510             <div class="col-md-10 col-md-offset-1">
511
512                 <h1>
513                     [% IF ( biblionumber ) %]
514                         Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
515                     [% ELSE %]
516                         Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
517                     [% END %]
518                 </h1>
519
520                 [% UNLESS ( number ) %]
521                     <!-- show duplicate warning on tab 0 only -->
522                     [% IF ( duplicatebiblionumber ) %]
523                         <div class="dialog alert">
524                             <h3>Duplicate record suspected</h3>
525                             <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>
526                             [% IF ( CAN_user_editcatalogue_edit_items ) %]
527                                 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
528                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
529                                     <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
530                                 </form>
531                             [% ELSE %]
532                                 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
533                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
534                                     <input type="submit" value="Yes: View existing items" />
535                                 </form>
536                             [% END %]
537                             <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
538                                 [% IF ( CAN_user_editcatalogue_edit_items ) %]
539                                     <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
540                                 [% ELSE %]
541                                     <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
542                                 [% END %]
543                             </form>
544                         </div> <!-- /.dialog.alert -->
545                     [% END # /IF duplicatebiblionumber %]
546                 [% END # /UNLESS number %]
547
548                 [% IF ( done ) %]
549                     <script>
550                         opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
551                         opener.document.forms['f'].title.value='[% title | html %]';
552                         window.close();
553                     </script>
554                 [% ELSE %]
555                     <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
556                         <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
557                         <input type="hidden" value="" id="current_tab" name="current_tab" />
558                         <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
559                 [% END %]
560
561                 <div id="toolbar" class="btn-toolbar">
562                     [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
563                         [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
564                             <!-- Action is under fast cataloging - Save button redirecting to items -->
565                             <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
566                         [% ELSE %]
567                             <!-- Not using fast cataloging - Display split menu -->
568                             <div class="btn-group">
569                                 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
570                                 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
571                                 <span class="caret"></span>
572                                 </button>
573                                 <ul class="dropdown-menu">
574                                     <li><a id="saveandview" href="#">Save and view record</a></li>
575                                     <li><a id="saveanditems" href="#">Save and edit items</a></li>
576                                     <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
577                                 </ul>
578                             </div>
579                         [% END %]
580                     [% ELSE %]
581                         <!-- User cannot edit items - single button redirecting to view -->
582                         <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
583                     [% END # /IF CAN_user_editcatalogue_edit_items %]
584
585                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
586                         [% IF biblionumber %]
587                             <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>
588                         [% ELSE %]
589                             <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
590                         [% END %]
591                     [% END %]
592
593                     <div class="btn-group">
594                         <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
595                         <ul id="settings-menu" class="dropdown-menu">
596                             [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
597                                 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
598                             [% END %]
599                             [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
600                                 <li>
601                                     <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
602                                 <li>
603                                     <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
604                                 </li>
605                             [% END %]
606                             <li class="dropdown-header">Change framework</li>
607                             <li>
608                                 <a href="#" class="change-framework" data-frameworkcode="">
609                                     [% IF ( frameworkcode ) %]
610                                        <i class="fa fa-fw">&nbsp;</i>
611                                     [% ELSE %]
612                                         <i class="fa fa-fw fa-check"></i>
613                                     [% END %]
614                                     Default
615                                 </a>
616                             </li>
617                             [% FOREACH framework IN frameworks%]
618                                 <li>
619                                     <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
620                                         [% IF framework.frameworkcode == frameworkcode %]
621                                             <i class="fa fa-fw fa-check"></i>
622                                         [% ELSE %]
623                                             <i class="fa fa-fw">&nbsp;</i>
624                                         [% END %]
625                                         [% framework.frameworktext | html %]
626                                     </a>
627                                 </li>
628                             [% END %]
629                         </ul> <!-- /#settings-menu -->
630                     </div> <!-- /.btn-group -->
631                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
632                         [% IF (biblionumber) %]
633                             [% IF ( BiblioDefaultViewmarc ) %]
634                                 <div class="btn-group">
635                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
636                                 </div>
637                             [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
638                                 <div class="btn-group">
639                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
640                                 </div>
641                             [% ELSIF ( BiblioDefaultViewisbd ) %]
642                                 <div class="btn-group">
643                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
644                                 </div>
645                             [% ELSE %]
646                                 <div class="btn-group">
647                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
648                                 </div>
649                             [% END %]
650                         [% ELSE %]
651                             <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
652                         [% END %]
653                     [% END # /UNLESS circborrowernumber %]
654                     <div class="toolbar-tabs-container">
655                         [% IF ( BIG_LOOP.size > 1 ) %]
656                             <ul class="toolbar-tabs">
657                                 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
658                                     [% IF loop.first %]
659                                         <li class="selected">
660                                     [% ELSE %]
661                                         <li>
662                                     [% END %]
663                                         <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
664                                     </li>
665                                 [%- END -%]
666                             </ul>
667                         [% END %]
668                         <ul class="tag_anchors_list">
669                             [% FOREACH BIG_LOO IN BIG_LOOP %]
670                                 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
671                                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
672                                     [% IF ( innerloo.tag ) %]
673                                         <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
674                                             <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>
675                                         </li>
676                                     [% END %]
677                                 [% END %]
678                             [% END %]
679                         </ul>
680                     </div>
681                 </div> <!-- /#toolbar.btn-toolbar -->
682
683                 [% IF bib_doesnt_exist %]
684                     <div class="dialog alert">
685                         The record you are trying to edit doesn't exist.<br>
686                         <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>.
687                     </div>
688                 [% END %]
689
690                 [% IF ( popup ) %]
691                         <input type="hidden" name="mode" value="popup" />
692                 [% END %]
693                 <input type="hidden" name="op" value="addbiblio" />
694                 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
695                 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
696                 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
697                 <input type="hidden" name="changed_framework" value="" />
698
699                 <div id="addbibliotabs" class="toptabs numbered">
700                     <ul>
701                         [% FOREACH BIG_LOO IN BIG_LOOP %]
702                             <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
703                         [% END %]
704                     </ul>
705
706                     [% FOREACH BIG_LOO IN BIG_LOOP %]
707                         <div id="tab[% BIG_LOO.number | html %]XX">
708
709                             [% IF ( BIG_LOOP.size > 1 ) %]
710                                 <h3>Section [% BIG_LOO.number | html %]</h3>
711                             [% END %]
712                             [% previous = "" %]
713                             [% FOREACH innerloo IN BIG_LOO.innerloop %]
714                                 [% IF ( innerloo.tag ) %]
715                                 [% IF innerloo.tag != previous %]
716                                     [% IF previous != "" %]
717                                         </ul>
718                                     [% END %]
719                                     [% previous = innerloo.tag %]
720                                     [% IF ( innerloo.repeatable ) %]
721                                         <ul class="sortable_field">
722                                     [% ELSE %]
723                                         <ul>
724                                     [% END %]
725                                 [% END %]
726                                     [% IF ( innerloo.repeatable ) %]
727                                         <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
728                                     [% ELSE %]
729                                         <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
730                                     [% END %]
731                                         <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
732                                             [% IF advancedMARCEditor %]
733                                                 <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>
734                                             [% ELSE %]
735                                                 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
736                                                 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;">&nbsp;?</a>[% END %]
737                                             [% END %]
738
739                                             [% IF ( innerloo.fixedfield ) %]
740                                                 <input type="text"
741                                                     tabindex="1"
742                                                     class="indicator flat"
743                                                     style="display:none;"
744                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
745                                                     size="1"
746                                                     maxlength="1"
747                                                     value="[% innerloo.indicator1 | html %]" />
748                                                 <input type="text"
749                                                     tabindex="1"
750                                                     class="indicator flat"
751                                                     style="display:none;"
752                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
753                                                     size="1"
754                                                     maxlength="1"
755                                                     value="[% innerloo.indicator2 | html %]" />
756                                             [% ELSE %]
757                                                 <input type="text"
758                                                     tabindex="1"
759                                                     class="indicator flat"
760                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
761                                                     size="1"
762                                                     maxlength="1"
763                                                     value="[% innerloo.indicator1 | html %]" />
764                                                 <input type="text"
765                                                     tabindex="1"
766                                                     class="indicator flat"
767                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
768                                                     size="1"
769                                                     maxlength="1"
770                                                     value="[% innerloo.indicator2 | html %]" />
771                                             [% END # /IF innerloo.fixedfield %] -
772
773                                             [% UNLESS advancedMARCEditor %]
774                                                 <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>
775                                             [% END %]
776
777                                             <span class="field_controls">
778                                                 [% IF ( innerloo.repeatable ) %]
779                                                     <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">
780                                                         <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
781                                                     </a>
782                                                 [% END %]
783                                                 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
784                                                     <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
785                                                 </a>
786                                             </span> <!-- /.field_controls -->
787                                         </div> <!-- /div.tag_title -->
788
789                                         <ul class="sortable_subfield">
790                                         [% FOREACH subfield_loo IN innerloo.subfield_loop %]
791                                             <!--  One line on the marc editor -->
792                                             <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
793                                                 [% UNLESS advancedMARCEditor %]
794                                                     [% IF ( subfield_loo.fixedfield ) %]
795                                                         <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">
796                                                     [% ELSE %]
797                                                         <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
798                                                     [% END %]
799                                                 [% END %]
800
801                                                     <span class="subfieldcode">
802                                                             <input type="text"
803                                                                 title="[% subfield_loo.marc_lib | $raw %]"
804                                                                 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
805                                                                 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
806                                                                 value="[% subfield_loo.subfield | html %]"
807                                                                 size="1"
808                                                                 maxlength="1"
809                                                                 class="flat"
810                                                                 tabindex="0" />
811                                                     </span>
812
813                                                 [% UNLESS advancedMARCEditor %]
814                                                         [% IF ( subfield_loo.mandatory ) %]
815                                                             <span class="subfield subfield_mandatory">
816                                                         [% ELSIF ( subfield_loo.important ) %]
817                                                             <span class="subfield subfield_important">
818                                                         [% ELSE %]
819                                                             <span class="subfield">
820                                                         [% END %]
821                                                         [% subfield_loo.marc_lib | $raw %]
822                                                         </span>
823                                                     </label>
824                                                 [% END %]
825
826                                                 [% SET mv = subfield_loo.marc_value %]
827                                                 [% IF ( mv.type == 'text' ) %]
828                                                     [% IF ( mv.readonly == 1 ) %]
829                                                         <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" />
830                                                     [% ELSE %]
831                                                         <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 -%]" />
832                                                     [% END %]
833
834                                                     [% IF ( mv.authtype ) %]
835                                                         <span class="subfield_controls"><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></span>
836                                                     [% END %]
837                                                 [% ELSIF ( mv.type == 'text_complex' ) %]
838                                                     <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 -%]" />
839                                                     <span class="subfield_controls">
840                                                         [% IF mv.noclick %]
841                                                             <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
842                                                         [% ELSE %]
843                                                             [% IF mv.plugin == "upload.pl" %]
844                                                                 <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>
845                                                             [% ELSE %]
846                                                                 <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
847                                                             [% END %]
848                                                         [% END %]
849                                                     </span>
850                                                     [% mv.javascript | $raw %]
851                                                 [% ELSIF ( mv.type == 'hidden' ) %]
852                                                     <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 -%]" />
853                                                 [% ELSIF ( mv.type == 'textarea' ) %]
854                                                     <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
855                                                 [% ELSIF ( mv.type == 'select' ) %]
856                                                     [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
857                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
858                                                     [% ELSE %]
859                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
860                                                     [% END %]
861                                                     [% FOREACH aval IN mv.values %]
862                                                         [% IF aval == mv.default %]
863                                                         <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
864                                                         [% ELSE %]
865                                                         <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
866                                                         [% END %]
867                                                     [% END %]
868                                                     </select>
869                                                 [% END  # /IF (mv.type...) %]
870                                                 [% IF ( subfield_loo.mandatory ) %]
871                                                     <span class="required">Required</span>
872                                                 [% ELSIF ( subfield_loo.important ) %]
873                                                     <span class="important">Important</span>
874                                                 [% END %]
875                                                 <span class="subfield_controls">
876                                                     [% IF ( subfield_loo.repeatable ) %]
877                                                         <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;">
878                                                             <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
879                                                         </a>
880                                                         <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
881                                                             <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
882                                                         </a>
883                                                     [% END %]
884                                                 </span>
885                                             </li> <!-- /.subfield_line -->
886                                             <!-- End of the line -->
887                                         [% END # /FOREACH subfield_loop %]
888                                         </ul> <!--  /.sortable_subfield -->
889                                     </li> <!-- /.tag.clearfix -->
890                                 [% END %]<!-- if innerloo.tag -->
891                             [% END # /FOREACH BIG_LOO.innerloop %]
892                             </ul> <!--  /.sortable_field -->
893                         </div> <!-- /#tabXXX -->
894                     [% END # /FOREACH BIG_LOOP %]
895                 </div><!-- /#addbibliotabs -->
896
897                 [%# Fields for fast cataloging %]
898                 <input type="hidden" name="barcode" value="[% barcode | html %]" />
899                 <input type="hidden" name="branch" value="[% branch | html %]" />
900                 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
901                 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
902                 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
903                 [%# End of fields for fast cataloging %]
904             </form> <!-- /name=f -->
905
906             [% INCLUDE 'modals/cataloguing_create_av.inc' %]
907
908         </div> <!-- /.col-md-10.col-md-offset-1 -->
909     </div> <!-- /.row -->
910
911 [% INCLUDE 'intranet-bottom.inc' %]