8de093209d533401dae1f6e186329e236757506b
[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
338                 var elt = document.getElementById(subfields[i]);
339                 if ( elt.nodeName == 'SELECT' ) {
340                     $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
341                 } else {
342                     elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
343                 }
344                 $('#' + subfields[i]).focus();
345                 tabflag[tag+subfield+tagnumber][1]=label[i];
346                 tabflag[tag+subfield+tagnumber][2]=tab[i];
347             } else {
348                 tabflag[tag+subfield+tagnumber][0] = 1;
349             }
350         }
351         for (var tagsubfieldid in tabflag){
352             if (tabflag[tagsubfieldid][0]==0){
353                 var tag=tagsubfieldid.substr(0,3);
354                 var subfield=tagsubfieldid.substr(3,1);
355                 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
356                 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
357                 flag=1;
358             }
359         }
360
361         /* Check for mandatories/importants field(not subfields) */
362         for(var i=0,len=fields.length; i<len; i++){
363             isempty  = true;
364             arr      = fields[i];
365             divid    = "tag_" + arr[0] + "_" + arr[1];
366             varegexp = new RegExp("^tag_" + arr[0] + "_code_");
367
368             if(parseInt(arr[0]) >= 10){
369                 elem = document.getElementById(divid);
370                 eleminputs = elem.getElementsByTagName('input');
371
372                 for(var j=0,len2=eleminputs.length; j<len2; j++){
373
374                     if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
375                         inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
376
377                         for( var k=0; k<len2; k++){
378                             if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
379                                 isempty = false
380                             }
381                         }
382
383                         elemselect = elem.getElementsByTagName('select');
384                         for( var k=0; k<elemselect.length; k++){
385                             if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
386                                 isempty = false
387                             }
388                         }
389                     }
390                 }
391
392                 elemtextareas = elem.getElementsByTagName('textarea');
393                 for(var j=0,len2=elemtextareas.length; j<len2; j++){
394                     // this bit assumes that the only textareas in this context would be for subfields
395                     if (elemtextareas[j].value) {
396                         isempty = false;
397                     }
398                 }
399             } else {
400                 isempty = false;
401             }
402
403             if(isempty){
404                 flag = 1;
405                 StrAlert += "\t* ";
406                 if (mandatory) {
407                     StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
408                 } else {
409                     StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
410                 }
411                 StrAlert += "\n";
412             }
413
414         }
415
416         if(flag){
417             return StrAlert;
418         } else {
419             return flag;
420         }
421     }
422
423     /**
424      *
425      *
426      */
427     function Check(){
428         var StrAlert = AreFieldsNotOk();
429         if( ! StrAlert ){
430             var StrWarning = AreFieldsNotOk(false);
431             if (StrWarning){
432                 StrWarning += "\n" + _("Are you sure you want to save?");
433                 var r=confirm(StrWarning);
434                 if (! r){
435                     return false;
436                 }
437             }
438             document.f.submit();
439             return true;
440         } else {
441             alert(StrAlert);
442             return false;
443         }
444     }
445
446     /**
447      * check if z3950 mandatories are set or not
448      */
449     function GetZ3950Terms(){
450         var frameworkcode = document.getElementById("frameworkcode").value;
451         var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
452         var mandatories = new Array();
453         var mandatories_label = new Array();
454         [% FOREACH BIG_LOO IN BIG_LOOP %]
455             [% FOREACH innerloo IN BIG_LOO.innerloop %]
456                 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
457                     [% IF ( subfield_loo.z3950_mandatory ) %]
458                         mandatories.push("[% subfield_loo.id | html %]");
459                         mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
460                     [% END %]
461                 [% END %]
462             [% END %]
463         [% END %]
464
465         for(var i=0,len=mandatories.length; i<len ; i++){
466             var field_value = document.getElementById(mandatories[i]).value;
467             if( field_value ){
468                 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
469             }
470         }
471         return strQuery;
472     }
473
474     function Changefwk() {
475         var f = document.f;
476         f.op.value = "[% op | html %]";
477         f.biblionumber.value = "[% biblionumberdata | html %]";
478         f.changed_framework.value = "changed";
479         f.submit();
480     }
481
482 </script>
483 [% Asset.css("css/addbiblio.css") | $raw %]
484
485 [% INCLUDE 'select2.inc' %]
486 <script>
487   $(document).ready(function() {
488       [% IF CAN_user_parameters_manage_auth_values %]
489           var current_select2;
490           $('.subfield_line select[data-category!=""]').select2({
491               tags: true,
492               createTag: function (tag) {
493                   return {
494                       id: tag.term,
495                       text: tag.term,
496                       newTag: true
497                   };
498               },
499               templateResult: function(state) {
500                   if (state.newTag) {
501                       return state.text + " " + "(select to create)";
502                   }
503                   return state.text;
504               }
505           }).on("select2:select", function(e) {
506               if(e.params.data.newTag){
507
508                   var category = $(this).data("category");
509                   $("#avCreate #new_av_category").html(category);
510                   $("#avCreate input[name='category']").val(category);
511                   $("#avCreate input[name='value']").val(e.params.data.text);
512                   $("#avCreate input[name='description']").val(e.params.data.text);
513                   $('#avCreate').modal({show:true});
514
515                   $(current_select2).val($(current_select2).find("option:first").val()).trigger('change');
516
517                   current_select2 = this;
518
519               }
520           }).on("select2:clear", function () {
521               $(this).on("select2:opening.cancelOpen", function (evt) {
522                   evt.preventDefault();
523
524                   $(this).off("select2:opening.cancelOpen");
525               });
526           });
527
528           $("#add_new_av").on("submit", function(){
529               var data = {
530                   category: $(this).find('input[name="category"]').val(),
531                   value: $(this).find('input[name="value"]').val(),
532                   description: $(this).find('input[name="description"]').val(),
533                   opac_description: $(this).find('input[name="opac_description"]').val(),
534               };
535               $.ajax({
536                   type: "POST",
537                   url: "/api/v1/authorised_values",
538                   data:JSON.stringify(data),
539                   success: function(response) {
540                       $('#avCreate').modal('hide');
541
542                       $(current_select2).append('<option selected value="'+data['value']+'">'+data['description']+'</option>');
543                   },
544                   error: function(err) {
545                       $("#avCreate .error").html(_("Something went wrong, maybe the value already exists?"))
546                   }
547               });
548               return false;
549           });
550       [% END %]
551   });
552 </script>
553
554 </head>
555 <body id="cat_addbiblio" class="cat">
556
557    <div id="loading">
558        <div>Loading, please wait...</div>
559    </div>
560
561     [% INCLUDE 'header.inc' %]
562
563     <div id="breadcrumbs">
564         <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
565         <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo;
566         [% IF ( biblionumber ) %]
567             Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
568         [% ELSE %]
569             Add MARC record
570         [% END %]
571     </div>
572
573     <div class="main container-fluid">
574         <div class="row">
575             <div class="col-md-10 col-md-offset-1">
576
577                 <h1>
578                     [% IF ( biblionumber ) %]
579                         Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
580                     [% ELSE %]
581                         Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
582                     [% END %]
583                 </h1>
584
585                 [% UNLESS ( number ) %]
586                     <!-- show duplicate warning on tab 0 only -->
587                     [% IF ( duplicatebiblionumber ) %]
588                         <div class="dialog alert">
589                             <h3>Duplicate record suspected</h3>
590                             <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>
591                             [% IF ( CAN_user_editcatalogue_edit_items ) %]
592                                 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
593                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
594                                     <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
595                                 </form>
596                             [% ELSE %]
597                                 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
598                                     <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
599                                     <input type="submit" value="Yes: View existing items" />
600                                 </form>
601                             [% END %]
602                             <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
603                                 [% IF ( CAN_user_editcatalogue_edit_items ) %]
604                                     <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
605                                 [% ELSE %]
606                                     <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
607                                 [% END %]
608                             </form>
609                         </div> <!-- /.dialog.alert -->
610                     [% END # /IF duplicatebiblionumber %]
611                 [% END # /UNLESS number %]
612
613                 [% IF ( done ) %]
614                     <script>
615                         opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
616                         opener.document.forms['f'].title.value='[% title | html %]';
617                         window.close();
618                     </script>
619                 [% ELSE %]
620                     <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
621                         <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
622                         <input type="hidden" value="" id="current_tab" name="current_tab" />
623                         <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
624                 [% END %]
625
626                 <div id="toolbar" class="btn-toolbar">
627                     [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
628                         [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
629                             <!-- Action is under fast cataloging - Save button redirecting to items -->
630                             <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
631                         [% ELSE %]
632                             <!-- Not using fast cataloging - Display split menu -->
633                             <div class="btn-group">
634                                 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
635                                 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
636                                 <span class="caret"></span>
637                                 </button>
638                                 <ul class="dropdown-menu">
639                                     <li><a id="saveandview" href="#">Save and view record</a></li>
640                                     <li><a id="saveanditems" href="#">Save and edit items</a></li>
641                                     <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
642                                 </ul>
643                             </div>
644                         [% END %]
645                     [% ELSE %]
646                         <!-- User cannot edit items - single button redirecting to view -->
647                         <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
648                     [% END # /IF CAN_user_editcatalogue_edit_items %]
649
650                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
651                         [% IF biblionumber %]
652                             <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>
653                         [% ELSE %]
654                             <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
655                         [% END %]
656                     [% END %]
657
658                     <div class="btn-group">
659                         <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
660                         <ul id="settings-menu" class="dropdown-menu">
661                             [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
662                                 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
663                             [% END %]
664                             [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
665                                 <li>
666                                     <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
667                                 <li>
668                                     <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
669                                 </li>
670                             [% END %]
671                             <li class="dropdown-header">Change framework</li>
672                             <li>
673                                 <a href="#" class="change-framework" data-frameworkcode="">
674                                     [% IF ( frameworkcode ) %]
675                                        <i class="fa fa-fw">&nbsp;</i>
676                                     [% ELSE %]
677                                         <i class="fa fa-fw fa-check"></i>
678                                     [% END %]
679                                     Default
680                                 </a>
681                             </li>
682                             [% FOREACH framework IN frameworks%]
683                                 <li>
684                                     <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
685                                         [% IF framework.frameworkcode == frameworkcode %]
686                                             <i class="fa fa-fw fa-check"></i>
687                                         [% ELSE %]
688                                             <i class="fa fa-fw">&nbsp;</i>
689                                         [% END %]
690                                         [% framework.frameworktext | html %]
691                                     </a>
692                                 </li>
693                             [% END %]
694                         </ul> <!-- /#settings-menu -->
695                     </div> <!-- /.btn-group -->
696                     [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
697                         [% IF (biblionumber) %]
698                             [% IF ( BiblioDefaultViewmarc ) %]
699                                 <div class="btn-group">
700                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
701                                 </div>
702                             [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
703                                 <div class="btn-group">
704                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
705                                 </div>
706                             [% ELSIF ( BiblioDefaultViewisbd ) %]
707                                 <div class="btn-group">
708                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
709                                 </div>
710                             [% ELSE %]
711                                 <div class="btn-group">
712                                     <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
713                                 </div>
714                             [% END %]
715                         [% ELSE %]
716                             <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
717                         [% END %]
718                     [% END # /UNLESS circborrowernumber %]
719                     <div class="toolbar-tabs-container">
720                         [% IF ( BIG_LOOP.size > 1 ) %]
721                             <ul class="toolbar-tabs">
722                                 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
723                                     [% IF loop.first %]
724                                         <li class="selected">
725                                     [% ELSE %]
726                                         <li>
727                                     [% END %]
728                                         <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
729                                     </li>
730                                 [%- END -%]
731                             </ul>
732                         [% END %]
733                         <ul class="tag_anchors_list">
734                             [% FOREACH BIG_LOO IN BIG_LOOP %]
735                                 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
736                                 [% FOREACH innerloo IN BIG_LOO.innerloop %]
737                                     [% IF ( innerloo.tag ) %]
738                                         <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
739                                             <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>
740                                         </li>
741                                     [% END %]
742                                 [% END %]
743                             [% END %]
744                         </ul>
745                     </div>
746                 </div> <!-- /#toolbar.btn-toolbar -->
747
748                 [% IF bib_doesnt_exist %]
749                     <div class="dialog alert">
750                         The record you are trying to edit doesn't exist.<br>
751                         <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>.
752                     </div>
753                 [% END %]
754
755                 [% IF ( popup ) %]
756                         <input type="hidden" name="mode" value="popup" />
757                 [% END %]
758                 <input type="hidden" name="op" value="addbiblio" />
759                 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
760                 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
761                 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
762                 <input type="hidden" name="changed_framework" value="" />
763
764                 <div id="addbibliotabs" class="toptabs numbered">
765                     <ul>
766                         [% FOREACH BIG_LOO IN BIG_LOOP %]
767                             <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
768                         [% END %]
769                     </ul>
770
771                     [% FOREACH BIG_LOO IN BIG_LOOP %]
772                         <div id="tab[% BIG_LOO.number | html %]XX">
773
774                             [% IF ( BIG_LOOP.size > 1 ) %]
775                                 <h3>Section [% BIG_LOO.number | html %]</h3>
776                             [% END %]
777                             [% previous = "" %]
778                             [% FOREACH innerloo IN BIG_LOO.innerloop %]
779                                 [% IF ( innerloo.tag ) %]
780                                 [% IF innerloo.tag != previous %]
781                                     [% IF previous != "" %]
782                                         </ul>
783                                     [% END %]
784                                     [% previous = innerloo.tag %]
785                                     [% IF ( innerloo.repeatable ) %]
786                                         <ul class="sortable_field">
787                                     [% ELSE %]
788                                         <ul>
789                                     [% END %]
790                                 [% END %]
791                                     [% IF ( innerloo.repeatable ) %]
792                                         <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
793                                     [% ELSE %]
794                                         <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
795                                     [% END %]
796                                         <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
797                                             [% IF advancedMARCEditor %]
798                                                 <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>
799                                             [% ELSE %]
800                                                 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
801                                                 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;">&nbsp;?</a>[% END %]
802                                             [% END %]
803
804                                             [% IF ( innerloo.fixedfield ) %]
805                                                 <input type="text"
806                                                     tabindex="1"
807                                                     class="indicator flat"
808                                                     style="display:none;"
809                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
810                                                     size="1"
811                                                     maxlength="1"
812                                                     value="[% innerloo.indicator1 | html %]" />
813                                                 <input type="text"
814                                                     tabindex="1"
815                                                     class="indicator flat"
816                                                     style="display:none;"
817                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
818                                                     size="1"
819                                                     maxlength="1"
820                                                     value="[% innerloo.indicator2 | html %]" />
821                                             [% ELSE %]
822                                                 <input type="text"
823                                                     tabindex="1"
824                                                     class="indicator flat"
825                                                     name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
826                                                     size="1"
827                                                     maxlength="1"
828                                                     value="[% innerloo.indicator1 | html %]" />
829                                                 <input type="text"
830                                                     tabindex="1"
831                                                     class="indicator flat"
832                                                     name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
833                                                     size="1"
834                                                     maxlength="1"
835                                                     value="[% innerloo.indicator2 | html %]" />
836                                             [% END # /IF innerloo.fixedfield %] -
837
838                                             [% UNLESS advancedMARCEditor %]
839                                                 <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>
840                                             [% END %]
841
842                                             <span class="field_controls">
843                                                 [% IF ( innerloo.repeatable ) %]
844                                                     <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">
845                                                         <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
846                                                     </a>
847                                                 [% END %]
848                                                 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
849                                                     <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
850                                                 </a>
851                                             </span> <!-- /.field_controls -->
852                                         </div> <!-- /div.tag_title -->
853
854                                         <ul class="sortable_subfield">
855                                         [% FOREACH subfield_loo IN innerloo.subfield_loop %]
856                                             <!--  One line on the marc editor -->
857                                             <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
858                                                 [% UNLESS advancedMARCEditor %]
859                                                     [% IF ( subfield_loo.fixedfield ) %]
860                                                         <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">
861                                                     [% ELSE %]
862                                                         <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
863                                                     [% END %]
864                                                 [% END %]
865
866                                                     <span class="subfieldcode">
867                                                             <input type="text"
868                                                                 title="[% subfield_loo.marc_lib | $raw %]"
869                                                                 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
870                                                                 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
871                                                                 value="[% subfield_loo.subfield | html %]"
872                                                                 size="1"
873                                                                 maxlength="1"
874                                                                 class="flat"
875                                                                 tabindex="0" />
876                                                     </span>
877
878                                                 [% UNLESS advancedMARCEditor %]
879                                                         [% IF ( subfield_loo.mandatory ) %]
880                                                             <span class="subfield subfield_mandatory">
881                                                         [% ELSIF ( subfield_loo.important ) %]
882                                                             <span class="subfield subfield_important">
883                                                         [% ELSE %]
884                                                             <span class="subfield">
885                                                         [% END %]
886                                                         [% subfield_loo.marc_lib | $raw %]
887                                                         </span>
888                                                     </label>
889                                                 [% END %]
890
891                                                 [% SET mv = subfield_loo.marc_value %]
892                                                 [% IF ( mv.type == 'text' ) %]
893                                                     [% IF ( mv.readonly == 1 ) %]
894                                                         <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" />
895                                                     [% ELSE %]
896                                                         <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 -%]" />
897                                                     [% END %]
898
899                                                     [% IF ( mv.authtype ) %]
900                                                         <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>
901                                                     [% END %]
902                                                 [% ELSIF ( mv.type == 'text_complex' ) %]
903                                                     <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 -%]" />
904                                                     <span class="subfield_controls">
905                                                         [% IF mv.noclick %]
906                                                             <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
907                                                         [% ELSE %]
908                                                             <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
909                                                         [% END %]
910                                                     </span>
911                                                     [% mv.javascript | $raw %]
912                                                 [% ELSIF ( mv.type == 'hidden' ) %]
913                                                     <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 -%]" />
914                                                 [% ELSIF ( mv.type == 'textarea' ) %]
915                                                     <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
916                                                 [% ELSIF ( mv.type == 'select' ) %]
917                                                     [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
918                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
919                                                     [% ELSE %]
920                                                         <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
921                                                     [% END %]
922                                                     [% FOREACH aval IN mv.values %]
923                                                         [% IF aval == mv.default %]
924                                                         <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
925                                                         [% ELSE %]
926                                                         <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
927                                                         [% END %]
928                                                     [% END %]
929                                                     </select>
930                                                 [% END  # /IF (mv.type...) %]
931                                                 [% IF ( subfield_loo.mandatory ) %]
932                                                     <span class="required">Required</span>
933                                                 [% ELSIF ( subfield_loo.important ) %]
934                                                     <span class="important">Important</span>
935                                                 [% END %]
936                                                 <span class="subfield_controls">
937                                                     [% IF ( subfield_loo.repeatable ) %]
938                                                         <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;">
939                                                             <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
940                                                         </a>
941                                                         <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
942                                                             <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
943                                                         </a>
944                                                     [% END %]
945                                                 </span>
946                                             </li> <!-- /.subfield_line -->
947                                             <!-- End of the line -->
948                                         [% END # /FOREACH subfield_loop %]
949                                         </ul> <!--  /.sortable_subfield -->
950                                     </li> <!-- /.tag.clearfix -->
951                                 [% END %]<!-- if innerloo.tag -->
952                             [% END # /FOREACH BIG_LOO.innerloop %]
953                             </ul> <!--  /.sortable_field -->
954                         </div> <!-- /#tabXXX -->
955                     [% END # /FOREACH BIG_LOOP %]
956                 </div><!-- /#addbibliotabs -->
957
958                 [%# Fields for fast cataloging %]
959                 <input type="hidden" name="barcode" value="[% barcode | html %]" />
960                 <input type="hidden" name="branch" value="[% branch | html %]" />
961                 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
962                 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
963                 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
964                 [%# End of fields for fast cataloging %]
965             </form> <!-- /name=f -->
966
967             <div id="avCreate" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="avCreateLabel" aria-hidden="true">
968                 <div class="modal-dialog">
969                     <div class="modal-content">
970                         <div class="modal-header">
971                             <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
972                             <h3 id="avCreateLabel">Create a new authorised value</h3>
973                         </div>
974                         <form id="add_new_av" method="post">
975                             <div class="modal-body">
976                                 <div class="error"></div>
977                                 <fieldset class="rows">
978                                     <ol>
979                                         <li>
980                                             <span class="label">Category:</span>
981                                             <input type="hidden" name="category" value="" />
982                                             <span id="new_av_category"></span>
983                                         </li>
984                                         <li>
985                                             <span class="label" for="value">Authorised value:</span>
986                                             <input type="text" id="value" name="value" />
987                                         </li>
988                                         <li>
989                                             <span class="label" for="description">Description:</span>
990                                             <input type="text" id="description" name="description" />
991                                         </li>
992                                         <li>
993                                             <span class="label" for="opac_description">Description (OPAC):</span>
994                                             <input type="text" id="opac_description" name="opac_description" />
995                                         </li>
996                                     </ol>
997                                 </fieldset>
998                             </div>
999                             <div class="modal-footer">
1000                                 <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1001                                 <input type="hidden" name="select2" value="" />
1002                                 <input type="submit" class="btn btn-primary" value="Save">
1003                             </div>
1004                         </form>
1005                     </div> <!-- /.modal-content -->
1006                 </div> <!-- /.modal-dialog -->
1007             </div> <!-- /#avCreate -->
1008
1009         </div> <!-- /.col-md-10.col-md-offset-1 -->
1010     </div> <!-- /.row -->
1011
1012 [% INCLUDE 'intranet-bottom.inc' %]