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