Bug_7913-Follow-up, hide button for subs with items
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / serials / serials-edit.tt
1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha &rsaquo; Serials &rsaquo; Serial edition [% bibliotitle %]</title>
3 [% INCLUDE 'doc-head-close.inc' %]
4 <script language="JavaScript" type="text/javascript">
5 //<![CDATA[
6 function generateReceive() {
7     var subscriptionid =  document.getElementsByName("subscriptionid")[0].value;
8     if(nbissues=prompt(_("How many issues do you want to receive ?"))){
9         document.location = 'serials-collection.pl?op=gennext&subscriptionid='+subscriptionid+'&nbissues='+nbissues;
10     }
11 }
12 function popup(subscriptionid) {
13         window.open("subscription-renew.pl?subscriptionid="+subscriptionid,"subscription_renewal",'width=700,height=400,toolbar=false,scrollbars=yes');
14 }
15
16 function barcode_check(){
17     [% IF ( count ) %]
18     var count = [% count %];
19     for(var i=1;i<=count;i++){
20
21         var barcodenum = "barcode"+i;
22         var statusnum = "status"+i;
23         var elembarcode = "document.getElementById('"+barcodenum+"')";
24         var elemstatus = "document.getElementById('"+statusnum+"')";
25 // alert(elembarcode+"\n"+eval(elembarcode+".value));
26 // alert(elemstatus+"\n"+eval(elemstatus+".value"));
27         if(eval(elembarcode+".value") =='' && eval(elemstatus+".value") == 2){
28             var answer = confirm("Leave barcode blank?\n - Note: unable to change this later");
29             if (answer){
30                 document.f.submit();
31             } else {
32                 return false;
33             }
34         }
35         if(eval(elembarcode+".value".indexOf('TEMP')) > 0 && eval(elemstatus+".value") == 2){
36             var answer = confirm("A barcode was not entered.\nDo you want to put in a barcode\nor do you want to use a system generated barcode?");
37             if (answer){
38                 document.f.submit();
39             } else {
40                 return false;
41             }
42         }
43     }
44     [% END %]
45 }
46 function unHideItems(index,labelindex, serialId) {
47         subfield = document.getElementById(index);
48         subfield.style.display = 'block';
49         label = document.getElementById(labelindex);
50         label.style.display='none';     
51
52         // Prefilling 995$h with serial enumeration/issue number
53         // Getting item id
54         itemid = $("fieldset#" + index + " div.cataloguing_additem_itemlist div.items").attr("id");
55         // Getting subfield id
56         subfieldid = "subfield" + itemid.substr(4) + "h";
57         // Setting text field 
58         $("#" + subfieldid + " input[type='text']").val($("#serialseq" + serialId).val());
59
60 }
61 function HideItems(index,labelindex) {
62         subfield = document.getElementById(index);
63         subfield.style.display = 'none';
64         label = document.getElementById(labelindex);
65         label.style.display='block';    
66 }
67 function setStatus(serialid){
68     $("#status"+serialid).val("2").attr("selected","selected");
69 }
70 function changeDate(elem, adate) {
71     $(elem).closest('tr').find('#expecteddate').val(adate);
72 }
73 function changeDate2(adate) {
74    var elem = document.getElementById("supexpecteddate");
75     elem.value = adate;
76 }
77 function CloneSubfield(index){
78     var original = document.getElementById(index); //original <div>
79     var clone = original.cloneNode(true);
80     var new_key = CreateKey();
81     var old_id =  original.getAttribute('id');
82     old_id=old_id.substr(12);
83     var new_id  = old_id+new_key;
84     
85     // set the attribute for the new 'div' subfields
86     var inputs     = clone.getElementsByTagName('input');
87     var selects    = clone.getElementsByTagName('select');
88     var textareas  = clone.getElementsByTagName('textarea');
89         
90     // input
91     var id_input = "";
92     for(var i=0,len=inputs.length; i<len ; i++ ){
93         id_input = inputs[i].getAttribute('id')+new_key;
94         inputs[i].setAttribute('id',id_input);
95         inputs[i].setAttribute('name',inputs[i].getAttribute('name'));
96     }
97     
98     // select 
99     for(var i=0,len=selects.length; i<len ; i++ ){
100         id_input = selects[i].getAttribute('id')+new_key;
101         selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
102         selects[i].setAttribute('name',selects[i].getAttribute('name'));
103     }
104     
105     // textarea
106     for(var i=0,len=textareas.length; i<len ; i++ ){
107         id_input = textareas[i].getAttribute('id')+new_key;
108         textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
109         textareas[i].setAttribute('name',textareas[i].getAttribute('name'));
110     }
111     
112     [% UNLESS ( advancedMARCEditor ) %]
113     // when cloning a subfield, reset its label too.
114     var label = clone.getElementsByTagName('label')[0];
115     label.setAttribute('for',id_input);
116     [% END %]
117     
118     // setting a new if for the parent div
119     clone.setAttribute('id',new_id);
120     
121     var CloneButtonPlus;
122     try {
123       var spans = clone.getElementsByTagName('span');
124       if(spans.length){
125           for(var i = 0 ,lenspans = spans.length ; i < lenspans ; i++){
126             if(spans[i].getAttribute('class') == 'buttonPlus'){
127                     CloneButtonPlus = spans[i];
128                     CloneButtonPlus.setAttribute('onclick',"CloneSubfield('" + new_id + "')");
129                     var buttonUp = clone.getElementsByTagName('img')[0];
130                     buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
131                 }
132             }
133         }
134     }
135     catch(e){
136         // do nothig if ButtonPlus & CloneButtonPlus don't exist.
137     }
138     // insert this line on the page
139     original.parentNode.insertBefore(clone,original.nextSibling);
140 }
141 $(document).ready(function() {
142         $("form#serials_edit").submit(function() {
143             var total_errors = 0;
144         $(".subfield_line:visible", this).each(function() {
145             if ($("*[name=field_value]", this).val().length == 0 &&
146                 $("*[name=mandatory]", this).val() == 1) {
147                 total_errors++;
148             }
149         });
150         if ( total_errors > 0 ) {
151             var mes  = _("Form not submitted because of the following problem(s)");
152             mes += "\n------------------------------------------------------------------------------------\n";
153             mes += "\n- "+ total_errors+_(" mandatory fields empty (see bold subfields)");
154             alert(mes);
155             return false;
156         }
157     });
158 });
159 //]]>
160 </script>
161 <style type="text/css">#serials_edit fieldset.rows label, #serials_edit fieldset.rows span.label {
162         font-size : 100%;
163         width : 25%;
164 }
165 #serials_edit fieldset.rows select { max-width : 15em; }
166 #serials_edit fieldset.rows li {
167         padding-bottom : 3px;
168 }
169 #serials_edit .input_marceditor {
170         width : auto;
171 }</style>
172 </head>
173 <body id="ser_serials-edit" class="ser">
174 [% INCLUDE 'header.inc' %]
175 [% INCLUDE 'serials-search.inc' %]
176
177 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a> &rsaquo; Serial edition <i>[% bibliotitle %] [% IF ( callnumber ) %]([% callnumber %])[% END %]</i></div>
178
179 <div id="doc3" class="yui-t2">
180    
181    <div id="bd">
182         <div id="yui-main">
183         <div class="yui-b">
184
185 <h1>Serial edition <i>[% bibliotitle %]</i>
186         [% IF location %] ( [% location %] ) [% END %]
187     [% IF ( callnumber ) %] callnumber: [% callnumber %][% END %]</h1>
188 [% IF internalnotes %]<p>Nonpublic note: [% internalnotes %]</p>[% END %]
189 <form method="post" name="f" action="serials-edit.pl" id="serials_edit">
190 <!--onsubmit="return barcode_check()">-->
191
192 [% IF ( Errors ) %]
193 <div class="dialog alert">
194 <ul>
195 [% IF ( barcode_not_unique ) %]<li>Error: Barcode not unique for [% FOREACH errse IN errseq %]serialseq [% errse.serialseq %]<br/>[% END %]</li>[% END %]
196 </ul>
197 </div>
198 [% END %]
199
200     <input type="hidden" name="op" value="serialchangestatus" />
201     [% FOREACH subscription IN subscriptions %]
202     <input type="hidden" name="subscriptionid" value="[% subscription.subscriptionid %]" />
203     [% END %]
204         <table>
205         <tr>
206                 <th>Numbered</th>
207                 <th>Published on</th>
208                 <th>Expected on</th>
209                 <th>Status</th>
210                 <th>Notes</th>
211         </tr>
212 [% FOREACH serialslis IN serialslist %]
213     [% UNLESS ( loop.odd ) %]
214     <tr class="highlight">
215     [% ELSE %]
216     <tr>
217     [% END %]
218         <td>
219             <input type="hidden" name="serialid" value="[% serialslis.serialid %]" />
220             <input type="hidden" name="biblionumber" value="[% serialslis.biblionumber %]" />
221             <input type="hidden" name="itemcount" value="[% serialslis.issuesatonce %]" />
222             <input type="hidden" name="user" value="[% serialslis.librarian %]" />
223             Issue <input type="text" name="serialseq" id="serialseq[% serialslis.serialid %]" value="[% serialslis.serialseq %]" size="20" maxlength="100" />
224         </td>
225         <td>
226             <input type="text" name="publisheddate" value="[% serialslis.publisheddate %]" size="10" maxlength="15" />
227         </td>
228         <td>
229             <input type="text" id="expecteddate" name="planneddate" value="[% serialslis.planneddate %]" size="10" maxlength="15" />
230         </td>
231         <td>
232             [% IF ( serialslis.editdisable ) %]
233               <input type="hidden" name="status" id="status[% serialslis.serialid %]" value="1">
234               <select name="status" size="1"  disabled="disabled">
235             [% ELSE %]
236               [% IF ( serialslis.serialsadditems ) %]
237               <select name="status" size="1" id="status[% serialslis.serialid %]" onchange="if (this.value==2){unHideItems('items'+[% serialslis.subscriptionid %][% serialslis.serialid %],'label[% serialslis.subscriptionid %][% serialslis.serialid %]','[% serialslis.serialid %]'); changeDate(this, '[% serialslis.arriveddate %]')} else if (this.value==7){changeDate(this, '[% serialslis.arriveddate %]')} else { HideItems('items'+[% serialslis.subscriptionid %]+[% serialslis.serialid %],'label[% serialslis.subscriptionid %][% serialslis.serialid %]'); changeDate(this, '[% serialslis.planneddate %]')}" >
238                [% ELSE %]
239               <select name="status" size="1" id="status[% serialslis.serialid %]" onchange="if (this.value==2 || this.value==7){changeDate(this, '[% serialslis.arriveddate %]')} else {changeDate(this, '[% serialslis.planneddate %]')}" >
240                [% END %] 
241             [% END %]
242   [% IF ( serialslis.status1 ) %]
243                     <option value="1" selected="selected">Expected</option>
244   [% END %]
245   [% IF ( serialslis.status2 ) %]
246                     <option value="2" selected="selected">Arrived</option>
247   [% ELSE %]
248                     <option value="2">Arrived</option>
249   [% END %]
250   [% IF ( serialslis.status3 ) %]
251                     <option value="3" selected="selected">Late</option>
252   [% ELSE %]
253                     <option value="3">Late</option>
254   [% END %]
255   [% IF ( serialslis.status4 ) %]
256                     <option value="4" selected="selected">Missing</option>
257   [% ELSE %]
258                     <option value="4">Missing</option>
259   [% END %]
260   [% IF ( serialslis.status7 ) %]
261                     <option value="7" selected="selected">Claimed</option>
262   [% ELSE %]
263                     <option value="7">Claimed</option>
264   [% END %]
265   [% IF ( serialslis.status5 ) %]
266                     <option value="5" selected="selected">Not available</option>
267   [% ELSE %]
268                     <option value="5">Not available</option>
269   [% END %]
270   [% IF ( serialslis.status6 ) %]
271                     <option value="6" selected="selected">Delete</option>
272   [% ELSE %]
273                     <option value="6">Delete</option>
274   [% END %]
275             </select>
276
277         </td>
278         <td>
279             <input type="text" name="notes" value="[% serialslis.sernotes %]" size="20" maxlength="255" />
280         </td>
281     </tr>
282   [% UNLESS ( serialslis.subscriptionexpired ) %]
283   [% IF ( serialslis.serialsadditems ) %]
284           <tr>
285           <td colspan="5">
286       <a id="label[% serialslis.subscriptionid %][% serialslis.serialid %]" style="color: grey; font-size: 80%; cursor: pointer;"  onclick="unHideItems('items[% serialslis.subscriptionid %][% serialslis.serialid %]','label[% serialslis.subscriptionid %][% serialslis.serialid %]',  '[% serialslis.serialid %]');setStatus([% serialslis.serialid %]);">
287              Click to add item</a>
288         <fieldset class="rows" style="display:none;" id="items[% serialslis.subscriptionid %][% serialslis.serialid %]">
289         <legend><a style="cursor: pointer;"  onclick="HideItems('items[% serialslis.subscriptionid %][% serialslis.serialid %]','label[% serialslis.subscriptionid %][% serialslis.serialid %]')">
290                 Item</a>
291         </legend>
292           <div class="cataloguing_additem_itemlist">
293         [% FOREACH item IN serialslis.items %]
294         <div id="item[% item.serialid %][% item.countitems %]" class="items">
295         <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li>
296                <div class="subfield_line" style="[% iteminformatio.hidden %];" id="subfield[% item.serialid %][% item.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
297                               
298                 <label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
299                 [% iteminformatio.marc_value %]
300                 <input type="hidden" name="itemid" value="[% item.itemid %]" />
301                 <input type="hidden" name="kohafield" value="[% iteminformatio.kohafield %]" />
302                 <input type="hidden" name="tag" value="[% iteminformatio.tag %]" />
303                 <input type="hidden" name="subfield" value="[% iteminformatio.subfield %]" />
304                 <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory %]" />
305                 [% IF ( iteminformatio.ITEM_SUBFIELDS_ARE_NOT_REPEATABLE ) %]
306                     <span class="buttonPlus" onclick="CloneSubfield('subfield[% item.serialid %][% item.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]')">+</span>
307                 [% END %]
308         
309             </div></li>
310         [% END %]</ol></div><!-- /iteminformation -->
311         
312         <input type="hidden" name="moditem" value="" /> 
313         <input type="hidden" name="tag" value="[% item.itemtagfield %]" />
314         <input type="hidden" name="subfield" value="[% item.itemtagsubfield %]" />
315         <input type="hidden" name="serial" value="[% item.serialid %]" />
316         <input type="hidden" name="bibnum" value="[% item.biblionumber %]" />
317         <input type="hidden" name="itemid" value="[% item.itemid %]" />
318         <input type="hidden" name="field_value" value="[% item.itemnumber %]" />
319         [% END %] <!-- /items -->
320         </div>
321         </fieldset>
322     </td>
323     </tr>
324   [% END %]
325   [% END %]
326 [% END %]
327 [% FOREACH newserialloo IN newserialloop %]
328     [% UNLESS ( newserialloo.subscriptionexpired ) %]
329     <tr>
330         <td>
331             <input type="hidden" name="serialid" value="NEW" />
332             <input type="hidden" name="biblionumber" value="[% newserialloo.biblionumber %]" />
333             <input type="hidden" name="itemcount" value="[% newserialloo.issuesatonce %]" />
334             <input type="hidden" name="user" value="[% newserialloo.librarian %]" />
335             Supplemental issue <input type="text" name="serialseq" id="serialseq[% newserialloo.serialid %]" value="" size="20" maxlength="100" onchange="if (this.value!=''){unHideItems('items[% newserialloo.subscriptionid %][% newserialloo.serialid %]','label[% newserialloo.subscriptionid %][% newserialloo.serialid %]', '[% newserialloo.serialid %]')} else {HideItems('items[% newserialloo.subscriptionid %][% newserialloo.serialid %]','label[% newserialloo.subscriptionid %][% newserialloo.serialid %]')}" />
336         </td>
337         <td>
338             <input type="text" name="publisheddate" value="[% newserialloo.publisheddate %]" size="10" maxlength="15" />
339         </td>
340         <td>
341             <input type="text" name="planneddate" id="supexpecteddate" value="[% newserialloo.planneddate %]" size="10" maxlength="15" />
342         </td>
343         <td>
344             <select name="status" size="1" id="addstatus[% newserialloo.serialid %]" onchange="if (this.value==2){unHideItems('items'+'[% newserialloo.subscriptionid %][% newserialloo.serialid %]','label[% newserialloo.subscriptionid %][% newserialloo.serialid %]','[% newserialloo.serialid %]'); changeDate2('[% newserialloo.arriveddate %]')} else if (this.value==7){changeDate('[% newserialloo.arriveddate %]')} else { HideItems('items'+'[% newserialloo.subscriptionid %]'+[% newserialloo.serialid %],'label[% serialslis.subscriptionid %][% serialslis.serialid %]'); changeDate2('[% serialslis.planneddate %]')}" >
345
346                     <option value="">----</option>
347   [% IF ( newserialloo.status1 ) %]
348                     <option value="1" selected="selected">Expected</option>
349   [% END %]
350   [% IF ( newserialloo.status2 ) %]
351                     <option value="2" selected="selected">Arrived</option>
352   [% ELSE %]
353                     <option value="2">Arrived</option>
354   [% END %]
355   [% IF ( newserialloo.status3 ) %]
356                     <option value="3" selected="selected">Late</option>
357   [% ELSE %]
358                     <option value="3">Late</option>
359   [% END %]
360   [% IF ( newserialloo.status4 ) %]
361                     <option value="4" selected="selected">Missing</option>
362   [% ELSE %]
363                     <option value="4">Missing</option>
364   [% END %]
365   [% IF ( newserialloo.status7 ) %]
366                     <option value="7" selected="selected">Claimed</option>
367   [% ELSE %]
368                     <option value="7">Claimed</option>
369   [% END %]
370   [% IF ( newserialloo.status5 ) %]
371                     <option value="5" selected="selected">Not available</option>
372   [% ELSE %]
373                     <option value="5">Not available</option>
374   [% END %]
375   [% IF ( newserialloo.status6 ) %]
376                     <option value="6" selected="selected">Delete</option>
377   [% ELSE %]
378                     <option value="6">Delete</option>
379   [% END %]
380             </select>
381
382         </td>
383         <td>
384             <input type="text" name="notes" value="" size="20" maxlength="255" />
385         </td>
386     </tr>
387   [% IF ( newserialloo.serialsadditems ) %]
388           <tr>
389           <td colspan="5">
390       <a id="label[% newserialloo.subscriptionid %][% newserialloo.serialid %]" style="color: grey; font-size: 80%; cursor: pointer;"  onclick="unHideItems('items[% newserialloo.subscriptionid %][% newserialloo.serialid %]','label[% newserialloo.subscriptionid %][% newserialloo.serialid %]', '[% newserialloo.serialid %]')">
391              Click to add item</a>
392         <fieldset  class="rows" style="display:none;" id="items[% newserialloo.subscriptionid %][% newserialloo.serialid %]">
393         <legend><a style="cursor: pointer;"  onclick="HideItems('items[% newserialloo.subscriptionid %][% newserialloo.serialid %]','label[% newserialloo.subscriptionid %][% newserialloo.serialid %]')">
394                 Item</a>
395         </legend>
396           <div class="cataloguing_additem_itemlist">
397         <div id="item[% newserialloo.serialid %][% newserialloo.countitems %]" class="items">
398         <ol>[% FOREACH iteminformatio IN newserialloo.iteminformation %]<li>
399                <div class="subfield_line" style="[% iteminformatio.hidden %];" id="subfield[% newserialloo.serialid %][% newserialloo.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
400    
401                 <label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
402                 [% iteminformatio.marc_value %]
403                 <input type="hidden" name="itemid" value="[% newserialloo.itemid %]" />
404                 <input type="hidden" name="kohafield" value="[% iteminformatio.kohafield %]" />
405                 <input type="hidden" name="tag" value="[% iteminformatio.tag %]" />
406                 <input type="hidden" name="subfield" value="[% iteminformatio.subfield %]" />
407                 <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory %]" />
408                 [% IF ( iteminformatio.ITEM_SUBFIELDS_ARE_NOT_REPEATABLE ) %]
409                     <span class="buttonPlus" onclick="CloneSubfield('subfield[% newserialloo.serialid %][% newserialloo.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]')">+</span>
410                 [% END %]
411         </div>
412        </li>[% END %]</ol>
413         
414         <input type="hidden" name="moditem" value="" /> 
415         <input type="hidden" name="tag" value="[% newserialloo.itemtagfield %]" />
416         <input type="hidden" name="subfield" value="[% newserialloo.itemtagsubfield %]" />
417         <input type="hidden" name="serial" value="[% newserialloo.serialid %]" />
418         <input type="hidden" name="bibnum" value="[% newserialloo.biblionumber %]" />
419         <input type="hidden" name="itemid" value="[% newserialloo.itemid %]" />
420         <input type="hidden" name="field_value" value="[% newserialloo.itemnumber %]" />
421         </div>
422         </div>
423         </fieldset>
424     </td>
425     </tr>
426   [% END %]
427   [% END %]
428 [% END %]
429
430 </table>
431     <fieldset class="action"><input type="submit" value="Save"  class="button" accesskey="w" />
432     [% UNLESS ( serialsadditems ) %]&nbsp;&nbsp;<input type="button" onclick="javascript:generateReceive()" value="Multi receiving">[% END %]
433 </form>
434
435 </div>
436 </div>
437
438 <div class="yui-b">
439 [% INCLUDE 'serials-menu.inc' %]
440 <ul>
441     [% FOREACH subscription IN subscriptions %]
442         <li><a href="serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]" title="serial collection for [% subscription.bibliotitle %]">Serial collection #[% subscription.subscriptionid %]</a></li>
443         <li><a href="subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" title="detail of the subscription">Subscription #[% subscription.subscriptionid %]</a></li>
444         [% IF ( subscription.abouttoexpire ) %]
445             <li><a href="#" onclick="javascript:popup([% subscription.subscriptionid %])">Renew #[% subscription.subscriptionid %]</a></li>
446         [% END %]
447     [% END %]
448     <li><a href="/cgi-bin/koha/catalogue/[% default_bib_view %].pl?biblionumber=[% biblionumber %]" title="go to [% bibliotitle %]">Show biblio</a></li></ul>
449 </div>
450 </div>
451 [% INCLUDE 'intranet-bottom.inc' %]