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