Bug 14695 - Warn librarian if max_holds_per_record is reached
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / reserve / request.tt
1 [% USE Koha %]
2 [% USE KohaDates %]
3 [% USE Branches %]
4 [% USE Categories %]
5 [% USE ItemTypes %]
6 [% INCLUDE 'doc-head-open.inc' %]
7 [% UNLESS ( multi_hold ) %]
8     <title>Koha &rsaquo; Circulation &rsaquo; Holds &rsaquo; Place a hold on [% title |html %]</title>
9 [% ELSE %]
10     <title>Koha &rsaquo; Circulation &rsaquo; Holds &rsaquo; Confirm holds</title>
11 [% END %]
12 [% INCLUDE 'doc-head-close.inc' %]
13 <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
14 [% INCLUDE 'datatables.inc' %]
15 [% INCLUDE 'calendar.inc' %]
16 <script type="text/javascript">
17     // <![CDATA[
18 var MSG_CONFIRM_DELETE_HOLD   = _("Are you sure you want to cancel this hold?");
19 var patron_homebranch = "[% borrower_branchname |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]";
20 var override_items = {[% FOREACH bibitemloo IN bibitemloop %][% FOREACH itemloo IN bibitemloo.itemloop %][% IF ( itemloo.override ) %]
21     [% itemloo.itemnumber %]: {
22         homebranch: "[% itemloo.homebranchname |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]",
23         holdallowed: [% itemloo.holdallowed %]
24     },
25 [% END %][% END %][% END %]
26 };
27 var MSG_NO_ITEMS_AVAILABLE = _("A hold cannot be requested on any of these items.");
28
29 $(document).ready(function() {
30     [% IF AutoResumeSuspendedHolds %]
31         $(".suspend_until_datepicker, .datepickerfrom, .datepickerto").datepicker("option", "minDate", 1);
32     [% END %]
33
34     var my_table = $("#requestspecific").dataTable($.extend(true, {}, dataTablesDefaults, {
35         'bPaginate': false,
36         "sDom": '<"top pager"ilf>t',
37         "aoColumnDefs": [
38             { "sType": "title-string", "aTargets" : [ "title-string" ] }
39         ]
40     }));
41
42     //Override fieldset styling for dataTables search box
43     $("div.top.pager").css("margin-left","1em");
44     $(".dataTables_filter label").css({
45         "width":"auto",
46         "margin-right":"0em"
47     });
48
49 });
50
51 function check() {
52     var msg = "";
53     var count_reserv = 0;
54
55     // check if we have checkitem form
56     if (document.form.checkitem){
57         for (i=0;i<document.form.checkitem.length;i++){
58             if (document.form.checkitem[i].checked == true) {
59                 count_reserv++ ;
60             }
61         }
62         // for only one item, check the checkitem without consider the loop checkitem
63         if (i==0){
64             if (document.form.checkitem.checked == true) {
65                 count_reserv++;
66             }
67         }
68     }
69
70     if (document.form.requestany.checked == true){
71         count_reserv++ ;
72     }
73
74     if (count_reserv == "0"){
75         msg += (_("- Please select an item to place a hold") + "\n");
76     }
77
78     if (msg == "") {
79         $('#hold-request-form').preventDoubleFormSubmit();
80         return(true);
81     } else {
82         alert(msg);
83         return(false);
84     }
85 }
86
87 function checkMultiHold() {
88     var spans = $(".multi_hold_item");
89     if ($(spans).size() == 0) {
90         alert(MSG_NO_ITEMS_AVAILABLE);
91         return false;
92     }
93
94     var biblionumbers = "";
95     $(spans).each(function() {
96         var bibnum = $(this).attr("title");
97         biblionumbers += bibnum + "/";
98     });
99
100     var badSpans = $(".not_holdable");
101     var badBibs = "";
102     $(badSpans).each(function() {
103         var bibnum = $(this).attr("title");
104         badBibs += bibnum + "/";
105     });
106
107     $("#multi_hold_bibs").val(biblionumbers);
108     $("#bad_bibs").val(badBibs);
109
110     $('#hold-request-form').preventDoubleFormSubmit();
111
112     return true;
113 }
114
115  $(document).ready(function() {
116     $("input.needsoverride").click(function() { // This must be before the radio button/checkbox switch logic
117         var itemnumber = this.value;
118         var msg = '';
119
120         switch (override_items[itemnumber].holdallowed) {
121             case 0: msg = _("This item normally cannot be put on hold."); break;
122             case 1: msg = _("This item normally cannot be put on hold except for patrons from %s.").format(override_items[itemnumber].homebranch); break;
123         }
124
125         msg += "\n\n" + _("Place hold on this item?");
126
127         return confirm(msg);
128     });
129     $("input.warning").click(function() {
130         return confirm( _("None of these items can normally be put on hold for this patron.") + "\n\n" + _("Place hold?") );
131     });
132     $("#requestany").click(function() {
133         if(this.checked){
134             $("input[name=checkitem]").each(function() {
135                 $(this).prop("checked", false);
136             });
137         }
138     });
139     $("input[name=checkitem]").click(function() {
140         onechecked = 0;
141         $("input[name=checkitem]").each(function() {
142             if(this.checked){
143                 onechecked = 1;
144             }
145         });
146         if(onechecked == 1){
147             $("#requestany").prop("checked", false);
148         } else {
149             $("#requestany").prop("checked",true);
150         }
151     });
152
153     $(".clear-date").on("click",function(e){
154         e.preventDefault();
155         var fieldID = this.id.replace("clear-date-","");
156         $("#" + fieldID).val("");
157     });
158
159
160 [% UNLESS ( borrowernumber || borrowers || noitems ) %]
161     [% IF ( CircAutocompl ) %]
162     $( "#patron" ).autocomplete({
163         source: "/cgi-bin/koha/circ/ysearch.pl",
164         minLength: 3,
165         select: function( event, ui ) {
166             $( "#patron" ).val( ui.item.cardnumber );
167             $( "#holds_patronsearch" ).submit();
168             return false;
169         }
170     })
171     .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
172         return $( "<li></li>" )
173         .data( "ui-autocomplete-item", item )
174         .append( "<a>" + item.surname + ", " + item.firstname +
175                  " (" + item.cardnumber + ") <small>" + item.address +
176                  " " + item.city + " " + item.zipcode + " " +
177                  item.country + "</small></a>" )
178         .appendTo( ul );
179     };
180     [% END %]
181 [% END %]
182
183  });
184
185 // ]]>
186 </script>
187 </head>
188 <body id="circ_request" class="catalog">
189 [% INCLUDE 'header.inc' %]
190 [% INCLUDE 'circ-search.inc' %]
191
192 [% UNLESS ( multi_hold ) %]
193     <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a> &rsaquo; <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber %]">[% title |html %]</a> &rsaquo; Place a hold on [% title |html %]</div>
194 [% ELSE %]
195     <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a> &rsaquo; Confirm holds</div>
196 [% END %]
197
198  <div id="doc3" class="yui-t2">
199
200    <div id="bd">
201         <div id="yui-main">
202         <div class="yui-b">
203 [% IF ( noitems ) %]
204     <div class="dialog alert">
205     [%IF (multi_hold) %]
206         <strong>Cannot place hold:</strong> one or more records without items attached.
207     [% ELSE %]
208         <strong>Cannot place hold:</strong> this record has no items attached.
209     [% END %]
210     </div>
211 [% END %]
212
213   [% IF ( messagetransfert ) %]
214                 <div class="dialog message">
215                                 <h2>Hold found for ([% nextreservtitle %]), please transfer</h2>
216                         <p>Hold placed by : <strong> [% nextreservsurname %] [% nextreservfirstname %]</strong> at : <strong> [% branchname %] </strong>, Please transfer this item.
217                         </p>
218                         <form name="cancelReservewithtransfert" action="branchreserves.pl" method="post">
219                                 <input type="submit" class="button" />
220                         </form>
221                 </div>
222   [% END %]
223
224   [% UNLESS ( multi_hold ) %]
225     <h1>Place a hold on [% INCLUDE 'biblio-default-view.inc' %][% title |html %]</a></h1>
226   [% ELSE %]
227     <h1>Confirm holds</h1>
228   [% END %]
229
230   [% UNLESS borrowernumber OR noitems %]
231     [% IF ( messageborrower ) %]
232       <div class="dialog alert"><h3>Patron not found</h3><p>No patron with this name, please, try another</p> </div>
233     [% END %]
234     <form  id="holds_patronsearch" action="request.pl?biblionumber=[% biblionumber %]" method="post">
235         <fieldset id="circ_holds_selectborrower" class="brief">
236
237         [% UNLESS borrowers %]
238                 <label for="patron">Patron: </label>
239                 <div class="hint">Enter patron card number or partial name:</div>
240                 <input type="text" size="40" id="patron" class="focus" name="findborrower" />
241                 <input type="submit" value="Search" />
242                 <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
243             </fieldset>
244         [% ELSE %]
245             [% INCLUDE 'circ-patron-search-results.inc' destination = "holds" %]
246           </fieldset>
247
248         [% END %]
249         [% IF ( multi_hold ) %]
250             <input type="hidden" name="multi_hold" value="[% multi_hold %]"/>
251             <input type="hidden" name="biblionumbers" value="[% biblionumbers %]"/>
252         [% END %]
253     </form>
254   [% ELSIF NOT noitems %]
255
256 [% IF ( exceeded_maxreserves || exceeded_holds_per_record || alreadyreserved || none_available || alreadypossession || ageRestricted ) %]
257     <div class="dialog alert">
258
259     [% UNLESS ( multi_hold ) %]
260       <h3>Cannot place hold</h3>
261       <ul>
262         [% IF ( exceeded_maxreserves ) %]
263           <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> can only place a maximum of [% maxreserves %] total holds.</li>
264         [% ELSIF ( exceeded_holds_per_record ) %]
265           <li><strong>Too many holds for this record: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> can only place a maximum of [% max_holds_for_record %] hold(s) on this record.</li>
266         [% ELSIF ( alreadypossession ) %]
267           <li> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>is already in possession</strong> of one item</lie
268         [% ELSIF ( alreadyreserved ) %]
269           <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>already has a hold</strong> on this item </li>
270         [% ELSIF ( ageRestricted ) %]
271           <li><strong>Age restricted</strong></li>
272         [% ELSIF ( none_available ) %]
273           <li> <strong>No items are available</strong> to be placed on hold</li>
274         [% ELSIF ( maxreserves ) %]
275           <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> has too many holds.</li>
276         [% END %]
277       </ul>
278     [% ELSE %]
279         <h3>Cannot place hold on some items</h3>
280         [% IF ( exceeded_maxreserves ) %]
281           <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> can place [% new_reserves_allowed %] of the requested [% new_reserves_count %] holds for a maximum of [% maxreserves %] total holds.</li>
282         [% ELSIF ( exceeded_holds_per_record ) %]
283             [% FOREACH biblioloo IN biblioloop %]
284                 [% IF (biblioloo.tooManyHoldsForThisRecord) %]
285                     <li><strong>Too many holds for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber %]"> [% biblioloo.title %]</a>: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] </a> can only place a maximum of [% max_holds_for_record %] hold(s) on this record.</li>
286                 [% END %]
287             [% END %]
288         [% END %]
289     [% END %]
290
291     </div>
292 [% END %]
293
294 [% IF ( expiry || diffbranch || restricted || ( amount_outstanding && Koha.Preference('maxoutstanding') && amount_outstanding > Koha.Preference('maxoutstanding') ) ) %]
295 <div class="dialog message"><ul>
296     [% IF ( expiry ) %]
297     <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a>: <strong>Account has expired</strong></li>
298     [% END %]
299
300     [% IF restricted %]
301     <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]#reldebarments">[% borrowerfirstname %] [% borrowersurname %]</a>: <strong>Patron has restrictions</strong></li>
302     [% END %]
303
304     [% IF amount_outstanding && Koha.Preference('maxoutstanding') && amount_outstanding > Koha.Preference('maxoutstanding') %]
305     <li><a href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a>: <strong>Patron has outstanding fines: [% amount_outstanding | format('%.2f') %]</strong></li>
306     [% END %]
307
308     [% IF ( diffbranch ) %]
309     <li> <strong>Pickup library is different. </strong>Patron: <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> Patron's home library: ([% borrower_branchname %] / [% borrower_branchcode %] )</li>
310     [% END %]
311
312 </ul></div>
313 [% END %]
314
315   [% IF ( messageborrower ) %]
316    <div class="dialog alert"><h3>Patron not found:</h3> <p>Name or barcode not found. Please try an other </p></div>
317   [% END %]
318
319   <fieldset class="rows left">
320     <legend>Hold details</legend>
321         [% UNLESS ( multi_hold ) %]
322             <form action="placerequest.pl" method="post" onsubmit="return check();" name="form" id="hold-request-form">
323         [% ELSE %]
324             <form action="placerequest.pl" method="post" onsubmit="return checkMultiHold();" name="form">
325         [% END %]
326
327         <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
328         <input type="hidden" name="type" value="str8" />
329
330         [% IF ( multi_hold ) %]
331             <input type="hidden" name="multi_hold" value="[% multi_hold %]"/>
332             <input type="hidden" name="biblionumbers" id="multi_hold_bibs" value="[% biblionumbers %]"/>
333             <input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
334             <input type="hidden" name="request" value="any"/>
335             [% FOREACH biblioloo IN biblioloop %]
336               <input type="hidden" name="title_[% biblioloo.biblionumber %]" value="[% biblioloo.title |html %]"/>
337               <input type="hidden" name="rank_[% biblioloo.biblionumber %]" value="[% biblioloo.rank %]"/>
338             [% END %]
339         [% ELSE %]
340             <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
341             <input type="hidden" name="title" value="[% title |html %]" />
342             <input type="hidden" name="rank-request" value="[% fixedRank %]" />
343         [% END %]
344
345        <ol> <li><span class="label">Patron:</span>
346             [% IF ( borrowernumber ) %]
347                 <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %] ([% cardnumber %])</a>
348             [% ELSE %]
349                 Not defined yet
350             [% END %]
351         </li>
352         [% UNLESS ( multi_hold ) %]
353           <li>
354               <span class="label">Estimated priority:</span>
355               <strong>[% fixedRank %]</strong>
356           </li>
357         [% END %]
358         <li>
359             <label for="holdnotes">Notes:</label>
360             <textarea id="holdnotes" name="notes" cols="30" rows="1"></textarea>
361         </li>
362         <li>
363             <label for="pickup">Pickup at:</label>
364             <select name="pickup" size="1" id="pickup">
365             [%- FOREACH branchloo IN branchloop %]
366               [% IF ( branchloo.selected ) -%]
367                 <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
368               [%- ELSE -%]
369                 <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
370               [%- END -%]
371             [%- END %]
372             </select>
373         </li>
374
375         [% UNLESS ( multi_hold ) %]
376             [% IF Koha.Preference('AllowHoldItemTypeSelection') %]
377                 <li>
378                     <label for="itemtype">Request specific item type:</label>
379                     <select name="itemtype" size="1" id="itemtype">
380                         <option value="">Any item type</option>
381                         [%- FOREACH itemtype IN available_itemtypes %]
382                             <option value="[% itemtype %]">[% ItemTypes.GetDescription( itemtype ) %]</option>
383                         [%- END %]
384                     </select>
385                 </li>
386             [% END %]
387         [% END %]
388
389         [% IF ( reserve_in_future ) %]
390         <li>
391         <label for="from">Hold starts on date:</label>
392         <input name="reserve_date" id="from" size="10" readonly="readonly" class="datepickerfrom">
393         <a href="#" id="clear-date-from" class="clear-date">Clear date</a>
394         </li>
395         [% END %]
396
397         <li>
398         <label for="to">Hold expires on date:</label>
399         <input name="expiration_date" id="to" size="10" readonly="readonly" class="datepickerto" />
400         <a href="#" id="clear-date-to" class="clear-date">Clear date</a>
401         </li>
402
403         [% UNLESS ( multi_hold ) %]
404           <li> <label for="requestany">Hold next available item </label>
405                [% IF force_hold_level == 'item' %]
406                    <input type="checkbox" id="requestany" name="request" disabled="true" />
407                [% ELSIF force_hold_level == 'record' %]
408                    <input type="checkbox" id="requestany" checked="checked" value="Any" disabled="true"/>
409                    <input type="hidden" name="request" value="Any"/>
410                [% ELSE %]
411                    <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
412                 [% END %]
413                <input type="hidden" name="biblioitem" value="[% biblioitemnumber %]" />
414                <input type="hidden" name="alreadyreserved" value="[% alreadyreserved %]" />
415           </li>
416
417           [% IF remaining_holds_for_record > 1 %]
418               [% SET count = 1 %]
419               <li>
420                    <label for="holds_to_place_count">Holds to place (count)</label>
421                    <select name="holds_to_place_count" id="holds_to_place_count">
422                    [% WHILE count <= remaining_holds_for_record %]
423                         <option value="[% count %]">[% count %]</option>
424                         [% SET count = count + 1 %]
425                    [% END %]
426
427                    </select>
428               </li>
429             [% ELSE %]
430                 <input type="hidden" name="holds_to_place_count" value="1";
431             [% END %]
432         [% END %]
433
434 </ol>
435    [% UNLESS ( multi_hold ) %]
436         <fieldset class="action">
437             [% IF ( borrowernumber ) %]
438                 [% IF ( override_required ) %]
439                     <input type="submit" class="warning" value="Place hold" />
440                 [% ELSIF ( none_available ) %]
441                     <input type="submit" disabled="disabled" value="Place hold" />
442                 [% ELSE %]
443                     <input type="submit" value="Place hold" />
444                 [% END %]
445             [% END %]
446         </fieldset>
447         [% FOREACH bibitemloo IN bibitemloop %]
448           <ol>
449             [% UNLESS ( item_level_itypes ) %]
450               <li><span class="label">Item type:</span> [% bibitemloo.description %]</li>
451             [% END %]
452
453             [% IF ( bibitemloo.publicationyear ) %]<li><span class="label">Publication year:</span> [% bibitemloo.publicationyear %]</li>[% END %]
454           </ol>
455
456         <h2 style="padding: 0 1em;">
457             Place a hold on a specific item
458             [% IF bibitemloo.force_hold_level == 'item' %]
459                 <span class="error"><i>(Required)</i></span>
460             [% END %]
461         </h2>
462         <table id="requestspecific">
463             <thead>
464                 <tr>
465                     <th>Hold</th>
466                 [% IF ( item_level_itypes ) %]
467                     <th>Item type</th>
468                 [% END %]
469                     <th>Barcode</th>
470                     <th>Home library</th>
471                     <th>Last location</th>
472                     <th>Call no.</th>
473                     <th>Copy number</th>
474                 [% IF itemdata_enumchron %]
475                     <th>Vol no.</th>
476                 [% END %]
477                     <th class="title-string">Information</th>
478                 </tr>
479             </thead>
480             <tbody>
481             [% SET selected = 0 %]
482             [% FOREACH itemloo IN bibitemloo.itemloop %]
483             [% UNLESS ( itemloo.hide ) %]
484                 <tr class="[% itemloo.backgroundcolor %]">
485                     <td>
486                 [% IF itemloo.force_hold_level == 'record' # Patron has placed a record level hold previously for this record %]
487                     <span class="error">
488                         <i class="fa fa-times fa-lg" alt="Cannot be put on hold"></i>
489                         Hold must be record level
490                     </span>
491                 [% ELSIF ( itemloo.available ) %]
492                     <input type="radio" name="checkitem" value="[% itemloo.itemnumber %]" />
493                 [% ELSIF ( itemloo.override ) %]
494                     <input type="radio" name="checkitem" class="needsoverride" value="[% itemloo.itemnumber %]" />
495                     <i class="fa fa-exclamation-triangle fa-lg" style="color:gold" alt="Requires override of hold policy"/></i>
496                 [% ELSE %]
497                     <span class="error">
498                         <i class="fa fa-times fa-lg" alt="Cannot be put on hold"></i>
499                         [% IF itemloo.not_holdable %]
500                             [% IF itemloo.not_holdable == 'damaged' %]
501                                 Item damaged
502                             [% ELSIF itemloo.not_holdable == 'ageRestricted' %]
503                                 Age restricted
504                             [% ELSIF itemloo.not_holdable == 'tooManyHoldsForThisRecord' %]
505                                 Exceeded max holds per record
506                             [% ELSIF itemloo.not_holdable == 'tooManyReserves' %]
507                                 Too many holds
508                             [% ELSIF itemloo.not_holdable == 'notReservable' %]
509                                 Not holdable
510                             [% ELSIF itemloo.not_holdable == 'cannotReserveFromOtherBranches' %]
511                                 Patron is from different library
512                             [% ELSIF itemloo.not_holdable == 'itemAlreadyOnHold' %]
513                                 Patron already has hold for this item
514                             [% ELSE %]
515                                 [% itemloo.not_holdable %]
516                             [% END %]
517                         [% END %]
518                     </span>
519                 [% END %]
520                     </td>
521                 [% IF ( item_level_itypes ) %]
522                     <td>
523                     [% UNLESS ( noItemTypeImages ) %]
524                         [% IF ( itemloo.imageurl ) %]<img src="[% itemloo.imageurl %]" alt="" /> <br /> [% END %]
525                     [% END %]
526                         [% itemloo.itypename %]
527                     </td>
528                 [% END %]
529
530                     <td>
531                         [% itemloo.barcode %]
532                     </td>
533                     <td>
534                         [% itemloo.homebranchname %]
535                     </td>
536                     <td>
537                         [% itemloo.holdingbranchname %]
538                     </td>
539                     <td>
540                         [% itemloo.itemcallnumber %]
541                     </td>
542                     <td>
543                         [% IF ( itemloo.copynumber ) %][% itemloo.copynumber %][% ELSE %]&nbsp;[% END %]
544                     </td>
545                 [% IF itemdata_enumchron %]
546                     <td>
547                         [% itemloo.enumchron %]
548                     </td>
549                 [% END %]
550                     <td>
551                 [% IF ( itemloo.onloan ) %]
552                     <span title="[% itemloo.date_due %]" class="checkedout">Due [% itemloo.date_due | $KohaDates as_due_date => 1 %]</span>
553                 [% ELSE %]
554                     <span title="0000-00-00">
555                         [% IF ( itemloo.transfertwhen ) %]
556                             In transit from [% itemloo.transfertfrom %],
557                             to [% itemloo.transfertto %], since [% itemloo.transfertwhen %]
558                         [% END %]
559                     </span>
560                 [% END %]
561
562                 [% IF ( itemloo.message ) %]
563                    Unavailable (lost or missing)
564                 [% END %]
565
566                 [% IF ( itemloo.notforloan ) %]
567                    Not for loan ([% itemloo.notforloanvalue %])
568                 [% END %]
569
570                 [% IF ( itemloo.reservedate ) %]
571                     [% IF ( itemloo.nocancel ) %]
572                             Can't be cancelled when item is in transit
573                     [% ELSE %]
574                     [% IF ( itemloo.waitingdate ) %]Waiting[% ELSE %]On hold[% END %]
575                     [% IF ( itemloo.canreservefromotherbranches ) %]for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% itemloo.ReservedForBorrowernumber %]">[% itemloo.ReservedForFirstname %] [% itemloo.ReservedForSurname %]</a>[% END %] [% IF ( itemloo.waitingdate ) %]at[% ELSE %]expected at[% END %] [% itemloo.ExpectedAtLibrary %]
576                     since
577                     [% IF ( itemloo.waitingdate ) %][% itemloo.waitingdate | $KohaDates %][% ELSE %][% IF ( itemloo.reservedate ) %][% itemloo.reservedate %][% END %][% END %]. <a class="info" href="modrequest.pl?CancelBiblioNumber=[% itemloo.biblionumber %]&amp;CancelBorrowerNumber=[% itemloo.ReservedForBorrowernumber %]&amp;CancelItemnumber=[% itemloo.itemnumber %]"  onclick="return confirmDelete(MSG_CONFIRM_DELETE_HOLD);">Cancel hold</a>
578
579                     [% END %]
580                  [% ELSE %]
581                     Not on hold
582                 [% END %]
583                     </td>
584                 </tr>
585             [% END %] <!--UNLESS item hide-->
586             [% END %] <!-- itemloop -->
587             </tbody>
588         </table>
589     [% IF ( bibitemloo.hiddencount ) %]
590         <form>
591         <p class="hiddencount"><a href="request.pl?biblionumber=[% bibitemloo.biblionumber %]&amp;borrowernumber=[% bibitemloo.borrowernumber %]&amp;showallitems=1">Show all items ([% bibitemloo.hiddencount %] hidden)</a></p>
592         </form>
593     [% END %] <!-- hiddencount -->
594     [% END %] <!-- bibitemloop -->
595
596   [% ELSE %]<!-- UNLESS multi_hold -->
597
598     <table id="requesttitles">
599       <tr>
600         <th>Title</th>
601         [% UNLESS ( item_level_itypes ) %]
602           <th>Item type</th>
603         [% END %]
604         <th>Priority</th>
605         <th>Information</th>
606       </tr>
607       [% FOREACH biblioloo IN biblioloop %]
608         [% IF ( biblioloo.warn ) %]
609           <tr class="onissue">
610         [% ELSE %]
611           <tr>
612         [% END %]
613           <td>
614             <ul>
615               <li><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber %]">[% biblioloo.title |html %]</a></li>
616               [% IF ( biblioloo.publicationyear ) %]
617                 <li><span class="label">Publication year:</span> [% biblioloo.publicationyear %]</li>
618               [% END %]
619             </ul>
620             [% UNLESS ( biblioloo.warn ) %]
621               <span class="multi_hold_item" title="[% biblioloo.biblionumber %]"></span>
622             [% ELSE %]
623               <span class="not_holdable" title="[% biblioloo.biblionumber %]"></span>
624             [% END %]
625           </td>
626           [% UNLESS ( item_level_itypes ) %]
627             <td>
628               <img src="[% biblioloo.imageurl %]" alt="[% biblioloo.itypename %]" title="[% biblioloo.itypename %]" />
629             </td>
630           [% END %]
631             <td>[% biblioloo.rank %]</td>
632           <td>
633             [% IF ( biblioloo.alreadyres ) %]
634               <ul>
635             [% ELSE %]
636               [% IF ( biblioloo.none_avail ) %]
637                 <ul>
638               [% END %]
639             [% END %]
640
641           [% IF ( biblioloo.alreadyres ) %]
642               <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% borrowerfirstname %] [% borrowersurname %]</a> <strong>already has a hold</strong> on this item </li>
643           [% END %]
644           [% IF ( biblioloo.none_avail ) %]
645               <li> <strong>No items are available</strong> to be placed on hold</li>
646           [% END %]
647
648             [% IF ( biblioloo.alreadyres ) %]
649               </ul>
650             [% ELSE %]
651               [% IF ( biblioloo.none_avail ) %]
652                 </ul>
653               [% END %]
654             [% END %]
655
656           </td>
657         </tr>
658       [% END %]
659     </table>
660
661   [% END %]<!-- /multi_hold -->
662
663     <fieldset class="action">
664         [% IF ( borrowernumber ) %]
665             [% IF ( override_required ) %]
666                 <input type="submit" class="warning" value="Place hold" />
667             [% ELSIF ( none_available ) %]
668                 <input type="submit" disabled="disabled" value="Place hold" />
669             [% ELSE %]
670                 <input type="submit" value="Place hold" />
671             [% END %]
672         [% END %]
673     </fieldset>
674     </form>
675         </fieldset>
676 [% END %]
677
678 [% UNLESS ( borrowernumber ) %]
679 [% IF ( reserveloop ) %]
680 <form name="T[% time %]" action="modrequest.pl" method="post">
681   [% IF ( multi_hold ) %]
682     <input type = "hidden" name="multi_hold" value="1"/>
683     <input type = "hidden" name="biblionumbers" value="[% biblionumbers %]"/>
684   [% END %]
685
686 <fieldset class="rows left">
687 <legend>Existing holds</legend>
688
689 [% FOREACH biblioloo IN biblioloop %]
690
691     [% IF ( biblioloo.reserveloop ) %]
692     <table>
693       [% IF ( multi_hold ) %]
694           <caption><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber %]">[% biblioloo.title |html %]</a></caption>
695       [% END %]
696       <tr>
697         [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
698             <th>Priority</th>
699                 <th>&nbsp;</th>
700         [% ELSE %]
701             <th>Delete?</th>
702         [% END %]
703         <th>Patron</th>
704         <th>Notes</th>
705         <th>Date</th>
706         <th>Expiration</th>
707         <th>Pickup library</th>
708         <th>Details</th>
709         [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
710             <th><img src="[% interface %]/[% theme %]/img/go-bottom.png" alt="Toggle set to lowest priority" /></th>
711         [% END %]
712         <th>&nbsp;</th>
713     [% IF SuspendHoldsIntranet %]<th>&nbsp;</th><!-- Suspend Holds Column Header -->[% END %]
714       </tr>
715   [% FOREACH reserveloo IN biblioloo.reserveloop %]
716         <tr>
717         <td>
718           <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id %]" />
719           <input type="hidden" name="borrowernumber" value="[% reserveloo.borrowernumber %]" />
720           <input type="hidden" name="biblionumber" value="[% reserveloo.biblionumber %]" />
721           <select name="rank-request">
722               [% IF ( reserveloo.found ) %]
723                   [% IF ( reserveloo.intransit ) %]
724                       <option value="T" selected="selected">In transit</option>
725                   [% ELSE %]
726                       <option value="W" selected="selected">Waiting</option>
727                   [% END %]
728               [% END %]
729
730               [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
731                   [% FOREACH optionloo IN reserveloo.optionloop %]
732                       [% IF ( optionloo.selected ) %]
733                           <option value="[% optionloo.num %]" selected="selected">[% optionloo.num %]</option>
734                       [% ELSE %]
735                           <option value="[% optionloo.num %]">[% optionloo.num %]</option>
736                       [% END %]
737                   [% END %]
738               [% ELSIF !reserveloo.found %]
739                   <option value="[% reserveloo.priority %]" selected="selected">[% reserveloo.priority %]</option>
740               [% END %]
741               <option value="del">del</option>
742           </select>
743         </td>
744
745      [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
746         <td style="white-space:nowrap;">
747             <a title="Move hold up" href="request.pl?action=move&amp;where=up&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;reserve_id=[% reserveloo.reserve_id %]&amp;date=[% reserveloo.date %]">
748             <img src="[% interface %]/[% theme %]/img/go-up.png" alt="Go up" />
749                 </a>
750
751                 <a title="Move hold to top" href="request.pl?action=move&amp;where=top&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;reserve_id=[% reserveloo.reserve_id %]&amp;date=[% reserveloo.date %]">
752                     <img src="[% interface %]/[% theme %]/img/go-top.png" alt="Go top" />
753                 </a>
754
755                 <a title="Move hold to bottom" href="request.pl?action=move&amp;where=bottom&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;reserve_id=[% reserveloo.reserve_id %]&amp;date=[% reserveloo.date %]">
756                     <img src="[% interface %]/[% theme %]/img/go-bottom.png" alt="Go bottom" />
757                 </a>
758
759                 <a title="Move hold down" href="request.pl?action=move&amp;where=down&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;reserve_id=[% reserveloo.reserve_id %]&amp;date=[% reserveloo.date %]">
760                     <img src="[% interface %]/[% theme %]/img/go-down.png" alt="Go down" />
761                 </a>
762         </td>
763     [% END %]
764
765         <td>
766           <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber %]" >
767           [% IF ( reserveloo.hidename ) %]
768               [% reserveloo.cardnumber (reserveloo.borrowernumber) %]
769           [% ELSE %]
770               [% reserveloo.firstname %] [% reserveloo.surname %]
771           [% END %]
772           </a>
773         </td>
774         <td>[% reserveloo.notes %]</td>
775         <td>[% reserveloo.date %]</td>
776         <td>
777             [% IF reserveloo.waiting_until %]
778                 [% reserveloo.waiting_until | $KohaDates %]
779             [% ELSE %]
780                 [% reserveloo.expirationdate %]
781             [% END %]
782         </td>
783         <td>
784     [% IF ( reserveloo.found ) %]
785         [% IF ( reserveloo.atdestination ) %]
786             [% IF ( reserveloo.found ) %]
787                 Item waiting at <b> [% reserveloo.wbrname %]</b> <input type="hidden" name="pickup" value="[% reserveloo.wbrcode %]" /> since [% reserveloo.waiting_date | $KohaDates %]
788             [% ELSE %]
789                 Waiting to be pulled <input type="hidden" name="pickup" value="[% reserveloo.wbrcode %]" />
790             [% END %]
791           [% ELSE %]
792             Item being transferred to <b> [% reserveloo.wbrname %]</b> <input type="hidden" name="pickup" value="[% reserveloo.wbrcode %]" />
793          [% END %]
794     [% ELSE %]
795           <select name="pickup">
796       [% FOREACH branchloo IN reserveloo.branchloop %]
797         [% IF ( branchloo.selected ) %]
798             <option value="[% branchloo.branchcode %]" selected="selected">
799         [% ELSE %]
800             <option value="[% branchloo.branchcode %]">
801         [% END %]
802               [% branchloo.branchname %]
803             </option>
804       [% END %]
805           </select>
806     [% END %]
807         </td>
808         <td>
809     [% IF ( reserveloo.found ) %]
810           <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% reserveloo.biblionumber %]">
811                 [% IF ( reserveloo.barcodenumber ) %]
812                     [% reserveloo.barcodenumber %]
813                     <input type="hidden" name="itemnumber" value="[% reserveloo.itemnumber %]" />
814                 [% ELSE %]
815                     No barcode
816                 [% END %]
817           </a>
818     [% ELSE %]
819             [% IF ( reserveloo.item_level_hold ) %]
820                 <i>Only item
821                 <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% reserveloo.biblionumber %]">
822                      [% IF ( reserveloo.barcodenumber ) %]
823                          [% reserveloo.barcodenumber %]
824                         <input type="hidden" name="itemnumber" value="[% reserveloo.itemnumber %]" />
825                     [% ELSE %]
826                         No barcode
827                     [% END %]
828                 </a>
829                 </i>
830             [% ELSE %]
831                 [% IF reserveloo.itemtype %]
832                     <i>Next available [% ItemTypes.GetDescription( reserveloo.itemtype ) %] item</i>
833                 [% ELSE %]
834                     <i>Next available</i>
835                 [% END %]
836                  <input type="hidden" name="itemnumber" value="" />
837             [% END %]
838     [% END %]
839         </td>
840
841     [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
842         <td>
843                 <a title="Toggle lowest priority" href="request.pl?action=setLowestPriority&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;reserve_id=[% reserveloo.reserve_id %]&amp;date=[% reserveloo.date %]">
844                         [% IF ( reserveloo.lowestPriority ) %]
845                         <img src="[% interface %]/[% theme %]/img/go-bottom.png" alt="Unset lowest priority" />
846                         [% ELSE %]
847                         <img src="[% interface %]/[% theme %]/img/go-down.png" alt="Set to lowest priority" />
848                         [% END %]
849                 </a>
850         </td>
851     [% END %]
852
853         <td>
854            <a title="Cancel hold" href="request.pl?action=cancel&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;reserve_id=[% reserveloo.reserve_id %]&amp;date=[% reserveloo.date %]">
855                     <img src="[% interface %]/[% theme %]/img/x.png" alt="Cancel" />
856                 </a>
857         </td>
858
859         [% IF SuspendHoldsIntranet %]
860         <td>
861         [% UNLESS ( reserveloo.found ) %]
862             <input type="button" value="[% IF ( reserveloo.suspend ) %]Unsuspend[% ELSE %]Suspend[% END %]" onclick="window.location.href='request.pl?action=toggleSuspend&amp;reserve_id=[% reserveloo.reserve_id %]&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;date=[% reserveloo.date %]&amp;suspend_until=' + $('#suspend_until_[% reserveloo.reserve_id %]').val()" />
863
864             [% IF AutoResumeSuspendedHolds %]
865                 <label for="suspend_until_[% reserveloo.reserve_id %]">[% IF ( reserveloo.suspend ) %] on [% ELSE %] until [% END %]</label>
866                 <input name="suspend_until" id="suspend_until_[% reserveloo.reserve_id %]" size="10" readonly="readonly" value="[% reserveloo.suspend_until | $KohaDates %]" class="datepicker suspend_until_datepicker" />
867                 <a href='#' onclick="document.getElementById('suspend_until_[% reserveloo.reserve_id %]').value='';">Clear date</a>
868             [% ELSE %]
869                 <input type="hidden" name="suspend_until" id="suspend_until_[% reserveloo.reserve_id %]" value=""/>
870             [% END %]
871         [% ELSE %]
872                 <input type="hidden" name="suspend_until" value="" />
873         [% END %]
874         </td>
875         [% END # IF SuspendHoldsIntranet %]
876
877       </tr>
878
879   [% END %] <!-- existing reserveloop -->
880      </table>
881   [% END %]<!-- /reserveloop -->
882 [% END %]<!-- /biblioloop -->
883
884 <fieldset class="action">
885   <input type="submit" name="submit" value="Update hold(s)" />
886 </fieldset>
887 </fieldset>
888 </form>
889 [% END %]
890 [% END %]
891 </div>
892 </div>
893
894 <div class="yui-b">
895 [% UNLESS ( multi_hold ) %]
896   [% INCLUDE 'biblio-view-menu.inc' %]
897 [% END %]
898
899 </div>
900 </div>
901 [% INCLUDE 'intranet-bottom.inc' %]