Bug 8643: Code cleanup
[srvgit] / 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 [% Asset.js("js/cataloging.js") | $raw %]
9 [% INCLUDE 'strings.inc' %]
10 [% Asset.js("js/browser.js") | $raw %]
11 <script>
12     var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
13     browser.show();
14
15     $(window).load(function(){
16         $("#loading").hide();
17     });
18     var Sticky;
19     $(document).ready(function() {
20
21         [% IF bib_doesnt_exist %]
22             $("#addbibliotabs").hide();
23             $("#toolbar").hide();
24         [% END %]
25
26         var $tabs = $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
27             $("#"+ui.panel.id+" input:eq(0)").focus();
28         });
29         $( "ul.sortable_field", $tabs ).sortable({
30             axis: "y",
31             containment: $("#addbibliotabs")
32         });
33         $( "ul.sortable_subfield", $tabs ).sortable({
34             axis: "y",
35             containment: "parent"
36         });
37
38         [% IF tab %]
39             link = $("a[href='#[% tab | html %]']");
40             selectTab( link );
41         [% END %]
42
43         Sticky = $("#toolbar");
44         Sticky.hcSticky({
45             stickTo: "#f",
46             stickyClass: "floating"
47         });
48
49         /* check cookie to hide/show marcdocs*/
50         if($.cookie("marcdocs_[% borrowernumber | html %]") == 'hide'){
51             toggleMARCdocLinks(false);
52         } else {
53             toggleMARCdocLinks(true);
54         }
55
56         $("#marcDocsSelect").click(function(){
57             if($.cookie("marcdocs_[% borrowernumber | html %]") == 'hide'){
58                 toggleMARCdocLinks(true);
59             } else {
60                 toggleMARCdocLinks(false);
61             }
62         });
63
64         /* check cookie to hide/show marc tags*/
65         var marctags_cookie = $.cookie("marctags_[% borrowernumber | html %]");
66         if( marctags_cookie == 'hide'){
67             toggleMARCTagLinks(false);
68         } else if( marctags_cookie == 'show'){
69             toggleMARCTagLinks(true)
70         } else {
71             [% UNLESS Koha.Preference("hide_marc") %]
72                 toggleMARCTagLinks(true)
73             [% ELSE %]
74                 toggleMARCTagLinks(false);
75             [% END %]
76         }
77
78         $("#marcTagsSelect").click(function(){
79             if( $.cookie("marctags_[% borrowernumber | html %]") == 'hide'){
80                 toggleMARCTagLinks(true)
81             } else {
82                 toggleMARCTagLinks(false);
83             }
84         });
85
86         [%# Only ask for a confirmation if it is an edit %]
87         $("#z3950search").click(function(){
88             [% IF biblionumber %]
89                 if (confirm(_("Please note that this external search could replace the current record."))){
90                     PopupZ3950();
91                 }
92             [% ELSE %]
93                 PopupZ3950();
94             [% END %]
95         });
96
97         $("#saverecord").click(function(){
98             $(".btn-group").removeClass("open");
99             onOption();
100             return false;
101         });
102
103         $("#saveandview").click(function(){
104             $(".btn-group").removeClass("open");
105             redirect("view");
106             return false;
107         });
108
109         $("#saveanditems").click(function(){
110             $(".btn-group").removeClass("open");
111             redirect("items");
112             return false;
113         });
114         $("#saveandcontinue").click(function(){
115             $(".btn-group").removeClass("open");
116             var tab = $("#addbibliotabs li.ui-tabs-active:first a").attr('href');
117             tab = tab.replace('#', '');
118             $("#current_tab").val(tab);
119             redirect("just_save", tab);
120             return false;
121         });
122
123         $( '#switcheditor' ).click( function() {
124             var breedingid = [% breedingid || "null" | html %];
125
126             if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
127
128             $.cookie( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
129
130             var biblionumber = [% biblionumber || "null" | html %];
131
132             if ( biblionumber ) {
133                 window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
134             } else {
135                 window.location = '/cgi-bin/koha/cataloguing/editor.pl';
136             }
137
138             return false;
139         } );
140         $(".change-framework").on("click", function(){
141             var frameworkcode = $(this).data("frameworkcode");
142             $("#frameworkcode").val( frameworkcode );
143             Changefwk();
144         });
145
146         $(".toolbar-tabs a").on("click",function(e){
147             e.preventDefault();
148             selectTab( $(this ) );
149         });
150
151         $(".tag_anchor").on("click", function(e){
152             e.preventDefault();
153             var toolbar_height = $("#toolbar").outerHeight();
154             $(".tag_anchor").removeClass("selected");
155             $(this).addClass("selected");
156             var link = this.href;
157             var linkid = link.substring( link.indexOf("#") + 1 );
158             var dest = $("#" + linkid );
159             var yoffset = dest.offset();
160             window.scrollTo( 0, yoffset.top - toolbar_height - 20 );
161         });
162
163     });
164
165     function selectTab( tablink ){
166         $(".toolbar-tabs li").removeClass("selected");
167         tablink.parent().addClass("selected");
168         var tabid = tablink.data("tabid");
169         $('#addbibliotabs').selectTabByID("#tab" + tabid + "XX");
170         $(".tag_anchors").removeClass("tab_selected").hide();
171         $(".tag_anchors_" + tabid ).addClass("tab_selected").show();
172     }
173
174     function redirect(dest){
175         $("#redirect").attr("value",dest);
176         return Check();
177     }
178
179     [% IF ( CAN_user_editcatalogue_edit_items ) %]
180         var onOption = function () {
181             return Check();
182         }
183     [% END %]
184
185     function confirmnotdup(redirect){
186         $("#confirm_not_duplicate").attr("value","1");
187         $("#redirect").attr("value",redirect);
188         Check();
189     }
190
191     function Dopop(link,i) {
192         defaultvalue = document.getElementById(i).value;
193         window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
194     }
195
196     /**
197      * this function open a popup to search on z3950 server.
198      */
199     function PopupZ3950() {
200         var strQuery = GetZ3950Terms();
201         if(strQuery){
202             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');
203         }
204     }
205
206     function PopupMARCFieldDoc(field) {
207         [% IF Koha.Preference('marcfielddocurl') %]
208             var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','&quot;') | html %]";
209             docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
210             docurl = docurl.replace("{FIELD}", ""+field);
211             docurl = docurl.replace("{LANG}", "[% lang | html %]");
212             window.open(docurl);
213         [% ELSIF ( marcflavour == 'MARC21' ) %]
214             _MARC21FieldDoc(field);
215         [% ELSIF ( marcflavour == 'UNIMARC' ) %]
216             _UNIMARCFieldDoc(field);
217         [% END %]
218     }
219
220     function _MARC21FieldDoc(field) {
221         if(field == 0) {
222             window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
223         } else if (field >= 90 && field <= 99 ){
224             window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
225         } else if (field >= 590 && field <= 599 ){
226             window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
227         } else if (field >= 690 && field <= 699 ){
228             window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
229         } else if (field < 900) {
230             window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
231         } else {
232             window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
233         }
234     }
235
236     function _UNIMARCFieldDoc(field) {
237         /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
238            seems to be the only version available that can be linked to per tag.  More recent
239            versions of the UNIMARC standard are available on the IFLA website only as
240            PDFs!
241         */
242         var url;
243         if (field == 0) {
244             url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
245         } else {
246             var first = field.substring(0,1);
247             url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
248             if (first == 0) url = url + "b";
249             url = first == 9
250                   ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
251                   : url + field;
252         }
253         window.open(url);
254     }
255
256     /*
257      * Functions to hide/show marc docs and tags links
258      */
259
260     function toggleMARCdocLinks(flag){
261         if( flag === true ){
262             $(".marcdocs").show();
263             $.cookie("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
264             $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
265         } else {
266             $(".marcdocs").hide();
267             $.cookie("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
268             $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
269         }
270     }
271
272     function toggleMARCTagLinks(flag){
273         if( flag === true ){
274             $(".tagnum").show();
275             $(".subfieldcode").show();
276             $.cookie("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
277             $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
278         } else {
279             $(".tagnum").hide();
280             $(".subfieldcode").hide();
281             $.cookie("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
282             $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
283         }
284     }
285
286     /**
287      * check if mandatory/important subfields are written
288      * @param mandatory true to check for mandatories, false for importants
289      */
290     function AreFieldsNotOk (mandatory = true) {
291         var fields = new Array();
292         var subfields = new Array();
293         var tab = new Array();
294         var label = new Array();
295         var flag=0;
296         var tabflag= new Array();
297         var StrAlert = "";
298         var notFilledClass = "subfield_not_filled";
299
300         if (mandatory) {
301             [% FOREACH BIG_LOO IN BIG_LOOP %]
302                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
303                     [% IF ( innerloo.mandatory ) %]
304                         fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
305                     [% END %]
306                     [% FOREACH subfield_loo IN innerloo.subfield_loop %]
307                         [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
308                             tab.push("[% BIG_LOO.number | html %]");
309                             label.push("[% subfield_loo.marc_lib | $raw %]");
310                         [% END %]
311                     [% END %]
312                 [% END %]
313             [% END %]
314             StrAlert = _("Can't save this record because the following field aren't filled:");
315         } else {
316             [% FOREACH BIG_LOO IN BIG_LOOP %]
317                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
318                     [% IF ( innerloo.important ) %]
319                     fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
320                     [% END %]
321                     [% FOREACH subfield_loo IN innerloo.subfield_loop %]
322                         [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
323                             tab.push("[% BIG_LOO.number | html %]");
324                             label.push("[% subfield_loo.marc_lib | $raw %]");
325                         [% END %]
326                     [% END %]
327                 [% END %]
328             [% END %]
329             StrAlert = _("A few important fields are not filled:");
330             notFilledClass = "important_subfield_not_filled";
331         }
332
333         StrAlert += "\n\n";
334         for(var i=0,len=subfields.length; i<len ; i++){
335             var tag=subfields[i].substr(4,3);
336             var subfield=subfields[i].substr(17,1);
337             var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
338             if (tabflag[tag+subfield+tagnumber] ==  null) {
339                 tabflag[tag+subfield+tagnumber]=new Array();
340                 tabflag[tag+subfield+tagnumber][0]=0;
341             }
342             if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
343                 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
344                 document.getElementById(subfields[i]).setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
345                 $('#' + subfields[i]).focus();
346                 tabflag[tag+subfield+tagnumber][1]=label[i];
347                 tabflag[tag+subfield+tagnumber][2]=tab[i];
348             } else {
349                 tabflag[tag+subfield+tagnumber][0] = 1;
350             }
351         }
352         for (var tagsubfieldid in tabflag){
353             if (tabflag[tagsubfieldid][0]==0){
354                 var tag=tagsubfieldid.substr(0,3);
355                 var subfield=tagsubfieldid.substr(3,1);
356                 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
357                 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
358                 flag=1;
359             }
360         }
361
362         /* Check for mandatories/importants field(not subfields) */
363         for(var i=0,len=fields.length; i<len; i++){
364             isempty  = true;
365             arr      = fields[i];
366             divid    = "tag_" + arr[0] + "_" + arr[1];
367             varegexp = new RegExp("^tag_" + arr[0] + "_code_");
368
369             if(parseInt(arr[0]) >= 10){
370                 elem = document.getElementById(divid);
371                 eleminputs = elem.getElementsByTagName('input');
372
373                 for(var j=0,len2=eleminputs.length; j<len2; j++){
374
375                     if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
376                         inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
377
378                         for( var k=0; k<len2; k++){
379                             if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
380                                 isempty = false
381                             }
382                         }
383
384                         elemselect = elem.getElementsByTagName('select');
385                         for( var k=0; k<elemselect.length; k++){
386                             if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
387                                 isempty = false
388                             }
389                         }
390                     }
391                 }
392
393                 elemtextareas = elem.getElementsByTagName('textarea');
394                 for(var j=0,len2=elemtextareas.length; j<len2; j++){
395                     // this bit assumes that the only textareas in this context would be for subfields
396                     if (elemtextareas[j].value) {
397                         isempty = false;
398                     }
399                 }
400             } else {
401                 isempty = false;
402             }
403
404             if(isempty){
405                 flag = 1;
406                 StrAlert += "\t* ";
407                 if (mandatory) {
408                     StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
409                 } else {
410                     StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
411                 }
412                 StrAlert += "\n";
413             }
414
415         }
416
417         if(flag){
418             return StrAlert;
419         } else {
420             return flag;
421         }
422     }
423
424     /**
425      *
426      *
427      */
428     function Check(){
429         var StrAlert = AreFieldsNotOk();
430         if( ! StrAlert ){
431             var StrWarning = AreFieldsNotOk(false);
432             if (StrWarning){
433                 StrWarning += "\n" + _("Are you sure you want to save?");
434                 var r=confirm(StrWarning);
435                 if (! r){
436                     return false;
437                 }
438             }
439             document.f.submit();
440             return true;
441         } else {
442             alert(StrAlert);
443             return false;
444         }
445     }
446
447     /**
448      * check if z3950 mandatories are set or not
449      */
450     function GetZ3950Terms(){
451         var frameworkcode = document.getElementById("frameworkcode").value;
452         var strQuery = "&frameworkcode=" + frameworkcode;
453         var mandatories = new Array();
454         var mandatories_label = new Array();
455         [% FOREACH BIG_LOO IN BIG_LOOP %]
456             [% FOREACH innerloo IN BIG_LOO.innerloop %]
457                 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
458                     [% IF ( subfield_loo.z3950_mandatory ) %]
459                         mandatories.push("[% subfield_loo.id | html %]");
460                         mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
461                     [% END %]
462                 [% END %]
463             [% END %]
464         [% END %]
465
466         for(var i=0,len=mandatories.length; i<len ; i++){
467             var field_value = document.getElementById(mandatories[i]).value;
468             if( field_value ){
469                 strQuery += "&"+mandatories_label[i]+"="+field_value;
470             }
471         }
472         return strQuery;
473     }
474
475     function Changefwk() {
476         var f = document.f;
477         f.op.value = "[% op | html %]";
478         f.biblionumber.value = "[% biblionumberdata | html %]";
479         f.changed_framework.value = "changed";
480         f.submit();
481     }
482
483 </script>
484 [% Asset.css("css/addbiblio.css") | $raw %]
485
486 [% INCLUDE 'select2.inc' %]
487 <script>
488   $(document).ready(function() {
489     $('.subfield_line select').select2();
490   });
491 </script>
492
493 </head>
494 <body id="cat_addbiblio" class="cat">
495
496    <div id="loading">
497        <div>Loading, please wait...</div>
498    </div>
499
500     [% INCLUDE 'header.inc' %]
501
502     <div id="breadcrumbs">
503         <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
504         <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo;
505         [% IF ( biblionumber ) %]
506             Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
507         [% ELSE %]
508             Add MARC record
509         [% END %]
510     </div>
511
512     <div class="main container-fluid">
513         <div class="row">
514             <div class="col-md-10 col-md-offset-1">
515
516                 <h1>
517                     [% IF ( biblionumber ) %]
518                         Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
519                     [% ELSE %]
520                         Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
521                     [% END %]
522                 </h1>
523
524                 [% UNLESS ( number ) %]
525                     <!-- show duplicate warning on tab 0 only -->
526                     [% IF ( duplicatebiblionumber ) %]
527                         <div class="dialog alert">
528                             <h3>Duplicate record suspected</h3>
529                             <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>
530                             [% IF ( CAN_user_editcatalogue_edit_items ) %]
531                                 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
532                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
533                                     <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
534                                 </form>
535                             [% ELSE %]
536                                 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
537                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
538                                     <input type="submit" value="Yes: View existing items" />
539                                 </form>
540                             [% END %]
541                             <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
542                                 [% IF ( CAN_user_editcatalogue_edit_items ) %]
543                                     <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
544                                 [% ELSE %]
545                                     <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
546                                 [% END %]
547                             </form>
548                         </div> <!-- /.dialog.alert -->
549                     [% END # /IF duplicatebiblionumber %]
550                 [% END # /UNLESS number %]
551
552                 [% IF ( done ) %]
553                     <script>
554                         opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
555                         opener.document.forms['f'].title.value='[% title | html %]';
556                         window.close();
557                     </script>
558                 [% ELSE %]
559                     <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
560                         <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
561                         <input type="hidden" value="" id="current_tab" name="current_tab" />
562                         <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
563                 [% END %]
564
565                 <div id="toolbar" class="btn-toolbar">
566                     [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
567                         [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
568                             <!-- Action is under fast cataloging - Save button redirecting to items -->
569                             <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
570                         [% ELSE %]
571                             <!-- Not using fast cataloging - Display split menu -->
572                             <div class="btn-group">
573                                 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
574                                 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
575                                 <span class="caret"></span>
576                                 </button>
577                                 <ul class="dropdown-menu">
578                                     <li><a id="saveandview" href="#">Save and view record</a></li>
579                                     <li><a id="saveanditems" href="#">Save and edit items</a></li>
580                                     <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
581                                 </ul>
582                             </div>
583                         [% END %]
584                     [% ELSE %]
585                         <!-- User cannot edit items - single button redirecting to view -->
586                         <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
587                     [% END # /IF CAN_user_editcatalogue_edit_items %]
588
589                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
590                         <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
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                                                             <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
844                                                         [% END %]
845                                                     </span>
846                                                     [% mv.javascript | $raw %]
847                                                 [% ELSIF ( mv.type == 'hidden' ) %]
848                                                     <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 -%]" />
849                                                 [% ELSIF ( mv.type == 'textarea' ) %]
850                                                     <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
851                                                 [% ELSIF ( mv.type == 'select' ) %]
852                                                     <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]">
853                                                     [% FOREACH aval IN mv.values %]
854                                                         [% IF aval == mv.default %]
855                                                         <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
856                                                         [% ELSE %]
857                                                         <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
858                                                         [% END %]
859                                                     [% END %]
860                                                     </select>
861                                                 [% END  # /IF (mv.type...) %]
862                                                 [% IF ( subfield_loo.mandatory ) %]
863                                                     <span class="required">Required</span>
864                                                 [% ELSIF ( subfield_loo.important ) %]
865                                                     <span class="important">Important</span>
866                                                 [% END %]
867                                                 <span class="subfield_controls">
868                                                     [% IF ( subfield_loo.repeatable ) %]
869                                                         <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;">
870                                                             <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
871                                                         </a>
872                                                         <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
873                                                             <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
874                                                         </a>
875                                                     [% END %]
876                                                 </span>
877                                             </li> <!-- /.subfield_line -->
878                                             <!-- End of the line -->
879                                         [% END # /FOREACH subfield_loop %]
880                                         </ul> <!--  /.sortable_subfield -->
881                                     </li> <!-- /.tag.clearfix -->
882                                 [% END %]<!-- if innerloo.tag -->
883                             [% END # /FOREACH BIG_LOO.innerloop %]
884                             </ul> <!--  /.sortable_field -->
885                         </div> <!-- /#tabXXX -->
886                     [% END # /FOREACH BIG_LOOP %]
887                 </div><!-- /#addbibliotabs -->
888
889                 [%# Fields for fast cataloging %]
890                 <input type="hidden" name="barcode" value="[% barcode | html %]" />
891                 <input type="hidden" name="branch" value="[% branch | html %]" />
892                 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
893                 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
894                 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
895                 [%# End of fields for fast cataloging %]
896             </form> <!-- /name=f -->
897         </div> <!-- /.col-md-10.col-md-offset-1 -->
898     </div> <!-- /.row -->
899
900 [% INCLUDE 'intranet-bottom.inc' %]