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