af6c8114ff40dd13080fc9b30ab5d813d21004e0
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / circ / pendingreserves.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% USE KohaDates %]
5 [% USE TablesSettings %]
6 [% USE AuthorisedValues %]
7 [%- USE Branches -%]
8 [%- USE ItemTypes -%]
9 [% SET footerjs = 1 %]
10 [% INCLUDE 'doc-head-open.inc' %]
11 <title>Koha &rsaquo; Circulation &rsaquo; Holds to pull</title>
12 [% INCLUDE 'doc-head-close.inc' %]
13 </head>
14
15 <body id="circ_pendingreserves" class="circ">
16 [% INCLUDE 'header.inc' %]
17 [% INCLUDE 'circ-search.inc' %]
18
19
20 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> &rsaquo; Holds to pull</div>
21
22 <div class="main container-fluid">
23     <div class="row">
24         <div class="col-sm-10 col-sm-push-2">
25             <main>
26
27         [% FOR m IN messages %]
28             <div class="dialog [% m.type | html %]">
29                 [% SWITCH m.code %]
30                 [% CASE 'letter_enqueued' %]
31                     <span>The notice has been correctly enqueued.</span>
32                 [% CASE 'no_email_address' %]
33                     <span>The patron does not have an email address defined.</span>
34                 [% CASE 'no_template_notice' %]
35                     <span>There is no notice template with a code 'CANCEL_HOLD_ON_LOST' defined in your system.</span>
36                 [% CASE 'hold_cancelled' %]
37                     <span>The hold has been correctly cancelled.</span>
38                 [% CASE 'hold_placed_at_biblio_level' %]
39                     <span>The hold has been placed on biblio level. It is not possible to determine the item to mark as lost.</span>
40                 [% CASE %]
41                     [% m.code | html %]
42                 [% END %]
43             </div>
44         [% END %]
45
46 <h2>Holds to pull placed between [% from | $KohaDates %] and [% to | $KohaDates %]</h2>
47 <h3>Reported on [% todaysdate | $KohaDates %]</h3>
48 <p>The following holds have not been filled. Please retrieve them and check them in.</p>
49 <div id="searchresults">
50     [% IF ( reserveloop ) %]
51     <table id="holdst">
52     <thead>
53         <tr>
54         <th>Pull this many items</th>
55         <th>Items available</th>
56         <th>Patrons with holds</th>
57         <th>First patron</th>
58         <th class="anti-the">Title</th>
59         <th class="string-sort">Libraries</th>
60         <th>Available call numbers</th>
61         <th>Available copy numbers</th>
62         <th>Available enumeration</th>
63         <th class="string-sort">Available item types</th>
64         <th class="string-sort">Available locations</th>
65         <th class="title-string">Earliest hold date</th>
66         <th>Action</th>
67         </tr>
68     </thead>
69     <tbody>
70         [% FOREACH reserveloo IN reserveloop %]
71         <tr>
72         [% IF ( reserveloo.borrowernumber ) %]
73             <td><p><b>[% reserveloo.pullcount | html %]</b></p></td>
74             <td>[% reserveloo.count | html %]</td>
75             <td>[% reserveloo.rcount | html %]</td>
76             <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber | uri %]">[% reserveloo.firstname | html %] [% reserveloo.surname | html %]</a></td>
77             <td>
78             <p>
79                 [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %]
80                     [% INCLUDE 'biblio-title.inc' biblio=reserveloo %]
81                 </a></p>
82                 [% IF ( reserveloo.author ) %]<p> by [% reserveloo.author | html %]</p>[% END %]
83                 [% IF ( reserveloo.editionstatement ) %]<p>[% reserveloo.editionstatement | html %]</p>[% END %]
84                 [% IF ( reserveloo.publicationyear ) %]<p>[% reserveloo.publicationyear | html %]</p>[% END %]
85             </td>
86         [% ELSE %]
87             <td>"</td>
88             <td>"</td>
89             <td>"</td>
90             <td>"</td>
91             <td>"</td>
92         [% END %]
93         <td>
94             [% IF ( reserveloo.holdingbranches ) %]
95                <ul>
96                     [% FOREACH holdingbranch IN reserveloo.holdingbranches %]
97                         <li>
98                             [% Branches.GetName ( holdingbranch ) | html %]
99                         </li>
100                     [% END %]
101                </ul>
102             [% END %]
103         </td>
104         <td>
105             [% IF ( reserveloo.itemcallnumber ) %]
106                 <ul>
107                     [% FOREACH itemcallnumber IN reserveloo.itemcallnumber  %]
108                         <li>
109                             [% itemcallnumber | html %]
110                         </li>
111                     [% END %]
112                 </ul>
113             [% END %]
114         </td>
115         <td>
116             [% IF ( reserveloo.copyno ) %]
117                 <ul>
118                     [% FOREACH copyno IN reserveloo.copyno %]
119                         <li>
120                             [% copyno | html %]
121                         </li>
122                     [% END %]
123                 </ul>
124             [% END %]
125         </td>
126         <td>
127             [% IF ( reserveloo.enumchron ) %]
128                 <ul>
129                     [% FOREACH enumchron IN reserveloo.enumchron %]
130                         <li>
131                             [% enumchron | html %]
132                         </li>
133                     [% END %]
134                 </ul>
135             [% END %]
136         </td>
137         <td>
138         [% FOREACH itemType IN reserveloo.itemTypes %]
139             [% ItemTypes.GetDescription( itemType ) | html %]
140         [% END %]
141         </td>
142         <td>
143         [% FOREACH loc IN reserveloo.locations %]
144             [% AuthorisedValues.GetByCode('LOC', loc) | html %]
145         [% END %]
146         </td>
147         <td>
148             <span title="[% reserveloo.reservedate | html %]">[% reserveloo.reservedate | $KohaDates %] in [% Branches.GetName ( reserveloo.branch ) | html %]</span>
149         </td>
150         <td>
151             <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
152                 <input type="hidden" name="op" value="cancel_reserve" />
153                 <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id | html %]" />
154                 [% IF reserveloo.holdingbranch != reserveloo.homebranch %]
155                     <input type="submit" value="Cancel hold and return to : [% Branches.GetName( reserveloo.homebranch ) | html %]" />
156                 [% ELSE %]
157                     <input type="submit" value="Cancel hold" />
158                 [% END %]
159             </form>
160
161         [% IF Koha.Preference('CanMarkHoldsToPullAsLost') != 'do_not_allow' %]
162             [% IF reserveloo.itemnumber %]
163                 <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
164                     <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id | html %]" />
165                     [% IF Koha.Preference('CanMarkHoldsToPullAsLost') == 'allow' %]
166                         <input type="hidden" name="op" value="mark_as_lost" />
167                         <input type="submit" value="Mark item as lost" />
168                     [% ELSIF Koha.Preference('CanMarkHoldsToPullAsLost') == 'allow_and_notify' %]
169                         <input type="hidden" name="op" value="mark_as_lost_and_notify" />
170                         <input type="submit" value="Mark lost and notify patron" />
171                     [% END %]
172                 </form>
173             [% ELSE %]
174                 <span>Biblio level hold.</span>
175             [% END %]
176         [% END %]
177             </td>
178         </tr>
179         [% END %]
180     </tbody>
181     <tfoot>
182         <tr>
183         <td><input type="text" class="filter" data-column_num="0" placeholder="Pull this many items" style="width:95%"/></td>
184         <td><input type="text" class="filter" data-column_num="1" placeholder="Items available" style="width:95%"/></td>
185         <td><input type="text" class="filter" data-column_num="2" placeholder="Patron holds" style="width:95%"/></td>
186         <td><input type="text" class="filter" data-column_num="3" placeholder="Patron name" style="width:95%"/></td>
187         <td><input type="text" class="filter" data-column_num="4" placeholder="Title" style="width:95%"/></td>
188         <td id="homebranchfilter"></td>
189         <td><input type="text" class="filter" data-column_num="6" placeholder="Call number" style="width:95%"/></td>
190         <td><input type="text" class="filter" data-column_num="7" placeholder="Available copy" style="width:95%"/></td>
191         <td><input type="text" class="filter" data-column_num="8" placeholder="Available enumeration" style="width:95%"/></td>
192         <td id="itemtype-filter"></td>
193         <td id="locationfilter"></td>
194         <td></td>
195         <td></td>
196         </tr>
197     </tfoot>
198     </table>
199     [% ELSE %]
200         <b>No items found.</b>
201     [% END %]
202 </div>
203
204
205             </main>
206         </div> <!-- /.col-sm-10.col-sm-push-2 -->
207
208         <div class="col-sm-2 col-sm-pull-10">
209             <aside>
210
211 <div id="filters">
212
213 <form action="/cgi-bin/koha/circ/pendingreserves.pl" method="post" >
214 <fieldset class="brief">
215 <h4>Refine results</h4>
216 <ol>
217 <li>
218 <label for="from">
219     Start date:
220 </label>
221 <input type="text" size="10" id="from" name="from" value="[% from | $KohaDates %]" class="datepickerfrom" />
222 </li>
223 <li><label for="to">
224     End date:
225 </label>
226 <input type="text" size="10" id="to" name="to" value="[% to | $KohaDates %]" class="datepickerto" />
227 </li>
228 </ol>
229
230 [% IF ( HoldsToPullEndDate ) %]
231     <p><i>(Inclusive, default is [% HoldsToPullStartDate | html %] days ago to [% HoldsToPullEndDate | html %] days ahead. Set other date ranges as needed.)</i></p>
232 [% ELSE %]
233     <p><i>(Inclusive, default is [% HoldsToPullStartDate | html %] days ago to today. Set other date ranges as needed.)</i></p>
234 [% END %]
235
236 <fieldset class="action"><input type="submit" name="run_report" value="Submit" class="submit"/></fieldset>
237 </fieldset>
238 </form>
239
240 </div>
241             </aside>
242         </div> <!-- /.col-sm-2.col-sm-pull-10 -->
243      </div> <!-- /.row -->
244
245 [% MACRO jsinclude BLOCK %]
246     [% INCLUDE 'calendar.inc' %]
247     [% INCLUDE 'datatables.inc' %]
248     [% INCLUDE 'columns_settings.inc' %]
249     <script>
250         $(document).ready(function() {
251           var columns_settings = [% TablesSettings.GetColumns('circ', 'holds', 'holds-to-pull', 'json') | $raw %];
252           var holdst = KohaTable("holdst", {
253             "aoColumnDefs": [
254                 { "sType": "anti-the", "aTargets" : [ "anti-the" ] },
255                 { "sType": "title-string", "aTargets" : [ "title-string" ] },
256                 { "sType": "string", "aTargets": [ "string-sort" ] }
257             ],
258             "sPaginationType": "full_numbers"
259           }, columns_settings);
260           holdst.fnAddFilters("filter");
261           [%# add separateData function to cleanse jQuery select lists by breaking apart strings glued with BR tags and then de-duplicating any repeated library codes %]
262           function separateData ( ColumnData ){
263             var cD = ColumnData;
264             var new_array = new Array();
265             for ( j=0 ; j<cD.length ; j++ ) {
266                 var split_array = cD[j].split(/\n/gi);
267                 for ( k=0 ; k<split_array.length ; k++ ){
268                     var str = $.trim(split_array[k].replace(/[\n\r]/g, ''));
269                     if ($.inArray(str, new_array) == -1 && str.length > 0 ) {
270                         new_array.push(str);
271                     }
272                 }
273             }
274             new_array.sort();
275             return new_array;
276           }
277           [%# add SeparateData function into createSelect function, so that it does the createSelect on clean data %]
278           function createSelect( data ) {
279               data = separateData(data);
280               var r='<select style="width:99%"><option value="">' + _("None") + '</option>', i, len=data.length;
281               var regex = /(<([^>]+)>)/ig; // Remove html tags
282               for ( i=0 ; i<len ; i++ ) {
283                   var cell_val = data[i].replace(regex, '');
284                   if ( cell_val.length < 1 ) continue;
285                   r += '<option value="'+cell_val+'">'+cell_val+'</option>';
286               }
287               return r+'</select>';
288           }
289           $("#homebranchfilter").each( function () {
290               $(this).html( createSelect( holdst.fnGetColumnData(5) ) );
291               $('select', this).change( function () {
292                   var filter_value = $(this).val();
293                   holdst.fnFilter( filter_value, 5, true );
294               });
295           });
296           $("#itemtype-filter").each( function () {
297               $(this).html( createSelect( holdst.fnGetColumnData(9) ) );
298               $('select', this).change( function () {
299                   holdst.fnFilter( $(this).val(), 9 );
300               });
301           });
302           $("#locationfilter").each( function () {
303               $(this).html( createSelect( holdst.fnGetColumnData(10) ) );
304               $('select', this).change( function () {
305                   holdst.fnFilter( $(this).val(), 10 );
306               });
307           });
308         });
309     </script>
310 [% END %]
311
312 [% INCLUDE 'intranet-bottom.inc' %]