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