4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Koha › Cataloging › [% 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 [% INCLUDE 'select2.inc' %]
10 var CAN_user_parameters_manage_auth_values = "[% CAN_user_parameters_manage_auth_values | html %]";
11 $.fn.select2.defaults.set("width", "100%" );
13 [% Asset.js("js/cataloging.js") | $raw %]
14 [% Asset.js("js/browser.js") | $raw %]
16 var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
19 $(window).load(function(){
23 $(document).ready(function() {
25 [% IF bib_doesnt_exist %]
26 $("#addbibliotabs").hide();
30 var $tabs = $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
31 $("#"+ui.panel.id+" input:eq(0)").focus();
33 $( "ul.sortable_field", $tabs ).sortable({
35 containment: $("#addbibliotabs")
37 $( "ul.sortable_subfield", $tabs ).sortable({
43 link = $("a[href='#[% tab | html %]']");
47 Sticky = $("#toolbar");
50 stickyClass: "floating"
53 /* check cookie to hide/show marcdocs*/
54 if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
55 toggleMARCdocLinks(false);
57 toggleMARCdocLinks(true);
60 $("#marcDocsSelect").click(function(){
61 if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
62 toggleMARCdocLinks(true);
64 toggleMARCdocLinks(false);
68 /* check cookie to hide/show marc tags*/
69 var marctags_cookie = Cookies.get("marctags_[% borrowernumber | html %]");
70 if( marctags_cookie == 'hide'){
71 toggleMARCTagLinks(false);
72 } else if( marctags_cookie == 'show'){
73 toggleMARCTagLinks(true)
75 [% UNLESS Koha.Preference("hide_marc") %]
76 toggleMARCTagLinks(true)
78 toggleMARCTagLinks(false);
82 $("#marcTagsSelect").click(function(){
83 if( Cookies.get("marctags_[% borrowernumber | html %]") == 'hide'){
84 toggleMARCTagLinks(true)
86 toggleMARCTagLinks(false);
90 $("#z3950search").click(function(){
94 $("#linkerbutton").click(function(){
98 $("#saverecord").click(function(){
99 $(".btn-group").removeClass("open");
104 $("#saveandview").click(function(){
105 $(".btn-group").removeClass("open");
110 $("#saveanditems").click(function(){
111 $(".btn-group").removeClass("open");
115 $("#saveandcontinue").click(function(){
116 $(".btn-group").removeClass("open");
117 var tab = $("#addbibliotabs li.ui-tabs-active:first a").attr('href');
118 tab = tab.replace('#', '');
119 $("#current_tab").val(tab);
120 redirect("just_save", tab);
124 $( '#switcheditor' ).click( function() {
125 var breedingid = [% breedingid || "null" | html %];
127 if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
129 Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
131 var biblionumber = [% biblionumber || "null" | html %];
133 if ( biblionumber ) {
134 window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
136 window.location = '/cgi-bin/koha/cataloguing/editor.pl';
141 $(".change-framework").on("click", function(){
142 var frameworkcode = $(this).data("frameworkcode");
143 $("#frameworkcode").val( frameworkcode );
147 $(".toolbar-tabs a").on("click",function(e){
149 selectTab( $(this ) );
152 $(".tag_anchor").on("click", function(e){
154 var toolbar_height = $("#toolbar").outerHeight();
155 $(".tag_anchor").removeClass("selected");
156 $(this).addClass("selected");
157 var link = this.href;
158 var linkid = link.substring( link.indexOf("#") + 1 );
159 var dest = $("#" + linkid );
160 var yoffset = dest.offset();
161 window.scrollTo( 0, yoffset.top - toolbar_height - 20 );
166 function selectTab( tablink ){
167 $(".toolbar-tabs li").removeClass("selected");
168 tablink.parent().addClass("selected");
169 var tabid = tablink.data("tabid");
170 $('#addbibliotabs').selectTabByID("#tab" + tabid + "XX");
171 $(".tag_anchors").removeClass("tab_selected").hide();
172 $(".tag_anchors_" + tabid ).addClass("tab_selected").show();
175 function redirect(dest){
176 $("#redirect").attr("value",dest);
180 [% IF ( CAN_user_editcatalogue_edit_items ) %]
181 var onOption = function () {
187 * this function append button for create new authority if not found
190 function addCreateAuthorityButton(tag_subfield_line, heading, tag_index) {
191 var title = _("Create authority");
192 var elem = $('<a href="#" title="' + title + '"><i class="fa fa-plus-circle"></i></a>');
193 tag_subfield_line.append(elem);
194 var tag_subfield_line_a = $('.subfield_line[id^=subfield' + heading.tag + 'a]').eq(tag_index);
195 var subfield_a = tag_subfield_line_a.find('.input_marceditor').eq(0);
196 var index = subfield_a.attr('id');
197 elem.click(function() {
198 var popup = window.open("", "new_auth_popup",'fullscreen,toolbar=false,scrollbars=yes');
200 // Create a new form that will be POSTed in the new window
201 var form = $('<form>').attr({
203 action: "/cgi-bin/koha/authorities/authorities.pl",
204 target: "new_auth_popup"
206 //add the authtypecode
207 form.append($('<input>').attr({
209 name: 'authtypecode',
210 value: heading.auth_type
212 form.append($('<input>').attr({
215 value: heading.tag_to_report
217 form.append($('<input>').attr({
222 form.append($('<input>').attr({
227 $('.tag[id^=tag_' + heading.tag + '_]').eq(tag_index).find(':input').each(function(){
228 form.append($('<input>').attr({
230 name: this.name.split('_',4).join(''),
234 $('body').append(form);
244 * Updates the authid for every heading field
245 * Adds visual feedback for the changes made on the form.
247 function updateHeadingLinks(links) {
248 var current_tag = '';
251 // Delete the old message dialog and create a new one
252 $('#autolinker_dialog').remove();
253 var message_dialog = $('<div id="autolinker_dialog" class="dialog message"><strong>' + _("Automatic authority link results:") + '</strong><ul></ul></div>');
254 var message_dialog_ul = message_dialog.find('ul');
256 $.each(links, function(index, heading) {
257 if(current_tag == heading.tag) {
261 current_tag = heading.tag;
265 // Find the $9 field to update
266 var tag_subfield_line = $('.subfield_line[id^=subfield' + heading.tag + '9]').eq(tag_index);
267 if( tag_subfield_line.length < 1 ){ return; }
269 var subfield = tag_subfield_line.find('.input_marceditor').eq(0);
270 subfield.removeClass("matching_authority_field no_matching_authority_field");
272 // Delete the old status if one exists
273 tag_subfield_line.children('.subfield_status').remove();
275 // If the field wasn't modified. Skip it.
276 if(heading.status == 'UNCHANGED') {
281 // Make the subfield line visible and update its value
282 tag_subfield_line.show();
283 subfield.val(heading.authid);
285 // Add the new status
286 var image = '<i class="fa fa-close subfield_status no_matching_authority" </i> ';
288 var field_class = 'no_matching_authority_field';
289 switch(heading.status) {
291 image = '<i class="fa fa-check subfield_status matching_authority"</i> ';
292 message = _("A matching authority was found in the local database.");
293 field_class = 'matching_authority_field';
296 image = '<i class="fa fa-check subfield_status matching_authority"></i> ';
297 message = _("No matching authority found. A new authority was created automatically.");
298 field_class = 'matching_authority_field';
300 case 'MULTIPLE_MATCH':
301 message = _("More than one local match found. Possibly a duplicate authority!");
304 message = _("No matching authority found.");
307 message = heading.status;
311 subfield[0].classList.add(field_class);
312 tag_subfield_line.find('i').each(function() {
315 tag_subfield_line.append(image);
317 // Add the message to the dialog
318 message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
320 // Add a link to create a new authority if none was found
321 if(heading.status == 'NONE_FOUND' && tag_subfield_line.find('i').length == 1) {
322 addCreateAuthorityButton(tag_subfield_line, heading , tag_index);
326 if(message_dialog.find('li').length == 0) {
327 message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
329 $('#addbibliotabs').before(message_dialog);
333 * Use an ajax request to automatically find authority links for the current record
335 function AutomaticLinker() {
336 // Show the Loading overlay
337 $("#loading").show();
339 // Remove fields that are completely empty
340 $('#f').find('.tag').each(function() {
342 $(this).find('.input_marceditor').each(function() {
343 if($(this).val() != '') {
349 UnCloneField($(this).attr('id'));
353 // Get all the form values to post via AJAX
355 $('#f').find(':input').each(function(){
356 form_data[this.name] = $(this).val();
358 delete form_data[''];
360 // Send the data to automatic_linker.pl
362 url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
366 error: function(xhr) {
367 alert("Error : \n" + xhr.responseText);
369 success: function(json) {
370 switch(json.status) {
372 alert(_("Error : You do not have the permissions necessary to use this functionality."));
375 updateHeadingLinks(json.links);
379 complete: function() {
380 $("#loading").hide();
386 function PopupMARCFieldDoc(field) {
387 [% IF Koha.Preference('marcfielddocurl') %]
388 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
389 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
390 docurl = docurl.replace("{FIELD}", ""+field);
391 docurl = docurl.replace("{LANG}", "[% lang | html %]");
393 [% ELSIF ( marcflavour == 'MARC21' ) %]
394 _MARC21FieldDoc(field);
395 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
396 _UNIMARCFieldDoc(field);
399 function confirmnotdup(redirect){
400 $("#confirm_not_duplicate").attr("value","1");
401 $("#redirect").attr("value",redirect);
405 function Dopop(link,i) {
406 defaultvalue = document.getElementById(i).value;
407 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
411 * this function open a popup to search on z3950 server.
413 function PopupZ3950() {
414 var strQuery = GetZ3950Terms();
416 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');
420 function PopupMARCFieldDoc(field) {
421 [% IF Koha.Preference('marcfielddocurl') %]
422 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
423 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
424 docurl = docurl.replace("{FIELD}", ""+field);
425 docurl = docurl.replace("{LANG}", "[% lang | html %]");
427 [% ELSIF ( marcflavour == 'MARC21' ) %]
428 _MARC21FieldDoc(field);
429 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
430 _UNIMARCFieldDoc(field);
434 function _MARC21FieldDoc(field) {
436 window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
437 } else if (field >= 90 && field <= 99 ){
438 window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
439 } else if (field >= 590 && field <= 599 ){
440 window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
441 } else if (field >= 690 && field <= 699 ){
442 window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
443 } else if (field < 900) {
444 window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
446 window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
450 function _UNIMARCFieldDoc(field) {
451 /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
452 seems to be the only version available that can be linked to per tag. More recent
453 versions of the UNIMARC standard are available on the IFLA website only as
458 url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
460 var first = field.substring(0,1);
461 url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
462 if (first == 0) url = url + "b";
464 ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
471 * Functions to hide/show marc docs and tags links
474 function toggleMARCdocLinks(flag){
476 $(".marcdocs").show();
477 Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
478 $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
480 $(".marcdocs").hide();
481 Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
482 $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
486 function toggleMARCTagLinks(flag){
489 $(".subfieldcode").show();
490 Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
491 $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
494 $(".subfieldcode").hide();
495 Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
496 $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
501 * check if mandatory/important subfields are written
502 * @param mandatory true to check for mandatories, false for importants
504 function AreFieldsNotOk (mandatory = true) {
505 var fields = new Array();
506 var subfields = new Array();
507 var tab = new Array();
508 var label = new Array();
510 var tabflag= new Array();
512 var notFilledClass = "subfield_not_filled";
515 [% FOREACH BIG_LOO IN BIG_LOOP %]
516 [% FOREACH innerloo IN BIG_LOO.innerloop %]
517 [% IF ( innerloo.mandatory ) %]
518 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
520 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
521 [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
522 tab.push("[% BIG_LOO.number | html %]");
523 label.push("[% subfield_loo.marc_lib | $raw %]");
528 StrAlert = _("Can't save this record because the following field aren't filled:");
530 [% FOREACH BIG_LOO IN BIG_LOOP %]
531 [% FOREACH innerloo IN BIG_LOO.innerloop %]
532 [% IF ( innerloo.important ) %]
533 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
535 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
536 [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
537 tab.push("[% BIG_LOO.number | html %]");
538 label.push("[% subfield_loo.marc_lib | $raw %]");
543 StrAlert = _("A few important fields are not filled:");
544 notFilledClass = "important_subfield_not_filled";
548 for(var i=0,len=subfields.length; i<len ; i++){
549 var tag=subfields[i].substr(4,3);
550 var subfield=subfields[i].substr(17,1);
551 var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
552 if (tabflag[tag+subfield+tagnumber] == null) {
553 tabflag[tag+subfield+tagnumber]=new Array();
554 tabflag[tag+subfield+tagnumber][0]=0;
556 if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
557 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
559 var elt = document.getElementById(subfields[i]);
560 if ( elt.nodeName == 'SELECT' ) {
561 $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
563 elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
565 $('#' + subfields[i]).focus();
566 tabflag[tag+subfield+tagnumber][1]=label[i];
567 tabflag[tag+subfield+tagnumber][2]=tab[i];
569 tabflag[tag+subfield+tagnumber][0] = 1;
572 for (var tagsubfieldid in tabflag){
573 if (tabflag[tagsubfieldid][0]==0){
574 var tag=tagsubfieldid.substr(0,3);
575 var subfield=tagsubfieldid.substr(3,1);
576 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
577 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
582 /* Check for mandatories/importants field(not subfields) */
583 for(var i=0,len=fields.length; i<len; i++){
586 divid = "tag_" + arr[0] + "_" + arr[1];
587 varegexp = new RegExp("^tag_" + arr[0] + "_code_");
589 if(parseInt(arr[0]) >= 10){
590 elem = document.getElementById(divid);
591 eleminputs = elem.getElementsByTagName('input');
593 for(var j=0,len2=eleminputs.length; j<len2; j++){
595 if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
596 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
598 for( var k=0; k<len2; k++){
599 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
604 elemselect = elem.getElementsByTagName('select');
605 for( var k=0; k<elemselect.length; k++){
606 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
613 elemtextareas = elem.getElementsByTagName('textarea');
614 for(var j=0,len2=elemtextareas.length; j<len2; j++){
615 // this bit assumes that the only textareas in this context would be for subfields
616 if (elemtextareas[j].value) {
628 StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
630 StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
649 var StrAlert = AreFieldsNotOk();
651 var StrWarning = AreFieldsNotOk(false);
653 StrWarning += "\n" + _("Are you sure you want to save?");
654 var r=confirm(StrWarning);
668 * check if z3950 mandatories are set or not
670 function GetZ3950Terms(){
671 var frameworkcode = document.getElementById("frameworkcode").value;
672 var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
673 var mandatories = new Array();
674 var mandatories_label = new Array();
675 [% FOREACH BIG_LOO IN BIG_LOOP %]
676 [% FOREACH innerloo IN BIG_LOO.innerloop %]
677 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
678 [% IF ( subfield_loo.z3950_mandatory ) %]
679 mandatories.push("[% subfield_loo.id | html %]");
680 mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
686 for(var i=0,len=mandatories.length; i<len ; i++){
687 var field_value = document.getElementById(mandatories[i]).value;
689 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
695 function Changefwk() {
697 f.op.value = "[% op | html %]";
698 f.biblionumber.value = "[% biblionumberdata | html %]";
699 f.changed_framework.value = "changed";
704 [% Asset.css("css/addbiblio.css") | $raw %]
706 <body id="cat_addbiblio" class="cat">
709 <div>Loading, please wait...</div>
712 [% INCLUDE 'header.inc' %]
714 <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
717 <a href="/cgi-bin/koha/mainpage.pl">Home</a>
720 <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
723 <a href="#" aria-current="page">
724 [% IF ( biblionumber ) %]
725 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
734 <div class="main container-fluid">
736 <div class="col-md-10 col-md-offset-1">
739 [% IF ( biblionumber ) %]
740 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
742 Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
746 [% UNLESS ( number ) %]
747 <!-- show duplicate warning on tab 0 only -->
748 [% IF ( duplicatebiblionumber ) %]
749 <div class="dialog alert">
750 <h3>Duplicate record suspected</h3>
751 <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 %]&popup=1', 'DuplicateBiblio','800','600'); return false;">[% duplicatetitle | html %] <i class="fa fa-window-restore"></i></a> ?</p>
752 [% IF ( CAN_user_editcatalogue_edit_items ) %]
753 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
754 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
755 <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
758 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
759 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
760 <input type="submit" value="Yes: View existing items" />
763 <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
764 [% IF ( CAN_user_editcatalogue_edit_items ) %]
765 <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
767 <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
770 </div> <!-- /.dialog.alert -->
771 [% END # /IF duplicatebiblionumber %]
772 [% END # /UNLESS number %]
776 opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
777 opener.document.forms['f'].title.value='[% title | html %]';
781 <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
782 <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
783 <input type="hidden" value="" id="current_tab" name="current_tab" />
784 <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
787 <div id="toolbar" class="btn-toolbar">
788 [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
789 [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
790 <!-- Action is under fast cataloging - Save button redirecting to items -->
791 <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
793 <!-- Not using fast cataloging - Display split menu -->
794 <div class="btn-group">
795 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
796 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
797 <span class="caret"></span>
799 <ul class="dropdown-menu">
800 <li><a id="saveandview" href="#">Save and view record</a></li>
801 <li><a id="saveanditems" href="#">Save and edit items</a></li>
802 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
807 <!-- User cannot edit items - single button redirecting to view -->
808 <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
809 [% END # /IF CAN_user_editcatalogue_edit_items %]
811 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
812 [% IF biblionumber %]
813 <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>
815 <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
817 [% IF ( CAN_user_editauthorities ) %]
818 <div class="btn-group"><a class="btn btn-default" href="#" id="linkerbutton"><i class="fa fa-refresh"></i> Link authorities automatically</a></div>
822 <div class="btn-group">
823 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
824 <ul id="settings-menu" class="dropdown-menu">
825 [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
826 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
828 [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
830 <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
832 <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
835 <li class="dropdown-header">Change framework</li>
837 <a href="#" class="change-framework" data-frameworkcode="">
838 [% IF ( frameworkcode ) %]
839 <i class="fa fa-fw"> </i>
841 <i class="fa fa-fw fa-check"></i>
846 [% FOREACH framework IN frameworks%]
848 <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
849 [% IF framework.frameworkcode == frameworkcode %]
850 <i class="fa fa-fw fa-check"></i>
852 <i class="fa fa-fw"> </i>
854 [% framework.frameworktext | html %]
858 </ul> <!-- /#settings-menu -->
859 </div> <!-- /.btn-group -->
860 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
861 [% IF (biblionumber) %]
862 [% IF ( BiblioDefaultViewmarc ) %]
863 <div class="btn-group">
864 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
866 [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
867 <div class="btn-group">
868 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
870 [% ELSIF ( BiblioDefaultViewisbd ) %]
871 <div class="btn-group">
872 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
875 <div class="btn-group">
876 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
880 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
882 [% END # /UNLESS circborrowernumber %]
883 <div class="toolbar-tabs-container">
884 [% IF ( BIG_LOOP.size > 1 ) %]
885 <ul class="toolbar-tabs">
886 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
888 <li class="selected">
892 <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
897 <ul class="tag_anchors_list">
898 [% FOREACH BIG_LOO IN BIG_LOOP %]
899 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
900 [% FOREACH innerloo IN BIG_LOO.innerloop %]
901 [% IF ( innerloo.tag ) %]
902 <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
903 <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>
910 </div> <!-- /#toolbar.btn-toolbar -->
912 [% IF bib_doesnt_exist %]
913 <div class="dialog alert">
914 The record you are trying to edit doesn't exist.<br>
915 <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>.
920 <input type="hidden" name="mode" value="popup" />
922 <input type="hidden" name="op" value="addbiblio" />
923 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
924 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
925 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
926 <input type="hidden" name="changed_framework" value="" />
928 <div id="addbibliotabs" class="toptabs numbered">
930 [% FOREACH BIG_LOO IN BIG_LOOP %]
931 <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
935 [% FOREACH BIG_LOO IN BIG_LOOP %]
936 <div id="tab[% BIG_LOO.number | html %]XX">
938 [% IF ( BIG_LOOP.size > 1 ) %]
939 <h3>Section [% BIG_LOO.number | html %]</h3>
942 [% FOREACH innerloo IN BIG_LOO.innerloop %]
943 [% IF ( innerloo.tag ) %]
944 [% IF innerloo.tag != previous %]
945 [% IF previous != "" %]
948 [% previous = innerloo.tag %]
949 [% IF ( innerloo.repeatable ) %]
950 <ul class="sortable_field">
955 [% IF ( innerloo.repeatable ) %]
956 <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
958 <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
960 <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
961 [% IF advancedMARCEditor %]
962 <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>
964 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
965 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>[% END %]
968 [% IF ( innerloo.fixedfield ) %]
971 class="indicator flat"
972 style="display:none;"
973 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
976 value="[% innerloo.indicator1 | html %]" />
979 class="indicator flat"
980 style="display:none;"
981 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
984 value="[% innerloo.indicator2 | html %]" />
988 class="indicator flat"
989 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
992 value="[% innerloo.indicator1 | html %]" />
995 class="indicator flat"
996 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
999 value="[% innerloo.indicator2 | html %]" />
1000 [% END # /IF innerloo.fixedfield %] -
1002 [% UNLESS advancedMARCEditor %]
1003 <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>
1006 <span class="field_controls">
1007 [% IF ( innerloo.repeatable ) %]
1008 <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">
1009 <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
1012 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
1013 <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
1015 </span> <!-- /.field_controls -->
1016 </div> <!-- /div.tag_title -->
1018 <ul class="sortable_subfield">
1019 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
1020 <!-- One line on the marc editor -->
1021 <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
1022 <div class="subfieldcode">
1024 title="[% subfield_loo.marc_lib | $raw %]"
1025 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
1026 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
1027 value="[% subfield_loo.subfield | html %]"
1033 [% UNLESS advancedMARCEditor %]
1034 [% IF ( subfield_loo.mandatory ) %]
1035 <div class="subfield subfield_mandatory">
1036 [% ELSIF ( subfield_loo.important ) %]
1037 <div class="subfield subfield_important">
1039 <div class="subfield">
1041 [% IF ( subfield_loo.fixedfield ) %]
1042 <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">
1044 <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1046 [% subfield_loo.marc_lib | $raw %]
1051 [% SET mv = subfield_loo.marc_value %]
1052 <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor">
1053 [% IF ( mv.type == 'text' ) %]
1054 [% IF ( mv.readonly == 1 ) %]
1055 <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" />
1057 <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 -%]" />
1060 [% ELSIF ( mv.type == 'text_complex' ) %]
1061 <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 -%]" />
1062 [% mv.javascript | $raw %]
1063 [% ELSIF ( mv.type == 'hidden' ) %]
1064 <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 -%]" />
1065 [% ELSIF ( mv.type == 'textarea' ) %]
1066 <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
1067 [% ELSIF ( mv.type == 'select' ) %]
1068 [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
1069 <select name="[%- mv.name | html -%]" tabindex="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
1071 <select name="[%- mv.name | html -%]" tabindex="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1073 [% FOREACH aval IN mv.values %]
1074 [% IF aval == mv.default %]
1075 <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1077 <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1081 [% END # /IF (mv.type...) %]
1083 [% IF ( subfield_loo.mandatory ) %]
1084 <div class="subfield_loop_mandatory">
1085 <span class="required">Required</span>
1087 [% ELSIF ( subfield_loo.important ) %]
1088 <div class="subfield_loop_mandatory">
1089 <span class="important">Important</span>
1092 <div class="subfield_controls">
1093 [% IF ( mv.type == 'text' ) %]
1094 [% IF ( mv.authtype ) %]
1095 <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>
1097 [% ELSIF ( mv.type == 'text_complex' ) %]
1099 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1101 [% IF mv.plugin == "upload.pl" %]
1102 <a href="#" id="buttonDot_[% mv.id | html %]" class="tag_editor upload framework_plugin" tabindex="1"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a>
1104 <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1109 [% IF ( subfield_loo.repeatable ) %]
1110 <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;">
1111 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
1113 <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
1114 <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
1118 </li> <!-- /.subfield_line -->
1119 <!-- End of the line -->
1120 [% END # /FOREACH subfield_loop %]
1121 </ul> <!-- /.sortable_subfield -->
1122 </li> <!-- /.tag.clearfix -->
1123 [% END %]<!-- if innerloo.tag -->
1124 [% END # /FOREACH BIG_LOO.innerloop %]
1125 </ul> <!-- /.sortable_field -->
1126 </div> <!-- /#tabXXX -->
1127 [% END # /FOREACH BIG_LOOP %]
1128 </div><!-- /#addbibliotabs -->
1130 [%# Fields for fast cataloging %]
1131 <input type="hidden" name="barcode" value="[% barcode | html %]" />
1132 <input type="hidden" name="branch" value="[% branch | html %]" />
1133 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
1134 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
1135 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
1136 [%# End of fields for fast cataloging %]
1137 </form> <!-- /name=f -->
1139 [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1141 </div> <!-- /.col-md-10.col-md-offset-1 -->
1142 </div> <!-- /.row -->
1144 [% INCLUDE 'intranet-bottom.inc' %]