1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha › Cataloging › [% IF ( biblionumber ) %]Editing [% title |html %] (Record number [% biblionumber %])[% ELSE %]Add MARC record[% END %]</title>
3 [% INCLUDE 'doc-head-close.inc' %]
4 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
5 <script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
6 [% INCLUDE 'browser-strings.inc' %]
8 <script type="text/javascript" src="[% interface %]/lib/shims/json2.min.js"></script>
10 <script type="text/javascript" src="[% interface %]/js/browser.js"></script>
11 <script type="text/javascript">
13 var browser = KOHA.browser('[% searchid %]', parseInt('[% biblionumber %]', 10));
16 $(window).load(function(){
19 $(document).ready(function() {
20 $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
21 $("#"+ui.panel.id+" input:eq(0)").focus();
25 $('#addbibliotabs').tabs('option', 'selected', "#[% tab %]");
28 /* check cookie to hide/show marcdocs*/
29 if($.cookie("marcdocs_[% borrowernumber %]") == 'false'){
31 $("#marcDocsSelect").removeAttr('checked');
33 /* reset cookie expire date */
34 $.cookie("marcdocs_[% borrowernumber %]",'true',
35 { path: "/", expires: 365 });
37 $('#toolbar').fixFloat();
38 $("#marcDocsSelect").click(function(){
39 if($(this).attr("checked")){
45 $("#z3950search").click(function(){
46 if (confirm(_("Please note that this Z39.50 search could replace the current record."))){
51 $("#saverecord").click(function(){
52 $(".btn-group").removeClass("open");
57 $("#saveandview").click(function(){
58 $(".btn-group").removeClass("open");
63 $("#saveanditems").click(function(){
64 $(".btn-group").removeClass("open");
68 $("#saveandcontinue").click(function(){
69 $(".btn-group").removeClass("open");
70 var tab = $("#addbibliotabs li.ui-tabs-selected:first a").attr('href');
71 tab = tab.replace('#', '');
72 $("#current_tab").val(tab);
73 redirect("just_save", tab);
79 function redirect(dest){
80 $("#redirect").attr("value",dest);
84 [% IF ( CAN_user_editcatalogue_edit_items ) %]
85 var onOption = function () {
90 function confirmnotdup(redirect){
91 $("#confirm_not_duplicate").attr("value","1");
92 $("#redirect").attr("value",redirect);
96 function Dopop(link,i) {
97 defaultvalue = document.getElementById(i).value;
98 window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
102 * this function open a popup to search on z3950 server.
104 function PopupZ3950() {
105 var strQuery = GetZ3950Terms();
107 window.open("/cgi-bin/koha/cataloguing/z3950_search.pl?biblionumber=[% biblionumber %]"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes');
111 function PopupMARCFieldDoc(field) {
112 [% IF ( marcflavour == 'MARC21' ) %]
113 _MARC21FieldDoc(field);
114 [% ELSIF ( marcflavour == 'UNIMARC' ) %]
115 _UNIMARCFieldDoc(field);
119 function _MARC21FieldDoc(field) {
121 window.open("http://www.loc.gov/marc/bibliographic/bdleader.html");
122 } else if (field < 900) {
123 window.open("http://www.loc.gov/marc/bibliographic/bd" + ("000"+field).slice(-3) + ".html");
125 window.open("http://www.loc.gov/marc/bibliographic/bd9xx.html");
129 function _UNIMARCFieldDoc(field) {
130 /* http://archive.ifla.org/VI/3/p1996-1/ is an outdated version of UNIMARC, but
131 seems to be the only version available that can be linked to per tag. More recent
132 versions of the UNIMARC standard are available on the IFLA website only as
137 url = "http://archive.ifla.org/VI/3/p1996-1/uni.htm";
139 var first = field.substring(0,1);
140 url = "http://archive.ifla.org/VI/3/p1996-1/uni" + first + ".htm#";
141 if (first == 0) url = url + "b";
143 ? "http://archive.ifla.org/VI/3/p1996-1/uni9.htm"
150 * Functions to hide/show marc docs links
152 function hideMARCdocLinks() {
153 $(".marcdocs").hide();
154 $.cookie("marcdocs_[% borrowernumber %]",'false', { path: "/", expires: 365 });
157 function showMARCdocLinks() {
158 $(".marcdocs").show();
159 $.cookie("marcdocs_[% borrowernumber %]",'true', { path: "/", expires: 365 });
163 * check if mandatory subfields are written
165 function AreMandatoriesNotOk(){
166 var mandatories = new Array();
167 var mandatoriesfields = new Array();
168 var tab = new Array();
169 var label = new Array();
171 var tabflag= new Array();
172 [% FOREACH BIG_LOO IN BIG_LOOP %]
173 [% FOREACH innerloo IN BIG_LOO.innerloop %]
174 [% IF ( innerloo.mandatory ) %]
175 mandatoriesfields.push(new Array("[% innerloo.tag %]","[% innerloo.index %][% innerloo.random %]","[% innerloo.index %]"));
177 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
178 [% IF ( subfield_loo.mandatory ) %]mandatories.push("[% subfield_loo.id %]");
179 tab.push("[% BIG_LOO.number %]");
180 label.push("[% subfield_loo.marc_lib %]");
185 var StrAlert = _("Can't save this record because the following field aren't filled:");
187 for(var i=0,len=mandatories.length; i<len ; i++){
188 var tag=mandatories[i].substr(4,3);
189 var subfield=mandatories[i].substr(17,1);
190 var tagnumber=mandatories[i].substr(19,mandatories[i].lastIndexOf("_")-19);
191 if (tabflag[tag+subfield+tagnumber] == null) {
192 tabflag[tag+subfield+tagnumber]=new Array();
193 tabflag[tag+subfield+tagnumber][0]=0;
195 if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(mandatories[i]) != null && ! document.getElementById(mandatories[i]).value || document.getElementById(mandatories[i]) == null)){
196 tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
197 document.getElementById(mandatories[i]).setAttribute('class','subfield_not_filled');
198 $('#' + mandatories[i]).focus();
199 tabflag[tag+subfield+tagnumber][1]=label[i];
200 tabflag[tag+subfield+tagnumber][2]=tab[i];
202 tabflag[tag+subfield+tagnumber][0] = 1;
205 for (var tagsubfieldid in tabflag){
206 if (tabflag[tagsubfieldid][0]==0){
207 var tag=tagsubfieldid.substr(0,3);
208 var subfield=tagsubfieldid.substr(3,1);
209 StrAlert += "\t* "+_("tag ")+tag+_(" subfield ")+subfield+" "+tabflag[tagsubfieldid][1]+_(" in tab ")+tabflag[tagsubfieldid][2]+"\n";
210 //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
215 /* Check for mandatories field(not subfields) */
216 for(var i=0,len=mandatoriesfields.length; i<len; i++){
218 arr = mandatoriesfields[i];
219 divid = "tag_" + arr[0] + "_" + arr[1];
220 varegexp = new RegExp("^tag_" + arr[0] + "_code_");
222 if(parseInt(arr[0]) >= 10){
223 elem = document.getElementById(divid);
224 eleminputs = elem.getElementsByTagName('input');
226 for(var j=0,len2=eleminputs.length; j<len2; j++){
228 if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
229 inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
231 for( var k=0; k<len2; k++){
232 if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
237 elemselect = elem.getElementsByTagName('select');
238 for( var k=0; k<elemselect.length; k++){
239 if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
246 elemtextareas = elem.getElementsByTagName('textarea');
247 for(var j=0,len2=elemtextareas.length; j<len2; j++){
248 // this bit assumes that the only textareas in this context would be for subfields
249 if (elemtextareas[j].value) {
259 StrAlert += _("\t* Field ") + arr[0] + _(" is mandatory, at least one of its subfields must be filled.") + "\n";
276 var StrAlert = AreMandatoriesNotOk();
287 * check if z3950 mandatories are set or not
289 function GetZ3950Terms(){
290 var strQuery="&frameworkcode="+document.forms['f'].Frameworks.value;
291 var mandatories = new Array();
292 var mandatories_label = new Array();
293 [% FOREACH BIG_LOO IN BIG_LOOP %][% FOREACH innerloo IN BIG_LOO.innerloop %][% FOREACH subfield_loo IN innerloo.subfield_loop %][% IF ( subfield_loo.z3950_mandatory ) %]mandatories.push("[% subfield_loo.id %]");
294 mandatories_label.push("[% subfield_loo.z3950_mandatory %]");[% END %][% END %][% END %][% END %]
296 for(var i=0,len=mandatories.length; i<len ; i++){
297 var field_value = document.getElementById(mandatories[i]).value;
299 strQuery += "&"+mandatories_label[i]+"="+field_value;
305 function Changefwk(FwkList) {
307 f.op.value = "[% op %]";
308 f.biblionumber.value = "[% biblionumberdata %]";
309 f.changed_framework.value = "changed";
315 <link type="text/css" rel="stylesheet" href="[% themelang %]/css/addbiblio.css" />
317 <link rel="stylesheet" type="text/css" href="[% themelang %]/css/right-to-left.css" />
320 <body id="cat_addbiblio" class="cat">
323 <div>Loading, please wait...</div>
326 [% INCLUDE 'header.inc' %]
328 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a> › [% IF ( biblionumber ) %]Editing <em>[% title |html %]</em> (Record number [% biblionumber %])[% ELSE %]Add MARC record[% END %]</div>
330 <div id="doc" class="yui-t7">
337 [% IF ( biblionumber ) %]Editing <em>[% title |html %]</em> (Record number [% biblionumber %])
338 [% ELSE %]Add MARC record [% IF (circborrowernumber) %]<em>(fast cataloging)</em>[% END %]
342 [% IF marcflavour != 'NORMARC' %]
343 <div><input type="checkbox" name="marcDocsSelect" id="marcDocsSelect" checked="true" /> Show MARC tag documentation links<br/></div>
346 [% UNLESS ( number ) %]
347 <!-- show duplicate warning on tab 0 only -->
348 [% IF ( duplicatebiblionumber ) %]
349 <div class="dialog alert">
350 <h4>Duplicate record suspected</h4>
351 <p>Is this a duplicate of <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber %]" onclick="openWindow('/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% duplicatebiblionumber %]&popup=1', 'Duplicate biblio','800','600'); return false;">[% duplicatetitle %]</a>?</p>
352 [% IF ( CAN_user_editcatalogue_edit_items ) %]<form action="/cgi-bin/koha/cataloguing/additem.pl" method="get">
353 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber %]" />
354 <input type="submit" class="edit" value="Yes: Edit existing items" />
355 </form>[% ELSE %]<form action="/cgi-bin/koha/catalogue/detail.pl" method="get">
356 <input type="hidden" name="biblionumber" value="[% duplicatebiblionumber %]" />
357 <input type="submit" value="Yes: View existing items" />
359 <form action="/cgi-bin/koha/cataloguing/addbiblio.pl" method="get">
360 [% IF ( CAN_user_editcatalogue_edit_items ) %]<input type="button" class="save" onclick="confirmnotdup('items'); return false;" value="No: Save as new record" />[% ELSE %]<input type="button" class="save" onclick="confirmnotdup('view'); return false;" value="No: Save as new record" />[% END %]
367 <script type="text/javascript">
368 opener.document.forms['f'].biblionumber.value=[% biblionumber %];
369 opener.document.forms['f'].title.value='[% title |html %]';
373 <form method="post" name="f" id="f" action="/cgi-bin/koha/cataloguing/addbiblio.pl" onsubmit="return Check();">
374 <input type="hidden" value="[% IF ( biblionumber ) %]view[% ELSE %]items[% END %]" id="redirect" name="redirect" />
375 <input type="hidden" value="" id="current_tab" name="current_tab" />
376 <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
379 <div id="toolbar" class="btn-toolbar">
380 [% IF ( CAN_user_editcatalogue_edit_items ) %]
381 [% IF (circborrowernumber) %][%# fast cataloging must lead to items %]
382 <!-- Action is under fast cataloging - Save button redirecting to items -->
383 <div class="btn-group"><a href="#" id="saveanditems" class="btn btn-small"><i class="icon-hdd"></i> Save</a></div>
385 <!-- Not using fast cataloging - Display split menu -->
386 <div class="btn-group">
387 <button class="btn btn-small" id="saverecord"><i class="icon-hdd"></i> Save</button>
388 <button class="btn btn-small dropdown-toggle" data-toggle="dropdown">
389 <span class="caret"></span>
391 <ul class="dropdown-menu">
392 <li><a id="saveandview" href="#">Save and view record</a></li>
393 <li><a id="saveanditems" href="#">Save and edit items</a></li>
394 <li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
399 <!-- User cannot edit items - single button redirecting to view -->
400 <div class="btn-group"><a href="#" id="saveandview" class="btn btn-small"><i class="icon-hdd"></i> Save</a></div>
403 [% UNLESS (circborrowernumber) %][%# Hide in fast cataloging %]
404 <div class="btn-group"><a class="btn btn-small" href="#" id="z3950search"><i class="icon-search"></i> Z39.50 search</a></div>
405 [% IF (biblionumber) %]
406 [% IF ( BiblioDefaultViewmarc ) %]
407 <div class="btn-group">
408 <a class="btn btn-small" id="cancel" href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
410 [% ELSIF ( BiblioDefaultViewlabeled_marc ) %]
411 <div class="btn-group">
412 <a class="btn btn-small" id="cancel" href="/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
414 [% ELSIF ( BiblioDefaultViewisbd ) %]
415 <div class="btn-group">
416 <a class="btn btn-small" id="cancel" href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
419 <div class="btn-group">
420 <a class="btn btn-small" id="cancel" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber |url %]">Cancel</a>
424 <a class="btn btn-small" id="cancel" href="/cgi-bin/koha/cataloguing/addbooks.pl">Cancel</a>
427 <div class="btn-group">
428 <label for="Frameworks">Change framework: </label>
429 <select name="frameworkcode" id="Frameworks" onchange="Changefwk(this);">
430 <option value="Default">Default</option>
431 [% FOREACH frameworkcodeloo IN frameworkcodeloop %]
432 [% IF ( frameworkcodeloo.selected ) %]
433 <option value="[% frameworkcodeloo.value %]" selected="selected">
435 <option value="[% frameworkcodeloo.value %]">
437 [% frameworkcodeloo.frameworktext %]
445 <input type="hidden" name="mode" value="popup" />
447 <input type="hidden" name="op" value="addbiblio" />
448 <input type="hidden" name="frameworkcode" value="[% frameworkcode %]" />
449 <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
450 <input type="hidden" name="breedingid" value="[% breedingid %]" />
451 <input type="hidden" name="changed_framework" value="" />
453 <div id="addbibliotabs" class="toptabs numbered">
455 [% FOREACH BIG_LOO IN BIG_LOOP %]
456 <li><a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a></li>
460 [% FOREACH BIG_LOO IN BIG_LOOP %]
461 <div id="tab[% BIG_LOO.number %]XX">
463 [% FOREACH innerloo IN BIG_LOO.innerloop %]
464 [% IF ( innerloo.tag ) %]
465 <div class="tag" id="tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
466 <div class="tag_title" id="div_indicator_tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
467 [% UNLESS hide_marc %]
468 [% IF advancedMARCEditor %]
469 <a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;">[% innerloo.tag %]</a>
471 <span class="tagnum" title="[% innerloo.tag_lib %]">[% innerloo.tag %]
472 [% IF marcflavour != 'NORMARC' %]<a href="#" class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag %]'); return false;"> ?</a>[% END %]
475 [% IF ( innerloo.fixedfield ) %]
478 class="indicator flat"
479 style="display:none;"
480 name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
483 value="[% innerloo.indicator1 %]" />
486 class="indicator flat"
487 style="display:none;"
488 name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
491 value="[% innerloo.indicator2 %]" />
495 class="indicator flat"
496 name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
499 value="[% innerloo.indicator1 %]" />
502 class="indicator flat"
503 name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
506 value="[% innerloo.indicator2 %]" />
509 [% IF ( innerloo.fixedfield ) %]
512 name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
513 value="[% innerloo.indicator1 %]" />
516 name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
517 value="[% innerloo.indicator2 %]" />
521 name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
522 value="[% innerloo.indicator1 %]" />
525 name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
526 value="[% innerloo.indicator2 %]" />
530 [% UNLESS advancedMARCEditor %]
531 <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib %]</a>
533 <span class="field_controls">
534 [% IF ( innerloo.repeatable ) %]
535 <a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]','[% hide_marc %]','[% advancedMARCEditor %]'); return false;" title="Repeat this Tag">
536 <img src="[% interface %]/[% theme %]/img/repeat-tag.png" alt="Repeat this Tag" />
539 <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Delete this Tag">
540 <img src="[% interface %]/[% theme %]/img/delete-tag.png" alt="Delete this Tag" />
546 [% FOREACH subfield_loo IN innerloo.subfield_loop %]
547 <!-- One line on the marc editor -->
548 <div class="subfield_line" style="[% subfield_loo.visibility %]" id="subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]">
550 [% UNLESS advancedMARCEditor %]
551 [% IF ( subfield_loo.fixedfield ) %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" style="display:none;" class="labelsubfield">
552 [% ELSE %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" class="labelsubfield">
556 [% UNLESS hide_marc %]
557 <span class="subfieldcode">
558 [% IF ( subfield_loo.fixedfield ) %]
559 <img class="buttonUp" style="display:none;" src="[% interface %]/[% theme %]/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
561 <img class="buttonUp" src="[% interface %]/[% theme %]/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
564 title="[% subfield_loo.marc_lib_plain %]"
565 style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
566 name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
567 value="[% subfield_loo.subfield %]"
575 name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
576 value="[% subfield_loo.subfield %]" />
579 [% UNLESS advancedMARCEditor %]
580 [% IF ( subfield_loo.mandatory ) %]<span class="subfield subfield_mandatory">[% ELSE %]<span class="subfield">[% END %]
581 [% subfield_loo.marc_lib_plain %]
582 [% IF ( subfield_loo.mandatory ) %]<span class="mandatory_marker" title="This field is mandatory">*</span>[% END %]
587 [% subfield_loo.marc_value %]
589 <span class="subfield_controls">
590 [% IF ( subfield_loo.repeatable ) %]
591 <a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]','[% advancedMARCEditor %]'); return false;">
592 <img src="[% interface %]/[% theme %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
594 <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;">
595 <img src="[% interface %]/[% theme %]/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
601 <!-- End of the line -->
605 [% END %]<!-- if innerloo.tag -->
606 [% END %]<!-- BIG_LOO.innerloop -->
608 [% END %]<!-- BIG_LOOP -->
612 [%# Fields for fast cataloging %]
613 <input type="hidden" name="barcode" value="[% barcode %]" />
614 <input type="hidden" name="branch" value="[% branch %]" />
615 <input type="hidden" name="circborrowernumber" value="[% circborrowernumber %]" />
616 <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
617 <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
618 [%# End of fields for fast cataloging %]
626 [% INCLUDE 'intranet-bottom.inc' %]