Bug 5528: Analytic records support
[wip/koha-chris_n.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / additem.tt
1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha &rsaquo; Cataloging &rsaquo; [% title |html %] [% IF ( author ) %] by [% author %][% END %] (Record #[% biblionumber %]) &rsaquo; Items</title>
3 [% INCLUDE 'doc-head-close.inc' %]
4 <script type="text/javascript">
5 //<![CDATA[
6 $(document).ready(function(){
7                 $("fieldset.rows input").keydown(function(e){ return checkEnter(e); });
8                 /* Inline edit/delete links */
9                 var biblionumber = $("input[name='biblionumber']").attr("value");
10                 $("td").click(function(event){
11                         var $tgt = $(event.target);
12                         if($tgt.is("a")||$tgt.is(":first-child")||$tgt.is(":nth-child(2)")){ return true; } else {
13                         var rowid = $(this).parent().attr("id");
14                         num_rowid = rowid.replace("row","");
15                         $(".linktools").remove();
16                         $(this).append("<span class=\"linktools\"><a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=edititem&frameworkcode=[% frameworkcode %]&biblionumber=[% biblionumber %]&itemnumber="+num_rowid+"#edititem\">Edit Item</a> <a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=delitem&frameworkcode=[% frameworkcode %]&biblionumber=[% biblionumber %]&itemnumber="+num_rowid+"\" onclick=\"confirm_deletion([% biblionumber %],"+num_rowid+"); return false;\">Delete Item</a></span>");
17                 }
18                 });
19 });
20 function active(numlayer)
21 {
22     for (i=10; i < 11 ; i++ ) {
23         ong = i+"XX";
24             link = "link"+i;
25         if (numlayer==i) {
26             document.getElementById(ong).style.visibility="visible";
27             document.getElementById(link).style.backgroundColor="#11AA11";
28             document.getElementById(link).style.backgroundImage="url([% themelang %]/images/background-mem.gif)";
29         } else {
30             document.getElementById(ong).style.visibility="hidden";
31             document.getElementById(link).style.backgroundColor="#FFFFFF";
32             document.getElementById(link).style.backgroundImage="";
33         }
34     }
35 }
36 function Check(f) {
37
38     var total_errors=0;
39 //      alert(f.field_value.length);
40     for (i=0 ; i<f.field_value.length ; i++) {
41 //      alert (f.field_value[i].value);
42         if (f.field_value[i].value.length==0 && f.mandatory[i].value==1) {
43             document.getElementById("error"+i).style.backgroundColor="#FF0000";
44             total_errors++;
45         } else {
46 //                      document.getElementById("error"+i).style.backgroundColor="#FFFFFF";
47         }
48     }
49     var alertString2;
50     if (total_errors==0) {
51         return true;
52     } else {
53         alertString2  = _("Form not submitted because of the following problem(s)");
54         alertString2 += "\n------------------------------------------------------------------------------------\n";
55         alertString2 += "\n- "+ total_errors+_(" mandatory fields empty (see bold subfields)");
56         alert(alertString2);
57         return false;
58     }
59 }
60 function CheckMultipleAdd(f) {
61
62     if (!f || isNaN(f) || !parseInt(f) == f || f <= 0) {
63         alert(_("Please enter a number of items to create."));
64         return false;
65     }
66 }
67 function Dopop(link,i) {
68     defaultvalue=document.forms[0].field_value[i].value;
69     newin=window.open(link+"&result="+defaultvalue,"valuebuilder",'width=500,height=400,toolbar=false,scrollbars=yes');
70 }
71
72 function confirm_deletion(biblionumber,itemnumber) {
73         var original = $("#row"+itemnumber).attr("class");
74         $("#row"+itemnumber).attr("class","confirm");
75     var is_confirmed = confirm(_("Are you sure you want to delete this item?"));
76     if (is_confirmed) {
77     window.location = "additem.pl?op=delitem&biblionumber="+biblionumber+"&itemnumber="+itemnumber;
78         } else {
79         $("#row"+itemnumber).attr("class","");
80     }
81 }
82
83 function CloneSubfield(index){
84     var original = document.getElementById(index); //original <div>
85     var clone = original.cloneNode(true);
86     var new_key = CreateKey();
87     var old_id =  original.getAttribute('id');
88     old_id=old_id.substr(12);
89     var new_id  = old_id+new_key;
90
91     // set the attribute for the new 'div' subfields
92     var inputs     = clone.getElementsByTagName('input');
93     var selects    = clone.getElementsByTagName('select');
94     var textareas  = clone.getElementsByTagName('textarea');
95
96     // input
97     var id_input = "";
98     for(var i=0,len=inputs.length; i<len ; i++ ){
99         id_input = inputs[i].getAttribute('id')+new_key;
100         inputs[i].setAttribute('id',id_input);
101         inputs[i].setAttribute('name',inputs[i].getAttribute('name'));
102     }
103
104     // select
105     for(var i=0,len=selects.length; i<len ; i++ ){
106         id_input = selects[i].getAttribute('id')+new_key;
107         selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
108         selects[i].setAttribute('name',selects[i].getAttribute('name'));
109     }
110
111     // textarea
112     for(var i=0,len=textareas.length; i<len ; i++ ){
113         id_input = textareas[i].getAttribute('id')+new_key;
114         textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
115         textareas[i].setAttribute('name',textareas[i].getAttribute('name'));
116     }
117
118     [% UNLESS ( advancedMARCEditor ) %]
119     // when cloning a subfield, reset its label too.
120     var label = clone.getElementsByTagName('label')[0];
121     label.setAttribute('for',id_input);
122     [% END %]
123
124     // setting a new if for the parent div
125     clone.setAttribute('id',new_id);
126
127     var CloneButtonPlus;
128     try {
129       var spans = clone.getElementsByTagName('span');
130       if(spans.length){
131           for(var i = 0 ,lenspans = spans.length ; i < lenspans ; i++){
132             if(spans[i].getAttribute('class') == 'buttonPlus'){
133                     CloneButtonPlus = spans[i];
134                     CloneButtonPlus.setAttribute('onclick',"CloneSubfield('" + new_id + "')");
135                     var buttonUp = clone.getElementsByTagName('img')[0];
136                     buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
137                 }
138             }
139         }
140     }
141     catch(e){
142         // do nothing if ButtonPlus & CloneButtonPlus don't exist.
143     }
144     // insert this line on the page
145     original.parentNode.insertBefore(clone,original.nextSibling);
146 }
147
148 /**
149  * This function creates a random number
150  */
151 function CreateKey(){
152     return parseInt(Math.random() * 100000);
153 }
154
155 $(document).ready(function() {
156     $("#cataloguing_additem_itemlist  tr").hover(
157         function () {$(this).attr("class","highlight");},
158         function () {$(this).attr("class",""         );}
159     );
160 });
161
162 function set_to_today(id, force) {
163     if (! id) { alert(_("Bad id ") + id + _(" sent to set_to_today()")); return 0; }
164     if ($("#" + id).val() == '' || $("#" + id).val() == '0000-00-00' || force) {
165         $("#" + id).val("[% today_iso %]");
166     }
167 }
168 //]]>
169 </script>
170 <link type="text/css" rel="stylesheet" href="[% themelang %]/css/addbiblio.css" />
171 </head>
172 <body>
173 [% INCLUDE 'header.inc' %]
174 <div id="breadcrumbs">
175           <a href="/cgi-bin/koha/mainpage.pl">Home</a>
176  &rsaquo; <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>
177  &rsaquo; Edit <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]">[% title |html %] [% IF ( author ) %] by [% author %][% END %] (Record #[% biblionumber %])</a>
178  &rsaquo; <a href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% biblionumber %]">Items</a>
179 </div>
180
181 <div id="doc3" class="yui-t7">
182
183    <div id="bd">
184         <div id="yui-main">
185
186 <h1>Items for [% title |html %] [% IF ( author ) %] by [% author %][% END %] (Record #[% biblionumber %])</h1>
187
188 [% IF ( barcode_not_unique ) %]<div class="dialog alert"><strong>Error saving item</strong>: Barcode must be unique.</div>[% END %]
189 [% IF ( no_next_barcode ) %]<div class="dialog alert"><strong>Error saving items</strong>: Unable to automatically determine values for barcodes. No item has been inserted.</div>[% END %]
190 [% IF ( book_on_loan ) %]<div class="dialog alert"><strong>Cannot Delete</strong>: item is checked out.</div>[% END %]
191 [% IF ( book_reserved ) %]<div class="dialogalert"><strong>Cannot Delete</strong>: item has a waiting hold.</div>[% END %]
192 [% IF ( not_same_branch ) %]<div class="dialog alert"><strong>Cannot Delete</strong>: The items do not belong to your branch.</div>[% END %]
193 [% IF ( linked_analytics ) %]<div class="dialog alert"><strong>Cannot Delete</strong>: item has linked <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber %]&analyze=1">analytics.</a>.</div>[% END %]
194
195 <div id="cataloguing_additem_itemlist">
196     [% IF ( item_loop ) %]
197         <div>
198         <table>
199             <tr>
200                 <th colspan="2">&nbsp;</th>
201                 [% FOREACH item_header_loo IN item_header_loop %]
202                     <th>
203                         [% item_header_loo.header_value %]
204                     </th>
205                 [% END %]
206             </tr>
207                 [% FOREACH item_loo IN item_loop %]
208                 <tr id="row[% item_loo.itemnumber %]">
209                     [% IF ( item_loo.nomod ) %] <td colspan="2">&nbsp;</td>[% ELSE %][% IF ( item_loo.hostitemflag ) %]<td><a href="additem.pl?op=edititem&amp;biblionumber=[% item_loo.hostbiblionumber %]&amp;itemnumber=[% item_loo.itemnumber %]#edititem">Edit in Host</a></td>
210 <td><a class="delete" href="/cgi-bin/koha/cataloguing/additem.pl?op=delinkitem&amp;biblionumber=[% biblionumber %]&amp;hostitemnumber=[% item_loo.itemnumber %]">Delink</a></td>
211 [% ELSE %]<td><a href="additem.pl?op=edititem&amp;biblionumber=[% biblionumber %]&amp;itemnumber=[% item_loo.itemnumber %]#edititem">Edit</a></td>
212                     <td>[% IF ( item_loo.countanalytics ) %]<a href="/cgi-bin/koha/catalogue/search.pl?idx=hi&q=% item_loo.itemnumber %]">view analytics</a>[% ELSE %]<a class="delete" href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&amp;biblionumber=[% biblionumber %]&amp;itemnumber=[% item_loo.itemnumber %]" onclick="confirm_deletion([% biblionumber %],[% item_loo.itemnumber %]); return false;">Delete</a>[% END %]</td>[% END %][% END %]
213                 [% FOREACH item_valu IN item_loo.item_value %]
214                     <td>[% item_valu.field |html %]</td>
215                 [% END %]
216                 </tr>
217                 [% END %]
218         </table>
219         </div>
220     [% END %]
221 </div>
222 <div class="yui-gf">
223 <div class="yui-u first">
224 [% INCLUDE 'biblio-view-menu.inc' %]
225 </div>
226 <div class="yui-u">
227 <div id="cataloguing_additem_newitem">
228     <form method="post" action="/cgi-bin/koha/cataloguing/additem.pl" name="f">
229     <input type="hidden" name="op" value="[% op %]" />
230     <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
231     [% IF ( opisadd ) %]
232         <h2 id="additema">Add Item</h2>
233     [% ELSE %]
234         <h2 id="edititem">Edit Item #[% itemnumber %]</h2>
235     [% END %]
236         <fieldset class="rows">
237         <ol>
238         [% FOREACH ite IN item %]
239                <li><div class="subfield_line" style="[% ite.visibility %]" id="subfield[% ite.tag %][% ite.subfield %][% ite.random %]">
240
241                <label>[% ite.subfield %] - [% IF ( ite.mandatory ) %]<b>[% END %][% ite.marc_lib %][% IF ( ite.mandatory ) %] *</b>[% END %]</label>
242                 [% ite.marc_value %]
243                 <input type="hidden" name="tag"       value="[% ite.tag %]" />
244                 <input type="hidden" name="subfield"  value="[% ite.subfield %]" />
245                 <input type="hidden" name="mandatory" value="[% ite.mandatory %]" />
246                 [% IF ( ite.repeatable ) %]
247                     <span class="buttonPlus" onclick="CloneSubfield('subfield[% ite.tag %][% ite.subfield %][% ite.random %]')">+</span>
248                 [% END %]
249
250             </div></li>
251         [% END %]
252     </ol>
253     </fieldset>
254     <input type="hidden" name="indicator" value=" " />
255     <input type="hidden" name="indicator" value=" " />
256     <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
257
258 <fieldset class="action">    [% IF ( opisadd ) %]
259     <input type="submit" name="phony_submit" value="phony_submit" id="phony_submit" style="display:none;" onclick="return false;" />
260     <!-- Note : We use here a false submit button because we have several submit buttons and we don't want the user to believe he validated the adding of multiple copies
261                 when pressing the enter key, while in fact it is the first submit button that is validated, in our case the "add (single) item" button.
262                 It is a bit tricky, but necessary in the sake of UI correctness.
263     -->
264
265     <input type="submit" name="add_submit" value="Add item" onclick="return Check(this.form)" />
266     <input type="submit" name="add_duplicate_submit" value="Add &amp; Duplicate" onclick="return Check(this.form)" />
267     <input type="submit" name="add_multiple_copies" value="Add Multiple Copies" onclick="javascript:this.nextSibling.style.visibility='visible';document.f.number_of_copies.focus(); return false;" /><span id="add_multiple_copies_span" style="visibility:hidden">
268         <label for="number_of_copies">Number of copies to add : </label>
269         <input type="text" id="number_of_copies" name="number_of_copies" value="" size="2" />
270         <input type="submit" id="add_multiple_copies_submit" name="add_multiple_copies_submit" value="Add" onclick="javascript:return Check(this.form) &amp;&amp; CheckMultipleAdd(this.form.number_of_copies.value);" />
271     </span>
272
273     [% ELSE %]
274     <input type="hidden" name="tag" value="[% itemtagfield %]" />
275     <input type="hidden" name="subfield" value="[% itemtagsubfield %]" />
276     <input type="hidden" name="field_value" value="[% itemnumber %]" />
277     <input type="submit" value="Save Changes" onclick="return Check(this.form)" />
278     [% END %]</fieldset>
279     
280     <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
281     <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
282     <input type="hidden" name="barcode" value="[% barcode %]" />
283     <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
284
285
286     </form>
287 </div>
288 </div><!-- /yui-u -->
289 </div><!-- /yui-gf -->
290
291 </div>
292 </div>
293 [% INCLUDE 'intranet-bottom.inc' %]