View | Details | Raw Unified | Return to bug 30952
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-361 / +310 lines)
Lines 17-26 Link Here
17
    [% INCLUDE 'circ-search.inc' %]
17
    [% INCLUDE 'circ-search.inc' %]
18
[% END %]
18
[% END %]
19
[% INCLUDE 'doc-head-open.inc' %]
19
[% INCLUDE 'doc-head-open.inc' %]
20
[% SET libraries = Branches.all %]
21
[% SET categories = Categories.all.unblessed %]
22
[% SET columns = ['name', 'cardnumber', 'dateofbirth', 'category', 'branch', 'address', 'phone'] %]
23
[% PROCESS "patron-search.inc" %]
24
[% UNLESS ( multi_hold ) %]
20
[% UNLESS ( multi_hold ) %]
25
    <title>Place a hold on [% INCLUDE 'biblio-title-head.inc' %] &rsaquo; Holds &rsaquo; Circulation &rsaquo; Koha</title>
21
    <title>Place a hold on [% INCLUDE 'biblio-title-head.inc' %] &rsaquo; Holds &rsaquo; Circulation &rsaquo; Koha</title>
26
[% ELSE %]
22
[% ELSE %]
Lines 86-97 Link Here
86
                [% END %]
82
                [% END %]
87
            </li>
83
            </li>
88
        </ol>
84
        </ol>
89
        <ol>
90
            [% IF Koha.Preference('showLastPatron') %][% INCLUDE 'last-borrower.inc' %][% END %]
91
        </ol>
92
        <ol>
93
            <a class="toplinks" href="/cgi-bin/koha/help.pl" id="helper"><i class="fa fa-question-circle"></i> <span>Help</span></a>
94
        </ol>
95
    </nav>
85
    </nav>
96
[% END # UNLESS multi_hold %]
86
[% END # UNLESS multi_hold %]
97
87
Lines 104-110 Link Here
104
        [% END %]
94
        [% END %]
105
95
106
        <main>
96
        <main>
107
            <h1>Holds</h1>
108
97
109
            [% IF ( nobiblio ) %]
98
            [% IF ( nobiblio ) %]
110
                <div class="dialog alert">
99
                <div class="dialog alert">
Lines 131-143 Link Here
131
                    <p>Hold placed by : <strong> [% nextreservsurname | html %] [% nextreservfirstname | html %]</strong> at : <strong> [% branchname | html %] </strong>, Please transfer this item.
120
                    <p>Hold placed by : <strong> [% nextreservsurname | html %] [% nextreservfirstname | html %]</strong> at : <strong> [% branchname | html %] </strong>, Please transfer this item.
132
                    </p>
121
                    </p>
133
                    <form name="cancelReservewithtransfert" action="branchreserves.pl" method="post">
122
                    <form name="cancelReservewithtransfert" action="branchreserves.pl" method="post">
134
                        <input type="submit" class="principal" />
123
                        <input type="submit" class="button" />
135
                    </form>
124
                    </form>
136
                </div>
125
                </div>
137
            [% END %]
126
            [% END %]
138
127
139
            [% UNLESS ( multi_hold ) %]
128
            [% UNLESS ( multi_hold ) %]
140
                <h2>Place a hold on [% INCLUDE 'biblio-title.inc' link = 1 %] [% IF biblio.author %] by [% biblio.author | html %][% END %]</h2>
129
                <h2>Place a hold on [% INCLUDE 'biblio-title.inc' link = 1 %]</h2>
141
            [% ELSE %]
130
            [% ELSE %]
142
                <h2>
131
                <h2>
143
                    [% IF ( patron ) %]
132
                    [% IF ( patron ) %]
Lines 166-188 Link Here
166
                        <p>No club with this name, please, try another</p>
155
                        <p>No club with this name, please, try another</p>
167
                    </div>
156
                    </div>
168
                [% END %]
157
                [% END %]
169
                <fieldset>
158
                <fieldset class="brief">
170
                    [% UNLESS multi_hold %]
159
                    [% UNLESS multi_hold %]
171
                        [% IF clubcount %]
160
                        [% IF clubcount %]
172
                            <h2>Search patrons or clubs</h2>
161
                            <h3>Search patrons or clubs</h3>
173
                        [% ELSE %]
162
                        [% ELSE %]
174
                            <h2>Search patrons</h2>
163
                            <label>Search patrons</label>
175
                        [% END %]
164
                        [% END %]
176
                    [% END %]
165
                    [% END %]
177
                    <div id="circ_holds_select" class="toptabs">
166
                    <div id="circ_holds_select" class="toptabs">
178
                        <ul class="nav nav-tabs" role="tablist">
167
                        <ul>
179
                            <li role="presentation" class="active"><a href="#holds_patronsearch_pane" aria-controls="holds_patronsearch_pane" role="tab" data-toggle="tab">Patrons</a></li>
168
                            <li><a href="#holds_patronsearch_pane">Patrons</a></li>
180
                            [% IF clubcount %]
169
                            [% IF clubcount %]
181
                                <li role="presentation"><a href="#holds_clubsearch_pane" aria-controls="holds_clubsearch_pane" role="tab" data-toggle="tab">Clubs</a></li>
170
                                <li><a href="#holds_clubsearch_pane">Clubs</a></li>
182
                            [% END %]
171
                            [% END %]
183
                        </ul>
172
                        </ul>
184
                        <div id="holds_patronsearch_pane">
173
                        <div id="holds_patronsearch_pane">
185
                        [% PROCESS patron_search_filters_simple %]
186
                            <form id="holds_patronsearch" action="request.pl?biblionumbers=[% biblionumbers | html %]" method="post">
174
                            <form id="holds_patronsearch" action="request.pl?biblionumbers=[% biblionumbers | html %]" method="post">
187
                                <div class="hint">Enter patron card number or partial name:</div>
175
                                <div class="hint">Enter patron card number or partial name:</div>
188
                                <input type="text" size="40" id="patron" class="focus" name="findborrower" autocomplete="off" />
176
                                <input type="text" size="40" id="patron" class="focus" name="findborrower" autocomplete="off" />
Lines 210-254 Link Here
210
                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
198
                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
211
                                    [% END %]
199
                                    [% END %]
212
200
213
                                [% PROCESS patron_search_table table_id => 'table_borrowers', open_on_row_click => 1 %]
201
                                </form> <!-- /#holds_patronsearch -->
202
                                [% IF clubs %]
203
                                    [% INCLUDE 'clubs-table.inc' destination = "holds" %]
204
                                [% END %]
214
                            </div>
205
                            </div>
215
                            [% IF clubcount %]
206
                        [% END %]
216
                                <div id="holds_clubsearch_pane" role="tabpanel" class="tab-pane">
217
                                    <form id="holds_clubsearch" action="request.pl" method="post">
218
                                        <div class="hint">Enter club ID or partial name:</div>
219
                                        <input type="text" size="40" id="club" class="focus" name="findclub" autocomplete="off" />
220
                                        <input type="submit" value="Search" />
221
                                        [% FOREACH biblionumber IN biblionumbers %]
222
                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
223
                                        [% END %]
224
225
                                    </form> <!-- /#holds_patronsearch -->
226
                                    [% IF clubs %]
227
                                        [% INCLUDE 'clubs-table.inc' destination = "holds" %]
228
                                    [% END %]
229
                                </div>
230
                            [% END %]
231
                        </div> <!-- /.tab-content -->
232
                    </div>
207
                    </div>
233
                </fieldset>
208
                </fieldset>
234
            [% ELSIF club %]
209
            [% ELSIF club %]
235
                <div class="dialog alert hide clubalert">
210
                <div class="dialog alert hide clubalert">
236
                </div>
211
                </div>
237
                <fieldset class="rows">
212
                <fieldset class="rows">
238
                    <legend>Hold details</legend>
213
                    <h3>Hold details</h3>
239
                    <form action="/api/v1/clubs/[% club.id | html %]/holds" method="post" name="form" id="club-request-form">
214
                    <form action="/api/v1/clubs/[% club.id | html %]/holds" method="post" name="form" id="club-request-form">
240
215
241
                        [% IF ( multi_hold ) %]
216
                        [% IF ( multi_hold ) %]
217
                            <input type="hidden" name="biblionumbers" id="multi_hold_bibs" value="[% biblionumbers | html %]"/>
218
                            <input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
242
                            <input type="hidden" name="request" value="any"/>
219
                            <input type="hidden" name="request" value="any"/>
243
                            [% FOREACH biblioloo IN biblioloop %]
220
                            [% FOREACH biblioloo IN biblioloop %]
244
                                [% UNLESS biblioloo.none_avail %]
221
                                <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
245
                                    <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblioloo.biblionumber | html %]"/>
222
                                <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
246
                                    <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
247
                                    <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
248
                                [% END %]
249
                            [% END %]
223
                            [% END %]
250
                        [% ELSE %]
224
                        [% ELSE %]
251
                            <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblio.biblionumber | html %]"/>
225
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
252
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
226
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
253
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
227
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
254
                        [% END # /IF multi_hold %]
228
                        [% END # /IF multi_hold %]
Lines 311-324 Link Here
311
                            [% END %]
285
                            [% END %]
312
                        [% UNLESS ( multi_hold ) %]
286
                        [% UNLESS ( multi_hold ) %]
313
                            <fieldset class="action">
287
                            <fieldset class="action">
314
                                <input type="submit" class="principal" value="Place hold" />
288
                                <input type="submit" value="Place hold" />
315
                            </fieldset>
289
                            </fieldset>
316
                        [% ELSE %]
290
                        [% ELSE %]
317
                            <table id="requesttitles">
291
                            <table id="requesttitles">
318
                                <tr>
292
                                <tr>
319
                                    <th>&nbsp;</th>
293
                                    <th>&nbsp;</th>
320
                                    <th>Title</th>
294
                                    <th>Title</th>
321
                                    [% UNLESS Koha.Preference('item-level_itypes') %]
295
                                    [% UNLESS ( item_level_itypes ) %]
322
                                        <th>Item type</th>
296
                                        <th>Item type</th>
323
                                    [% END %]
297
                                    [% END %]
324
                                    <th>Priority</th>
298
                                    <th>Priority</th>
Lines 339-345 Link Here
339
                                            <ul>
313
                                            <ul>
340
                                                <li>
314
                                                <li>
341
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
315
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
342
                                                    [% IF biblioloo.author %] by [% biblioloo.author | html %][% END %]
343
                                                </li>
316
                                                </li>
344
                                                [% IF ( biblioloo.publicationyear ) %]
317
                                                [% IF ( biblioloo.publicationyear ) %]
345
                                                    <li>
318
                                                    <li>
Lines 351-359 Link Here
351
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
324
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
352
                                            [% END %]
325
                                            [% END %]
353
                                        </td>
326
                                        </td>
354
                                        [% UNLESS Koha.Preference('item-level_itypes') %]
327
                                        [% UNLESS ( item_level_itypes ) %]
355
                                            <td>
328
                                            <td>
356
                                                <img src="[% biblioloo.itemtype.image_location| html %]" alt="[% biblioloo.itemtype.translated_description | html %]" title="[% biblioloo.itemtype.translated_description | html %]" />
329
                                                <img src="[% biblioloo.imageurl | html %]" alt="[% biblioloo.itypename | html %]" title="[% biblioloo.itypename | html %]" />
357
                                            </td>
330
                                            </td>
358
                                        [% END %]
331
                                        [% END %]
359
                                        <td>[% biblioloo.rank | html %]</td>
332
                                        <td>[% biblioloo.rank | html %]</td>
Lines 403-409 Link Here
403
                    </div>
376
                    </div>
404
                [% END %]
377
                [% END %]
405
378
406
                [% IF ( no_reserves_allowed || exceeded_maxreserves || exceeded_holds_per_record || alreadyreserved || none_available || alreadypossession || ageRestricted || recall ) %]
379
                [% IF ( no_reserves_allowed || exceeded_maxreserves || exceeded_holds_per_record || alreadyreserved || none_available || alreadypossession || ageRestricted ) %]
407
                    <div class="dialog alert">
380
                    <div class="dialog alert">
408
381
409
                        [% UNLESS ( multi_hold ) %]
382
                        [% UNLESS ( multi_hold ) %]
Lines 425-432 Link Here
425
                                    <li> <strong>No items are available</strong> to be placed on hold.</li>
398
                                    <li> <strong>No items are available</strong> to be placed on hold.</li>
426
                                [% ELSIF ( maxreserves ) %]
399
                                [% ELSIF ( maxreserves ) %]
427
                                    <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">[% patron.firstname | html %] [% patron.surname | html %] </a> has too many holds.</li>
400
                                    <li><strong>Too many holds: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">[% patron.firstname | html %] [% patron.surname | html %] </a> has too many holds.</li>
428
                                [% ELSIF ( recall ) %]
429
                                    <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">[% patron.firstname | html %] [% patron.surname | html %]</a> has <strong>already placed a recall</strong> on this item.</li>
430
                                [% END # /IF exceeded_maxreserves %]
401
                                [% END # /IF exceeded_maxreserves %]
431
                            </ul>
402
                            </ul>
432
                        [% ELSE # UNLESS multi_hold %]
403
                        [% ELSE # UNLESS multi_hold %]
Lines 441-448 Link Here
441
                                        <li><strong>Too many holds for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]"> [% biblioloo.title | html %]</a>: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | html %]">[% patron.firstname | html %] [% patron.surname | html %] </a> can only place a maximum of [% max_holds_for_record | html %] hold(s) on this record.</li>
412
                                        <li><strong>Too many holds for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]"> [% biblioloo.title | html %]</a>: </strong> <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | html %]">[% patron.firstname | html %] [% patron.surname | html %] </a> can only place a maximum of [% max_holds_for_record | html %] hold(s) on this record.</li>
442
                                    [% END %]
413
                                    [% END %]
443
                                [% END %]
414
                                [% END %]
444
                            [% ELSIF ( none_available ) %]
445
                                <li><strong>No items available: </strong>One or more records have no items that can be held</li>
446
                            [% END # /IF exceeded_maxreserves %]
415
                            [% END # /IF exceeded_maxreserves %]
447
                        [% END # /UNLESS multi_hold %]
416
                        [% END # /UNLESS multi_hold %]
448
                    </div>
417
                    </div>
Lines 481-505 Link Here
481
                </div>
450
                </div>
482
451
483
                <fieldset class="rows">
452
                <fieldset class="rows">
484
                    <legend>Hold details</legend>
453
                    <h3>Hold details</h3>
485
                    <form action="placerequest.pl" method="post" name="form" id="hold-request-form">
454
                    <form action="placerequest.pl" method="post" name="form" id="hold-request-form">
486
455
487
                        <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
456
                        <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
488
                        [% FOREACH biblionumber IN biblionumbers %]
457
                        <input type="hidden" name="type" value="str8" />
489
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
458
490
                        [% END %]
491
                        [% IF ( multi_hold ) %]
459
                        [% IF ( multi_hold ) %]
460
                            <input type="hidden" name="biblionumbers" id="multi_hold_bibs" value="[% biblionumbers | html %]"/>
492
                            <input type="hidden" name="multi_holds" id="multi_holds" value="1" />
461
                            <input type="hidden" name="multi_holds" id="multi_holds" value="1" />
462
                            <input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
493
                            <input type="hidden" name="request" value="any"/>
463
                            <input type="hidden" name="request" value="any"/>
494
                            [% FOREACH biblioloo IN biblioloop %]
464
                            [% FOREACH biblioloo IN biblioloop %]
495
                                [% UNLESS biblioloo.none_avail %]
465
                                <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
496
                                    <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblioloo.biblionumber | html %]"/>
466
                                <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
497
                                    <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
498
                                    <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
499
                                [% END %]
500
                            [% END %]
467
                            [% END %]
501
                        [% ELSE %]
468
                        [% ELSE %]
502
                            <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblio.biblionumber | html %]"/>
469
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
503
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
470
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
504
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
471
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
505
                        [% END # /IF multi_hold %]
472
                        [% END # /IF multi_hold %]
Lines 580-585 Link Here
580
                                    [% ELSE %]
547
                                    [% ELSE %]
581
                                        <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
548
                                        <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
582
                                    [% END %]
549
                                    [% END %]
550
                                    <input type="hidden" name="biblioitem" value="[% biblioitemnumber | html %]" />
583
                                    <input type="hidden" name="alreadyreserved" value="[% alreadyreserved | html %]" />
551
                                    <input type="hidden" name="alreadyreserved" value="[% alreadyreserved | html %]" />
584
                                </li>
552
                                </li>
585
553
Lines 604-851 Link Here
604
                            <fieldset class="action">
572
                            <fieldset class="action">
605
                                [% IF ( patron.borrowernumber ) %]
573
                                [% IF ( patron.borrowernumber ) %]
606
                                    [% IF ( override_required ) %]
574
                                    [% IF ( override_required ) %]
607
                                        <button type="submit" class="btn btn-default warning" id="lientype"><i class="fa fa-exclamation-triangle "></i> Place hold</button>
575
                                        <button type="submit" class="btn btn-default warning"><i class="fa fa-exclamation-triangle "></i> Place hold</button>
608
                                    [% ELSIF ( none_available ) %]
576
                                    [% ELSIF ( none_available ) %]
609
                                        <button type="submit" disabled="disabled" class="btn btn-default btn-disabled" id="lientype">Place hold</button>
577
                                        <button type="submit" disabled="disabled" class="btn btn-default btn-disabled">Place hold</button>
610
                                    [% ELSE %]
578
                                    [% ELSE %]
611
                                        <button type="submit" class="btn btn-default" id="lientype">Place hold</button>
579
                                        <button type="submit" class="btn btn-default">Place hold</button>
612
                                    [% END %]
580
                                    [% END %]
613
                                [% END %]
581
                                [% END %]
614
                            </fieldset>
582
                            </fieldset>
615
583
616
                            [% biblio = biblioloop.0 %]
584
                            [% FOREACH bibitemloo IN bibitemloop %]
585
                                <ol>
586
                                    [% UNLESS ( item_level_itypes ) %]
587
                                        <li>
588
                                            <span class="label">Item type:</span>
589
                                            [% bibitemloo.description | html %]
590
                                        </li>
591
                                    [% END %]
617
592
618
                            <ol>
593
                                    [% IF ( bibitemloo.publicationyear ) %]
619
                                [% UNLESS Koha.Preference('item-level_itypes') %]
594
                                        <li>
620
                                    <li>
595
                                            <span class="label">Publication year:</span>
621
                                        <span class="label">Item typeX:</span>
596
                                            [% bibitemloo.publicationyear | html %]
622
                                        [% biblio.itemtype.translated_description | html %]
597
                                        </li>
623
                                    </li>
598
                                    [% END %]
624
                                [% END %]
599
                                </ol>
625
600
626
                                [% IF ( biblio.biblioitem.publicationyear ) %]
601
                                <h2 style="padding: 0 1em;">
627
                                    <li>
602
                                    Place a hold on a specific item
628
                                        <span class="label">Publication year:</span>
603
                                    [% IF bibitemloo.force_hold_level == 'item' %]
629
                                        [% biblio.biblioitem.publicationyear | html %]
604
                                         <span class="error"><em>(Required)</em></span>
630
                                    </li>
605
                                    [% END %]
631
                                [% END %]
606
                                </h2>
632
                            </ol>
633
607
634
                            <h2 style="padding: 0 1em;">
608
                                <table id="requestspecific">
635
                                Place a hold on a specific item
609
                                    <thead>
636
                                [% IF force_hold_level == 'item' %]
610
                                        <tr>
637
                                     <span class="error"><em>(Required)</em></span>
611
                                            <th>Hold</th>
638
                                [% END %]
612
                                            [% IF ( item_level_itypes ) %]
639
                            </h2>
613
                                                <th>Item type</th>
640
614
                                            [% END %]
641
                            <table id="requestspecific">
615
                                            <th>Barcode</th>
642
                                <thead>
616
                                            <th>Home library</th>
643
                                    <tr>
617
                                            <th>Last location</th>
644
                                        <th>Hold</th>
618
                                            [% IF itemdata_ccode %]
645
                                        <th>Allowed pickup locations</th>
619
                                                <th>Collection</th>
646
                                        [% IF Koha.Preference('item-level_itypes') %]
620
                                            [% END %]
647
                                            <th>Item type</th>
621
                                            <th>Call number</th>
648
                                        [% END %]
622
                                            <th>Copy number</th>
649
                                        <th>Barcode</th>
623
                                            [% IF itemdata_enumchron %]
650
                                        <th>Home library</th>
624
                                                <th>Vol no.</th>
651
                                        <th>Last location</th>
625
                                            [% END %]
652
                                        [% IF itemdata_ccode %]
626
                                            <th>Information</th>
653
                                            <th>Collection</th>
627
                                            <th>Allowed pickup locations</th>
654
                                        [% END %]
628
                                        </tr>
655
                                        <th>Call number</th>
629
                                    </thead>
656
                                        <th>Copy number</th>
630
                                    <tbody>
657
                                        [% IF itemdata_enumchron %]
631
                                        [% SET selected = 0 %]
658
                                            <th>Vol no.</th>
632
                                        [% FOREACH itemloo IN bibitemloo.itemloop %]
659
                                        [% END %]
633
                                            [% UNLESS ( itemloo.hide ) %]
660
                                        <th>Information</th>
634
                                                <tr class="[% itemloo.backgroundcolor | html %]">
661
                                    </tr>
635
                                                    <td>
662
                                </thead>
636
                                                        [% IF itemloo.force_hold_level == 'record' # Patron has placed a record level hold previously for this record %]
663
                                <tbody>
637
                                                            <span class="error">
664
                                    [% SET selected = 0 %]
638
                                                                <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
665
                                    [% FOREACH itemloo IN biblio.itemloop %]
639
                                                                Hold must be record level
666
                                        [% UNLESS ( itemloo.hide ) %]
640
                                                            </span>
667
                                            <tr class="[% itemloo.backgroundcolor | html %]">
641
                                                        [% ELSIF ( itemloo.available ) %]
668
                                                <td>
642
                                                            <input type="radio" name="checkitem" value="[% itemloo.itemnumber | html %]" />
669
                                                    [% IF force_hold_level == 'record' # Patron has placed a record level hold previously for this record %]
643
                                                        [% ELSIF ( itemloo.override ) %]
670
                                                        <span class="error">
644
                                                            <input type="radio" name="checkitem" class="needsoverride" value="[% itemloo.itemnumber | html %]" />
671
                                                            <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
645
                                                            <i class="fa fa-exclamation-triangle fa-lg" style="color:gold" title="Requires override of hold policy"/></i>
672
                                                            Hold must be record level
646
                                                        [% ELSE %]
673
                                                        </span>
647
                                                            <span class="error">
674
                                                    [% ELSIF ( itemloo.available ) %]
648
                                                                <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
675
                                                        <input type="radio" name="checkitem" value="[% itemloo.itemnumber | html %]" />
649
                                                                [% IF itemloo.not_holdable %]
676
                                                    [% ELSIF ( itemloo.override ) %]
650
                                                                    [% IF itemloo.not_holdable == 'damaged' %]
677
                                                        <input type="radio" name="checkitem" class="needsoverride" value="[% itemloo.itemnumber | html %]" />
651
                                                                        Item damaged
678
                                                        <i class="fa fa-exclamation-triangle fa-lg" style="color:gold" title="Requires override of hold policy"/></i>
652
                                                                    [% ELSIF itemloo.not_holdable == 'ageRestricted' %]
679
                                                    [% ELSE %]
653
                                                                        Age restricted
680
                                                        <span class="error">
654
                                                                    [% ELSIF itemloo.not_holdable == 'tooManyHoldsForThisRecord' %]
681
                                                            <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
655
                                                                        Exceeded max holds per record
682
                                                            [% IF itemloo.not_holdable %]
656
                                                                    [% ELSIF itemloo.not_holdable == 'tooManyReservesToday' %]
683
                                                                [% IF itemloo.not_holdable == 'damaged' %]
657
                                                                        Daily hold limit reached for patron
684
                                                                    <span>Item damaged</span>
658
                                                                    [% ELSIF itemloo.not_holdable == 'tooManyReserves' %]
685
                                                                [% ELSIF itemloo.not_holdable == 'ageRestricted' %]
659
                                                                        Too many holds
686
                                                                    <span>Age restricted</span>
660
                                                                    [% ELSIF itemloo.not_holdable == 'notReservable' %]
687
                                                                [% ELSIF itemloo.not_holdable == 'tooManyHoldsForThisRecord' %]
661
                                                                        Not holdable
688
                                                                    <span>Exceeded max holds per record</span>
662
                                                                    [% ELSIF itemloo.not_holdable == 'cannotReserveFromOtherBranches' %]
689
                                                                [% ELSIF itemloo.not_holdable == 'tooManyReservesToday' %]
663
                                                                        Patron is from different library
690
                                                                    <span>Daily hold limit reached for patron</span>
664
                                                                    [% ELSIF itemloo.not_holdable == 'branchNotInHoldGroup' %]
691
                                                                [% ELSIF itemloo.not_holdable == 'tooManyReserves' %]
665
                                                                        Cannot place hold from patron's library
692
                                                                    <span>Too many holds</span>
666
                                                                    [% ELSIF itemloo.not_holdable == 'itemAlreadyOnHold' %]
693
                                                                [% ELSIF itemloo.not_holdable == 'notReservable' %]
667
                                                                        Patron already has hold for this item
694
                                                                    <span>Not holdable</span>
668
                                                                    [% ELSIF itemloo.not_holdable == 'cannotBeTransferred' %]
695
                                                                [% ELSIF itemloo.not_holdable == 'cannotReserveFromOtherBranches' %]
669
                                                                        Cannot be transferred to pickup library
696
                                                                    <span>Patron is from different library</span>
670
                                                                    [% ELSIF itemloo.not_holdable == 'pickupNotInHoldGroup' %]
697
                                                                [% ELSIF itemloo.not_holdable == 'branchNotInHoldGroup' %]
671
                                                                        Only pickup locations within the same hold group are allowed
698
                                                                    <span>Cannot place hold from patron's library</span>
672
                                                                    [% ELSIF itemloo.not_holdable == 'noReservesAllowed' %]
699
                                                                [% ELSIF itemloo.not_holdable == 'itemAlreadyOnHold' %]
673
                                                                        No reserves are allowed on this item
700
                                                                    <span>Patron already has hold for this item</span>
674
                                                                    [% ELSIF itemloo.not_holdable == 'libraryNotPickupLocation' %]
701
                                                                [% ELSIF itemloo.not_holdable == 'cannotBeTransferred' %]
675
                                                                        Library is not a pickup location
702
                                                                    <span>Cannot be transferred to pickup library</span>
676
                                                                    [% ELSIF itemloo.not_holdable == 'no_valid_pickup_location' %]
703
                                                                [% ELSIF itemloo.not_holdable == 'pickupNotInHoldGroup' %]
677
                                                                        No valid pickup location
704
                                                                    <span>Only pickup locations within the same hold group are allowed</span>
678
                                                                    [% ELSE %]
705
                                                                [% ELSIF itemloo.not_holdable == 'noReservesAllowed' %]
679
                                                                        [% itemloo.not_holdable | html %]
706
                                                                    <span>No holds are allowed on this item</span>
680
                                                                    [% END %]
707
                                                                [% ELSIF itemloo.not_holdable == 'libraryNotPickupLocation' %]
708
                                                                    <span>Library is not a pickup location</span>
709
                                                                [% ELSIF itemloo.not_holdable == 'no_valid_pickup_location' %]
710
                                                                    <span>No valid pickup location</span>
711
                                                                [% ELSIF itemloo.not_holdable == 'notforloan' %]
712
                                                                    <span>Not for loan</span>
713
                                                                [% ELSE %]
714
                                                                    <span>[% itemloo.not_holdable | html %]</span>
715
                                                                [% END %]
681
                                                                [% END %]
682
                                                            </span>
683
                                                        [% END # /IF itemloo.force_hold_level %]
684
                                                    </td>
685
                                                    [% IF ( item_level_itypes ) %]
686
                                                        <td>
687
                                                            [% UNLESS ( noItemTypeImages ) %]
688
                                                                [% IF ( itemloo.imageurl ) %]<img src="[% itemloo.imageurl | html %]" alt="" /> <br /> [% END %]
716
                                                            [% END %]
689
                                                            [% END %]
717
                                                        </span>
690
                                                            [% itemloo.itypename | html %]
718
                                                    [% END # /IF force_hold_level %]
691
                                                        </td>
719
                                                </td>
720
                                                <td>
721
                                                [% IF (itemloo.pickup_locations_count > 0) %]
722
                                                    <select name="item_pickup_[% itemloo.itemnumber | html %]" class="pickup_locations" style="width:100%;"
723
                                                            data-item-id="[% itemloo.itemnumber | html %]"
724
                                                            data-patron-id="[% patron.borrowernumber | html %]"
725
                                                            data-pickup-location-source="item">
726
                                                    [% IF (itemloo.default_pickup_location) %]
727
                                                        <option value="[% itemloo.default_pickup_location.branchcode | html %]" selected="selected">[% itemloo.default_pickup_location.branchname | html %]</option>
728
                                                    [% END %]
692
                                                    [% END %]
729
                                                    </select>
730
                                                [% END %]
731
                                                </td>
732
                                                [% IF Koha.Preference('item-level_itypes') %]
733
                                                    <td>
693
                                                    <td>
734
                                                        [% UNLESS ( noItemTypeImages ) %]
694
                                                        [% itemloo.barcode | html %]
735
                                                            [% IF ( itemloo.itemtype.image_location) %]<img src="[% itemloo.itemtype.image_location | html %]" alt="" /> <br /> [% END %]
736
                                                        [% END %]
737
                                                        [% itemloo.itemtype.translated_description | html %]
738
                                                    </td>
695
                                                    </td>
739
                                                [% END %]
740
                                                <td>
741
                                                    [% itemloo.barcode | html %]
742
                                                </td>
743
                                                <td>
744
                                                    [% Branches.GetName( itemloo.homebranch ) | html %]
745
                                                </td>
746
                                                <td>
747
                                                    [% Branches.GetName( itemloo.holdingbranch ) | html %]
748
                                                </td>
749
                                                [% IF itemdata_ccode %]
750
                                                    <td>
696
                                                    <td>
751
                                                        [% IF ( itemloo.ccode ) %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => itemloo.ccode ) | html %][% END %]
697
                                                        [% Branches.GetName( itemloo.homebranch ) | html %]
752
                                                    </td>
698
                                                    </td>
753
                                                [% END %]
754
                                                <td>
755
                                                    [% itemloo.itemcallnumber | html %]
756
                                                </td>
757
                                                <td>
758
                                                    [% IF ( itemloo.copynumber ) %][% itemloo.copynumber | html %][% ELSE %]&nbsp;[% END %]
759
                                                </td>
760
                                                [% IF itemdata_enumchron %]
761
                                                    <td>
699
                                                    <td>
762
                                                        [% itemloo.enumchron | html %]
700
                                                        [% Branches.GetName( itemloo.holdingbranch ) | html %]
763
                                                    </td>
701
                                                    </td>
764
                                                [% END %]
702
                                                    [% IF itemdata_ccode %]
765
                                                [% IF ( itemloo.onloan ) %]
703
                                                        <td>
766
                                                    <td data-order="[% itemloo.date_due | html %]">
704
                                                            [% IF ( itemloo.ccode ) %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => itemloo.ccode ) | html %][% END %]
767
                                                        <span class="checkedout">Due [% itemloo.date_due | $KohaDates  as_due_date => 1 %]</span>
705
                                                        </td>
768
                                                [% ELSE %]
706
                                                    [% END %]
769
                                                    <td>
707
                                                    <td>
770
                                                        [% IF ( itemloo.transfertwhen ) %]
708
                                                        [% itemloo.itemcallnumber | html %]
771
                                                            In transit from [% Branches.GetName( itemloo.transfertfrom ) | html %],
709
                                                    </td>
772
                                                            to [% Branches.GetName( itemloo.transfertto ) | html %], since [% itemloo.transfertwhen | html %]
710
                                                    <td>
773
                                                        [% END %]
711
                                                        [% IF ( itemloo.copynumber ) %][% itemloo.copynumber | html %][% ELSE %]&nbsp;[% END %]
774
                                                [% END %]
712
                                                    </td>
775
713
                                                    [% IF itemdata_enumchron %]
776
                                                    [% IF ( itemloo.reservedate ) %]
714
                                                        <td>
777
                                                        [% IF ( itemloo.nocancel ) %]
715
                                                            [% itemloo.enumchron | html %]
778
                                                                Can't be cancelled when item is in transit
716
                                                        </td>
779
                                                        [% ELSE %]
717
                                                    [% END %]
780
                                                            [% IF ( itemloo.waitingdate ) %]Waiting[% ELSE %]On hold[% END %]
718
                                                    [% IF ( itemloo.onloan ) %]
781
                                                            [% IF ( itemloo.canreservefromotherbranches ) %]
719
                                                        <td data-order="[% itemloo.date_due | html %]">
782
                                                                for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% itemloo.ReservedFor.borrowernumber | uri %]">[% itemloo.ReservedFor.firstname | html %] [% itemloo.ReservedFor.surname | html %]</a>
720
                                                            <span class="checkedout">Due [% itemloo.date_due | $KohaDates  as_due_date => 1 %]</span>
721
                                                    [% ELSE %]
722
                                                        <td>
723
                                                            [% IF ( itemloo.transfertwhen ) %]
724
                                                                In transit from [% Branches.GetName( itemloo.transfertfrom ) | html %],
725
                                                                to [% Branches.GetName( itemloo.transfertto ) | html %], since [% itemloo.transfertwhen | html %]
783
                                                            [% END %]
726
                                                            [% END %]
784
                                                            [% IF ( itemloo.waitingdate ) %]at[% ELSE %]expected at[% END %]
727
                                                    [% END %]
785
                                                            [% Branches.GetName( itemloo.ExpectedAtLibrary ) | html %] since
728
786
                                                            [% IF ( itemloo.waitingdate ) %]
729
                                                        [% IF ( itemloo.reservedate ) %]
787
                                                                [% itemloo.waitingdate | $KohaDates %]
730
                                                            [% IF ( itemloo.nocancel ) %]
731
                                                                    Can't be cancelled when item is in transit
788
                                                            [% ELSE %]
732
                                                            [% ELSE %]
789
                                                                [% IF ( itemloo.reservedate ) %]
733
                                                                [% IF ( itemloo.waitingdate ) %]Waiting[% ELSE %]On hold[% END %]
790
                                                                    [% itemloo.reservedate | html %]
734
                                                                [% IF ( itemloo.canreservefromotherbranches ) %]
735
                                                                    for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% itemloo.ReservedFor.borrowernumber | uri %]">[% itemloo.ReservedFor.firstname | html %] [% itemloo.ReservedFor.surname | html %]</a>
791
                                                                [% END %]
736
                                                                [% END %]
792
                                                            [% END %].
737
                                                                [% IF ( itemloo.waitingdate ) %]at[% ELSE %]expected at[% END %]
793
                                                            <a class="info cancel-hold" href="modrequest.pl?CancelBiblioNumber=[% itemloo.biblionumber | html %]&amp;CancelBorrowerNumber=[% itemloo.ReservedFor.borrowernumber | html %]&amp;CancelItemnumber=[% itemloo.itemnumber | html %]">Cancel hold</a>
738
                                                                [% Branches.GetName( itemloo.ExpectedAtLibrary ) | html %] since
794
                                                        [% END # /IF itemloo.nocancel %]
739
                                                                [% IF ( itemloo.waitingdate ) %]
795
                                                    [% ELSE %]
740
                                                                    [% itemloo.waitingdate | $KohaDates %]
796
                                                        Not on hold
741
                                                                [% ELSE %]
797
                                                    [% END # /IF itemloo.reservedate %]
742
                                                                    [% IF ( itemloo.reservedate ) %]
743
                                                                        [% itemloo.reservedate | html %]
744
                                                                    [% END %]
745
                                                                [% END %].
746
                                                                <a class="info cancel-hold" href="modrequest.pl?CancelBiblioNumber=[% itemloo.biblionumber | html %]&amp;CancelBorrowerNumber=[% itemloo.ReservedFor.borrowernumber | html %]&amp;CancelItemnumber=[% itemloo.itemnumber | html %]">Cancel hold</a>
747
                                                            [% END # /IF itemloo.nocancel %]
748
                                                        [% ELSE %]
749
                                                            Not on hold
750
                                                        [% END # /IF itemloo.reservedate %]
798
751
799
                                                    [% IF itemloo.item_level_holds == "N" %]
752
                                                        [% IF itemloo.item_level_holds == "N" %]
800
                                                        <br/>Item level hold not allowed from OPAC
753
                                                            <br/>Item level hold not allowed from OPAC
801
                                                    [% ELSIF itemloo.item_level_holds == "F" %]
754
                                                        [% ELSIF itemloo.item_level_holds == "F" %]
802
                                                        <br/>Item level hold forced from OPAC
755
                                                            <br/>Item level hold forced from OPAC
803
                                                    [% END %]
756
                                                        [% END %]
804
757
805
                                                    [% IF ( itemloo.itemlost ) %]
758
                                                        [% IF ( itemloo.itemlost ) %]
806
                                                       <span class="lost">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => itemloo.itemlost ) | html %]</span>
759
                                                           <span class="lost">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => itemloo.itemlost ) | html %]</span>
807
                                                    [% END %]
760
                                                        [% END %]
808
761
809
                                                    [% IF ( itemloo.damaged ) %]
762
                                                        [% IF ( itemloo.damaged ) %]
810
                                                        <span class="dmg">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => itemloo.damaged ) | html %]</span>
763
                                                            <span class="dmg">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => itemloo.damaged ) | html %]</span>
811
                                                    [% END %]
764
                                                        [% END %]
812
765
813
                                                    [% IF ( itemloo.withdrawn ) %]
766
                                                        [% IF ( itemloo.withdrawn ) %]
814
                                                       <span class="wdn">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => itemloo.withdrawn ) | html %]</span>
767
                                                           <span class="wdn">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => itemloo.withdrawn ) | html %]</span>
815
                                                    [% END %]
768
                                                        [% END %]
816
769
817
                                                    [% IF ( itemloo.notforloan ) %]
770
                                                        [% IF ( itemloo.notforloan ) %]
818
                                                       <span class="nfl">Not for loan ([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => itemloo.notforloan ) | html %])</span>
771
                                                           <span class="nfl">Not for loan ([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => itemloo.notforloan ) | html %])</span>
819
                                                    [% ELSIF ( itemloo.notforloanitype ) %]
772
                                                        [% END %]
820
                                                       <span class="nfl">Not for loan (Itemtype not for loan)</span>
773
                                                    </td>
774
                                                    <td>
775
                                                    [% IF (itemloo.pickup_locations_count > 0) %]
776
                                                        <select name="item_pickup_[% itemloo.itemnumber | html %]" class="pickup_locations" style="width:100%;"
777
                                                                data-item-id="[% itemloo.itemnumber | html %]"
778
                                                                data-patron-id="[% patron.borrowernumber | html %]"
779
                                                                data-pickup-location-source="item">
780
                                                        [% IF (itemloo.default_pickup_location) %]
781
                                                            <option value="[% itemloo.default_pickup_location.branchcode | html %]" selected="selected">[% itemloo.default_pickup_location.branchname | html %]</option>
782
                                                        [% END %]
783
                                                        </select>
821
                                                    [% END %]
784
                                                    [% END %]
822
                                                </td>
785
                                                    </td>
823
                                            </tr>
786
                                                </tr>
824
                                        [% END # / UNLESS itemloo.hide %]
787
                                            [% END # / UNLESS itemloo.hide %]
825
                                    [% END # /FOREACH itemloo %]
788
                                        [% END # /FOREACH itemloo %]
826
                                </tbody>
789
                                    </tbody>
827
                            </table> <!-- /#requestspecific -->
790
                                </table> <!-- /#requestspecific -->
828
791
829
                            [% IF hiddencount %]
792
                                [% IF ( bibitemloo.hiddencount ) %]
830
                                <form>
793
                                    <form>
831
                                    <p class="hiddencount">
794
                                        <p class="hiddencount">
832
                                        <a href="request.pl?biblionumber=[% biblio.biblionumber | uri %]&amp;borrowernumber=[% borrowernumber | uri %]&amp;showallitems=1">Show all items ([% biblio.hiddencount | html %] hidden)</a>
795
                                            <a href="request.pl?biblionumber=[% bibitemloo.biblionumber | uri %]&amp;borrowernumber=[% bibitemloo.borrowernumber | uri %]&amp;showallitems=1">Show all items ([% bibitemloo.hiddencount | html %] hidden)</a>
833
                                    </p>
796
                                        </p>
834
                                </form>
797
                                    </form>
835
                            [% END # /IF hiddencount %]
798
                                [% END # /IF bibitemloo.hiddencount %]
799
                            [% END # /FOREACH bibitemloo %]
836
800
837
                        [% ELSE # /UNLESS multi_hold %]
801
                        [% ELSE # /UNLESS multi_hold %]
838
802
839
                            <table id="requesttitles">
803
                            <table id="requesttitles">
840
                                <tr>
804
                                <tr>
841
                                    <th>&nbsp;</th>
805
                                    <th>&nbsp;</th>
842
                                    <th>Pickup location</th>
843
                                    <th>Title</th>
806
                                    <th>Title</th>
844
                                    [% UNLESS Koha.Preference('item-level_itypes') %]
807
                                    [% UNLESS ( item_level_itypes ) %]
845
                                        <th>Item type</th>
808
                                        <th>Item type</th>
846
                                    [% END %]
809
                                    [% END %]
847
                                    <th>Priority</th>
810
                                    <th>Priority</th>
848
                                    <th>Information</th>
811
                                    <th>Information</th>
812
                                    <th>Pickup location</th>
849
                                </tr>
813
                                </tr>
850
                                [% FOREACH biblioloo IN biblioloop %]
814
                                [% FOREACH biblioloo IN biblioloop %]
851
                                    [% IF ( biblioloo.warn ) %]
815
                                    [% IF ( biblioloo.warn ) %]
Lines 855-882 Link Here
855
                                    [% END %]
819
                                    [% END %]
856
                                        <td>
820
                                        <td>
857
                                            [% UNLESS ( biblioloo.warn ) %]
821
                                            [% UNLESS ( biblioloo.warn ) %]
858
                                                <input class="multi_hold_item_checkbox" type="checkbox" checked="checked" title="[% biblioloo.biblionumber | html %]"/>
822
                                                    <input class="multi_hold_item_checkbox" type="checkbox" checked="checked" title="[% biblioloo.biblionumber | html %]"/>
859
                                            [% END %]
823
                                                </td>
860
                                        </td>
861
                                        <td>
862
                                            [% UNLESS ( biblioloo.none_avail || biblioloo.noitems ) %]
863
                                                <select name="pickup_[% biblioloo.biblionumber | html %]"
864
                                                        class="multi_pickup_select"
865
                                                        data-biblio-id="[% biblioloo.biblionumber | html %]"
866
                                                        data-patron-id="[% patron.borrowernumber | html %]"
867
                                                        data-pickup-locations='[% biblioloo.pickup_locations_codes.json | $raw %]'>
868
                                                    <option value=""></option>
869
                                                    [% FOREACH pickup_location IN biblioloo.pickup_locations %]
870
                                                        <option value="[% pickup_location.branchcode | html %]">[% pickup_location.branchname | html %]</option>
871
                                                    [% END %]
872
                                                </select>
873
                                            [% END %]
824
                                            [% END %]
874
                                        </td>
875
                                        <td>
825
                                        <td>
876
                                            <ul>
826
                                            <ul>
877
                                                <li>
827
                                                <li>
878
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
828
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
879
                                                    [% IF biblioloo.author %] by [% biblioloo.author | html %][% END %]
880
                                                </li>
829
                                                </li>
881
                                                [% IF ( biblioloo.publicationyear ) %]
830
                                                [% IF ( biblioloo.publicationyear ) %]
882
                                                    <li>
831
                                                    <li>
Lines 888-896 Link Here
888
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
837
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
889
                                            [% END %]
838
                                            [% END %]
890
                                        </td>
839
                                        </td>
891
                                        [% UNLESS Koha.Preference('item-level_itypes') %]
840
                                        [% UNLESS ( item_level_itypes ) %]
892
                                            <td>
841
                                            <td>
893
                                                <img src="[% biblioloo.itemtype.image_location | html %]" alt="[% biblioloo.itemtype.translated_description | html %]" title="[% biblioloo.itemtype.translated_description | html %]" />
842
                                                <img src="[% biblioloo.imageurl | html %]" alt="[% biblioloo.itypename | html %]" title="[% biblioloo.itypename | html %]" />
894
                                            </td>
843
                                            </td>
895
                                        [% END %]
844
                                        [% END %]
896
                                        <td>[% biblioloo.rank | html %]</td>
845
                                        <td>[% biblioloo.rank | html %]</td>
Lines 924-929 Link Here
924
                                                [% END %]
873
                                                [% END %]
925
                                            [% END %]
874
                                            [% END %]
926
                                        </td>
875
                                        </td>
876
                                        <td>
877
                                            [% UNLESS ( biblioloo.none_avail || biblioloo.noitems ) %]
878
                                                <select name="pickup_[% biblioloo.biblionumber | html %]"
879
                                                        class="multi_pickup_select"
880
                                                        data-biblio-id="[% biblioloo.biblionumber | html %]"
881
                                                        data-patron-id="[% patron.borrowernumber | html %]"
882
                                                        data-pickup-locations='[% biblioloo.pickup_locations_codes.json | $raw %]'>
883
                                                    <option value=""></option>
884
                                                    [% FOREACH pickup_location IN biblioloo.pickup_locations %]
885
                                                        <option value="[% pickup_location.branchcode | html %]">[% pickup_location.branchname | html %]</option>
886
                                                    [% END %]
887
                                                </select>
888
                                            [% END %]
889
                                        </td>
927
                                    </tr>
890
                                    </tr>
928
                                [% END # /FOREACH biblioloo %]
891
                                [% END # /FOREACH biblioloo %]
929
                            </table> <!-- /#requesttitles -->
892
                            </table> <!-- /#requesttitles -->
Lines 932-954 Link Here
932
895
933
                        <fieldset class="action">
896
                        <fieldset class="action">
934
                            [% IF ( patron AND patron.borrowernumber ) %]
897
                            [% IF ( patron AND patron.borrowernumber ) %]
935
                                [% IF ( multi_hold ) %]
898
                                [% IF ( override_required ) %]
936
                                    [% IF ( override_required ) %]
899
                                    <button type="submit" class="btn btn-default warning"><i class="fa fa-exclamation-triangle "></i> Place holds</button>
937
                                        <button type="submit" class="btn btn-default warning" id="lientype"><i class="fa fa-exclamation-triangle "></i> Place holds</button>
900
                                [% ELSIF ( none_available ) %]
938
                                    [% ELSIF ( no_bibs_available ) %]
901
                                    <button class="btn btn-default" type="submit">Place holds</button>
939
                                        <button type="submit" class="btn btn-default btn-disabled" disabled="disabled" id="lientype">Place holds</button>
940
                                    [% ELSIF ( none_available ) %]
941
                                        <button type="submit" class="btn btn-default" id="lientype">Place holds</button>
942
                                    [% ELSE %]
943
                                        <button type="submit" class="btn btn-default" id="multi_hold_submit">Place holds</button>
944
                                    [% END %]
945
                                [% ELSE %]
902
                                [% ELSE %]
946
                                    [% IF ( override_required ) %]
903
                                    [% IF ( multi_hold ) %]
947
                                        <button type="submit" class="btn btn-default warning" id="lientype"><i class="fa fa-exclamation-triangle "></i> Place hold</button>
904
                                        <button type="submit" class="btn btn-default" id="multi_hold_submit">Place holds</button>
948
                                    [% ELSIF ( none_available ) %]
949
                                        <button type="submit" class="btn btn-default btn-disabled" disabled="disabled" id="lientype">Place hold</button>
950
                                    [% ELSE %]
905
                                    [% ELSE %]
951
                                        <button type="submit" class="btn btn-default" id="lientype" id="lientype">Place hold</button>
906
                                        <button type="submit" class="btn btn-default">Place hold</button>
952
                                    [% END %]
907
                                    [% END %]
953
                                [% END %]
908
                                [% END %]
954
                            [% END # /IF patron %]
909
                            [% END # /IF patron %]
Lines 975-983 Link Here
975
                [% IF ( reserveloop ) %]
930
                [% IF ( reserveloop ) %]
976
                    <form id="existing_holds" name="T[% time | html %]" action="modrequest.pl" method="post" style="display:block">
931
                    <form id="existing_holds" name="T[% time | html %]" action="modrequest.pl" method="post" style="display:block">
977
                        [% IF ( multi_hold ) %]
932
                        [% IF ( multi_hold ) %]
978
                            [% FOREACH biblionumber IN biblionumbers %]
933
                            <input type = "hidden" name="biblionumbers" value="[% biblionumbers | html %]"/>
979
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
980
                            [% END %]
981
                        [% END %]
934
                        [% END %]
982
935
983
                        [% IF enqueued %]
936
                        [% IF enqueued %]
Lines 989-998 Link Here
989
942
990
                        <h2>Existing holds</h2>
943
                        <h2>Existing holds</h2>
991
                        <div id="toolbar" class="btn-toolbar">
944
                        <div id="toolbar" class="btn-toolbar">
992
                            <input type="submit" name="submit" class="principal" value="Update hold(s)" /> <button class="cancel_selected_holds" data-bulk="true"></button>
945
                            <input type="submit" name="submit" value="Update hold(s)" /> <button class="cancel_selected_holds" data-bulk="true"></button>
993
                        <fieldset id="cancellation-reason-fieldset" class="action">
946
                        <fieldset id="cancellation-reason-fieldset" class="action">
994
                            [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
947
                            [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
995
                            [% IF hold_cancellation.count %]
948
                            [% IF hold_cancellation %]
996
                                <label for="cancellation-reason">Cancellation reason: </label>
949
                                <label for="cancellation-reason">Cancellation reason: </label>
997
                                <select class="cancellation-reason" name="cancellation-reason" id="cancellation-reason">
950
                                <select class="cancellation-reason" name="cancellation-reason" id="cancellation-reason">
998
                                    <option value="">No reason given</option>
951
                                    <option value="">No reason given</option>
Lines 1115-1121 Link Here
1115
                                                                [% IF i %]
1068
                                                                [% IF i %]
1116
                                                                    [% ItemTypes.GetDescription( i ) | html %]
1069
                                                                    [% ItemTypes.GetDescription( i ) | html %]
1117
                                                                [% ELSE %]
1070
                                                                [% ELSE %]
1118
                                                                    <span>Any item type</span>
1071
                                                                    Any item type
1119
                                                                [% END %]
1072
                                                                [% END %]
1120
                                                            </h5>
1073
                                                            </h5>
1121
1074
Lines 1178-1184 Link Here
1178
1131
1179
                    <fieldset class="action">
1132
                    <fieldset class="action">
1180
                        [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
1133
                        [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
1181
                        [% IF hold_cancellation.count %]
1134
                        [% IF hold_cancellation %]
1182
                            <label for="cancellation-reason">Cancellation reason: </label>
1135
                            <label for="cancellation-reason">Cancellation reason: </label>
1183
                            <select class="cancellation-reason" name="modal-cancellation-reason" id="modal-cancellation-reason">
1136
                            <select class="cancellation-reason" name="modal-cancellation-reason" id="modal-cancellation-reason">
1184
                                <option value="">No reason given</option>
1137
                                <option value="">No reason given</option>
Lines 1200-1222 Link Here
1200
1153
1201
[% MACRO jsinclude BLOCK %]
1154
[% MACRO jsinclude BLOCK %]
1202
    [% INCLUDE 'datatables.inc' %]
1155
    [% INCLUDE 'datatables.inc' %]
1203
    [% INCLUDE 'calendar.inc' %]
1204
    [% INCLUDE 'columns_settings.inc' %]
1156
    [% INCLUDE 'columns_settings.inc' %]
1205
    [% Asset.js("lib/hc-sticky.js") | $raw %]
1157
    [% Asset.js("lib/hc-sticky.js") | $raw %]
1158
    [% Asset.js("js/circ-patron-search-results.js") | $raw %]
1206
    [% INCLUDE 'select2.inc' %]
1159
    [% INCLUDE 'select2.inc' %]
1207
    [% Asset.js("js/holds.js") | $raw%]
1160
    [% Asset.js("js/holds.js") | $raw%]
1208
1161
    [% INCLUDE 'calendar.inc' %]
1209
    [% SET url_biblio_params = "biblionumber=" _ biblionumbers.join("&amp;biblionumber=") %]
1210
    [% IF multi_hold %]
1211
        [% SET url_biblio_params = url_biblio_params _ "&amp;multi_hold=1" %]
1212
    [% END %]
1213
1214
    <script>
1162
    <script>
1215
        var Sticky;
1163
        var Sticky;
1216
        var biblionumbers = [[% biblionumbers.join(', ') | $raw %]];
1164
        var biblionumber = "[% biblionumber | $raw %]";
1217
        var borrowernumber = "[% patron.borrowernumber | $raw %]";
1165
        var borrowernumber = "[% patron.borrowernumber | $raw %]";
1218
        var patron_homebranch = "[% To.json( Branches.GetName( patron.branchcode ) ) | $raw %]";
1166
        var patron_homebranch = "[% To.json( Branches.GetName( patron.branchcode ) ) | $raw %]";
1219
        var override_items = {[% FOREACH biblio IN biblioloop %][% FOREACH itemloo IN biblio.itemloop %][% IF ( itemloo.override ) %]
1167
        var override_items = {[% FOREACH bibitemloo IN bibitemloop %][% FOREACH itemloo IN bibitemloo.itemloop %][% IF ( itemloo.override ) %]
1220
        [% itemloo.itemnumber | html %]: {
1168
        [% itemloo.itemnumber | html %]: {
1221
            homebranch: "[% To.json( Branches.GetName( itemloo.homebranch ) ) | $raw %]",
1169
            homebranch: "[% To.json( Branches.GetName( itemloo.homebranch ) ) | $raw %]",
1222
            holdallowed: "[% itemloo.holdallowed | html %]"
1170
            holdallowed: "[% itemloo.holdallowed | html %]"
Lines 1238-1243 Link Here
1238
        }
1186
        }
1239
1187
1240
        var MSG_CANCEL_SELECTED = _("Cancel selected (%s)");
1188
        var MSG_CANCEL_SELECTED = _("Cancel selected (%s)");
1189
        columns_settings_borrowers_table = [% TablesSettings.GetColumns( 'circ', 'circulation', 'table_borrowers', 'json' ) | $raw %];
1241
        $.fn.select2.defaults.set("width", "100%" );
1190
        $.fn.select2.defaults.set("width", "100%" );
1242
        $.fn.select2.defaults.set("dropdownAutoWidth", true );
1191
        $.fn.select2.defaults.set("dropdownAutoWidth", true );
1243
1192
Lines 1251-1270 Link Here
1251
                }
1200
                }
1252
            });
1201
            });
1253
1202
1254
            if( $("#circ_holds_select").length > 0 ){
1203
            [% SET active = clubs ? 1 : 0 %]
1255
                [% SET active = clubs ? 1 : 0 %]
1204
            $('#circ_holds_select').tabs({
1256
                /* Set active tab based on whether a club search was submitted */
1205
                active: [% active | $raw %],
1257
                var tabs = $("#circ_holds_select li:eq(" + [% active | $raw %] + ") a").tab("show");
1206
                activate: function(){
1258
                $( tabs[0].hash ).find("input.focus").focus();
1207
                    $(this).find("input.focus").focus();
1259
1208
                },
1260
                /* Change active focus when tabs change */
1209
                create: function(){
1261
                $("#circ_holds_select a[data-toggle='tab']").on("shown.bs.tab", function (e) {
1210
                    $(this).find("input.focus").focus();
1262
                    active_tab = e.target.hash;
1211
                }
1263
                    $( active_tab ).find("input.focus").focus();
1212
            });
1264
                });
1265
            }
1266
1267
1268
            function ToggleHoldsToPlace() {
1213
            function ToggleHoldsToPlace() {
1269
                if ( $("#requestany").prop('checked') ) {
1214
                if ( $("#requestany").prop('checked') ) {
1270
                    $("#holds_to_place_count").prop('disabled', false);
1215
                    $("#holds_to_place_count").prop('disabled', false);
Lines 1282-1288 Link Here
1282
                    var pickup = $("#pickup").val();
1227
                    var pickup = $("#pickup").val();
1283
                    var url = "?pickup=" + pickup;
1228
                    var url = "?pickup=" + pickup;
1284
                    url += "&borrowernumber=" + borrowernumber;
1229
                    url += "&borrowernumber=" + borrowernumber;
1285
                    url += "&biblionumber=" + biblionumbers[0];
1230
                    url += "&biblionumber=" + biblionumber;
1286
                    window.location.replace(url);
1231
                    window.location.replace(url);
1287
                });
1232
                });
1288
            [% END %]
1233
            [% END %]
Lines 1302-1307 Link Here
1302
            $("#club-request-form").on("submit", function() {
1247
            $("#club-request-form").on("submit", function() {
1303
                let $t = $(this);
1248
                let $t = $(this);
1304
                $('.clubalert, .holdalert').addClass('hide');
1249
                $('.clubalert, .holdalert').addClass('hide');
1250
                let biblionumbers = [biblionumber];
1251
                let biblionumbers_text;
1305
                const data = {
1252
                const data = {
1306
                    pickup_library_id: $('select[name="pickup"]').val()
1253
                    pickup_library_id: $('select[name="pickup"]').val()
1307
                };
1254
                };
Lines 1317-1329 Link Here
1317
                if($('input[name="default_patron_home"]:checked').length) {
1264
                if($('input[name="default_patron_home"]:checked').length) {
1318
                    data.default_patron_home = 1;
1265
                    data.default_patron_home = 1;
1319
                }
1266
                }
1267
                if($('input[name="biblionumbers"]').length) {
1268
                    biblionumbers_text = $('input[name="biblionumbers"]').val();
1269
                    biblionumbers = biblionumbers_text.replace(/\/$/, '').split('/')
1270
                }
1320
1271
1321
                const count = $('input[name="holds_to_place_count"]').length?$('input[name="holds_to_place_count"]').val():1;
1272
                const count = $('input[name="holds_to_place_count"]').length?$('input[name="holds_to_place_count"]').val():1;
1322
                var newloc = 'request.pl?';
1323
                biblionumbers.forEach(function (biblionumber) {
1324
                    newloc += '&biblionumber=' + biblionumber;
1325
                });
1326
1327
                biblionumbers.forEach(function(biblionumber) {
1273
                biblionumbers.forEach(function(biblionumber) {
1328
                    data.biblio_id = biblionumber;
1274
                    data.biblio_id = biblionumber;
1329
                    let options = {
1275
                    let options = {
Lines 1335-1341 Link Here
1335
                    for(let i = 0; i < count; i++) {
1281
                    for(let i = 0; i < count; i++) {
1336
                        $.ajax(options)
1282
                        $.ajax(options)
1337
                        .then(function(result) {
1283
                        .then(function(result) {
1338
                            document.location = newloc;
1284
                            let url = 'request.pl?biblionumber='+biblionumber;
1285
                            if(biblionumbers_text) {
1286
                                url = 'request.pl?biblionumbers='+biblionumbers_text;
1287
                            }
1288
                            document.location = url;
1339
                        })
1289
                        })
1340
                        .fail(function(err) {
1290
                        .fail(function(err) {
1341
                            var message = err.responseJSON.error;
1291
                            var message = err.responseJSON.error;
Lines 1430-1435 Link Here
1430
1380
1431
        function checkMultiHold() {
1381
        function checkMultiHold() {
1432
1382
1383
            var biblionumbers = "";
1433
            var selected_bibs = $(".multi_hold_item_checkbox:checked");
1384
            var selected_bibs = $(".multi_hold_item_checkbox:checked");
1434
            if ( selected_bibs.length > 0 ) {
1385
            if ( selected_bibs.length > 0 ) {
1435
                // there are biblios selected in the form!
1386
                // there are biblios selected in the form!
Lines 1442-1447 Link Here
1442
                    }
1393
                    }
1443
                    else {
1394
                    else {
1444
                        var bibnum = $(this).attr("title");
1395
                        var bibnum = $(this).attr("title");
1396
                        biblionumbers += bibnum + "/";
1445
                    }
1397
                    }
1446
                });
1398
                });
1447
                if ( pickup_not_set > 0 ) {
1399
                if ( pickup_not_set > 0 ) {
Lines 1454-1466 Link Here
1454
                return false;
1406
                return false;
1455
            }
1407
            }
1456
1408
1409
            var badSpans = $(".not_holdable");
1410
            var badBibs = "";
1411
            $(badSpans).each(function() {
1412
                var bibnum = $(this).attr("title");
1413
                badBibs += bibnum + "/";
1414
            });
1415
1416
            $("#multi_hold_bibs").val(biblionumbers);
1417
            $("#bad_bibs").val(badBibs);
1418
1457
            $('#hold-request-form').preventDoubleFormSubmit();
1419
            $('#hold-request-form').preventDoubleFormSubmit();
1458
1420
1459
            return true;
1421
            return true;
1460
        }
1422
        }
1461
1423
1462
         $(document).ready(function() {
1424
         $(document).ready(function() {
1463
1464
            $("#always_show_holds").change(function(){
1425
            $("#always_show_holds").change(function(){
1465
                if( $(this).prop('checked') ){
1426
                if( $(this).prop('checked') ){
1466
                    document.cookie = 'always_show_holds=DO';
1427
                    document.cookie = 'always_show_holds=DO';
Lines 1548-1555 Link Here
1548
            $("#cancelModalConfirmBtn").on("click",function(e) {
1509
            $("#cancelModalConfirmBtn").on("click",function(e) {
1549
                let link;
1510
                let link;
1550
                if(cancel_link.data('bulk')) {
1511
                if(cancel_link.data('bulk')) {
1551
                    [% SET data_url = 'biblionumber=' _ biblionumbers.join('&biblionumber=') %]
1512
                    [% IF biblionumbers %]
1552
                    link = `request.pl?[% data_url | url %]&amp;action=cancelBulk&amp;ids=${$('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')).join(',')}`;
1513
                        link = `request.pl?biblionumbers=[% biblionumbers | url %]&amp;action=cancelBulk&amp;ids=${$('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')).join(',')}`;
1514
                    [% ELSE %]
1515
                        link = `request.pl?biblionumber=[% biblionumber | url %]&amp;action=cancelBulk&amp;ids=${$('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')).join(',')}`;
1516
                    [% END %]
1553
                } else {
1517
                } else {
1554
                    let borrowernumber = cancel_link.data('borrowernumber');
1518
                    let borrowernumber = cancel_link.data('borrowernumber');
1555
                    let biblionumber = cancel_link.data('biblionumber');
1519
                    let biblionumber = cancel_link.data('biblionumber');
Lines 1566-1576 Link Here
1566
1530
1567
            [% UNLESS ( patron || patron.borrowernumber || borrowers || noitems || nobiblio ) %]
1531
            [% UNLESS ( patron || patron.borrowernumber || borrowers || noitems || nobiblio ) %]
1568
                [% IF ( PatronAutoComplete ) %]
1532
                [% IF ( PatronAutoComplete ) %]
1569
                $( "#search_patron_filter" ).autocomplete({
1533
                $( "#patron" ).autocomplete({
1570
                    source: "/cgi-bin/koha/circ/ysearch.pl",
1534
                    source: "/cgi-bin/koha/circ/ysearch.pl",
1571
                    minLength: 3,
1535
                    minLength: 3,
1572
                    select: function( event, ui ) {
1536
                    select: function( event, ui ) {
1573
                        document.location.href = '/cgi-bin/koha/reserve/request.pl?[% url_biblio_params | url %]&borrowernumber=' + ui.item.borrowernumber;
1537
                        $( "#patron" ).val( ui.item.cardnumber );
1538
                        $( "#holds_patronsearch" ).submit();
1539
                        return false;
1574
                    }
1540
                    }
1575
                })
1541
                })
1576
                .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
1542
                .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
Lines 1597-1603 Link Here
1597
                };
1563
                };
1598
                [% END %]
1564
                [% END %]
1599
            [% END %]
1565
            [% END %]
1600
1601
            Sticky = $("#toolbar");
1566
            Sticky = $("#toolbar");
1602
            Sticky.hcSticky({
1567
            Sticky.hcSticky({
1603
                stickTo: "#existing_holds",
1568
                stickTo: "#existing_holds",
Lines 1648-1670 Link Here
1648
                }
1613
                }
1649
                return false;
1614
                return false;
1650
            });
1615
            });
1651
        });
1652
    </script>
1653
1616
1654
    <script>
1655
        table_settings = [% TablesSettings.GetColumns( 'circ', 'circulation', 'table_borrowers', 'json' ) | $raw %];
1656
    </script>
1657
1658
    [% PROCESS patron_search_js table_id => 'table_borrowers', categories => categories, libraries => libraries, extended_attribute_types => attribute_type_codes, columns => columns, open_on_row_click => 1, on_click_url => '/cgi-bin/koha/reserve/request.pl?' _ url_biblio_params, redirect_if_one_result => 1, redirect_url => '/cgi-bin/koha/reserve/request.pl?' _ url_biblio_params, redirect_if_attribute_equal => 'cardnumber' %]
1659
    <script>
1660
        $(document).ready(function() {
1661
            $("#holds_patronsearch").on("submit", filter);
1662
        });
1617
        });
1663
        $('.printholdslip').click(function(){
1664
                var reserve_id = $(this).attr('data-reserve_id');
1665
                window.open("/cgi-bin/koha/circ/hold-transfer-slip.pl?reserve_id=" + reserve_id);
1666
                return false;
1667
        })
1668
    </script>
1618
    </script>
1669
[% END %]
1619
[% END %]
1670
1620
1671
- 

Return to bug 30952