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.children('.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/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(''),
235 $('body').append(form);
245 * Updates the authid for every heading field
246 * Adds visual feedback for the changes made on the form.
248 function updateHeadingLinks(links) {
249 var current_tag = '';
252 // Delete the old message dialog and create a new one
253 $('#autolinker_dialog').remove();
254 var message_dialog = $('<div id="autolinker_dialog" class="dialog message"><strong>' + _("Automatic authority link results:") + '</strong><ul></ul></div>');
255 var message_dialog_ul = message_dialog.find('ul');
257 $.each(links, function(index, heading) {
258 if(current_tag == heading.tag) {
262 current_tag = heading.tag;
266 // Find the $9 field to update
267 var tag_subfield_line = $('.subfield_line[id^=subfield' + heading.tag + '9]').eq(tag_index);
268 var subfield = tag_subfield_line.children('.input_marceditor').eq(0);
270 // Delete the old status if one exists
271 tag_subfield_line.children('.subfield_status').remove();
273 // If the field wasn't modified. Skip it.
274 if(heading.status == 'UNCHANGED') {
279 // Make the subfield line visible and update its value
280 tag_subfield_line.show();
281 subfield.val(heading.authid);
283 // Add the new status
284 var image = '<i class="fa fa-close no_matching_authority" </i> ';
286 var field_class = 'no_matching_authority_field';
287 switch(heading.status) {
289 image = '<i class="fa fa-check matching_authority"</i> ';
290 message = _("A matching authority was found in the local database.");
291 field_class = 'matching_authority_field';
294 image = '<i class="fa fa-check matching_authority"></i> ';
295 message = _("No matching authority found. A new authority was created automatically.");
296 field_class = 'matching_authority_field';
298 case 'MULTIPLE_MATCH':
299 message = _("More than one local match found. Possibly a duplicate authority!");
302 message = _("No matching authority found.");
305 message = heading.status;
309 subfield[0].classList.add(field_class);
310 tag_subfield_line.find('i').each(function() {
313 tag_subfield_line.append(image);
315 // Add the message to the dialog
316 message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
318 // Add a link to create a new authority if none was found
319 if(heading.status == 'NONE_FOUND' && tag_subfield_line.find('i').length == 1) {
320 addCreateAuthorityButton(tag_subfield_line, heading , tag_index);
324 if(message_dialog.find('li').length == 0) {
325 message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
327 $('#addbibliotabs').before(message_dialog);
331 * Use an ajax request to automatically find authority links for the current record
333 function AutomaticLinker() {
334 // Show the Loading overlay
335 $("#loading").show();
337 // Remove fields that are completely empty
338 $('#f').find('.tag').each(function() {
340 $(this).find('.input_marceditor').each(function() {
341 if($(this).val() != '') {
347 UnCloneField($(this).attr('id'));
351 // Get all the form values to post via AJAX
353 $('#f').find(':input').each(function(){
354 form_data[this.name] = $(this).val();
356 delete form_data[''];
358 // Send the data to automatic_linker.pl
360 url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
364 error: function(xhr) {
365 alert("Error : \n" + xhr.responseText);
367 success: function(json) {
368 switch(json.status) {
370 alert(_("Error : You do not have the permissions necessary to use this functionality."));
373 updateHeadingLinks(json.links);
377 complete: function() {
378 $("#loading").hide();
384 function PopupMARCFieldDoc(field) {
385 [% IF Koha.Preference('marcfielddocurl') %]
386 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
387 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
388 docurl = docurl.replace("{FIELD}", ""+field);
389 docurl = docurl.replace("{LANG}", "[% lang | html %]");
391 [% ELSIF ( marcflavour == 'MARC21' ) %]
392 _MARC21FieldDoc(field);
393 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
394 _UNIMARCFieldDoc(field);
397 function confirmnotdup(redirect){
398 $("#confirm_not_duplicate").attr("value","1");
399 $("#redirect").attr("value",redirect);
403 function Dopop(link,i) {
404 defaultvalue = document.getElementById(i).value;
405 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
409 * this function open a popup to search on z3950 server.
411 function PopupZ3950() {
412 var strQuery = GetZ3950Terms();
414 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');
418 function PopupMARCFieldDoc(field) {
419 [% IF Koha.Preference('marcfielddocurl') %]
420 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
421 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
422 docurl = docurl.replace("{FIELD}", ""+field);
423 docurl = docurl.replace("{LANG}", "[% lang | html %]");
425 [% ELSIF ( marcflavour == 'MARC21' ) %]
426 _MARC21FieldDoc(field);
427 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
428 _UNIMARCFieldDoc(field);
432 function _MARC21FieldDoc(field) {
434 window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
435 } else if (field >= 90 && field <= 99 ){
436 window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
437 } else if (field >= 590 && field <= 599 ){
438 window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
439 } else if (field >= 690 && field <= 699 ){
440 window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
441 } else if (field < 900) {
442 window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
444 window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
448 function _UNIMARCFieldDoc(field) {
449 /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
450 seems to be the only version available that can be linked to per tag. More recent
451 versions of the UNIMARC standard are available on the IFLA website only as
456 url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
458 var first = field.substring(0,1);
459 url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
460 if (first == 0) url = url + "b";
462 ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
469 * Functions to hide/show marc docs and tags links
472 function toggleMARCdocLinks(flag){
474 $(".marcdocs").show();
475 Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
476 $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
478 $(".marcdocs").hide();
479 Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
480 $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
484 function toggleMARCTagLinks(flag){
487 $(".subfieldcode").show();
488 Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
489 $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
492 $(".subfieldcode").hide();
493 Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
494 $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
499 * check if mandatory/important subfields are written
500 * @param mandatory true to check for mandatories, false for importants
502 function AreFieldsNotOk (mandatory = true) {
503 var fields = new Array();
504 var subfields = new Array();
505 var tab = new Array();
506 var label = new Array();
508 var tabflag= new Array();
510 var notFilledClass = "subfield_not_filled";
513 [% FOREACH BIG_LOO IN BIG_LOOP %]
514 [% FOREACH innerloo IN BIG_LOO.innerloop %]
515 [% IF ( innerloo.mandatory ) %]
516 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
518 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
519 [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
520 tab.push("[% BIG_LOO.number | html %]");
521 label.push("[% subfield_loo.marc_lib | $raw %]");
526 StrAlert = _("Can't save this record because the following field aren't filled:");
528 [% FOREACH BIG_LOO IN BIG_LOOP %]
529 [% FOREACH innerloo IN BIG_LOO.innerloop %]
530 [% IF ( innerloo.important ) %]
531 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
533 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
534 [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
535 tab.push("[% BIG_LOO.number | html %]");
536 label.push("[% subfield_loo.marc_lib | $raw %]");
541 StrAlert = _("A few important fields are not filled:");
542 notFilledClass = "important_subfield_not_filled";
546 for(var i=0,len=subfields.length; i<len ; i++){
547 var tag=subfields[i].substr(4,3);
548 var subfield=subfields[i].substr(17,1);
549 var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
550 if (tabflag[tag+subfield+tagnumber] == null) {
551 tabflag[tag+subfield+tagnumber]=new Array();
552 tabflag[tag+subfield+tagnumber][0]=0;
554 if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
555 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
557 var elt = document.getElementById(subfields[i]);
558 if ( elt.nodeName == 'SELECT' ) {
559 $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
561 elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
563 $('#' + subfields[i]).focus();
564 tabflag[tag+subfield+tagnumber][1]=label[i];
565 tabflag[tag+subfield+tagnumber][2]=tab[i];
567 tabflag[tag+subfield+tagnumber][0] = 1;
570 for (var tagsubfieldid in tabflag){
571 if (tabflag[tagsubfieldid][0]==0){
572 var tag=tagsubfieldid.substr(0,3);
573 var subfield=tagsubfieldid.substr(3,1);
574 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
575 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
580 /* Check for mandatories/importants field(not subfields) */
581 for(var i=0,len=fields.length; i<len; i++){
584 divid = "tag_" + arr[0] + "_" + arr[1];
585 varegexp = new RegExp("^tag_" + arr[0] + "_code_");
587 if(parseInt(arr[0]) >= 10){
588 elem = document.getElementById(divid);
589 eleminputs = elem.getElementsByTagName('input');
591 for(var j=0,len2=eleminputs.length; j<len2; j++){
593 if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
594 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
596 for( var k=0; k<len2; k++){
597 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
602 elemselect = elem.getElementsByTagName('select');
603 for( var k=0; k<elemselect.length; k++){
604 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
611 elemtextareas = elem.getElementsByTagName('textarea');
612 for(var j=0,len2=elemtextareas.length; j<len2; j++){
613 // this bit assumes that the only textareas in this context would be for subfields
614 if (elemtextareas[j].value) {
626 StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
628 StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
647 var StrAlert = AreFieldsNotOk();
649 var StrWarning = AreFieldsNotOk(false);
651 StrWarning += "\n" + _("Are you sure you want to save?");
652 var r=confirm(StrWarning);
666 * check if z3950 mandatories are set or not
668 function GetZ3950Terms(){
669 var frameworkcode = document.getElementById("frameworkcode").value;
670 var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
671 var mandatories = new Array();
672 var mandatories_label = new Array();
673 [% FOREACH BIG_LOO IN BIG_LOOP %]
674 [% FOREACH innerloo IN BIG_LOO.innerloop %]
675 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
676 [% IF ( subfield_loo.z3950_mandatory ) %]
677 mandatories.push("[% subfield_loo.id | html %]");
678 mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
684 for(var i=0,len=mandatories.length; i<len ; i++){
685 var field_value = document.getElementById(mandatories[i]).value;
687 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
693 function Changefwk() {
695 f.op.value = "[% op | html %]";
696 f.biblionumber.value = "[% biblionumberdata | html %]";
697 f.changed_framework.value = "changed";
702 [% Asset.css("css/addbiblio.css") | $raw %]
704 <body id="cat_addbiblio" class="cat">
707 <div>Loading, please wait...</div>
710 [% INCLUDE 'header.inc' %]
712 <div id="breadcrumbs">
713 <a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
714 <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> ›
715 [% IF ( biblionumber ) %]
716 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
722 <div class="main container-fluid">
724 <div class="col-md-10 col-md-offset-1">
727 [% IF ( biblionumber ) %]
728 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
730 Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
734 [% UNLESS ( number ) %]
735 <!-- show duplicate warning on tab 0 only -->
736 [% IF ( duplicatebiblionumber ) %]
737 <div class="dialog alert">
738 <h3>Duplicate record suspected</h3>
739 <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>
740 [% IF ( CAN_user_editcatalogue_edit_items ) %]
741 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
742 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
743 <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
746 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
747 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
748 <input type="submit" value="Yes: View existing items" />
751 <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
752 [% IF ( CAN_user_editcatalogue_edit_items ) %]
753 <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
755 <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
758 </div> <!-- /.dialog.alert -->
759 [% END # /IF duplicatebiblionumber %]
760 [% END # /UNLESS number %]
764 opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
765 opener.document.forms['f'].title.value='[% title | html %]';
769 <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
770 <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
771 <input type="hidden" value="" id="current_tab" name="current_tab" />
772 <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
775 <div id="toolbar" class="btn-toolbar">
776 [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
777 [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
778 <!-- Action is under fast cataloging - Save button redirecting to items -->
779 <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
781 <!-- Not using fast cataloging - Display split menu -->
782 <div class="btn-group">
783 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
784 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
785 <span class="caret"></span>
787 <ul class="dropdown-menu">
788 <li><a id="saveandview" href="#">Save and view record</a></li>
789 <li><a id="saveanditems" href="#">Save and edit items</a></li>
790 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
795 <!-- User cannot edit items - single button redirecting to view -->
796 <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
797 [% END # /IF CAN_user_editcatalogue_edit_items %]
799 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
800 [% IF biblionumber %]
801 <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>
803 <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
805 [% IF ( CAN_user_editauthorities ) %]
806 <div class="btn-group"><a class="btn btn-default" href="#" id="linkerbutton"><i class="fa fa-refresh"></i> Link authorities automatically</a></div>
810 <div class="btn-group">
811 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
812 <ul id="settings-menu" class="dropdown-menu">
813 [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
814 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
816 [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
818 <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
820 <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
823 <li class="dropdown-header">Change framework</li>
825 <a href="#" class="change-framework" data-frameworkcode="">
826 [% IF ( frameworkcode ) %]
827 <i class="fa fa-fw"> </i>
829 <i class="fa fa-fw fa-check"></i>
834 [% FOREACH framework IN frameworks%]
836 <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
837 [% IF framework.frameworkcode == frameworkcode %]
838 <i class="fa fa-fw fa-check"></i>
840 <i class="fa fa-fw"> </i>
842 [% framework.frameworktext | html %]
846 </ul> <!-- /#settings-menu -->
847 </div> <!-- /.btn-group -->
848 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
849 [% IF (biblionumber) %]
850 [% IF ( BiblioDefaultViewmarc ) %]
851 <div class="btn-group">
852 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
854 [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
855 <div class="btn-group">
856 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
858 [% ELSIF ( BiblioDefaultViewisbd ) %]
859 <div class="btn-group">
860 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
863 <div class="btn-group">
864 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
868 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
870 [% END # /UNLESS circborrowernumber %]
871 <div class="toolbar-tabs-container">
872 [% IF ( BIG_LOOP.size > 1 ) %]
873 <ul class="toolbar-tabs">
874 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
876 <li class="selected">
880 <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
885 <ul class="tag_anchors_list">
886 [% FOREACH BIG_LOO IN BIG_LOOP %]
887 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
888 [% FOREACH innerloo IN BIG_LOO.innerloop %]
889 [% IF ( innerloo.tag ) %]
890 <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
891 <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>
898 </div> <!-- /#toolbar.btn-toolbar -->
900 [% IF bib_doesnt_exist %]
901 <div class="dialog alert">
902 The record you are trying to edit doesn't exist.<br>
903 <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>.
908 <input type="hidden" name="mode" value="popup" />
910 <input type="hidden" name="op" value="addbiblio" />
911 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
912 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
913 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
914 <input type="hidden" name="changed_framework" value="" />
916 <div id="addbibliotabs" class="toptabs numbered">
918 [% FOREACH BIG_LOO IN BIG_LOOP %]
919 <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
923 [% FOREACH BIG_LOO IN BIG_LOOP %]
924 <div id="tab[% BIG_LOO.number | html %]XX">
926 [% IF ( BIG_LOOP.size > 1 ) %]
927 <h3>Section [% BIG_LOO.number | html %]</h3>
930 [% FOREACH innerloo IN BIG_LOO.innerloop %]
931 [% IF ( innerloo.tag ) %]
932 [% IF innerloo.tag != previous %]
933 [% IF previous != "" %]
936 [% previous = innerloo.tag %]
937 [% IF ( innerloo.repeatable ) %]
938 <ul class="sortable_field">
943 [% IF ( innerloo.repeatable ) %]
944 <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
946 <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
948 <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
949 [% IF advancedMARCEditor %]
950 <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>
952 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
953 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>[% END %]
956 [% IF ( innerloo.fixedfield ) %]
959 class="indicator flat"
960 style="display:none;"
961 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
964 value="[% innerloo.indicator1 | html %]" />
967 class="indicator flat"
968 style="display:none;"
969 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
972 value="[% innerloo.indicator2 | html %]" />
976 class="indicator flat"
977 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
980 value="[% innerloo.indicator1 | html %]" />
983 class="indicator flat"
984 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
987 value="[% innerloo.indicator2 | html %]" />
988 [% END # /IF innerloo.fixedfield %] -
990 [% UNLESS advancedMARCEditor %]
991 <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>
994 <span class="field_controls">
995 [% IF ( innerloo.repeatable ) %]
996 <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">
997 <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
1000 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
1001 <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
1003 </span> <!-- /.field_controls -->
1004 </div> <!-- /div.tag_title -->
1006 <ul class="sortable_subfield">
1007 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
1008 <!-- One line on the marc editor -->
1009 <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
1010 <div class="subfieldcode">
1012 title="[% subfield_loo.marc_lib | $raw %]"
1013 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
1014 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
1015 value="[% subfield_loo.subfield | html %]"
1021 [% UNLESS advancedMARCEditor %]
1022 [% IF ( subfield_loo.mandatory ) %]
1023 <div class="subfield subfield_mandatory">
1024 [% ELSIF ( subfield_loo.important ) %]
1025 <div class="subfield subfield_important">
1027 <div class="subfield">
1029 [% IF ( subfield_loo.fixedfield ) %]
1030 <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">
1032 <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1034 [% subfield_loo.marc_lib | $raw %]
1039 [% SET mv = subfield_loo.marc_value %]
1040 <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor">
1041 [% IF ( mv.type == 'text' ) %]
1042 [% IF ( mv.readonly == 1 ) %]
1043 <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" />
1045 <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 -%]" />
1048 [% ELSIF ( mv.type == 'text_complex' ) %]
1049 <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 -%]" />
1050 [% mv.javascript | $raw %]
1051 [% ELSIF ( mv.type == 'hidden' ) %]
1052 <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 -%]" />
1053 [% ELSIF ( mv.type == 'textarea' ) %]
1054 <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
1055 [% ELSIF ( mv.type == 'select' ) %]
1056 [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
1057 <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
1059 <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1061 [% FOREACH aval IN mv.values %]
1062 [% IF aval == mv.default %]
1063 <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1065 <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1069 [% END # /IF (mv.type...) %]
1071 [% IF ( subfield_loo.mandatory ) %]
1072 <div class="subfield_loop_mandatory">
1073 <span class="required">Required</span>
1075 [% ELSIF ( subfield_loo.important ) %]
1076 <div class="subfield_loop_mandatory">
1077 <span class="important">Important</span>
1080 <div class="subfield_controls">
1081 [% IF ( mv.type == 'text' ) %]
1082 [% IF ( mv.authtype ) %]
1083 <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>
1085 [% ELSIF ( mv.type == 'text_complex' ) %]
1087 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1089 [% IF mv.plugin == "upload.pl" %]
1090 <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>
1092 <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1097 [% IF ( subfield_loo.repeatable ) %]
1098 <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;">
1099 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
1101 <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
1102 <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
1106 </li> <!-- /.subfield_line -->
1107 <!-- End of the line -->
1108 [% END # /FOREACH subfield_loop %]
1109 </ul> <!-- /.sortable_subfield -->
1110 </li> <!-- /.tag.clearfix -->
1111 [% END %]<!-- if innerloo.tag -->
1112 [% END # /FOREACH BIG_LOO.innerloop %]
1113 </ul> <!-- /.sortable_field -->
1114 </div> <!-- /#tabXXX -->
1115 [% END # /FOREACH BIG_LOOP %]
1116 </div><!-- /#addbibliotabs -->
1118 [%# Fields for fast cataloging %]
1119 <input type="hidden" name="barcode" value="[% barcode | html %]" />
1120 <input type="hidden" name="branch" value="[% branch | html %]" />
1121 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
1122 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
1123 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
1124 [%# End of fields for fast cataloging %]
1125 </form> <!-- /name=f -->
1127 [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1129 </div> <!-- /.col-md-10.col-md-offset-1 -->
1130 </div> <!-- /.row -->
1132 [% INCLUDE 'intranet-bottom.inc' %]