4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>[% IF ( biblionumber ) %]Editing [% title | html %] (Record number [% biblionumber | html %])[% ELSE %]Add MARC record[% END %] › Cataloging › Koha</title>
6 [% INCLUDE 'doc-head-close.inc' %]
7 [% Asset.js("lib/hc-sticky.js") | $raw %]
8 [% INCLUDE 'select2.inc' %]
10 [% IF Koha.Preference('CreateAVFromCataloguing') && CAN_user_parameters_manage_auth_values %]
11 var auth_values_creation = 1;
13 var auth_values_creation = 0;
15 $.fn.select2.defaults.set("width", "100%" );
17 [% Asset.js("js/cataloging.js") | $raw %]
18 [% Asset.js("js/browser.js") | $raw %]
20 var browser = KOHA.browser('[% searchid | html %]', parseInt('[% biblionumber | html %]', 10));
23 $(window).load(function(){
27 $(document).ready(function() {
29 [% IF bib_doesnt_exist %]
30 $("#addbibliotabs").hide();
34 var $tabs = $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
35 $("#"+ui.panel.id+" input:eq(0)").focus();
37 $( "ul.sortable_field", $tabs ).sortable({
39 containment: $("#addbibliotabs")
41 $( "ul.sortable_subfield", $tabs ).sortable({
47 link = $("a[href='#[% tab | html %]']");
51 Sticky = $("#toolbar");
54 stickyClass: "floating"
57 /* check cookie to hide/show marcdocs*/
58 if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
59 toggleMARCdocLinks(false);
61 toggleMARCdocLinks(true);
64 $("#marcDocsSelect").click(function(){
65 if( Cookies.get("marcdocs_[% borrowernumber | html %]") == 'hide'){
66 toggleMARCdocLinks(true);
68 toggleMARCdocLinks(false);
72 /* check cookie to hide/show marc tags*/
73 var marctags_cookie = Cookies.get("marctags_[% borrowernumber | html %]");
74 if( marctags_cookie == 'hide'){
75 toggleMARCTagLinks(false);
76 } else if( marctags_cookie == 'show'){
77 toggleMARCTagLinks(true)
79 [% UNLESS Koha.Preference("hide_marc") %]
80 toggleMARCTagLinks(true)
82 toggleMARCTagLinks(false);
86 $("#marcTagsSelect").click(function(){
87 if( Cookies.get("marctags_[% borrowernumber | html %]") == 'hide'){
88 toggleMARCTagLinks(true)
90 toggleMARCTagLinks(false);
94 $("#z3950search").click(function(){
98 $("#linkerbutton").click(function(){
102 $("#saverecord").click(function(){
103 $(".btn-group").removeClass("open");
108 $("#saveandview").click(function(){
109 $(".btn-group").removeClass("open");
114 $("#saveanditems").click(function(){
115 $(".btn-group").removeClass("open");
119 $("#saveandcontinue").click(function(){
120 $(".btn-group").removeClass("open");
121 var tab = $("#addbibliotabs li.ui-tabs-active:first a").attr('href');
122 tab = tab.replace('#', '');
123 $("#current_tab").val(tab);
124 redirect("just_save", tab);
128 $( '#switcheditor' ).click( function() {
129 var breedingid = [% breedingid || "null" | html %];
131 if ( !confirm( breedingid ? _("This record cannot be transferred to the advanced editor. Continue?") : _("Any changes will not be saved. Continue?") ) ) return false;
133 Cookies.set( 'catalogue_editor_[% logged_in_user.borrowernumber | html %]', 'advanced', { expires: 365, path: '/' } );
135 var biblionumber = [% biblionumber || "null" | html %];
137 if ( biblionumber ) {
138 window.location = '/cgi-bin/koha/cataloguing/editor.pl#catalog/' + biblionumber;
140 window.location = '/cgi-bin/koha/cataloguing/editor.pl';
145 $(".change-framework").on("click", function(){
146 var frameworkcode = $(this).data("frameworkcode");
147 $("#frameworkcode").val( frameworkcode );
151 $(".toolbar-tabs a").on("click",function(e){
153 selectTab( $(this ) );
156 $(".tag_anchor").on("click", function(e){
158 var toolbar_height = $("#toolbar").outerHeight();
159 $(".tag_anchor").removeClass("selected");
160 $(this).addClass("selected");
161 var link = this.href;
162 var linkid = link.substring( link.indexOf("#") + 1 );
163 var dest = $("#" + linkid );
164 var yoffset = dest.offset();
165 window.scrollTo( 0, yoffset.top - toolbar_height - 20 );
170 function selectTab( tablink ){
171 $(".toolbar-tabs li").removeClass("selected");
172 tablink.parent().addClass("selected");
173 var tabid = tablink.data("tabid");
174 $('#addbibliotabs').selectTabByID("#tab" + tabid + "XX");
175 $(".tag_anchors").removeClass("tab_selected").hide();
176 $(".tag_anchors_" + tabid ).addClass("tab_selected").show();
179 function redirect(dest){
180 $("#redirect").attr("value",dest);
184 [% IF ( CAN_user_editcatalogue_edit_items ) %]
185 var onOption = function () {
191 * this function append button for create new authority if not found
194 function addCreateAuthorityButton(tag_subfield_line, heading, tag_index) {
195 var title = _("Create authority");
196 var elem = $('<a href="#" title="' + title + '"><i class="fa fa-plus-circle"></i></a>');
197 tag_subfield_line.append(elem);
198 var tag_subfield_line_a = $('.subfield_line[id^=subfield' + heading.tag + 'a]').eq(tag_index);
199 var subfield_a = tag_subfield_line_a.find('.input_marceditor').eq(0);
200 var index = subfield_a.attr('id');
201 elem.click(function() {
202 var popup = window.open("", "new_auth_popup",'fullscreen,toolbar=false,scrollbars=yes');
204 // Create a new form that will be POSTed in the new window
205 var form = $('<form>').attr({
207 action: "/cgi-bin/koha/authorities/authorities.pl",
208 target: "new_auth_popup"
210 //add the authtypecode
211 form.append($('<input>').attr({
213 name: 'authtypecode',
214 value: heading.auth_type
216 form.append($('<input>').attr({
219 value: heading.tag_to_report
221 form.append($('<input>').attr({
226 form.append($('<input>').attr({
231 $('.tag[id^=tag_' + heading.tag + '_]').eq(tag_index).find(':input').each(function(){
232 form.append($('<input>').attr({
234 name: this.name.split('_',4).join(''),
238 $('body').append(form);
248 * Updates the authid for every heading field
249 * Adds visual feedback for the changes made on the form.
251 function updateHeadingLinks(links) {
252 var current_tag = '';
255 // Delete the old message dialog and create a new one
256 $('#autolinker_dialog').remove();
257 var message_dialog = $('<div id="autolinker_dialog" class="dialog message"><strong>' + _("Automatic authority link results:") + '</strong><ul></ul></div>');
258 var message_dialog_ul = message_dialog.find('ul');
260 $.each(links, function(index, heading) {
261 if(current_tag == heading.tag) {
265 current_tag = heading.tag;
269 // Find the $9 field to update
270 var tag_subfield_line = $('.subfield_line[id^=subfield' + heading.tag + '9]').eq(tag_index);
271 if( tag_subfield_line.length < 1 ){ return; }
273 var subfield = tag_subfield_line.find('.input_marceditor').eq(0);
274 subfield.removeClass("matching_authority_field no_matching_authority_field");
276 // Delete the old status if one exists
277 tag_subfield_line.children('.subfield_status').remove();
279 // If the field wasn't modified. Skip it.
280 if(heading.status == 'UNCHANGED') {
285 // Make the subfield line visible and update its value
286 tag_subfield_line.show();
287 subfield.val(heading.authid);
289 // Add the new status
290 var image = '<i class="fa fa-close subfield_status no_matching_authority" </i> ';
292 var field_class = 'no_matching_authority_field';
293 switch(heading.status) {
295 image = '<i class="fa fa-check subfield_status matching_authority"</i> ';
296 message = _("A matching authority was found in the local database.");
297 field_class = 'matching_authority_field';
300 image = '<i class="fa fa-check subfield_status matching_authority"></i> ';
301 message = _("No matching authority found. A new authority was created automatically.");
302 field_class = 'matching_authority_field';
304 case 'MULTIPLE_MATCH':
305 message = _("More than one local match found. Possibly a duplicate authority!");
308 message = _("No matching authority found.");
311 message = heading.status;
315 subfield[0].classList.add(field_class);
316 tag_subfield_line.find('i').each(function() {
319 tag_subfield_line.append(image);
321 // Add the message to the dialog
322 message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
324 // Add a link to create a new authority if none was found
325 if(heading.status == 'NONE_FOUND' && tag_subfield_line.find('i').length == 1) {
326 addCreateAuthorityButton(tag_subfield_line, heading , tag_index);
330 if(message_dialog.find('li').length == 0) {
331 message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
333 $('#addbibliotabs').before(message_dialog);
337 * Use an ajax request to automatically find authority links for the current record
339 function AutomaticLinker() {
340 // Show the Loading overlay
341 $("#loading").show();
343 // Remove fields that are completely empty
344 $('#f').find('.tag').each(function() {
346 $(this).find('.input_marceditor').each(function() {
347 if($(this).val() != '') {
353 UnCloneField($(this).attr('id'));
357 // Get all the form values to post via AJAX
359 $('#f').find(':input').each(function(){
360 form_data[this.name] = $(this).val();
362 delete form_data[''];
364 // Send the data to automatic_linker.pl
366 url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
370 error: function(xhr) {
371 alert("Error : \n" + xhr.responseText);
373 success: function(json) {
374 switch(json.status) {
376 alert(_("Error : You do not have the permissions necessary to use this functionality."));
379 updateHeadingLinks(json.links);
383 complete: function() {
384 $("#loading").hide();
390 function PopupMARCFieldDoc(field) {
391 [% IF Koha.Preference('marcfielddocurl') %]
392 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
393 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
394 docurl = docurl.replace("{FIELD}", ""+field);
395 docurl = docurl.replace("{LANG}", "[% lang | html %]");
397 [% ELSIF ( marcflavour == 'MARC21' ) %]
398 _MARC21FieldDoc(field);
399 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
400 _UNIMARCFieldDoc(field);
403 function confirmnotdup(redirect){
404 $("#confirm_not_duplicate").attr("value","1");
405 $("#redirect").attr("value",redirect);
409 function Dopop(link,i) {
410 defaultvalue = document.getElementById(i).value;
411 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
415 * this function open a popup to search on z3950 server.
417 function PopupZ3950() {
418 var strQuery = GetZ3950Terms();
420 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');
424 function PopupMARCFieldDoc(field) {
425 [% IF Koha.Preference('marcfielddocurl') %]
426 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
427 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
428 docurl = docurl.replace("{FIELD}", ""+field);
429 docurl = docurl.replace("{LANG}", "[% lang | html %]");
431 [% ELSIF ( marcflavour == 'MARC21' ) %]
432 _MARC21FieldDoc(field);
433 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
434 _UNIMARCFieldDoc(field);
438 function _MARC21FieldDoc(field) {
440 window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
441 } else if (field >= 90 && field <= 99 ){
442 window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
443 } else if (field >= 590 && field <= 599 ){
444 window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
445 } else if (field >= 690 && field <= 699 ){
446 window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
447 } else if (field < 900) {
448 window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
450 window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
454 function _UNIMARCFieldDoc(field) {
455 /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
456 seems to be the only version available that can be linked to per tag. More recent
457 versions of the UNIMARC standard are available on the IFLA website only as
462 url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
464 var first = field.substring(0,1);
465 url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
466 if (first == 0) url = url + "b";
468 ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
475 * Functions to hide/show marc docs and tags links
478 function toggleMARCdocLinks(flag){
480 $(".marcdocs").show();
481 Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
482 $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
484 $(".marcdocs").hide();
485 Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
486 $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
490 function toggleMARCTagLinks(flag){
493 $(".subfieldcode").show();
494 Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
495 $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
498 $(".subfieldcode").hide();
499 Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
500 $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
505 * check if mandatory/important subfields are written
506 * @param mandatory true to check for mandatories, false for importants
508 function AreFieldsNotOk (mandatory = true) {
509 var fields = new Array();
510 var subfields = new Array();
511 var tab = new Array();
512 var label = new Array();
514 var tabflag= new Array();
516 var notFilledClass = "subfield_not_filled";
519 [% FOREACH BIG_LOO IN BIG_LOOP %]
520 [% FOREACH innerloo IN BIG_LOO.innerloop %]
521 [% IF ( innerloo.mandatory ) %]
522 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
524 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
525 [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
526 tab.push("[% BIG_LOO.number | html %]");
527 label.push("[% subfield_loo.marc_lib | $raw %]");
532 StrAlert = _("Can't save this record because the following field aren't filled:");
534 [% FOREACH BIG_LOO IN BIG_LOOP %]
535 [% FOREACH innerloo IN BIG_LOO.innerloop %]
536 [% IF ( innerloo.important ) %]
537 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
539 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
540 [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
541 tab.push("[% BIG_LOO.number | html %]");
542 label.push("[% subfield_loo.marc_lib | $raw %]");
547 StrAlert = _("A few important fields are not filled:");
548 notFilledClass = "important_subfield_not_filled";
552 for(var i=0,len=subfields.length; i<len ; i++){
553 var tag=subfields[i].substr(4,3);
554 var subfield=subfields[i].substr(17,1);
555 var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
556 if (tabflag[tag+subfield+tagnumber] == null) {
557 tabflag[tag+subfield+tagnumber]=new Array();
558 tabflag[tag+subfield+tagnumber][0]=0;
560 if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
561 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
563 var elt = document.getElementById(subfields[i]);
564 if ( elt.nodeName == 'SELECT' ) {
565 $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
567 elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
569 $('#' + subfields[i]).focus();
570 tabflag[tag+subfield+tagnumber][1]=label[i];
571 tabflag[tag+subfield+tagnumber][2]=tab[i];
573 tabflag[tag+subfield+tagnumber][0] = 1;
576 for (var tagsubfieldid in tabflag){
577 if (tabflag[tagsubfieldid][0]==0){
578 var tag=tagsubfieldid.substr(0,3);
579 var subfield=tagsubfieldid.substr(3,1);
580 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
581 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
586 /* Check for mandatories/importants field(not subfields) */
587 for(var i=0,len=fields.length; i<len; i++){
590 divid = "tag_" + arr[0] + "_" + arr[1];
591 varegexp = new RegExp("^tag_" + arr[0] + "_code_");
593 if(parseInt(arr[0]) >= 10){
594 elem = document.getElementById(divid);
595 eleminputs = elem.getElementsByTagName('input');
597 for(var j=0,len2=eleminputs.length; j<len2; j++){
599 if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
600 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
602 for( var k=0; k<len2; k++){
603 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
608 elemselect = elem.getElementsByTagName('select');
609 for( var k=0; k<elemselect.length; k++){
610 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
617 elemtextareas = elem.getElementsByTagName('textarea');
618 for(var j=0,len2=elemtextareas.length; j<len2; j++){
619 // this bit assumes that the only textareas in this context would be for subfields
620 if (elemtextareas[j].value) {
632 StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
634 StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
653 var StrAlert = AreFieldsNotOk();
655 var StrWarning = AreFieldsNotOk(false);
657 StrWarning += "\n" + _("Are you sure you want to save?");
658 var r=confirm(StrWarning);
672 * check if z3950 mandatories are set or not
674 function GetZ3950Terms(){
675 var frameworkcode = document.getElementById("frameworkcode").value;
676 var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
677 var mandatories = new Array();
678 var mandatories_label = new Array();
679 [% FOREACH BIG_LOO IN BIG_LOOP %]
680 [% FOREACH innerloo IN BIG_LOO.innerloop %]
681 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
682 [% IF ( subfield_loo.z3950_mandatory ) %]
683 mandatories.push("[% subfield_loo.id | html %]");
684 mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
690 for(var i=0,len=mandatories.length; i<len ; i++){
691 var field_value = document.getElementById(mandatories[i]).value;
693 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
699 function Changefwk() {
701 f.op.value = "[% op | html %]";
702 f.biblionumber.value = "[% biblionumberdata | html %]";
703 f.changed_framework.value = "changed";
708 [% Asset.css("css/addbiblio.css") | $raw %]
710 <body id="cat_addbiblio" class="cat">
713 <div>Loading, please wait...</div>
716 [% INCLUDE 'header.inc' %]
718 <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
721 <a href="/cgi-bin/koha/mainpage.pl">Home</a>
724 <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
727 <a href="#" aria-current="page">
728 [% IF ( biblionumber ) %]
729 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
738 <div class="main container-fluid">
740 <div class="col-md-10 col-md-offset-1">
743 [% IF ( biblionumber ) %]
744 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
746 Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
750 [% UNLESS ( number ) %]
751 <!-- show duplicate warning on tab 0 only -->
752 [% IF ( duplicatebiblionumber ) %]
753 <div class="dialog alert">
754 <h3>Duplicate record suspected</h3>
755 <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>
756 [% IF ( CAN_user_editcatalogue_edit_items ) %]
757 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
758 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
759 <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
762 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
763 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
764 <input type="submit" value="Yes: View existing items" />
767 <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
768 [% IF ( CAN_user_editcatalogue_edit_items ) %]
769 <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
771 <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
774 </div> <!-- /.dialog.alert -->
775 [% END # /IF duplicatebiblionumber %]
776 [% END # /UNLESS number %]
780 opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
781 opener.document.forms['f'].title.value='[% title | html %]';
785 <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
786 <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
787 <input type="hidden" value="" id="current_tab" name="current_tab" />
788 <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
791 <div id="toolbar" class="btn-toolbar">
792 [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
793 [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
794 <!-- Action is under fast cataloging - Save button redirecting to items -->
795 <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
797 <!-- Not using fast cataloging - Display split menu -->
798 <div class="btn-group">
799 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
800 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
801 <span class="caret"></span>
803 <ul class="dropdown-menu">
804 <li><a id="saveandview" href="#">Save and view record</a></li>
805 <li><a id="saveanditems" href="#">Save and edit items</a></li>
806 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
811 <!-- User cannot edit items - single button redirecting to view -->
812 <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
813 [% END # /IF CAN_user_editcatalogue_edit_items %]
815 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
816 [% IF biblionumber %]
817 <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>
819 <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
821 [% IF ( CAN_user_editauthorities ) %]
822 <div class="btn-group"><a class="btn btn-default" href="#" id="linkerbutton"><i class="fa fa-refresh"></i> Link authorities automatically</a></div>
826 <div class="btn-group">
827 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
828 <ul id="settings-menu" class="dropdown-menu">
829 [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
830 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
832 [% UNLESS advancedMARCEditor %]
834 <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
836 <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
839 <li class="dropdown-header">Change framework</li>
841 <a href="#" class="change-framework" data-frameworkcode="">
842 [% IF ( frameworkcode ) %]
843 <i class="fa fa-fw"> </i>
845 <i class="fa fa-fw fa-check"></i>
850 [% FOREACH framework IN frameworks%]
852 <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
853 [% IF framework.frameworkcode == frameworkcode %]
854 <i class="fa fa-fw fa-check"></i>
856 <i class="fa fa-fw"> </i>
858 [% framework.frameworktext | html %]
862 </ul> <!-- /#settings-menu -->
863 </div> <!-- /.btn-group -->
864 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
865 [% IF (biblionumber) %]
866 [% IF ( BiblioDefaultViewmarc ) %]
867 <div class="btn-group">
868 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
870 [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
871 <div class="btn-group">
872 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
874 [% ELSIF ( BiblioDefaultViewisbd ) %]
875 <div class="btn-group">
876 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
879 <div class="btn-group">
880 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
884 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
886 [% END # /UNLESS circborrowernumber %]
887 <div class="toolbar-tabs-container">
888 [% IF ( BIG_LOOP && BIG_LOOP.size > 1 ) %]
889 <ul class="toolbar-tabs">
890 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
892 <li class="selected">
896 <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
901 <ul class="tag_anchors_list">
902 [% FOREACH BIG_LOO IN BIG_LOOP %]
903 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
904 [% FOREACH innerloo IN BIG_LOO.innerloop %]
905 [% IF ( innerloo.tag ) %]
906 <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
907 <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>
914 </div> <!-- /#toolbar.btn-toolbar -->
916 [% IF bib_doesnt_exist %]
917 <div class="dialog alert">
918 The record you are trying to edit doesn't exist.<br>
919 <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>.
924 <input type="hidden" name="mode" value="popup" />
926 <input type="hidden" name="op" value="addbiblio" />
927 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
928 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
929 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
930 <input type="hidden" name="changed_framework" value="" />
932 <div id="addbibliotabs" class="toptabs numbered">
934 [% FOREACH BIG_LOO IN BIG_LOOP %]
935 <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
939 [% FOREACH BIG_LOO IN BIG_LOOP %]
940 <div id="tab[% BIG_LOO.number | html %]XX">
942 [% IF ( BIG_LOOP.size > 1 ) %]
943 <h3>Section [% BIG_LOO.number | html %]</h3>
946 [% FOREACH innerloo IN BIG_LOO.innerloop %]
947 [% IF ( innerloo.tag ) %]
948 [% IF innerloo.tag != previous %]
949 [% IF previous != "" %]
952 [% previous = innerloo.tag %]
953 [% IF ( innerloo.repeatable ) %]
954 <ul class="sortable_field">
959 [% IF ( innerloo.repeatable ) %]
960 <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
962 <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
964 <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
965 [% IF advancedMARCEditor %]
966 <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>
968 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
969 <a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>
972 [% IF ( innerloo.fixedfield ) %]
975 class="indicator flat"
976 style="display:none;"
977 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
980 value="[% innerloo.indicator1 | html %]" />
983 class="indicator flat"
984 style="display:none;"
985 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
988 value="[% innerloo.indicator2 | html %]" />
992 class="indicator flat"
993 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
996 value="[% innerloo.indicator1 | html %]" />
999 class="indicator flat"
1000 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
1003 value="[% innerloo.indicator2 | html %]" />
1004 [% END # /IF innerloo.fixedfield %] -
1006 [% UNLESS advancedMARCEditor %]
1007 <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>
1010 <span class="field_controls">
1011 [% IF ( innerloo.repeatable ) %]
1012 <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">
1013 <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
1016 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
1017 <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
1019 </span> <!-- /.field_controls -->
1020 </div> <!-- /div.tag_title -->
1022 <ul class="sortable_subfield">
1023 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
1024 <!-- One line on the marc editor -->
1025 <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
1026 <div class="subfieldcode">
1028 title="[% subfield_loo.marc_lib | $raw %]"
1029 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
1030 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
1031 value="[% subfield_loo.subfield | html %]"
1037 [% UNLESS advancedMARCEditor %]
1038 [% IF ( subfield_loo.mandatory ) %]
1039 <div class="subfield subfield_mandatory">
1040 [% ELSIF ( subfield_loo.important ) %]
1041 <div class="subfield subfield_important">
1043 <div class="subfield">
1045 [% IF ( subfield_loo.fixedfield ) %]
1046 <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">
1048 <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1050 [% subfield_loo.marc_lib | $raw %]
1055 [% SET mv = subfield_loo.marc_value %]
1056 <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor">
1057 [% IF ( mv.type == 'text' ) %]
1058 [% IF ( mv.readonly == 1 ) %]
1059 <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" />
1061 <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 -%]" />
1064 [% ELSIF ( mv.type == 'text_complex' ) %]
1065 <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 -%]" />
1066 [% mv.javascript | $raw %]
1067 [% ELSIF ( mv.type == 'hidden' ) %]
1068 <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 -%]" />
1069 [% ELSIF ( mv.type == 'textarea' ) %]
1070 <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
1071 [% ELSIF ( mv.type == 'select' ) %]
1072 [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
1073 <select name="[%- mv.name | html -%]" tabindex="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
1075 <select name="[%- mv.name | html -%]" tabindex="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1077 [% FOREACH aval IN mv.values %]
1078 [% IF aval == mv.default %]
1079 <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1081 <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1085 [% END # /IF (mv.type...) %]
1087 [% IF ( subfield_loo.mandatory ) %]
1088 <div class="subfield_loop_mandatory">
1089 <span class="required">Required</span>
1091 [% ELSIF ( subfield_loo.important ) %]
1092 <div class="subfield_loop_mandatory">
1093 <span class="important">Important</span>
1096 <div class="subfield_controls">
1097 [% IF ( mv.type == 'text' ) %]
1098 [% IF ( mv.authtype ) %]
1099 <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>
1101 [% ELSIF ( mv.type == 'text_complex' ) %]
1103 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1105 [% IF mv.plugin == "upload.pl" %]
1106 <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>
1108 <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1113 [% IF ( subfield_loo.repeatable ) %]
1114 <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;">
1115 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
1117 <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
1118 <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
1122 </li> <!-- /.subfield_line -->
1123 <!-- End of the line -->
1124 [% END # /FOREACH subfield_loop %]
1125 </ul> <!-- /.sortable_subfield -->
1126 </li> <!-- /.tag.clearfix -->
1127 [% END %]<!-- if innerloo.tag -->
1128 [% END # /FOREACH BIG_LOO.innerloop %]
1129 </ul> <!-- /.sortable_field -->
1130 </div> <!-- /#tabXXX -->
1131 [% END # /FOREACH BIG_LOOP %]
1132 </div><!-- /#addbibliotabs -->
1134 [%# Fields for fast cataloging %]
1135 <input type="hidden" name="barcode" value="[% barcode | html %]" />
1136 <input type="hidden" name="branch" value="[% branch | html %]" />
1137 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
1138 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
1139 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
1140 [%# End of fields for fast cataloging %]
1141 </form> <!-- /name=f -->
1143 [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1145 </div> <!-- /.col-md-10.col-md-offset-1 -->
1146 </div> <!-- /.row -->
1148 [% INCLUDE 'intranet-bottom.inc' %]