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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-342 / +287 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 150-161 Link Here
150
                [% END %]
146
                [% END %]
151
            </li>
147
            </li>
152
        </ol>
148
        </ol>
153
        <ol>
154
            [% IF Koha.Preference('showLastPatron') %][% INCLUDE 'last-borrower.inc' %][% END %]
155
        </ol>
156
        <ol>
157
            <a class="toplinks" href="/cgi-bin/koha/help.pl" id="helper"><i class="fa fa-question-circle"></i> <span>Help</span></a>
158
        </ol>
159
    </nav>
149
    </nav>
160
[% END # UNLESS multi_hold %]
150
[% END # UNLESS multi_hold %]
161
151
Lines 168-174 Link Here
168
        [% END %]
158
        [% END %]
169
159
170
        <main>
160
        <main>
171
            <h1>Holds</h1>
172
161
173
            [% IF ( nobiblio ) %]
162
            [% IF ( nobiblio ) %]
174
                <div class="dialog alert">
163
                <div class="dialog alert">
Lines 195-207 Link Here
195
                    <p>Hold placed by : <strong> [% nextreservsurname | html %] [% nextreservfirstname | html %]</strong> at : <strong> [% branchname | html %] </strong>, Please transfer this item.
184
                    <p>Hold placed by : <strong> [% nextreservsurname | html %] [% nextreservfirstname | html %]</strong> at : <strong> [% branchname | html %] </strong>, Please transfer this item.
196
                    </p>
185
                    </p>
197
                    <form name="cancelReservewithtransfert" action="branchreserves.pl" method="post">
186
                    <form name="cancelReservewithtransfert" action="branchreserves.pl" method="post">
198
                        <input type="submit" class="principal" />
187
                        <input type="submit" class="button" />
199
                    </form>
188
                    </form>
200
                </div>
189
                </div>
201
            [% END %]
190
            [% END %]
202
191
203
            [% UNLESS ( multi_hold ) %]
192
            [% UNLESS ( multi_hold ) %]
204
                <h2>Place a hold on [% INCLUDE 'biblio-title.inc' link = 1 %] [% IF biblio.author %] by [% biblio.author | html %][% END %]</h2>
193
                <h2>Place a hold on [% INCLUDE 'biblio-title.inc' link = 1 %]</h2>
205
            [% ELSE %]
194
            [% ELSE %]
206
                <h2>
195
                <h2>
207
                    [% IF ( patron ) %]
196
                    [% IF ( patron ) %]
Lines 230-252 Link Here
230
                        <p>No club with this name, please, try another</p>
219
                        <p>No club with this name, please, try another</p>
231
                    </div>
220
                    </div>
232
                [% END %]
221
                [% END %]
233
                <fieldset>
222
                <fieldset class="brief">
234
                    [% UNLESS multi_hold %]
223
                    [% UNLESS multi_hold %]
235
                        [% IF clubcount %]
224
                        [% IF clubcount %]
236
                            <h2>Search patrons or clubs</h2>
225
                            <h3>Search patrons or clubs</h3>
237
                        [% ELSE %]
226
                        [% ELSE %]
238
                            <h2>Search patrons</h2>
227
                            <label>Search patrons</label>
239
                        [% END %]
228
                        [% END %]
240
                    [% END %]
229
                    [% END %]
241
                    <div id="circ_holds_select" class="toptabs">
230
                    <div id="circ_holds_select" class="toptabs">
242
                        <ul class="nav nav-tabs" role="tablist">
231
                        <ul>
243
                            <li role="presentation" class="active"><a href="#holds_patronsearch_pane" aria-controls="holds_patronsearch_pane" role="tab" data-toggle="tab">Patrons</a></li>
232
                            <li><a href="#holds_patronsearch_pane">Patrons</a></li>
244
                            [% IF clubcount %]
233
                            [% IF clubcount %]
245
                                <li role="presentation"><a href="#holds_clubsearch_pane" aria-controls="holds_clubsearch_pane" role="tab" data-toggle="tab">Clubs</a></li>
234
                                <li><a href="#holds_clubsearch_pane">Clubs</a></li>
246
                            [% END %]
235
                            [% END %]
247
                        </ul>
236
                        </ul>
248
                        <div id="holds_patronsearch_pane">
237
                        <div id="holds_patronsearch_pane">
249
                        [% PROCESS patron_search_filters_simple %]
250
                            <form id="holds_patronsearch" action="request.pl?biblionumbers=[% biblionumbers | html %]" method="post">
238
                            <form id="holds_patronsearch" action="request.pl?biblionumbers=[% biblionumbers | html %]" method="post">
251
                                <div class="hint">Enter patron card number or partial name:</div>
239
                                <div class="hint">Enter patron card number or partial name:</div>
252
                                <input type="text" size="40" id="patron" class="focus" name="findborrower" autocomplete="off" />
240
                                <input type="text" size="40" id="patron" class="focus" name="findborrower" autocomplete="off" />
Lines 274-318 Link Here
274
                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
262
                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
275
                                    [% END %]
263
                                    [% END %]
276
264
277
                                [% PROCESS patron_search_table table_id => 'table_borrowers', open_on_row_click => 1 %]
265
                                </form> <!-- /#holds_patronsearch -->
266
                                [% IF clubs %]
267
                                    [% INCLUDE 'clubs-table.inc' destination = "holds" %]
268
                                [% END %]
278
                            </div>
269
                            </div>
279
                            [% IF clubcount %]
270
                        [% END %]
280
                                <div id="holds_clubsearch_pane" role="tabpanel" class="tab-pane">
281
                                    <form id="holds_clubsearch" action="request.pl" method="post">
282
                                        <div class="hint">Enter club ID or partial name:</div>
283
                                        <input type="text" size="40" id="club" class="focus" name="findclub" autocomplete="off" />
284
                                        <input type="submit" value="Search" />
285
                                        [% FOREACH biblionumber IN biblionumbers %]
286
                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
287
                                        [% END %]
288
289
                                    </form> <!-- /#holds_patronsearch -->
290
                                    [% IF clubs %]
291
                                        [% INCLUDE 'clubs-table.inc' destination = "holds" %]
292
                                    [% END %]
293
                                </div>
294
                            [% END %]
295
                        </div> <!-- /.tab-content -->
296
                    </div>
271
                    </div>
297
                </fieldset>
272
                </fieldset>
298
            [% ELSIF club %]
273
            [% ELSIF club %]
299
                <div class="dialog alert hide clubalert">
274
                <div class="dialog alert hide clubalert">
300
                </div>
275
                </div>
301
                <fieldset class="rows">
276
                <fieldset class="rows">
302
                    <legend>Hold details</legend>
277
                    <h3>Hold details</h3>
303
                    <form action="/api/v1/clubs/[% club.id | html %]/holds" method="post" name="form" id="club-request-form">
278
                    <form action="/api/v1/clubs/[% club.id | html %]/holds" method="post" name="form" id="club-request-form">
304
279
305
                        [% IF ( multi_hold ) %]
280
                        [% IF ( multi_hold ) %]
281
                            <input type="hidden" name="biblionumbers" id="multi_hold_bibs" value="[% biblionumbers | html %]"/>
282
                            <input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
306
                            <input type="hidden" name="request" value="any"/>
283
                            <input type="hidden" name="request" value="any"/>
307
                            [% FOREACH biblioloo IN biblioloop %]
284
                            [% FOREACH biblioloo IN biblioloop %]
308
                                [% UNLESS biblioloo.none_avail %]
285
                                <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
309
                                    <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblioloo.biblionumber | html %]"/>
286
                                <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
310
                                    <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
311
                                    <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
312
                                [% END %]
313
                            [% END %]
287
                            [% END %]
314
                        [% ELSE %]
288
                        [% ELSE %]
315
                            <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblio.biblionumber | html %]"/>
289
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
316
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
290
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
317
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
291
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
318
                        [% END # /IF multi_hold %]
292
                        [% END # /IF multi_hold %]
Lines 375-388 Link Here
375
                            [% END %]
349
                            [% END %]
376
                        [% UNLESS ( multi_hold ) %]
350
                        [% UNLESS ( multi_hold ) %]
377
                            <fieldset class="action">
351
                            <fieldset class="action">
378
                                <input type="submit" class="principal" value="Place hold" />
352
                                <input type="submit" value="Place hold" />
379
                            </fieldset>
353
                            </fieldset>
380
                        [% ELSE %]
354
                        [% ELSE %]
381
                            <table id="requesttitles">
355
                            <table id="requesttitles">
382
                                <tr>
356
                                <tr>
383
                                    <th>&nbsp;</th>
357
                                    <th>&nbsp;</th>
384
                                    <th>Title</th>
358
                                    <th>Title</th>
385
                                    [% UNLESS Koha.Preference('item-level_itypes') %]
359
                                    [% UNLESS ( item_level_itypes ) %]
386
                                        <th>Item type</th>
360
                                        <th>Item type</th>
387
                                    [% END %]
361
                                    [% END %]
388
                                    <th>Priority</th>
362
                                    <th>Priority</th>
Lines 403-409 Link Here
403
                                            <ul>
377
                                            <ul>
404
                                                <li>
378
                                                <li>
405
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
379
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
406
                                                    [% IF biblioloo.author %] by [% biblioloo.author | html %][% END %]
407
                                                </li>
380
                                                </li>
408
                                                [% IF ( biblioloo.publicationyear ) %]
381
                                                [% IF ( biblioloo.publicationyear ) %]
409
                                                    <li>
382
                                                    <li>
Lines 415-423 Link Here
415
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
388
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
416
                                            [% END %]
389
                                            [% END %]
417
                                        </td>
390
                                        </td>
418
                                        [% UNLESS Koha.Preference('item-level_itypes') %]
391
                                        [% UNLESS ( item_level_itypes ) %]
419
                                            <td>
392
                                            <td>
420
                                                <img src="[% biblioloo.itemtype.image_location| html %]" alt="[% biblioloo.itemtype.translated_description | html %]" title="[% biblioloo.itemtype.translated_description | html %]" />
393
                                                <img src="[% biblioloo.imageurl | html %]" alt="[% biblioloo.itypename | html %]" title="[% biblioloo.itypename | html %]" />
421
                                            </td>
394
                                            </td>
422
                                        [% END %]
395
                                        [% END %]
423
                                        <td>[% biblioloo.rank | html %]</td>
396
                                        <td>[% biblioloo.rank | html %]</td>
Lines 466-472 Link Here
466
                    </div>
439
                    </div>
467
                [% END %]
440
                [% END %]
468
441
469
                [% IF ( no_reserves_allowed || exceeded_maxreserves || exceeded_holds_per_record || alreadyreserved || none_available || alreadypossession || ageRestricted || recall ) %]
442
                [% IF ( no_reserves_allowed || exceeded_maxreserves || exceeded_holds_per_record || alreadyreserved || none_available || alreadypossession || ageRestricted ) %]
470
                    <div class="dialog alert">
443
                    <div class="dialog alert">
471
444
472
                        [% UNLESS ( multi_hold ) %]
445
                        [% UNLESS ( multi_hold ) %]
Lines 504-511 Link Here
504
                                        <li><strong>Too many holds for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]"> [% biblioloo.title | html %]</a>:</strong> [% INCLUDE 'patron-title.inc' patron => patron no_title => 1 no_cardnumber => 1 hide_patron_infos_if_needed => 1 %] can only place a maximum of [% max_holds_for_record | html %] hold(s) on this record.</li>
477
                                        <li><strong>Too many holds for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]"> [% biblioloo.title | html %]</a>:</strong> [% INCLUDE 'patron-title.inc' patron => patron no_title => 1 no_cardnumber => 1 hide_patron_infos_if_needed => 1 %] can only place a maximum of [% max_holds_for_record | html %] hold(s) on this record.</li>
505
                                    [% END %]
478
                                    [% END %]
506
                                [% END %]
479
                                [% END %]
507
                            [% ELSIF ( none_available ) %]
508
                                <li><strong>No items available: </strong>One or more records have no items that can be held</li>
509
                            [% END # /IF exceeded_maxreserves %]
480
                            [% END # /IF exceeded_maxreserves %]
510
                        [% END # /UNLESS multi_hold %]
481
                        [% END # /UNLESS multi_hold %]
511
                    </div>
482
                    </div>
Lines 544-568 Link Here
544
                </div>
515
                </div>
545
516
546
                <fieldset class="rows">
517
                <fieldset class="rows">
547
                    <legend>Hold details</legend>
518
                    <h3>Hold details</h3>
548
                    <form action="placerequest.pl" method="post" name="form" id="hold-request-form">
519
                    <form action="placerequest.pl" method="post" name="form" id="hold-request-form">
549
520
550
                        <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
521
                        <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
551
                        [% FOREACH biblionumber IN biblionumbers %]
522
                        <input type="hidden" name="type" value="str8" />
552
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
523
553
                        [% END %]
554
                        [% IF ( multi_hold ) %]
524
                        [% IF ( multi_hold ) %]
525
                            <input type="hidden" name="biblionumbers" id="multi_hold_bibs" value="[% biblionumbers | html %]"/>
555
                            <input type="hidden" name="multi_holds" id="multi_holds" value="1" />
526
                            <input type="hidden" name="multi_holds" id="multi_holds" value="1" />
527
                            <input type="hidden" name="bad_bibs" id="bad_bibs" value=""/>
556
                            <input type="hidden" name="request" value="any"/>
528
                            <input type="hidden" name="request" value="any"/>
557
                            [% FOREACH biblioloo IN biblioloop %]
529
                            [% FOREACH biblioloo IN biblioloop %]
558
                                [% UNLESS biblioloo.none_avail %]
530
                                <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
559
                                    <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblioloo.biblionumber | html %]"/>
531
                                <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
560
                                    <input type="hidden" name="title_[% biblioloo.biblionumber | html %]" value="[% biblioloo.title | html %]"/>
561
                                    <input type="hidden" name="rank_[% biblioloo.biblionumber | html %]" value="[% biblioloo.rank | html %]"/>
562
                                [% END %]
563
                            [% END %]
532
                            [% END %]
564
                        [% ELSE %]
533
                        [% ELSE %]
565
                            <input type="hidden" name="holdable_bibs" id="holdable_bibs" value="[% biblio.biblionumber | html %]"/>
534
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
566
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
535
                            <input type="hidden" name="title" value="[% biblio.title | html %]" />
567
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
536
                            <input type="hidden" name="rank-request" value="[% fixedRank | html %]" />
568
                        [% END # /IF multi_hold %]
537
                        [% END # /IF multi_hold %]
Lines 643-648 Link Here
643
                                    [% ELSE %]
612
                                    [% ELSE %]
644
                                        <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
613
                                        <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
645
                                    [% END %]
614
                                    [% END %]
615
                                    <input type="hidden" name="biblioitem" value="[% biblioitemnumber | html %]" />
646
                                    <input type="hidden" name="alreadyreserved" value="[% alreadyreserved | html %]" />
616
                                    <input type="hidden" name="alreadyreserved" value="[% alreadyreserved | html %]" />
647
                                </li>
617
                                </li>
648
618
Lines 667-834 Link Here
667
                            <fieldset class="action">
637
                            <fieldset class="action">
668
                                [% IF ( patron.borrowernumber ) %]
638
                                [% IF ( patron.borrowernumber ) %]
669
                                    [% IF ( override_required ) %]
639
                                    [% IF ( override_required ) %]
670
                                        <button type="submit" class="btn btn-default warning" id="lientype"><i class="fa fa-exclamation-triangle "></i> Place hold</button>
640
                                        <button type="submit" class="btn btn-default warning"><i class="fa fa-exclamation-triangle "></i> Place hold</button>
671
                                    [% ELSIF ( none_available ) %]
641
                                    [% ELSIF ( none_available ) %]
672
                                        <button type="submit" disabled="disabled" class="btn btn-default btn-disabled" id="lientype">Place hold</button>
642
                                        <button type="submit" disabled="disabled" class="btn btn-default btn-disabled">Place hold</button>
673
                                    [% ELSE %]
643
                                    [% ELSE %]
674
                                        <button type="submit" class="btn btn-default" id="lientype">Place hold</button>
644
                                        <button type="submit" class="btn btn-default">Place hold</button>
675
                                    [% END %]
645
                                    [% END %]
676
                                [% END %]
646
                                [% END %]
677
                            </fieldset>
647
                            </fieldset>
678
648
679
                            [% biblio = biblioloop.0 %]
649
                            [% FOREACH bibitemloo IN bibitemloop %]
650
                                <ol>
651
                                    [% UNLESS ( item_level_itypes ) %]
652
                                        <li>
653
                                            <span class="label">Item type:</span>
654
                                            [% bibitemloo.description | html %]
655
                                        </li>
656
                                    [% END %]
680
657
681
                            <ol>
658
                                    [% IF ( bibitemloo.publicationyear ) %]
682
                                [% UNLESS Koha.Preference('item-level_itypes') %]
659
                                        <li>
683
                                    <li>
660
                                            <span class="label">Publication year:</span>
684
                                        <span class="label">Item typeX:</span>
661
                                            [% bibitemloo.publicationyear | html %]
685
                                        [% biblio.itemtype.translated_description | html %]
662
                                        </li>
686
                                    </li>
663
                                    [% END %]
687
                                [% END %]
664
                                </ol>
688
665
689
                                [% IF ( biblio.biblioitem.publicationyear ) %]
666
                                <h2 style="padding: 0 1em;">
690
                                    <li>
667
                                    Place a hold on a specific item
691
                                        <span class="label">Publication year:</span>
668
                                    [% IF bibitemloo.force_hold_level == 'item' %]
692
                                        [% biblio.biblioitem.publicationyear | html %]
669
                                         <span class="error"><em>(Required)</em></span>
693
                                    </li>
670
                                    [% END %]
694
                                [% END %]
671
                                </h2>
695
                            </ol>
696
672
697
                            <h2 style="padding: 0 1em;">
673
                                <table id="requestspecific">
698
                                Place a hold on a specific item
674
                                    <thead>
699
                                [% IF force_hold_level == 'item' %]
675
                                        <tr>
700
                                     <span class="error"><em>(Required)</em></span>
676
                                            <th>Hold</th>
701
                                [% END %]
677
                                            [% IF ( item_level_itypes ) %]
702
                            </h2>
678
                                                <th>Item type</th>
703
679
                                            [% END %]
704
                            <table id="requestspecific">
680
                                            <th>Barcode</th>
705
                                <thead>
681
                                            <th>Home library</th>
706
                                    <tr>
682
                                            <th>Last location</th>
707
                                        <th>Hold</th>
683
                                            [% IF itemdata_ccode %]
708
                                        <th>Allowed pickup locations</th>
684
                                                <th>Collection</th>
709
                                        [% IF Koha.Preference('item-level_itypes') %]
685
                                            [% END %]
710
                                            <th>Item type</th>
686
                                            <th>Call number</th>
711
                                        [% END %]
687
                                            <th>Copy number</th>
712
                                        <th>Barcode</th>
688
                                            [% IF itemdata_enumchron %]
713
                                        <th>Home library</th>
689
                                                <th>Vol no.</th>
714
                                        <th>Last location</th>
690
                                            [% END %]
715
                                        [% IF itemdata_ccode %]
691
                                            <th>Information</th>
716
                                            <th>Collection</th>
692
                                            <th>Allowed pickup locations</th>
717
                                        [% END %]
693
                                        </tr>
718
                                        <th>Call number</th>
694
                                    </thead>
719
                                        <th>Copy number</th>
695
                                    <tbody>
720
                                        [% IF itemdata_enumchron %]
696
                                        [% SET selected = 0 %]
721
                                            <th>Vol no.</th>
697
                                        [% FOREACH itemloo IN bibitemloo.itemloop %]
722
                                        [% END %]
698
                                            [% UNLESS ( itemloo.hide ) %]
723
                                        <th>Information</th>
699
                                                <tr class="[% itemloo.backgroundcolor | html %]">
724
                                    </tr>
700
                                                    <td>
725
                                </thead>
701
                                                        [% IF itemloo.force_hold_level == 'record' # Patron has placed a record level hold previously for this record %]
726
                                <tbody>
702
                                                            <span class="error">
727
                                    [% SET selected = 0 %]
703
                                                                <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
728
                                    [% FOREACH itemloo IN biblio.itemloop %]
704
                                                                Hold must be record level
729
                                        [% UNLESS ( itemloo.hide ) %]
705
                                                            </span>
730
                                            <tr class="[% itemloo.backgroundcolor | html %]">
706
                                                        [% ELSIF ( itemloo.available ) %]
731
                                                <td>
707
                                                            <input type="radio" name="checkitem" value="[% itemloo.itemnumber | html %]" />
732
                                                    [% IF force_hold_level == 'record' # Patron has placed a record level hold previously for this record %]
708
                                                        [% ELSIF ( itemloo.override ) %]
733
                                                        <span class="error">
709
                                                            <input type="radio" name="checkitem" class="needsoverride" value="[% itemloo.itemnumber | html %]" />
734
                                                            <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
710
                                                            <i class="fa fa-exclamation-triangle fa-lg" style="color:gold" title="Requires override of hold policy"/></i>
735
                                                            Hold must be record level
711
                                                        [% ELSE %]
736
                                                        </span>
712
                                                            <span class="error">
737
                                                    [% ELSIF ( itemloo.available ) %]
713
                                                                <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
738
                                                        <input type="radio" name="checkitem" value="[% itemloo.itemnumber | html %]" />
714
                                                                [% IF itemloo.not_holdable %]
739
                                                    [% ELSIF ( itemloo.override ) %]
715
                                                                    [% IF itemloo.not_holdable == 'damaged' %]
740
                                                        <input type="radio" name="checkitem" class="needsoverride" value="[% itemloo.itemnumber | html %]" />
716
                                                                        Item damaged
741
                                                        <i class="fa fa-exclamation-triangle fa-lg" style="color:gold" title="Requires override of hold policy"/></i>
717
                                                                    [% ELSIF itemloo.not_holdable == 'ageRestricted' %]
742
                                                    [% ELSE %]
718
                                                                        Age restricted
743
                                                        <span class="error">
719
                                                                    [% ELSIF itemloo.not_holdable == 'tooManyHoldsForThisRecord' %]
744
                                                            <i class="fa fa-times fa-lg" title="Cannot be put on hold"></i>
720
                                                                        Exceeded max holds per record
745
                                                            [% IF itemloo.not_holdable %]
721
                                                                    [% ELSIF itemloo.not_holdable == 'tooManyReservesToday' %]
746
                                                                [% IF itemloo.not_holdable == 'damaged' %]
722
                                                                        Daily hold limit reached for patron
747
                                                                    <span>Item damaged</span>
723
                                                                    [% ELSIF itemloo.not_holdable == 'tooManyReserves' %]
748
                                                                [% ELSIF itemloo.not_holdable == 'ageRestricted' %]
724
                                                                        Too many holds
749
                                                                    <span>Age restricted</span>
725
                                                                    [% ELSIF itemloo.not_holdable == 'notReservable' %]
750
                                                                [% ELSIF itemloo.not_holdable == 'tooManyHoldsForThisRecord' %]
726
                                                                        Not holdable
751
                                                                    <span>Exceeded max holds per record</span>
727
                                                                    [% ELSIF itemloo.not_holdable == 'cannotReserveFromOtherBranches' %]
752
                                                                [% ELSIF itemloo.not_holdable == 'tooManyReservesToday' %]
728
                                                                        Patron is from different library
753
                                                                    <span>Daily hold limit reached for patron</span>
729
                                                                    [% ELSIF itemloo.not_holdable == 'branchNotInHoldGroup' %]
754
                                                                [% ELSIF itemloo.not_holdable == 'tooManyReserves' %]
730
                                                                        Cannot place hold from patron's library
755
                                                                    <span>Too many holds</span>
731
                                                                    [% ELSIF itemloo.not_holdable == 'itemAlreadyOnHold' %]
756
                                                                [% ELSIF itemloo.not_holdable == 'notReservable' %]
732
                                                                        Patron already has hold for this item
757
                                                                    <span>Not holdable</span>
733
                                                                    [% ELSIF itemloo.not_holdable == 'cannotBeTransferred' %]
758
                                                                [% ELSIF itemloo.not_holdable == 'cannotReserveFromOtherBranches' %]
734
                                                                        Cannot be transferred to pickup library
759
                                                                    <span>Patron is from different library</span>
735
                                                                    [% ELSIF itemloo.not_holdable == 'pickupNotInHoldGroup' %]
760
                                                                [% ELSIF itemloo.not_holdable == 'branchNotInHoldGroup' %]
736
                                                                        Only pickup locations within the same hold group are allowed
761
                                                                    <span>Cannot place hold from patron's library</span>
737
                                                                    [% ELSIF itemloo.not_holdable == 'noReservesAllowed' %]
762
                                                                [% ELSIF itemloo.not_holdable == 'itemAlreadyOnHold' %]
738
                                                                        No reserves are allowed on this item
763
                                                                    <span>Patron already has hold for this item</span>
739
                                                                    [% ELSIF itemloo.not_holdable == 'libraryNotPickupLocation' %]
764
                                                                [% ELSIF itemloo.not_holdable == 'cannotBeTransferred' %]
740
                                                                        Library is not a pickup location
765
                                                                    <span>Cannot be transferred to pickup library</span>
741
                                                                    [% ELSIF itemloo.not_holdable == 'no_valid_pickup_location' %]
766
                                                                [% ELSIF itemloo.not_holdable == 'pickupNotInHoldGroup' %]
742
                                                                        No valid pickup location
767
                                                                    <span>Only pickup locations within the same hold group are allowed</span>
743
                                                                    [% ELSE %]
768
                                                                [% ELSIF itemloo.not_holdable == 'noReservesAllowed' %]
744
                                                                        [% itemloo.not_holdable | html %]
769
                                                                    <span>No holds are allowed on this item</span>
745
                                                                    [% END %]
770
                                                                [% ELSIF itemloo.not_holdable == 'libraryNotPickupLocation' %]
771
                                                                    <span>Library is not a pickup location</span>
772
                                                                [% ELSIF itemloo.not_holdable == 'no_valid_pickup_location' %]
773
                                                                    <span>No valid pickup location</span>
774
                                                                [% ELSIF itemloo.not_holdable == 'notforloan' %]
775
                                                                    <span>Not for loan</span>
776
                                                                [% ELSE %]
777
                                                                    <span>[% itemloo.not_holdable | html %]</span>
778
                                                                [% END %]
746
                                                                [% END %]
747
                                                            </span>
748
                                                        [% END # /IF itemloo.force_hold_level %]
749
                                                    </td>
750
                                                    [% IF ( item_level_itypes ) %]
751
                                                        <td>
752
                                                            [% UNLESS ( noItemTypeImages ) %]
753
                                                                [% IF ( itemloo.imageurl ) %]<img src="[% itemloo.imageurl | html %]" alt="" /> <br /> [% END %]
779
                                                            [% END %]
754
                                                            [% END %]
780
                                                        </span>
755
                                                            [% itemloo.itypename | html %]
781
                                                    [% END # /IF force_hold_level %]
756
                                                        </td>
782
                                                </td>
783
                                                <td>
784
                                                [% IF (itemloo.pickup_locations_count > 0) %]
785
                                                    <select name="item_pickup_[% itemloo.itemnumber | html %]" class="pickup_locations" style="width:100%;"
786
                                                            data-item-id="[% itemloo.itemnumber | html %]"
787
                                                            data-patron-id="[% patron.borrowernumber | html %]"
788
                                                            data-pickup-location-source="item">
789
                                                    [% IF (itemloo.default_pickup_location) %]
790
                                                        <option value="[% itemloo.default_pickup_location.branchcode | html %]" selected="selected">[% itemloo.default_pickup_location.branchname | html %]</option>
791
                                                    [% END %]
757
                                                    [% END %]
792
                                                    </select>
793
                                                [% END %]
794
                                                </td>
795
                                                [% IF Koha.Preference('item-level_itypes') %]
796
                                                    <td>
758
                                                    <td>
797
                                                        [% UNLESS ( noItemTypeImages ) %]
759
                                                        [% itemloo.barcode | html %]
798
                                                            [% IF ( itemloo.itemtype.image_location) %]<img src="[% itemloo.itemtype.image_location | html %]" alt="" /> <br /> [% END %]
799
                                                        [% END %]
800
                                                        [% itemloo.itemtype.translated_description | html %]
801
                                                    </td>
760
                                                    </td>
802
                                                [% END %]
803
                                                <td>
804
                                                    [% itemloo.barcode | html %]
805
                                                </td>
806
                                                <td>
807
                                                    [% Branches.GetName( itemloo.homebranch ) | html %]
808
                                                </td>
809
                                                <td>
810
                                                    [% Branches.GetName( itemloo.holdingbranch ) | html %]
811
                                                </td>
812
                                                [% IF itemdata_ccode %]
813
                                                    <td>
761
                                                    <td>
814
                                                        [% IF ( itemloo.ccode ) %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => itemloo.ccode ) | html %][% END %]
762
                                                        [% Branches.GetName( itemloo.homebranch ) | html %]
815
                                                    </td>
763
                                                    </td>
816
                                                [% END %]
817
                                                <td>
818
                                                    [% itemloo.itemcallnumber | html %]
819
                                                </td>
820
                                                <td>
821
                                                    [% IF ( itemloo.copynumber ) %][% itemloo.copynumber | html %][% ELSE %]&nbsp;[% END %]
822
                                                </td>
823
                                                [% IF itemdata_enumchron %]
824
                                                    <td>
764
                                                    <td>
825
                                                        [% itemloo.enumchron | html %]
765
                                                        [% Branches.GetName( itemloo.holdingbranch ) | html %]
826
                                                    </td>
766
                                                    </td>
827
                                                [% END %]
767
                                                    [% IF itemdata_ccode %]
828
                                                [% IF ( itemloo.onloan ) %]
768
                                                        <td>
829
                                                    <td data-order="[% itemloo.date_due | html %]">
769
                                                            [% IF ( itemloo.ccode ) %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => itemloo.ccode ) | html %][% END %]
830
                                                        <span class="checkedout">Due [% itemloo.date_due | $KohaDates  as_due_date => 1 %]</span>
770
                                                        </td>
831
                                                [% ELSE %]
771
                                                    [% END %]
832
                                                    <td>
772
                                                    <td>
833
                                                        [% IF ( itemloo.transfertwhen ) %]
773
                                                        [% IF ( itemloo.transfertwhen ) %]
834
                                                            <span>In transit from [% Branches.GetName( itemloo.transfertfrom ) | html %],
774
                                                            <span>In transit from [% Branches.GetName( itemloo.transfertfrom ) | html %],
Lines 849-914 Link Here
849
                                                            [% IF ( itemloo.waitingdate ) %]
789
                                                            [% IF ( itemloo.waitingdate ) %]
850
                                                                [% itemloo.waitingdate | $KohaDates %]
790
                                                                [% itemloo.waitingdate | $KohaDates %]
851
                                                            [% ELSE %]
791
                                                            [% ELSE %]
852
                                                                [% IF ( itemloo.reservedate ) %]
792
                                                                [% IF ( itemloo.waitingdate ) %]Waiting[% ELSE %]On hold[% END %]
853
                                                                    [% itemloo.reservedate | html %]
793
                                                                [% IF ( itemloo.canreservefromotherbranches ) %]
794
                                                                    for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% itemloo.ReservedFor.borrowernumber | uri %]">[% itemloo.ReservedFor.firstname | html %] [% itemloo.ReservedFor.surname | html %]</a>
854
                                                                [% END %]
795
                                                                [% END %]
855
                                                            [% END %].
796
                                                                [% IF ( itemloo.waitingdate ) %]at[% ELSE %]expected at[% END %]
856
                                                            <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>
797
                                                                [% Branches.GetName( itemloo.ExpectedAtLibrary ) | html %] since
857
                                                        [% END # /IF itemloo.nocancel %]
798
                                                                [% IF ( itemloo.waitingdate ) %]
858
                                                    [% ELSE %]
799
                                                                    [% itemloo.waitingdate | $KohaDates %]
859
                                                        Not on hold
800
                                                                [% ELSE %]
860
                                                    [% END # /IF itemloo.reservedate %]
801
                                                                    [% IF ( itemloo.reservedate ) %]
802
                                                                        [% itemloo.reservedate | html %]
803
                                                                    [% END %]
804
                                                                [% END %].
805
                                                                <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>
806
                                                            [% END # /IF itemloo.nocancel %]
807
                                                        [% ELSE %]
808
                                                            Not on hold
809
                                                        [% END # /IF itemloo.reservedate %]
861
810
862
                                                    [% IF itemloo.item_level_holds == "N" %]
811
                                                        [% IF itemloo.item_level_holds == "N" %]
863
                                                        <br/>Item level hold not allowed from OPAC
812
                                                            <br/>Item level hold not allowed from OPAC
864
                                                    [% ELSIF itemloo.item_level_holds == "F" %]
813
                                                        [% ELSIF itemloo.item_level_holds == "F" %]
865
                                                        <br/>Item level hold forced from OPAC
814
                                                            <br/>Item level hold forced from OPAC
866
                                                    [% END %]
815
                                                        [% END %]
867
816
868
                                                    [% IF ( itemloo.itemlost ) %]
817
                                                        [% IF ( itemloo.itemlost ) %]
869
                                                       <span class="lost">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => itemloo.itemlost ) | html %]</span>
818
                                                           <span class="lost">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => itemloo.itemlost ) | html %]</span>
870
                                                    [% END %]
819
                                                        [% END %]
871
820
872
                                                    [% IF ( itemloo.damaged ) %]
821
                                                        [% IF ( itemloo.damaged ) %]
873
                                                        <span class="dmg">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => itemloo.damaged ) | html %]</span>
822
                                                            <span class="dmg">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => itemloo.damaged ) | html %]</span>
874
                                                    [% END %]
823
                                                        [% END %]
875
824
876
                                                    [% IF ( itemloo.withdrawn ) %]
825
                                                        [% IF ( itemloo.withdrawn ) %]
877
                                                       <span class="wdn">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => itemloo.withdrawn ) | html %]</span>
826
                                                           <span class="wdn">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => itemloo.withdrawn ) | html %]</span>
878
                                                    [% END %]
827
                                                        [% END %]
879
828
880
                                                    [% IF ( itemloo.notforloan ) %]
829
                                                        [% IF ( itemloo.notforloan ) %]
881
                                                       <span class="nfl">Not for loan ([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => itemloo.notforloan ) | html %])</span>
830
                                                           <span class="nfl">Not for loan ([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => itemloo.notforloan ) | html %])</span>
882
                                                    [% ELSIF ( itemloo.notforloanitype ) %]
831
                                                        [% END %]
883
                                                       <span class="nfl">Not for loan (Itemtype not for loan)</span>
832
                                                    </td>
833
                                                    <td>
834
                                                    [% IF (itemloo.pickup_locations_count > 0) %]
835
                                                        <select name="item_pickup_[% itemloo.itemnumber | html %]" class="pickup_locations" style="width:100%;"
836
                                                                data-item-id="[% itemloo.itemnumber | html %]"
837
                                                                data-patron-id="[% patron.borrowernumber | html %]"
838
                                                                data-pickup-location-source="item">
839
                                                        [% IF (itemloo.default_pickup_location) %]
840
                                                            <option value="[% itemloo.default_pickup_location.branchcode | html %]" selected="selected">[% itemloo.default_pickup_location.branchname | html %]</option>
841
                                                        [% END %]
842
                                                        </select>
884
                                                    [% END %]
843
                                                    [% END %]
885
                                                </td>
844
                                                    </td>
886
                                            </tr>
845
                                                </tr>
887
                                        [% END # / UNLESS itemloo.hide %]
846
                                            [% END # / UNLESS itemloo.hide %]
888
                                    [% END # /FOREACH itemloo %]
847
                                        [% END # /FOREACH itemloo %]
889
                                </tbody>
848
                                    </tbody>
890
                            </table> <!-- /#requestspecific -->
849
                                </table> <!-- /#requestspecific -->
891
850
892
                            [% IF hiddencount %]
851
                                [% IF ( bibitemloo.hiddencount ) %]
893
                                <form>
852
                                    <form>
894
                                    <p class="hiddencount">
853
                                        <p class="hiddencount">
895
                                        <a href="request.pl?biblionumber=[% biblio.biblionumber | uri %]&amp;borrowernumber=[% borrowernumber | uri %]&amp;showallitems=1">Show all items ([% biblio.hiddencount | html %] hidden)</a>
854
                                            <a href="request.pl?biblionumber=[% bibitemloo.biblionumber | uri %]&amp;borrowernumber=[% bibitemloo.borrowernumber | uri %]&amp;showallitems=1">Show all items ([% bibitemloo.hiddencount | html %] hidden)</a>
896
                                    </p>
855
                                        </p>
897
                                </form>
856
                                    </form>
898
                            [% END # /IF hiddencount %]
857
                                [% END # /IF bibitemloo.hiddencount %]
858
                            [% END # /FOREACH bibitemloo %]
899
859
900
                        [% ELSE # /UNLESS multi_hold %]
860
                        [% ELSE # /UNLESS multi_hold %]
901
861
902
                            <table id="requesttitles">
862
                            <table id="requesttitles">
903
                                <tr>
863
                                <tr>
904
                                    <th>&nbsp;</th>
864
                                    <th>&nbsp;</th>
905
                                    <th>Pickup location</th>
906
                                    <th>Title</th>
865
                                    <th>Title</th>
907
                                    [% UNLESS Koha.Preference('item-level_itypes') %]
866
                                    [% UNLESS ( item_level_itypes ) %]
908
                                        <th>Item type</th>
867
                                        <th>Item type</th>
909
                                    [% END %]
868
                                    [% END %]
910
                                    <th>Priority</th>
869
                                    <th>Priority</th>
911
                                    <th>Information</th>
870
                                    <th>Information</th>
871
                                    <th>Pickup location</th>
912
                                </tr>
872
                                </tr>
913
                                [% FOREACH biblioloo IN biblioloop %]
873
                                [% FOREACH biblioloo IN biblioloop %]
914
                                    [% IF ( biblioloo.warn ) %]
874
                                    [% IF ( biblioloo.warn ) %]
Lines 918-945 Link Here
918
                                    [% END %]
878
                                    [% END %]
919
                                        <td>
879
                                        <td>
920
                                            [% UNLESS ( biblioloo.warn ) %]
880
                                            [% UNLESS ( biblioloo.warn ) %]
921
                                                <input class="multi_hold_item_checkbox" type="checkbox" checked="checked" title="[% biblioloo.biblionumber | html %]"/>
881
                                                    <input class="multi_hold_item_checkbox" type="checkbox" checked="checked" title="[% biblioloo.biblionumber | html %]"/>
922
                                            [% END %]
882
                                                </td>
923
                                        </td>
924
                                        <td>
925
                                            [% UNLESS ( biblioloo.none_avail || biblioloo.noitems ) %]
926
                                                <select name="pickup_[% biblioloo.biblionumber | html %]"
927
                                                        class="multi_pickup_select"
928
                                                        data-biblio-id="[% biblioloo.biblionumber | html %]"
929
                                                        data-patron-id="[% patron.borrowernumber | html %]"
930
                                                        data-pickup-locations='[% biblioloo.pickup_locations_codes.json | $raw %]'>
931
                                                    <option value=""></option>
932
                                                    [% FOREACH pickup_location IN biblioloo.pickup_locations %]
933
                                                        <option value="[% pickup_location.branchcode | html %]">[% pickup_location.branchname | html %]</option>
934
                                                    [% END %]
935
                                                </select>
936
                                            [% END %]
883
                                            [% END %]
937
                                        </td>
938
                                        <td>
884
                                        <td>
939
                                            <ul>
885
                                            <ul>
940
                                                <li>
886
                                                <li>
941
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
887
                                                    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblioloo.biblionumber | uri %]">[% biblioloo.title | html %]</a>
942
                                                    [% IF biblioloo.author %] by [% biblioloo.author | html %][% END %]
943
                                                </li>
888
                                                </li>
944
                                                [% IF ( biblioloo.publicationyear ) %]
889
                                                [% IF ( biblioloo.publicationyear ) %]
945
                                                    <li>
890
                                                    <li>
Lines 951-959 Link Here
951
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
896
                                                <span class="not_holdable" title="[% biblioloo.biblionumber | html %]"></span>
952
                                            [% END %]
897
                                            [% END %]
953
                                        </td>
898
                                        </td>
954
                                        [% UNLESS Koha.Preference('item-level_itypes') %]
899
                                        [% UNLESS ( item_level_itypes ) %]
955
                                            <td>
900
                                            <td>
956
                                                <img src="[% biblioloo.itemtype.image_location | html %]" alt="[% biblioloo.itemtype.translated_description | html %]" title="[% biblioloo.itemtype.translated_description | html %]" />
901
                                                <img src="[% biblioloo.imageurl | html %]" alt="[% biblioloo.itypename | html %]" title="[% biblioloo.itypename | html %]" />
957
                                            </td>
902
                                            </td>
958
                                        [% END %]
903
                                        [% END %]
959
                                        <td>[% biblioloo.rank | html %]</td>
904
                                        <td>[% biblioloo.rank | html %]</td>
Lines 986-991 Link Here
986
                                                [% END %]
931
                                                [% END %]
987
                                            [% END %]
932
                                            [% END %]
988
                                        </td>
933
                                        </td>
934
                                        <td>
935
                                            [% UNLESS ( biblioloo.none_avail || biblioloo.noitems ) %]
936
                                                <select name="pickup_[% biblioloo.biblionumber | html %]"
937
                                                        class="multi_pickup_select"
938
                                                        data-biblio-id="[% biblioloo.biblionumber | html %]"
939
                                                        data-patron-id="[% patron.borrowernumber | html %]"
940
                                                        data-pickup-locations='[% biblioloo.pickup_locations_codes.json | $raw %]'>
941
                                                    <option value=""></option>
942
                                                    [% FOREACH pickup_location IN biblioloo.pickup_locations %]
943
                                                        <option value="[% pickup_location.branchcode | html %]">[% pickup_location.branchname | html %]</option>
944
                                                    [% END %]
945
                                                </select>
946
                                            [% END %]
947
                                        </td>
989
                                    </tr>
948
                                    </tr>
990
                                [% END # /FOREACH biblioloo %]
949
                                [% END # /FOREACH biblioloo %]
991
                            </table> <!-- /#requesttitles -->
950
                            </table> <!-- /#requesttitles -->
Lines 994-1016 Link Here
994
953
995
                        <fieldset class="action">
954
                        <fieldset class="action">
996
                            [% IF ( patron AND patron.borrowernumber ) %]
955
                            [% IF ( patron AND patron.borrowernumber ) %]
997
                                [% IF ( multi_hold ) %]
956
                                [% IF ( override_required ) %]
998
                                    [% IF ( override_required ) %]
957
                                    <button type="submit" class="btn btn-default warning"><i class="fa fa-exclamation-triangle "></i> Place holds</button>
999
                                        <button type="submit" class="btn btn-default warning" id="lientype"><i class="fa fa-exclamation-triangle "></i> Place holds</button>
958
                                [% ELSIF ( none_available ) %]
1000
                                    [% ELSIF ( no_bibs_available ) %]
959
                                    <button class="btn btn-default" type="submit">Place holds</button>
1001
                                        <button type="submit" class="btn btn-default btn-disabled" disabled="disabled" id="lientype">Place holds</button>
1002
                                    [% ELSIF ( none_available ) %]
1003
                                        <button type="submit" class="btn btn-default" id="lientype">Place holds</button>
1004
                                    [% ELSE %]
1005
                                        <button type="submit" class="btn btn-default" id="multi_hold_submit">Place holds</button>
1006
                                    [% END %]
1007
                                [% ELSE %]
960
                                [% ELSE %]
1008
                                    [% IF ( override_required ) %]
961
                                    [% IF ( multi_hold ) %]
1009
                                        <button type="submit" class="btn btn-default warning" id="lientype"><i class="fa fa-exclamation-triangle "></i> Place hold</button>
962
                                        <button type="submit" class="btn btn-default" id="multi_hold_submit">Place holds</button>
1010
                                    [% ELSIF ( none_available ) %]
1011
                                        <button type="submit" class="btn btn-default btn-disabled" disabled="disabled" id="lientype">Place hold</button>
1012
                                    [% ELSE %]
963
                                    [% ELSE %]
1013
                                        <button type="submit" class="btn btn-default" id="lientype" id="lientype">Place hold</button>
964
                                        <button type="submit" class="btn btn-default">Place hold</button>
1014
                                    [% END %]
965
                                    [% END %]
1015
                                [% END %]
966
                                [% END %]
1016
                            [% END # /IF patron %]
967
                            [% END # /IF patron %]
Lines 1037-1045 Link Here
1037
                [% IF ( reserveloop ) %]
988
                [% IF ( reserveloop ) %]
1038
                    <form id="existing_holds" name="T[% time | html %]" action="modrequest.pl" method="post" style="display:block">
989
                    <form id="existing_holds" name="T[% time | html %]" action="modrequest.pl" method="post" style="display:block">
1039
                        [% IF ( multi_hold ) %]
990
                        [% IF ( multi_hold ) %]
1040
                            [% FOREACH biblionumber IN biblionumbers %]
991
                            <input type = "hidden" name="biblionumbers" value="[% biblionumbers | html %]"/>
1041
                            <input type="hidden" name="biblionumber" value="[% biblionumber | html %]"/>
1042
                            [% END %]
1043
                        [% END %]
992
                        [% END %]
1044
993
1045
                        [% IF enqueued %]
994
                        [% IF enqueued %]
Lines 1051-1060 Link Here
1051
1000
1052
                        <h2>Existing holds</h2>
1001
                        <h2>Existing holds</h2>
1053
                        <div id="toolbar" class="btn-toolbar">
1002
                        <div id="toolbar" class="btn-toolbar">
1054
                            <input type="submit" name="submit" class="principal" value="Update hold(s)" /> <button class="cancel_selected_holds" data-bulk="true"></button>
1003
                            <input type="submit" name="submit" value="Update hold(s)" /> <button class="cancel_selected_holds" data-bulk="true"></button>
1055
                        <fieldset id="cancellation-reason-fieldset" class="action">
1004
                        <fieldset id="cancellation-reason-fieldset" class="action">
1056
                            [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
1005
                            [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
1057
                            [% IF hold_cancellation.count %]
1006
                            [% IF hold_cancellation %]
1058
                                <label for="cancellation-reason">Cancellation reason: </label>
1007
                                <label for="cancellation-reason">Cancellation reason: </label>
1059
                                <select class="cancellation-reason" name="cancellation-reason" id="cancellation-reason">
1008
                                <select class="cancellation-reason" name="cancellation-reason" id="cancellation-reason">
1060
                                    <option value="">No reason given</option>
1009
                                    <option value="">No reason given</option>
Lines 1177-1183 Link Here
1177
                                                                [% IF i %]
1126
                                                                [% IF i %]
1178
                                                                    [% ItemTypes.GetDescription( i ) | html %]
1127
                                                                    [% ItemTypes.GetDescription( i ) | html %]
1179
                                                                [% ELSE %]
1128
                                                                [% ELSE %]
1180
                                                                    <span>Any item type</span>
1129
                                                                    Any item type
1181
                                                                [% END %]
1130
                                                                [% END %]
1182
                                                            </h5>
1131
                                                            </h5>
1183
1132
Lines 1240-1246 Link Here
1240
1189
1241
                    <fieldset class="action">
1190
                    <fieldset class="action">
1242
                        [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
1191
                        [% SET hold_cancellation = AuthorisedValues.GetAuthValueDropbox('HOLD_CANCELLATION') %]
1243
                        [% IF hold_cancellation.count %]
1192
                        [% IF hold_cancellation %]
1244
                            <label for="cancellation-reason">Cancellation reason: </label>
1193
                            <label for="cancellation-reason">Cancellation reason: </label>
1245
                            <select class="cancellation-reason" name="modal-cancellation-reason" id="modal-cancellation-reason">
1194
                            <select class="cancellation-reason" name="modal-cancellation-reason" id="modal-cancellation-reason">
1246
                                <option value="">No reason given</option>
1195
                                <option value="">No reason given</option>
Lines 1262-1284 Link Here
1262
1211
1263
[% MACRO jsinclude BLOCK %]
1212
[% MACRO jsinclude BLOCK %]
1264
    [% INCLUDE 'datatables.inc' %]
1213
    [% INCLUDE 'datatables.inc' %]
1265
    [% INCLUDE 'calendar.inc' %]
1266
    [% INCLUDE 'columns_settings.inc' %]
1214
    [% INCLUDE 'columns_settings.inc' %]
1267
    [% Asset.js("lib/hc-sticky.js") | $raw %]
1215
    [% Asset.js("lib/hc-sticky.js") | $raw %]
1216
    [% Asset.js("js/circ-patron-search-results.js") | $raw %]
1268
    [% INCLUDE 'select2.inc' %]
1217
    [% INCLUDE 'select2.inc' %]
1269
    [% Asset.js("js/holds.js") | $raw%]
1218
    [% Asset.js("js/holds.js") | $raw%]
1270
1219
    [% INCLUDE 'calendar.inc' %]
1271
    [% SET url_biblio_params = "biblionumber=" _ biblionumbers.join("&amp;biblionumber=") %]
1272
    [% IF multi_hold %]
1273
        [% SET url_biblio_params = url_biblio_params _ "&amp;multi_hold=1" %]
1274
    [% END %]
1275
1276
    <script>
1220
    <script>
1277
        var Sticky;
1221
        var Sticky;
1278
        var biblionumbers = [[% biblionumbers.join(', ') | $raw %]];
1222
        var biblionumber = "[% biblionumber | $raw %]";
1279
        var borrowernumber = "[% patron.borrowernumber | $raw %]";
1223
        var borrowernumber = "[% patron.borrowernumber | $raw %]";
1280
        var patron_homebranch = "[% To.json( Branches.GetName( patron.branchcode ) ) | $raw %]";
1224
        var patron_homebranch = "[% To.json( Branches.GetName( patron.branchcode ) ) | $raw %]";
1281
        var override_items = {[% FOREACH biblio IN biblioloop %][% FOREACH itemloo IN biblio.itemloop %][% IF ( itemloo.override ) %]
1225
        var override_items = {[% FOREACH bibitemloo IN bibitemloop %][% FOREACH itemloo IN bibitemloo.itemloop %][% IF ( itemloo.override ) %]
1282
        [% itemloo.itemnumber | html %]: {
1226
        [% itemloo.itemnumber | html %]: {
1283
            homebranch: "[% To.json( Branches.GetName( itemloo.homebranch ) ) | $raw %]",
1227
            homebranch: "[% To.json( Branches.GetName( itemloo.homebranch ) ) | $raw %]",
1284
            holdallowed: "[% itemloo.holdallowed | html %]"
1228
            holdallowed: "[% itemloo.holdallowed | html %]"
Lines 1300-1305 Link Here
1300
        }
1244
        }
1301
1245
1302
        var MSG_CANCEL_SELECTED = _("Cancel selected (%s)");
1246
        var MSG_CANCEL_SELECTED = _("Cancel selected (%s)");
1247
        columns_settings_borrowers_table = [% TablesSettings.GetColumns( 'circ', 'circulation', 'table_borrowers', 'json' ) | $raw %];
1303
        $.fn.select2.defaults.set("width", "100%" );
1248
        $.fn.select2.defaults.set("width", "100%" );
1304
        $.fn.select2.defaults.set("dropdownAutoWidth", true );
1249
        $.fn.select2.defaults.set("dropdownAutoWidth", true );
1305
1250
Lines 1313-1332 Link Here
1313
                }
1258
                }
1314
            });
1259
            });
1315
1260
1316
            if( $("#circ_holds_select").length > 0 ){
1261
            [% SET active = clubs ? 1 : 0 %]
1317
                [% SET active = clubs ? 1 : 0 %]
1262
            $('#circ_holds_select').tabs({
1318
                /* Set active tab based on whether a club search was submitted */
1263
                active: [% active | $raw %],
1319
                var tabs = $("#circ_holds_select li:eq(" + [% active | $raw %] + ") a").tab("show");
1264
                activate: function(){
1320
                $( tabs[0].hash ).find("input.focus").focus();
1265
                    $(this).find("input.focus").focus();
1321
1266
                },
1322
                /* Change active focus when tabs change */
1267
                create: function(){
1323
                $("#circ_holds_select a[data-toggle='tab']").on("shown.bs.tab", function (e) {
1268
                    $(this).find("input.focus").focus();
1324
                    active_tab = e.target.hash;
1269
                }
1325
                    $( active_tab ).find("input.focus").focus();
1270
            });
1326
                });
1327
            }
1328
1329
1330
            function ToggleHoldsToPlace() {
1271
            function ToggleHoldsToPlace() {
1331
                if ( $("#requestany").prop('checked') ) {
1272
                if ( $("#requestany").prop('checked') ) {
1332
                    $("#holds_to_place_count").prop('disabled', false);
1273
                    $("#holds_to_place_count").prop('disabled', false);
Lines 1344-1350 Link Here
1344
                    var pickup = $("#pickup").val();
1285
                    var pickup = $("#pickup").val();
1345
                    var url = "?pickup=" + pickup;
1286
                    var url = "?pickup=" + pickup;
1346
                    url += "&borrowernumber=" + borrowernumber;
1287
                    url += "&borrowernumber=" + borrowernumber;
1347
                    url += "&biblionumber=" + biblionumbers[0];
1288
                    url += "&biblionumber=" + biblionumber;
1348
                    window.location.replace(url);
1289
                    window.location.replace(url);
1349
                });
1290
                });
1350
            [% END %]
1291
            [% END %]
Lines 1364-1369 Link Here
1364
            $("#club-request-form").on("submit", function() {
1305
            $("#club-request-form").on("submit", function() {
1365
                let $t = $(this);
1306
                let $t = $(this);
1366
                $('.clubalert, .holdalert').addClass('hide');
1307
                $('.clubalert, .holdalert').addClass('hide');
1308
                let biblionumbers = [biblionumber];
1309
                let biblionumbers_text;
1367
                const data = {
1310
                const data = {
1368
                    pickup_library_id: $('select[name="pickup"]').val()
1311
                    pickup_library_id: $('select[name="pickup"]').val()
1369
                };
1312
                };
Lines 1379-1391 Link Here
1379
                if($('input[name="default_patron_home"]:checked').length) {
1322
                if($('input[name="default_patron_home"]:checked').length) {
1380
                    data.default_patron_home = 1;
1323
                    data.default_patron_home = 1;
1381
                }
1324
                }
1325
                if($('input[name="biblionumbers"]').length) {
1326
                    biblionumbers_text = $('input[name="biblionumbers"]').val();
1327
                    biblionumbers = biblionumbers_text.replace(/\/$/, '').split('/')
1328
                }
1382
1329
1383
                const count = $('input[name="holds_to_place_count"]').length?$('input[name="holds_to_place_count"]').val():1;
1330
                const count = $('input[name="holds_to_place_count"]').length?$('input[name="holds_to_place_count"]').val():1;
1384
                var newloc = 'request.pl?';
1385
                biblionumbers.forEach(function (biblionumber) {
1386
                    newloc += '&biblionumber=' + biblionumber;
1387
                });
1388
1389
                biblionumbers.forEach(function(biblionumber) {
1331
                biblionumbers.forEach(function(biblionumber) {
1390
                    data.biblio_id = biblionumber;
1332
                    data.biblio_id = biblionumber;
1391
                    let options = {
1333
                    let options = {
Lines 1397-1403 Link Here
1397
                    for(let i = 0; i < count; i++) {
1339
                    for(let i = 0; i < count; i++) {
1398
                        $.ajax(options)
1340
                        $.ajax(options)
1399
                        .then(function(result) {
1341
                        .then(function(result) {
1400
                            document.location = newloc;
1342
                            let url = 'request.pl?biblionumber='+biblionumber;
1343
                            if(biblionumbers_text) {
1344
                                url = 'request.pl?biblionumbers='+biblionumbers_text;
1345
                            }
1346
                            document.location = url;
1401
                        })
1347
                        })
1402
                        .fail(function(err) {
1348
                        .fail(function(err) {
1403
                            var message = err.responseJSON.error;
1349
                            var message = err.responseJSON.error;
Lines 1492-1497 Link Here
1492
1438
1493
        function checkMultiHold() {
1439
        function checkMultiHold() {
1494
1440
1441
            var biblionumbers = "";
1495
            var selected_bibs = $(".multi_hold_item_checkbox:checked");
1442
            var selected_bibs = $(".multi_hold_item_checkbox:checked");
1496
            if ( selected_bibs.length > 0 ) {
1443
            if ( selected_bibs.length > 0 ) {
1497
                // there are biblios selected in the form!
1444
                // there are biblios selected in the form!
Lines 1504-1509 Link Here
1504
                    }
1451
                    }
1505
                    else {
1452
                    else {
1506
                        var bibnum = $(this).attr("title");
1453
                        var bibnum = $(this).attr("title");
1454
                        biblionumbers += bibnum + "/";
1507
                    }
1455
                    }
1508
                });
1456
                });
1509
                if ( pickup_not_set > 0 ) {
1457
                if ( pickup_not_set > 0 ) {
Lines 1516-1528 Link Here
1516
                return false;
1464
                return false;
1517
            }
1465
            }
1518
1466
1467
            var badSpans = $(".not_holdable");
1468
            var badBibs = "";
1469
            $(badSpans).each(function() {
1470
                var bibnum = $(this).attr("title");
1471
                badBibs += bibnum + "/";
1472
            });
1473
1474
            $("#multi_hold_bibs").val(biblionumbers);
1475
            $("#bad_bibs").val(badBibs);
1476
1519
            $('#hold-request-form').preventDoubleFormSubmit();
1477
            $('#hold-request-form').preventDoubleFormSubmit();
1520
1478
1521
            return true;
1479
            return true;
1522
        }
1480
        }
1523
1481
1524
         $(document).ready(function() {
1482
         $(document).ready(function() {
1525
1526
            $("#always_show_holds").change(function(){
1483
            $("#always_show_holds").change(function(){
1527
                if( $(this).prop('checked') ){
1484
                if( $(this).prop('checked') ){
1528
                    document.cookie = 'always_show_holds=DO';
1485
                    document.cookie = 'always_show_holds=DO';
Lines 1610-1617 Link Here
1610
            $("#cancelModalConfirmBtn").on("click",function(e) {
1567
            $("#cancelModalConfirmBtn").on("click",function(e) {
1611
                let link;
1568
                let link;
1612
                if(cancel_link.data('bulk')) {
1569
                if(cancel_link.data('bulk')) {
1613
                    [% SET data_url = 'biblionumber=' _ biblionumbers.join('&biblionumber=') %]
1570
                    [% IF biblionumbers %]
1614
                    link = `request.pl?[% data_url | url %]&amp;action=cancelBulk&amp;ids=${$('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')).join(',')}`;
1571
                        link = `request.pl?biblionumbers=[% biblionumbers | url %]&amp;action=cancelBulk&amp;ids=${$('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')).join(',')}`;
1572
                    [% ELSE %]
1573
                        link = `request.pl?biblionumber=[% biblionumber | url %]&amp;action=cancelBulk&amp;ids=${$('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')).join(',')}`;
1574
                    [% END %]
1615
                } else {
1575
                } else {
1616
                    let borrowernumber = cancel_link.data('borrowernumber');
1576
                    let borrowernumber = cancel_link.data('borrowernumber');
1617
                    let biblionumber = cancel_link.data('biblionumber');
1577
                    let biblionumber = cancel_link.data('biblionumber');
Lines 1628-1638 Link Here
1628
1588
1629
            [% UNLESS ( patron || patron.borrowernumber || borrowers || noitems || nobiblio ) %]
1589
            [% UNLESS ( patron || patron.borrowernumber || borrowers || noitems || nobiblio ) %]
1630
                [% IF ( PatronAutoComplete ) %]
1590
                [% IF ( PatronAutoComplete ) %]
1631
                $( "#search_patron_filter" ).autocomplete({
1591
                $( "#patron" ).autocomplete({
1632
                    source: "/cgi-bin/koha/circ/ysearch.pl",
1592
                    source: "/cgi-bin/koha/circ/ysearch.pl",
1633
                    minLength: 3,
1593
                    minLength: 3,
1634
                    select: function( event, ui ) {
1594
                    select: function( event, ui ) {
1635
                        document.location.href = '/cgi-bin/koha/reserve/request.pl?[% url_biblio_params | url %]&borrowernumber=' + ui.item.borrowernumber;
1595
                        $( "#patron" ).val( ui.item.cardnumber );
1596
                        $( "#holds_patronsearch" ).submit();
1597
                        return false;
1636
                    }
1598
                    }
1637
                })
1599
                })
1638
                .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
1600
                .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
Lines 1660-1666 Link Here
1660
                };
1622
                };
1661
                [% END %]
1623
                [% END %]
1662
            [% END %]
1624
            [% END %]
1663
1664
            Sticky = $("#toolbar");
1625
            Sticky = $("#toolbar");
1665
            Sticky.hcSticky({
1626
            Sticky.hcSticky({
1666
                stickTo: "#existing_holds",
1627
                stickTo: "#existing_holds",
Lines 1711-1733 Link Here
1711
                }
1672
                }
1712
                return false;
1673
                return false;
1713
            });
1674
            });
1714
        });
1715
    </script>
1716
1675
1717
    <script>
1718
        table_settings = [% TablesSettings.GetColumns( 'circ', 'circulation', 'table_borrowers', 'json' ) | $raw %];
1719
    </script>
1720
1721
    [% 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' %]
1722
    <script>
1723
        $(document).ready(function() {
1724
            $("#holds_patronsearch").on("submit", filter);
1725
        });
1676
        });
1726
        $('.printholdslip').click(function(){
1727
                var reserve_id = $(this).attr('data-reserve_id');
1728
                window.open("/cgi-bin/koha/circ/hold-transfer-slip.pl?reserve_id=" + reserve_id);
1729
                return false;
1730
        })
1731
    </script>
1677
    </script>
1732
[% END %]
1678
[% END %]
1733
1679
1734
- 

Return to bug 30952