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