moving the _s() javascript function, that is used by getext for translation purposes...
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / cataloguing / addbiblio.tmpl
1 <!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
2 <title>Koha &rsaquo; Cataloging &rsaquo; <!-- TMPL_IF NAME="biblionumber" -->Edit MARC Record Number <!-- TMPL_VAR name="biblionumber" --><!-- TMPL_ELSE -->Add MARC Record<!-- /TMPL_IF --></title>
3 <!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
4
5 <!-- TMPL_INCLUDE NAME="menus.inc" -->
6 <!-- TMPL_INCLUDE NAME="menu-catalogue.inc" -->
7         
8 <form method="post" name="f" id="f" action="addbiblio.pl">
9 <h1><!-- TMPL_IF NAME="biblionumtagfield" -->Edit MARC Record Number <!-- TMPL_VAR name="biblionumber" --><!-- TMPL_ELSE -->Add MARC Record<!-- /TMPL_IF --></h1>
10
11 <div id="action">
12     <!-- TMPL_IF name="biblionumber" -->
13         <input type="button" value="Save Bibliographic Record and go to Items" onclick="Check(this.form)" accesskey="w" />
14                 <!-- TMPL_ELSE -->
15         <input type="button" value="Add Bibliographic Record and go to Items" onclick="Check(this.form)" accesskey="w" />
16         <!-- /TMPL_IF -->
17     <input type="button" value="z39.50 Search" onclick="PopupZ3950(); return false;" />
18 </div>
19 <br />
20  Change framework : <!--TMPL_VAR Name="framework" -->
21
22         <input type="hidden" name="op" value="addbiblio" />
23                 <input type="hidden" name="repeat_field" />
24         <input type="hidden" name="addfield_field" />
25         <input type="hidden" name="frameworkcode" value="<!-- TMPL_VAR NAME="frameworkcode" -->" />
26         <input type="hidden" name="biblionumber" value="<!-- TMPL_VAR NAME="biblionumber" -->" />
27         <input type="hidden" name="breedingid" value="<!-- TMPL_VAR NAME="breedingid" -->" />
28
29
30         <div id="tabs">
31         <!-- TMPL_LOOP name="BIG_LOOP" -->
32             <!-- TMPL_IF name="number" -->
33                 <a href="JavaScript:active(<!-- TMPL_VAR name="number"-->)" class="tab_inactive" id="link<!-- TMPL_VAR name="number"-->"><!-- TMPL_VAR name="number"--></a>
34             <!-- TMPL_ELSE -->
35                 <a href="JavaScript:active(<!-- TMPL_VAR name="number"-->)" class="tab_active" id="link<!-- TMPL_VAR name="number"-->"><!-- TMPL_VAR name="number"--></a>
36             <!-- /TMPL_IF -->
37         <!--  /TMPL_LOOP -->
38         </div>
39
40 <!-- RESET PAGINATION -->
41 <!-- TMPL_LOOP name="BIG_LOOP" -->
42 <!-- hide every tab except the 1st -->
43 <!-- TMPL_IF name="number" -->
44     <div id="<!-- TMPL_VAR name="number" -->XX" class="content_hidden">
45 <!-- TMPL_ELSE -->
46     <div id="0XX" class="content_visible">
47 <!-- /TMPL_IF -->
48 <!-- TMPL_UNLESS name="number" -->
49     <!-- show duplicate warning on tab 0 only -->
50         <!-- TMPL_IF name="duplicatebiblionumber" -->
51                     <div class="error">
52                         <p class="problem">Is this a duplicate of <a href="../cataloguing/MARCdetail.pl?biblionumber=<!-- TMPL_VAR name="duplicatebiblionumber" -->" onclick="openWindow('../MARCdetail.pl?biblionumber=<!-- TMPL_VAR name="duplicatebiblionumber" -->&popup=1', 'Duplicate biblio'; return false;)"><!-- TMPL_VAR name="duplicatetitle" --></a>?</p>
53                         <p>You must either :</p>
54                         <ul>
55                             <li>If it <em>is</em> a duplicate, <a href="additem.pl?biblionumber=<!-- TMPL_VAR name="duplicatebiblionumber" -->">Edit Items</a> of the existing record.</li>
56                             <li>If not, click to <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" /> <a href="#" onclick="confirmnotdup(); return false;">Confirm it's not a duplicate</a></li>
57                         </ul>
58                     </div>
59         <!-- /TMPL_IF -->
60     <!-- /TMPL_UNLESS -->
61     <!-- TMPL_LOOP NAME="innerloop" -->
62                 <div style=";" id="tag<!-- TMPL_VAR name="tag"-->">
63         <!-- TMPL_IF name="tag" -->
64         <p class="tag">
65             <input type="hidden" name="ind_tag" value="<!-- TMPL_VAR NAME="tag" -->">
66             <!-- TMPL_UNLESS name="hide_marc" -->
67                 <a title="<!-- TMPL_VAR NAME="tag_lib" -->"><!-- TMPL_VAR NAME="tag" --></a>
68                 <!-- TMPL_IF NAME="fixedfield" -->
69                 <input tabindex="1" onblur="this.style.backgroundColor='#ffffff';" onfocus="this.style.backgroundColor='#ffff00;'" type="text"  style="display:none;"  name="indicator" size="2" maxlength="2" value="<!-- TMPL_VAR NAME="indicator" -->" class="flat"> 
70                 <!-- TMPL_ELSE -->
71                 <input tabindex="1" onblur="this.style.backgroundColor='#ffffff';" onfocus="this.style.backgroundColor='#ffff00;'" type="text"  name="indicator" size="2" maxlength="2" value="<!-- TMPL_VAR NAME="indicator" -->" class="flat"> 
72                 <!-- /TMPL_IF --> -
73             <!-- TMPL_ELSE -->
74                 <!-- TMPL_IF NAME="fixedfield" -->
75                 <input tabindex="1" type="hidden" style="display:none;" name="indicator" value="<!-- TMPL_VAR NAME="indicator" -->">
76                 <!-- TMPL_ELSE -->
77                 <input tabindex="1" type="hidden" name="indicator" value="<!-- TMPL_VAR NAME="indicator" -->">
78                 <!-- /TMPL_IF -->
79             <!-- /TMPL_UNLESS -->
80             <!-- TMPL_UNLESS NAME="advancedMARCEditor" -->
81             <!-- TMPL_VAR NAME="tag_lib" -->
82             <!-- /TMPL_UNLESS -->
83             <!-- TMPL_IF name="repeatable" -->
84             <a href="#<!-- TMPL_VAR NAME="tag" -->" onclick="javascript:this.nextSibling.type='text';this.nextSibling.focus()">+</a><input type="hidden" value="" size="2" onchange="javascript:AddField('<!-- TMPL_VAR NAME="tag" -->',this.value)" ><!-- /TMPL_IF -->
85         </p>
86         <!-- /TMPL_IF -->
87         <!-- TMPL_LOOP NAME="subfield_loop" -->
88             <p class="subfield">
89             <!-- TMPL_IF NAME="visibility" -->
90                 <a tabindex="1" style="color: grey; font-size: 80%; cursor: se-resize;" id="label<!-- TMPL_VAR name="index" -->" onclick="unHideSubfield('subfield<!-- TMPL_VAR NAME="tag" --><!-- TMPL_VAR name="index" -->','label<!-- TMPL_VAR name="index" -->')">
91                     <!-- TMPL_VAR NAME="subfield" -->
92                 </a>
93             <!-- /TMPL_IF -->
94             <div style="<!-- TMPL_VAR NAME='visibility' -->;" id="subfield<!-- TMPL_VAR NAME='tag' --><!-- TMPL_VAR NAME='index' -->">
95                 <p>
96                 <!-- TMPL_UNLESS NAME="advancedMARCEditor" -->
97                     <label <!-- TMPL_IF NAME="fixedfield" --> style="display:none;" <!-- /TMPL_IF --> class="labelsubfield">
98                 <!-- /TMPL_UNLESS -->
99                 <!-- TMPL_UNLESS name="hide_marc" -->
100                     <img style="cursor: crosshair; color: grey; font-size: 80%;" <!-- TMPL_IF NAME="fixedfield" --> style="display:none;" <!-- /TMPL_IF --> src="<!-- TMPL_VAR NAME="themelang" -->/images/up.png" onclick="upSubfield('subfield<!-- TMPL_VAR NAME="tag" --><!-- TMPL_VAR name="index" -->')"/>
101                         <input title="<!-- TMPL_VAR NAME="marc_lib_plain" -->" style=" <!-- TMPL_IF NAME="fixedfield" -->display:none; <!-- /TMPL_IF -->border:0;" type="text" name="subfield" value="<!-- TMPL_VAR NAME="subfield" -->" size="1" maxlength="1" class="flat" tabindex=-1 />
102                 <!-- TMPL_ELSE -->
103                     <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="subfield" -->"/>
104                 <!-- /TMPL_UNLESS -->
105                 <!-- TMPL_UNLESS NAME="advancedMARCEditor" -->
106                     <!-- TMPL_IF name="mandatory" --><b><!-- /TMPL_IF -->
107                     <!-- TMPL_VAR NAME="marc_lib" -->
108                     <!-- TMPL_IF name="mandatory" --> *</b><!-- /TMPL_IF -->
109                     </label>
110                 <!-- /TMPL_UNLESS -->
111                 <!-- TMPL_VAR NAME="marc_value" -->
112                 <!-- TMPL_IF NAME="repeatable" -->
113                     <a style="cursor: crosshair; color: grey; font-size: 80%;" onclick="cloneSubfield('subfield<!-- TMPL_VAR NAME="tag" --><!-- TMPL_VAR name="index" -->')">+</a>
114                 <!-- /TMPL_IF -->
115                 <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="tag" -->"/>
116                 <input type="hidden" name="subfieldYYY" value="<!-- TMPL_VAR NAME="subfield" -->" size="2" maxlength="1"/>
117                 <input type="hidden" name="mandatory" value="<!-- TMPL_VAR NAME="mandatory" -->"/>
118                 <input type="hidden" name="kohafield" value="<!-- TMPL_VAR NAME="kohafield" -->"/>
119                 <input type="hidden" name="tag_mandatory" value="<!-- TMPL_VAR NAME="tag_mandatory" -->"/>
120                 </p>
121             </div>
122         <!-- /TMPL_LOOP -->
123         </div>
124     <!-- /TMPL_LOOP -->
125     </div>
126 <!-- /TMPL_LOOP -->
127                 <div name="hidden" id="hidden" class="tab">
128                 <!-- TMPL_LOOP NAME="hidden_loop" -->
129                                 <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="tag" -->">
130                                 <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="subfield" -->">
131                                 <input type="hidden" name="mandatory" value="<!-- TMPL_VAR NAME="mandatory" -->">
132                                 <input type="hidden" name="kohafield" value="<!-- TMPL_VAR NAME="kohafield" -->">
133                                 <input type="hidden" name="tag_mandatory" value="<!-- TMPL_VAR NAME="tag_mandatory" -->">
134                 <!-- /TMPL_LOOP -->
135                 </div>
136                 <!-- TMPL_IF name="biblionumtagfield" -->
137                         <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="biblionumtagfield" -->">
138                         <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="biblionumtagsubfield" -->">
139                         <input type="hidden" name="field_value" value="<!-- TMPL_VAR NAME="biblionumber" -->">
140                         <input type="hidden" name="mandatory" value="0">
141                         <input type="hidden" name="kohafield" value="<!-- TMPL_VAR NAME="kohafield" -->">
142                         <input type="hidden" name="tag" value="<!-- TMPL_VAR NAME="biblioitemnumtagfield" -->">
143                         <input type="hidden" name="subfield" value="<!-- TMPL_VAR NAME="biblioitemnumtagsubfield" -->">
144                         <input type="hidden" name="field_value" value="<!-- TMPL_VAR NAME="biblioitemnumber" -->">
145                         <input type="hidden" name="mandatory" value="0">
146                         <input type="hidden" name="kohafield" value="<!-- TMPL_VAR NAME="kohafield" -->">
147                         <input type="hidden" name="tag_mandatory" value="<!-- TMPL_VAR NAME="tag_mandatory" -->">
148                 <!-- /TMPL_IF -->
149         </form>
150 <script language="JavaScript" type="text/javascript">
151 function loading(){
152         document.getElementById("loading").style.display = "none";
153 }
154 function confirmnotdup(){
155         document.getElementById("confirm_not_duplicate").value = 1;
156         var checkform = document.getElementById("f");
157         Check(checkform);
158 }
159
160 function active(numlayer){
161     for (i=0; i <= 10 ; i++ ) {
162         var tab;
163         try{
164                 tab = document.getElementById(i+'XX');
165                 tab.getAttribute('id'); // do not remove this line. It throws an execption.
166         }
167         catch(e){
168                 continue;
169         }
170         if (numlayer==i) {
171             tab.setAttribute("class","content_visible");
172             var tabactive=document.getElementById('link'+i);
173             tabactive.removeAttribute("class");
174             tabactive.setAttribute("class","tab_active");
175         } else {
176             tab.setAttribute("class","content_hidden");
177             try {
178                 var tabactive=document.getElementById('link'+i);
179                 tabactive.removeAttribute("class");
180                 tabactive.setAttribute("class","tab_inactive");
181             }
182             catch(e){};
183         }
184     }
185 }
186
187 function Check(f) {
188         document.body.style.cursor ="wait";
189         // Scan for nonempty fields
190         var field_is_nonempty_p = new Array();
191         for (i=0 ; i<f.field_value.length ; i++) {
192             field_is_nonempty_p[f.tag[i].value] = 0;
193         }
194         for (i=0 ; i<f.field_value.length ; i++) {
195             if (f.field_value[i].value.length != 0) {
196                 field_is_nonempty_p[f.tag[i].value] += 1;
197             }
198         }
199
200         // Scan for missing mandatory subfields
201         var total_missing_mandatory_subfields = 0;
202         var missing_mandatory_subfields = new Array();
203         for (i=0 ; i<f.field_value.length-2 ; i++) {
204                 if (f.field_value[i].value.length==0 && f.mandatory[i].value==1) {
205                     // We should not flag an error unless the tag is also
206                     // mandatory, or if something else in the tag is entered
207
208                     if (f.tag_mandatory[i].value == 1 || field_is_nonempty_p[f.tag[i].value]) {
209                                 f.field_value[i].style.backgroundColor="#FF0000";
210                                 total_missing_mandatory_subfields++;
211                         if (f.field_value[i].parentNode.tagName == "B")
212                         {
213                                 missing_mandatory_subfields.push(f.field_value[i].innerHTML + " (tab " +  f.field_value[i].parentNode.parentNode.parentNode.parentNode.id.substr(0,1) + ")");
214                         }
215                         else
216                         {
217                                 missing_mandatory_subfields.push(f.field_value[i].innerHTML + " (tab " +  f.field_value[i].parentNode.parentNode.parentNode.id.substr(0,1) + ")");
218                         }
219
220                         }
221                 } else {
222                         f.field_value[i].style.backgroundColor="#FFFFFF";
223                 }
224         }
225
226         // Scan for missing mandatory tags
227         var total_missing_mandatory_tags = 0;
228         var seen_mandatory_tag_p = new Array();
229         var missing_mandatory_tags = new Array();
230         for (i=0 ; i<f.field_value.length ; i++) {
231             var j = f.tag[i].value;
232             if (!field_is_nonempty_p[j] && f.tag_mandatory[i].value == 1) {
233                 if (seen_mandatory_tag_p[j] != 1) {
234                     seen_mandatory_tag_p[j] = 1;
235                     total_missing_mandatory_tags++;
236                     if (f.field_value[i].parentNode.tagName == "B")
237                     {
238                                 missing_mandatory_tags.push(f.field_value[i].innerHTML + " (tab " +  f.field_value[i].parentNode.parentNode.parentNode.parentNode.id.substr(0,1) + ")");
239                     }
240                     else
241                     {
242                                 missing_mandatory_tags.push(f.field_value[i].innerHTML + " (tab " +  f.field_value[i].parentNode.parentNode.parentNode.id.substr(0,1) + ")");
243                         }
244                 }
245                 f.field_value[i].style.backgroundColor="#FFFF00";
246             }
247         }
248
249         var total_errors = total_missing_mandatory_tags + total_missing_mandatory_subfields;
250         var alertString2;
251         if (total_errors!=0) {
252                 alertString2  = _("Form not submitted because of the following problem(s)");
253                 alertString2 += "\n------------------------------------------------------------------------------------\n";
254                 alertString2 += "\n- "+ total_missing_mandatory_tags +_(" mandatory tags empty");
255                 for (i=0; i<missing_mandatory_tags.length; i++)
256                 {
257                         alertString2 += "\n--->"+ missing_mandatory_tags[i];
258                 }
259                 alertString2 += "\n- "+ total_missing_mandatory_subfields +_(" mandatory fields empty (see bold subfields)");
260                 for (i=0; i<missing_mandatory_subfields.length; i++)
261                 {
262                         alertString2 += "\n--->"+ missing_mandatory_subfields[i];
263                 }
264                 alert(alertString2);
265         } else {
266                 document.forms['f'].submit();
267         }
268 }
269 function Dopop(link,i) {
270         defaultvalue=document.forms['f'].field_value[i].value;
271         newin=window.open(link+"&result="+defaultvalue,"value builder",'width=700,height=550,toolbar=false,scrollbars=yes');
272 }
273
274 function PopupZ3950() {
275     var strQuery="";
276         var error = 0;
277         for (i=0 ; i<document.forms['f'].field_value.length ; i++) {
278                 if (document.forms['f'].kohafield[i].value == "biblioitems.isbn"){
279                         if(document.forms['f'].field_value[i].value.length>0) {
280                     strQuery += "&isbn="+document.forms['f'].field_value[i].value;
281                 } else {
282                         error++;
283                 }
284                 }
285                 if (document.forms['f'].kohafield[i].value == "biblio.title"){
286                         if(document.forms['f'].field_value[i].value.length>0) {
287                     strQuery += "&title="+document.forms['f'].field_value[i].value;
288                 } else {
289                         error++;
290                 }
291                 }
292                 if (document.forms['f'].kohafield[i].value == "biblio.author"){
293                         if(document.forms['f'].field_value[i].value.length>0) {
294                     strQuery += "&author="+document.forms['f'].field_value[i].value;
295                 } else { 
296                         error++;
297                 }
298                 }
299                 if (document.forms['f'].kohafield[i].value == "biblioitems.issn"){
300                         if(document.forms['f'].field_value[i].value.length>0) {
301                     strQuery += "&issn="+document.forms['f'].field_value[i].value;
302                 } else {
303                         error++;
304                 }
305                 }
306         }
307         if(error < 4){
308         newin=window.open("z3950_search.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&frameworkcode=<!-- TMPL_VAR NAME="frameworkcode" -->"+strQuery,"z3950search",'width=640,height=400,location=yes,toolbar=no,scrollbars=yes');
309         } else {
310                 alert("To perform a z39.50 search, you must enter at least one of the following: \n\n ISBN\n ISSN\n Title\n Author\n");
311         }
312 }
313
314 function Changefwk(FwkList) {
315   var fwk = FwkList.options[FwkList.selectedIndex].value;
316   window.location = "addbiblio.pl?biblionumber=<!--TMPL_VAR Name="oldbiblionumber"-->&breedingid=<!-- TMPL_VAR name="breedingid" -->&frameworkcode="+fwk;
317 }
318
319 function openAuth(tagid,authtype,X) {
320 //      defaultid=document.getElementById(subfieldid);
321 //     alert("X"+X);
322     Y=X.parentNode.getAttribute("id");
323 //     alert("tagid"+Y);
324         newin=window.open("../authorities/auth_finder.pl?authtypecode="+  authtype+ "&tagid="+Y, "value builder",'width=700,height=550,toolbar=false,scrollbars=yes');
325 }
326
327
328 function AddField(field,cntrepeatfield) {
329         document.forms['f'].op.value = "addfield";
330         document.forms['f'].addfield_field.value=field;
331         document.forms['f'].repeat_field.value=cntrepeatfield;
332         //alert(document.forms['f'].repeat_field.value);
333         document.f.submit();
334 }
335
336 function cloneSubfield(index) {
337     var original = document.getElementById(index); //original <div>
338     var clone = original.cloneNode(true);
339
340     // set the attribute for the new 'div' subfields
341     clone.setAttribute('id',index + index);//set another id.
342     var NumTabIndex;
343     NumTabIndex = parseInt(original.getAttribute('tabindex'));
344     if(isNaN(NumTabIndex)) NumTabIndex = 0;
345     clone.setAttribute('tabindex',NumTabIndex+1);
346     
347     var CloneButtonPlus;
348     try{
349         CloneButtonPlus = clone.getElementsByTagName('a')[0];
350         CloneButtonPlus.setAttribute('onclick',"cloneSubfield('" + index + index + "')");
351         var buttonUp = clone.getElementsByTagName('img')[0];
352 //         alert(buttonUp.getAttribute('id'));
353         buttonUp.setAttribute('onclick',"upSubfield('" + index + index + "')");
354     }
355     catch(e){
356         // do nothig if ButtonPlus & CloneButtonPlus don't exist.
357     }
358
359     // insert this line on the page
360     original.parentNode.insertBefore(clone,original.nextSibling);
361 }
362
363 function upSubfield(index) {
364         try{
365                 var line = document.getElementById(index); // get the line where the user has clicked.
366         } catch(e) {
367                 return;
368         }
369         var tag = line.parentNode; // get the dad of this line. (should be "<div tag=XXX>")
370         
371         // getting all subfields for this tag
372         var subfields = tag.getElementsByTagName('div');
373         var subfieldsLength = subfields.length;
374         if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
375         // among all subfields 
376         for(var i=0;i<subfieldsLength;i++){ 
377                 if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
378                         if(i==0){ // if the clicked subfield is on the top
379                                 tag.appendChild(subfields[0]);
380                                 return;
381                         }else{
382                                 var lineAbove = subfields[i-1];
383                                 tag.insertBefore(line,lineAbove);
384                                 return;
385                         }
386                 }
387         }
388 }
389
390 function unHideSubfield(index,labelindex) {
391         subfield = document.getElementById(index);
392         subfield.style.display = 'block';
393         label = document.getElementById(labelindex);
394         label.style.display='none';     
395 }
396 </script>
397 <!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->