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/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);
271 // Delete the old status if one exists
272 tag_subfield_line.children('.subfield_status').remove();
274 // If the field wasn't modified. Skip it.
275 if(heading.status == 'UNCHANGED') {
280 // Make the subfield line visible and update its value
281 tag_subfield_line.show();
282 subfield.val(heading.authid);
284 // Add the new status
285 var image = '<i class="fa fa-close no_matching_authority" </i> ';
287 var field_class = 'no_matching_authority_field';
288 switch(heading.status) {
290 image = '<i class="fa fa-check matching_authority"</i> ';
291 message = _("A matching authority was found in the local database.");
292 field_class = 'matching_authority_field';
295 image = '<i class="fa fa-check matching_authority"></i> ';
296 message = _("No matching authority found. A new authority was created automatically.");
297 field_class = 'matching_authority_field';
299 case 'MULTIPLE_MATCH':
300 message = _("More than one local match found. Possibly a duplicate authority!");
303 message = _("No matching authority found.");
306 message = heading.status;
310 subfield[0].classList.add(field_class);
311 tag_subfield_line.find('i').each(function() {
314 tag_subfield_line.append(image);
316 // Add the message to the dialog
317 message_dialog_ul.append('<li><strong>' + heading.tag + '</strong> - ' + message + '</li>');
319 // Add a link to create a new authority if none was found
320 if(heading.status == 'NONE_FOUND' && tag_subfield_line.find('i').length == 1) {
321 addCreateAuthorityButton(tag_subfield_line, heading , tag_index);
325 if(message_dialog.find('li').length == 0) {
326 message_dialog_ul.append("<li>" + _("No authority link was changed.") + "</li>");
328 $('#addbibliotabs').before(message_dialog);
332 * Use an ajax request to automatically find authority links for the current record
334 function AutomaticLinker() {
335 // Show the Loading overlay
336 $("#loading").show();
338 // Remove fields that are completely empty
339 $('#f').find('.tag').each(function() {
341 $(this).find('.input_marceditor').each(function() {
342 if($(this).val() != '') {
348 UnCloneField($(this).attr('id'));
352 // Get all the form values to post via AJAX
354 $('#f').find(':input').each(function(){
355 form_data[this.name] = $(this).val();
357 delete form_data[''];
359 // Send the data to automatic_linker.pl
361 url:'/cgi-bin/koha/svc/cataloguing/automatic_linker.pl',
365 error: function(xhr) {
366 alert("Error : \n" + xhr.responseText);
368 success: function(json) {
369 switch(json.status) {
371 alert(_("Error : You do not have the permissions necessary to use this functionality."));
374 updateHeadingLinks(json.links);
378 complete: function() {
379 $("#loading").hide();
385 function PopupMARCFieldDoc(field) {
386 [% IF Koha.Preference('marcfielddocurl') %]
387 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
388 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
389 docurl = docurl.replace("{FIELD}", ""+field);
390 docurl = docurl.replace("{LANG}", "[% lang | html %]");
392 [% ELSIF ( marcflavour == 'MARC21' ) %]
393 _MARC21FieldDoc(field);
394 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
395 _UNIMARCFieldDoc(field);
398 function confirmnotdup(redirect){
399 $("#confirm_not_duplicate").attr("value","1");
400 $("#redirect").attr("value",redirect);
404 function Dopop(link,i) {
405 defaultvalue = document.getElementById(i).value;
406 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
410 * this function open a popup to search on z3950 server.
412 function PopupZ3950() {
413 var strQuery = GetZ3950Terms();
415 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');
419 function PopupMARCFieldDoc(field) {
420 [% IF Koha.Preference('marcfielddocurl') %]
421 var docurl = "[% Koha.Preference('marcfielddocurl').replace('"','"') | html %]";
422 docurl = docurl.replace("{MARC}", "[% marcflavour | html %]");
423 docurl = docurl.replace("{FIELD}", ""+field);
424 docurl = docurl.replace("{LANG}", "[% lang | html %]");
426 [% ELSIF ( marcflavour == 'MARC21' ) %]
427 _MARC21FieldDoc(field);
428 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
429 _UNIMARCFieldDoc(field);
433 function _MARC21FieldDoc(field) {
435 window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
436 } else if (field >= 90 && field <= 99 ){
437 window.open("http://www.loc.gov/marc/bibliographic/bd09x.html");
438 } else if (field >= 590 && field <= 599 ){
439 window.open("http://www.loc.gov/marc/bibliographic/bd59x.html");
440 } else if (field >= 690 && field <= 699 ){
441 window.open("http://www.loc.gov/marc/bibliographic/bd69x.html");
442 } else if (field < 900) {
443 window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
445 window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
449 function _UNIMARCFieldDoc(field) {
450 /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
451 seems to be the only version available that can be linked to per tag. More recent
452 versions of the UNIMARC standard are available on the IFLA website only as
457 url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
459 var first = field.substring(0,1);
460 url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
461 if (first == 0) url = url + "b";
463 ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
470 * Functions to hide/show marc docs and tags links
473 function toggleMARCdocLinks(flag){
475 $(".marcdocs").show();
476 Cookies.set("marcdocs_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
477 $("#marcDocsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
479 $(".marcdocs").hide();
480 Cookies.set("marcdocs_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
481 $("#marcDocsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
485 function toggleMARCTagLinks(flag){
488 $(".subfieldcode").show();
489 Cookies.set("marctags_[% borrowernumber | html %]",'show', { path: "/", expires: 365 });
490 $("#marcTagsSelect i").addClass('fa-check-square-o').removeClass('fa-square-o');
493 $(".subfieldcode").hide();
494 Cookies.set("marctags_[% borrowernumber | html %]",'hide', { path: "/", expires: 365 });
495 $("#marcTagsSelect i").removeClass('fa-check-square-o').addClass('fa-square-o');
500 * check if mandatory/important subfields are written
501 * @param mandatory true to check for mandatories, false for importants
503 function AreFieldsNotOk (mandatory = true) {
504 var fields = new Array();
505 var subfields = new Array();
506 var tab = new Array();
507 var label = new Array();
509 var tabflag= new Array();
511 var notFilledClass = "subfield_not_filled";
514 [% FOREACH BIG_LOO IN BIG_LOOP %]
515 [% FOREACH innerloo IN BIG_LOO.innerloop %]
516 [% IF ( innerloo.mandatory ) %]
517 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
519 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
520 [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
521 tab.push("[% BIG_LOO.number | html %]");
522 label.push("[% subfield_loo.marc_lib | $raw %]");
527 StrAlert = _("Can't save this record because the following field aren't filled:");
529 [% FOREACH BIG_LOO IN BIG_LOOP %]
530 [% FOREACH innerloo IN BIG_LOO.innerloop %]
531 [% IF ( innerloo.important ) %]
532 fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
534 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
535 [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
536 tab.push("[% BIG_LOO.number | html %]");
537 label.push("[% subfield_loo.marc_lib | $raw %]");
542 StrAlert = _("A few important fields are not filled:");
543 notFilledClass = "important_subfield_not_filled";
547 for(var i=0,len=subfields.length; i<len ; i++){
548 var tag=subfields[i].substr(4,3);
549 var subfield=subfields[i].substr(17,1);
550 var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
551 if (tabflag[tag+subfield+tagnumber] == null) {
552 tabflag[tag+subfield+tagnumber]=new Array();
553 tabflag[tag+subfield+tagnumber][0]=0;
555 if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
556 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
558 var elt = document.getElementById(subfields[i]);
559 if ( elt.nodeName == 'SELECT' ) {
560 $(elt).siblings('.select2').find("span[role='combobox']").addClass(notFilledClass);
562 elt.setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
564 $('#' + subfields[i]).focus();
565 tabflag[tag+subfield+tagnumber][1]=label[i];
566 tabflag[tag+subfield+tagnumber][2]=tab[i];
568 tabflag[tag+subfield+tagnumber][0] = 1;
571 for (var tagsubfieldid in tabflag){
572 if (tabflag[tagsubfieldid][0]==0){
573 var tag=tagsubfieldid.substr(0,3);
574 var subfield=tagsubfieldid.substr(3,1);
575 StrAlert += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
576 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
581 /* Check for mandatories/importants field(not subfields) */
582 for(var i=0,len=fields.length; i<len; i++){
585 divid = "tag_" + arr[0] + "_" + arr[1];
586 varegexp = new RegExp("^tag_" + arr[0] + "_code_");
588 if(parseInt(arr[0]) >= 10){
589 elem = document.getElementById(divid);
590 eleminputs = elem.getElementsByTagName('input');
592 for(var j=0,len2=eleminputs.length; j<len2; j++){
594 if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
595 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
597 for( var k=0; k<len2; k++){
598 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
603 elemselect = elem.getElementsByTagName('select');
604 for( var k=0; k<elemselect.length; k++){
605 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
612 elemtextareas = elem.getElementsByTagName('textarea');
613 for(var j=0,len2=elemtextareas.length; j<len2; j++){
614 // this bit assumes that the only textareas in this context would be for subfields
615 if (elemtextareas[j].value) {
627 StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
629 StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
648 var StrAlert = AreFieldsNotOk();
650 var StrWarning = AreFieldsNotOk(false);
652 StrWarning += "\n" + _("Are you sure you want to save?");
653 var r=confirm(StrWarning);
667 * check if z3950 mandatories are set or not
669 function GetZ3950Terms(){
670 var frameworkcode = document.getElementById("frameworkcode").value;
671 var strQuery = "&frameworkcode=" + encodeURIComponent(frameworkcode);
672 var mandatories = new Array();
673 var mandatories_label = new Array();
674 [% FOREACH BIG_LOO IN BIG_LOOP %]
675 [% FOREACH innerloo IN BIG_LOO.innerloop %]
676 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
677 [% IF ( subfield_loo.z3950_mandatory ) %]
678 mandatories.push("[% subfield_loo.id | html %]");
679 mandatories_label.push("[% subfield_loo.z3950_mandatory | html %]");
685 for(var i=0,len=mandatories.length; i<len ; i++){
686 var field_value = document.getElementById(mandatories[i]).value;
688 strQuery += "&"+encodeURIComponent(mandatories_label[i])+"="+encodeURIComponent(field_value);
694 function Changefwk() {
696 f.op.value = "[% op | html %]";
697 f.biblionumber.value = "[% biblionumberdata | html %]";
698 f.changed_framework.value = "changed";
703 [% Asset.css("css/addbiblio.css") | $raw %]
705 <body id="cat_addbiblio" class="cat">
708 <div>Loading, please wait...</div>
711 [% INCLUDE 'header.inc' %]
713 <div id="breadcrumbs">
714 <a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
715 <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> ›
716 [% IF ( biblionumber ) %]
717 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
723 <div class="main container-fluid">
725 <div class="col-md-10 col-md-offset-1">
728 [% IF ( biblionumber ) %]
729 Editing <em>[% title | html %]</em> (Record number [% biblionumber | html %])
731 Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
735 [% UNLESS ( number ) %]
736 <!-- show duplicate warning on tab 0 only -->
737 [% IF ( duplicatebiblionumber ) %]
738 <div class="dialog alert">
739 <h3>Duplicate record suspected</h3>
740 <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>
741 [% IF ( CAN_user_editcatalogue_edit_items ) %]
742 <form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
743 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
744 <button type="submit" class="new"><i class="fa fa-fw fa-pencil"></i> Yes, edit existing items</button>
747 <form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
748 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber | html %]" />
749 <input type="submit" value="Yes: View existing items" />
752 <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
753 [% IF ( CAN_user_editcatalogue_edit_items ) %]
754 <button type="submit" class="new" onclick="confirmnotdup('items'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
756 <button type="submit" class="new" onclick="confirmnotdup('view'); return false;"><i class="fa fa-fw fa-save"></i> No, save as new record</button>
759 </div> <!-- /.dialog.alert -->
760 [% END # /IF duplicatebiblionumber %]
761 [% END # /UNLESS number %]
765 opener.document.forms['f'].biblionumber.value=[% biblionumber | html %];
766 opener.document.forms['f'].title.value='[% title | html %]';
770 <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
771 <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
772 <input type="hidden" value="" id="current_tab" name="current_tab" />
773 <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
776 <div id="toolbar" class="btn-toolbar">
777 [% IF CAN_user_editcatalogue_edit_items or ( frameworkcode == 'FA' and CAN_user_editcatalogue_fast_cataloging ) %]
778 [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
779 <!-- Action is under fast cataloging - Save button redirecting to items -->
780 <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
782 <!-- Not using fast cataloging - Display split menu -->
783 <div class="btn-group">
784 <button class="btn btn-default" id="saverecord"><i class="fa fa-save"></i> Save</button>
785 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
786 <span class="caret"></span>
788 <ul class="dropdown-menu">
789 <li><a id="saveandview" href="#">Save and view record</a></li>
790 <li><a id="saveanditems" href="#">Save and edit items</a></li>
791 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
796 <!-- User cannot edit items - single button redirecting to view -->
797 <div class="btn-group"><a href="#" id="saveandview" class="btn btn-default"><i class="fa fa-save"></i> Save</a></div>
798 [% END # /IF CAN_user_editcatalogue_edit_items %]
800 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
801 [% IF biblionumber %]
802 <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>
804 <div class="btn-group"><a class="btn btn-default" href="#" id="z3950search"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>
806 [% IF ( CAN_user_editauthorities ) %]
807 <div class="btn-group"><a class="btn btn-default" href="#" id="linkerbutton"><i class="fa fa-refresh"></i> Link authorities automatically</a></div>
811 <div class="btn-group">
812 <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> Settings <span class="caret"></span></button>
813 <ul id="settings-menu" class="dropdown-menu">
814 [% IF Koha.Preference( 'EnableAdvancedCatalogingEditor' ) == 1 && CAN_user_editcatalogue_advanced_editor %]
815 <li><a href="#" id="switcheditor">Switch to advanced editor</a></li>
817 [% IF marcflavour != 'NORMARC' AND NOT advancedMARCEditor %]
819 <a href="#" id="marcDocsSelect"><i class="fa fa-check-square-o"></i> Show MARC tag documentation links</a>
821 <a href="#" id="marcTagsSelect"><i class="fa fa-check-square-o"></i> Show tags</a>
824 <li class="dropdown-header">Change framework</li>
826 <a href="#" class="change-framework" data-frameworkcode="">
827 [% IF ( frameworkcode ) %]
828 <i class="fa fa-fw"> </i>
830 <i class="fa fa-fw fa-check"></i>
835 [% FOREACH framework IN frameworks%]
837 <a href="#" class="change-framework" data-frameworkcode="[% framework.frameworkcode | html %]">
838 [% IF framework.frameworkcode == frameworkcode %]
839 <i class="fa fa-fw fa-check"></i>
841 <i class="fa fa-fw"> </i>
843 [% framework.frameworktext | html %]
847 </ul> <!-- /#settings-menu -->
848 </div> <!-- /.btn-group -->
849 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
850 [% IF (biblionumber) %]
851 [% IF ( BiblioDefaultViewmarc ) %]
852 <div class="btn-group">
853 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
855 [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
856 <div class="btn-group">
857 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
859 [% ELSIF ( BiblioDefaultViewisbd ) %]
860 <div class="btn-group">
861 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
864 <div class="btn-group">
865 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
869 <a class="btn btn-default" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
871 [% END # /UNLESS circborrowernumber %]
872 <div class="toolbar-tabs-container">
873 [% IF ( BIG_LOOP.size > 1 ) %]
874 <ul class="toolbar-tabs">
875 [%- FOREACH BIG_LOO IN BIG_LOOP -%]
877 <li class="selected">
881 <a data-tabid="[% BIG_LOO.number | html %]" href="#tab[% BIG_LOO.number | html %]XX">[% BIG_LOO.number | html %]</a>
886 <ul class="tag_anchors_list">
887 [% FOREACH BIG_LOO IN BIG_LOOP %]
888 [% IF loop.first %][% SET tab_selected = "tab_selected" %][% ELSE %][% SET tab_selected = "" %][% END %]
889 [% FOREACH innerloo IN BIG_LOO.innerloop %]
890 [% IF ( innerloo.tag ) %]
891 <li class="tag_anchors tag_anchors_[% BIG_LOO.number | html %] [% tab_selected | html %]">
892 <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>
899 </div> <!-- /#toolbar.btn-toolbar -->
901 [% IF bib_doesnt_exist %]
902 <div class="dialog alert">
903 The record you are trying to edit doesn't exist.<br>
904 <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>.
909 <input type="hidden" name="mode" value="popup" />
911 <input type="hidden" name="op" value="addbiblio" />
912 <input type="hidden" id="frameworkcode" name="frameworkcode" value="[% frameworkcode | html %]" />
913 <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
914 <input type="hidden" name="breedingid" value="[% breedingid | html %]" />
915 <input type="hidden" name="changed_framework" value="" />
917 <div id="addbibliotabs" class="toptabs numbered">
919 [% FOREACH BIG_LOO IN BIG_LOOP %]
920 <li><a href="#tab[% BIG_LOO.number | uri %]XX">[% BIG_LOO.number | html %]</a></li>
924 [% FOREACH BIG_LOO IN BIG_LOOP %]
925 <div id="tab[% BIG_LOO.number | html %]XX">
927 [% IF ( BIG_LOOP.size > 1 ) %]
928 <h3>Section [% BIG_LOO.number | html %]</h3>
931 [% FOREACH innerloo IN BIG_LOO.innerloop %]
932 [% IF ( innerloo.tag ) %]
933 [% IF innerloo.tag != previous %]
934 [% IF previous != "" %]
937 [% previous = innerloo.tag %]
938 [% IF ( innerloo.repeatable ) %]
939 <ul class="sortable_field">
944 [% IF ( innerloo.repeatable ) %]
945 <li class="tag sortable_tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
947 <li class="tag clearfix" id="tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
949 <div class="tag_title" id="div_indicator_tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]">
950 [% IF advancedMARCEditor %]
951 <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>
953 <span class="tagnum" title="[% innerloo.tag_lib | html %]">[% innerloo.tag | html %]</span>
954 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag | html %]'); return false;"> ?</a>[% END %]
957 [% IF ( innerloo.fixedfield ) %]
960 class="indicator flat"
961 style="display:none;"
962 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
965 value="[% innerloo.indicator1 | html %]" />
968 class="indicator flat"
969 style="display:none;"
970 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
973 value="[% innerloo.indicator2 | html %]" />
977 class="indicator flat"
978 name="tag_[% innerloo.tag | html %]_indicator1_[% innerloo.index | html %][% innerloo.random | html %]"
981 value="[% innerloo.indicator1 | html %]" />
984 class="indicator flat"
985 name="tag_[% innerloo.tag | html %]_indicator2_[% innerloo.index | html %][% innerloo.random | html %]"
988 value="[% innerloo.indicator2 | html %]" />
989 [% END # /IF innerloo.fixedfield %] -
991 [% UNLESS advancedMARCEditor %]
992 <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>
995 <span class="field_controls">
996 [% IF ( innerloo.repeatable ) %]
997 <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">
998 <img src="[% interface | html %]/[% theme | html %]/img/repeat-tag.png" alt="Repeat this Tag" />
1001 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag | html %]_[% innerloo.index | html %][% innerloo.random | html %]'); return false;" title="Delete this Tag">
1002 <img src="[% interface | html %]/[% theme | html %]/img/delete-tag.png" alt="Delete this Tag" />
1004 </span> <!-- /.field_controls -->
1005 </div> <!-- /div.tag_title -->
1007 <ul class="sortable_subfield">
1008 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
1009 <!-- One line on the marc editor -->
1010 <li class="subfield_line" style="[% subfield_loo.visibility | html %]" id="subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]">
1011 <div class="subfieldcode">
1013 title="[% subfield_loo.marc_lib | $raw %]"
1014 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
1015 name="tag_[% subfield_loo.tag | html %]_code_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]"
1016 value="[% subfield_loo.subfield | html %]"
1022 [% UNLESS advancedMARCEditor %]
1023 [% IF ( subfield_loo.mandatory ) %]
1024 <div class="subfield subfield_mandatory">
1025 [% ELSIF ( subfield_loo.important ) %]
1026 <div class="subfield subfield_important">
1028 <div class="subfield">
1030 [% IF ( subfield_loo.fixedfield ) %]
1031 <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">
1033 <label for="tag_[% subfield_loo.tag | html %]_subfield_[% subfield_loo.subfield | html %]_[% subfield_loo.index | html %]_[% subfield_loo.index_subfield | html %]" class="labelsubfield">
1035 [% subfield_loo.marc_lib | $raw %]
1040 [% SET mv = subfield_loo.marc_value %]
1041 <div id="field_marceditor[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]" class="field_marceditor">
1042 [% IF ( mv.type == 'text' ) %]
1043 [% IF ( mv.readonly == 1 ) %]
1044 <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" />
1046 <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 -%]" />
1049 [% ELSIF ( mv.type == 'text_complex' ) %]
1050 <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 -%]" />
1051 [% mv.javascript | $raw %]
1052 [% ELSIF ( mv.type == 'hidden' ) %]
1053 <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 -%]" />
1054 [% ELSIF ( mv.type == 'textarea' ) %]
1055 <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
1056 [% ELSIF ( mv.type == 'select' ) %]
1057 [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
1058 <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
1060 <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
1062 [% FOREACH aval IN mv.values %]
1063 [% IF aval == mv.default %]
1064 <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
1066 <option value="[%- aval | html -%]">[%- mv.labels.$aval | html -%]</option>
1070 [% END # /IF (mv.type...) %]
1072 [% IF ( subfield_loo.mandatory ) %]
1073 <div class="subfield_loop_mandatory">
1074 <span class="required">Required</span>
1076 [% ELSIF ( subfield_loo.important ) %]
1077 <div class="subfield_loop_mandatory">
1078 <span class="important">Important</span>
1081 <div class="subfield_controls">
1082 [% IF ( mv.type == 'text' ) %]
1083 [% IF ( mv.authtype ) %]
1084 <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>
1086 [% ELSIF ( mv.type == 'text_complex' ) %]
1088 <span class="buttonDot tag_editor disabled" tabindex="-1" title="Field autofilled by plugin"></span>
1090 [% IF mv.plugin == "upload.pl" %]
1091 <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>
1093 <a href="#" id="buttonDot_[% mv.id | html %]" class="buttonDot tag_editor framework_plugin" tabindex="1" title="Tag editor">Tag editor</a>
1098 [% IF ( subfield_loo.repeatable ) %]
1099 <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;">
1100 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
1102 <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag | html %][% subfield_loo.subfield | html %][% subfield_loo.random | html %]'); return false;">
1103 <img src="[% interface | html %]/[% theme | html %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
1107 </li> <!-- /.subfield_line -->
1108 <!-- End of the line -->
1109 [% END # /FOREACH subfield_loop %]
1110 </ul> <!-- /.sortable_subfield -->
1111 </li> <!-- /.tag.clearfix -->
1112 [% END %]<!-- if innerloo.tag -->
1113 [% END # /FOREACH BIG_LOO.innerloop %]
1114 </ul> <!-- /.sortable_field -->
1115 </div> <!-- /#tabXXX -->
1116 [% END # /FOREACH BIG_LOOP %]
1117 </div><!-- /#addbibliotabs -->
1119 [%# Fields for fast cataloging %]
1120 <input type="hidden" name="barcode" value="[% barcode | html %]" />
1121 <input type="hidden" name="branch" value="[% branch | html %]" />
1122 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber | html %]" />
1123 <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" />
1124 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
1125 [%# End of fields for fast cataloging %]
1126 </form> <!-- /name=f -->
1128 [% INCLUDE 'modals/cataloguing_create_av.inc' %]
1130 </div> <!-- /.col-md-10.col-md-offset-1 -->
1131 </div> <!-- /.row -->
1133 [% INCLUDE 'intranet-bottom.inc' %]