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

(-)a/admin/columns_settings.yml (+28 lines)
Lines 2346-2351 modules: Link Here
2346
            -
2346
            -
2347
              columnname: link
2347
              columnname: link
2348
2348
2349
    opac_holds:
2350
      opac_holds_items:
2351
        columns:
2352
            -
2353
              cannot_be_toggled: 1
2354
              cannot_be_modified: 1
2355
              columnname: selection
2356
            -
2357
              columnname: copy_number
2358
            -
2359
              columnname: itemtype
2360
            -
2361
              columnname: barcode
2362
            -
2363
              columnname: current_library
2364
            -
2365
              columnname: home_library
2366
            -
2367
              columnname: collection
2368
            -
2369
              columnname: call_number
2370
            -
2371
              columnname: enumchron
2372
            -
2373
              columnname: notes
2374
            -
2375
              columnname: information
2376
2349
  serials:
2377
  serials:
2350
    subscription-detail:
2378
    subscription-detail:
2351
      orders:
2379
      orders:
(-)a/koha-tmpl/opac-tmpl/bootstrap/css/src/opac.scss (-5 lines)
Lines 2315-2325 nav { Link Here
2315
    }
2315
    }
2316
}
2316
}
2317
2317
2318
#holds {
2319
    margin: 0 auto;
2320
    max-width: 800px;
2321
}
2322
2323
.holdrow {
2318
.holdrow {
2324
    border-bottom: 1px solid #CCC;
2319
    border-bottom: 1px solid #CCC;
2325
    clear: both;
2320
    clear: both;
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-reserve.tt (-443 / +465 lines)
Lines 5-10 Link Here
5
[% USE Price %]
5
[% USE Price %]
6
[% USE ItemTypes %]
6
[% USE ItemTypes %]
7
[% USE AuthorisedValues %]
7
[% USE AuthorisedValues %]
8
[% USE TablesSettings %]
8
[% SET reserve_input_type = 'radio' %]
9
[% SET reserve_input_type = 'radio' %]
9
[% IF ( Koha.Preference('DisplayMultiItemHolds') ) %]
10
[% IF ( Koha.Preference('DisplayMultiItemHolds') ) %]
10
    [% SET reserve_input_type = 'checkbox' %]
11
    [% SET reserve_input_type = 'checkbox' %]
Lines 27-507 Link Here
27
    [% END #/ WRAPPER breadcrumbs %]
28
    [% END #/ WRAPPER breadcrumbs %]
28
29
29
    <div class="container-fluid">
30
    <div class="container-fluid">
30
        <div id="holds" class="maincontent">
31
        <div class="row">
31
            <h1>Placing a hold</h1>
32
            <div class="col-md-12 offset-md-0 col-lg-10 offset-lg-1">
32
            [% IF ( message ) %]
33
                <div id="holds" class="maincontent">
33
                <div id="holdmessages" class="alert alert-warning">
34
                    <h1>Placing a hold</h1>
34
                    <h2>Sorry, you cannot place holds.</h2>
35
                    [% IF ( message ) %]
35
                    <ul>
36
                        <div id="holdmessages" class="alert alert-warning">
36
                        [% IF ( GNA ) %]
37
                            <h2>Sorry, you cannot place holds.</h2>
37
                            <li id="gna">
38
                            <ul>
38
                                According to our records, we don't have up-to-date contact information. Please contact the library.
39
                                [% IF ( GNA ) %]
39
                                <a href="/cgi-bin/koha/opac-memberentry.pl">[% IF ( Koha.Preference('OPACPatronDetails') ) %]<span>Update your contact information</span>[% ELSE %]<span>Go to your contact information</span>[% END %]</a>
40
                                    <li id="gna">
40
                                [% IF ( Koha.Preference('OPACPatronDetails') ) %]<em>(Please note: there may be a delay in restoring your account if you submit online.)</em>[% END %]
41
                                        According to our records, we don't have up-to-date contact information. Please contact the library.
41
                            </li>
42
                                        <a href="/cgi-bin/koha/opac-memberentry.pl"
42
                        [% END %]
43
                                            >[% IF ( Koha.Preference('OPACPatronDetails') ) %]<span>Update your contact information</span>[% ELSE %]<span>Go to your contact information</span>[% END %]</a
44
                                        >
45
                                        [% IF ( Koha.Preference('OPACPatronDetails') ) %]<em>(Please note: there may be a delay in restoring your account if you submit online.)</em>[% END %]
46
                                    </li>
47
                                [% END %]
43
48
44
                        [% IF ( lost ) %]
49
                                [% IF ( lost ) %]
45
                            <li id="lost">
50
                                    <li id="lost">
46
                                Your library card has been marked as lost or stolen.<br />
51
                                        Your library card has been marked as lost or stolen.<br />
47
                                <em>If this is an error, please take your library card to the circulation desk at your local library and the error will be corrected.</em>
52
                                        <em>If this is an error, please take your library card to the circulation desk at your local library and the error will be corrected.</em>
48
                            </li>
53
                                    </li>
49
                        [% END %]
54
                                [% END %]
50
55
51
                        [% IF ( debarred ) %]
56
                                [% IF ( debarred ) %]
52
                            [% INCLUDE "patron-restrictions.inc" %]
57
                                    [% INCLUDE "patron-restrictions.inc" %]
53
                        [% END %]
58
                                [% END %]
54
59
55
                        [% IF ( too_much_oweing ) %]
60
                                [% IF ( too_much_oweing ) %]
56
                            <li id="too_much_oweing"> You have unpaid fines. Amount: [% too_much_oweing | $Price %]. </li>
61
                                    <li id="too_much_oweing"> You have unpaid fines. Amount: [% too_much_oweing | $Price %]. </li>
57
                        [% END %]
62
                                [% END %]
58
63
59
                        [% IF ( too_many_reserves ) %]
64
                                [% IF ( too_many_reserves ) %]
60
                            <li id="too_many_reserves"> Sorry, you cannot place more than [% too_many_reserves | html %] holds. </li>
65
                                    <li id="too_many_reserves"> Sorry, you cannot place more than [% too_many_reserves | html %] holds. </li>
61
                        [% END %]
66
                                [% END %]
62
67
63
                        [% IF ( bad_biblionumber ) %]
68
                                [% IF ( bad_biblionumber ) %]
64
                            <li id="bad_biblionumber"> ERROR: No record found for record ID [% bad_biblionumber | html %]. </li>
69
                                    <li id="bad_biblionumber"> ERROR: No record found for record ID [% bad_biblionumber | html %]. </li>
65
                        [% END %]
70
                                [% END %]
66
71
67
                        [% IF ( no_items_selected ) %]
72
                                [% IF ( no_items_selected ) %]
68
                            <li id="no_items_selected"> You must select at least one item. </li>
73
                                    <li id="no_items_selected"> You must select at least one item. </li>
69
                        [% END %]
74
                                [% END %]
70
75
71
                        [% IF ( no_branch_selected ) %]
76
                                [% IF ( no_branch_selected ) %]
72
                            <li id="no_branch_selected"> You must select a library for pickup. </li>
77
                                    <li id="no_branch_selected"> You must select a library for pickup. </li>
73
                        [% END %]
78
                                [% END %]
74
79
75
                        [% IF ( no_biblionumber ) %]
80
                                [% IF ( no_biblionumber ) %]
76
                            <li id="no_biblionumber"> ERROR: No record ID specified. </li>
81
                                    <li id="no_biblionumber"> ERROR: No record ID specified. </li>
77
                        [% END %]
82
                                [% END %]
78
83
79
                        [% IF ( bad_data ) %]
84
                                [% IF ( bad_data ) %]
80
                            <li id="bad_data"> ERROR: Internal error: incomplete hold request. </li>
85
                                    <li id="bad_data"> ERROR: Internal error: incomplete hold request. </li>
81
                        [% END %]
86
                                [% END %]
82
87
83
                        [% IF ( expired_patron ) %]
88
                                [% IF ( expired_patron ) %]
84
                            <li id="expired_patron"> Your library card has expired. Please contact your librarian if you wish to renew your card. </li>
89
                                    <li id="expired_patron"> Your library card has expired. Please contact your librarian if you wish to renew your card. </li>
85
                        [% END %]
90
                                [% END %]
86
91
87
                        [% IF ( no_pickup_locations ) %]
92
                                [% IF ( no_pickup_locations ) %]
88
                            <li id="no_pickup_locations"> None of the libraries are available for pickup location. </li>
93
                                    <li id="no_pickup_locations"> None of the libraries are available for pickup location. </li>
89
                        [% END %]
94
                                [% END %]
90
                    </ul>
95
                            </ul>
91
                </div>
96
                        </div>
92
                <!-- /.message -->
97
                        <!-- /.message -->
93
            [% ELSE # /IF message %]
98
                    [% ELSE # /IF message %]
94
99
95
                [% IF ( none_available && multi_hold ) %]
100
                        [% IF ( none_available && multi_hold ) %]
96
                    <div id="none_available" class="alert"> Sorry, none of these titles can be placed on hold. </div>
101
                            <div id="none_available" class="alert"> Sorry, none of these titles can be placed on hold. </div>
97
                [% END %]
102
                        [% END %]
98
            [% END # / IF message %]
103
                    [% END # / IF message %]
99
104
100
            [% UNLESS ( message ) %]
105
                    [% UNLESS ( message ) %]
101
                [% UNLESS ( none_available ) %]
106
                        [% UNLESS ( none_available ) %]
102
                    <h2>Confirm holds for:[% INCLUDE 'patron-title.inc' patron = logged_in_user %] ([% logged_in_user.cardnumber | html %])</h2>
107
                            <h2>Confirm holds for:[% INCLUDE 'patron-title.inc' patron = logged_in_user %] ([% logged_in_user.cardnumber | html %])</h2>
103
                [% END # / UNLESS none_available %]
108
                        [% END # / UNLESS none_available %]
104
109
105
                [% IF ( new_reserves_allowed ) %]
110
                        [% IF ( new_reserves_allowed ) %]
106
                    <div id="new_reserves_allowed" class="alert"> <strong>Sorry,</strong> you can only place [% new_reserves_allowed | html %] more holds. Please uncheck the checkboxes for the items you wish to not place holds on. </div>
111
                            <div id="new_reserves_allowed" class="alert">
107
                [% END %]
112
                                <strong>Sorry,</strong> you can only place [% new_reserves_allowed | html %] more holds. Please uncheck the checkboxes for the items you wish to not place holds on.
113
                            </div>
114
                        [% END %]
108
115
109
                <form action="/cgi-bin/koha/opac-reserve.pl" method="post" id="hold-request-form">
116
                        <form action="/cgi-bin/koha/opac-reserve.pl" method="post" id="hold-request-form">
110
                    [% INCLUDE 'csrf-token.inc' %]
117
                            [% INCLUDE 'csrf-token.inc' %]
111
                    <legend class="sr-only">Hold requests</legend>
118
                            <legend class="sr-only">Hold requests</legend>
112
                    <input type="hidden" name="op" value="cud-place_reserve" />
119
                            <input type="hidden" name="op" value="cud-place_reserve" />
113
                    <!-- These values are set dynamically by js -->
120
                            <!-- These values are set dynamically by js -->
114
                    <input type="hidden" name="biblionumbers" id="biblionumbers" />
121
                            <input type="hidden" name="biblionumbers" id="biblionumbers" />
115
                    <input type="hidden" name="selecteditems" id="selections" />
122
                            <input type="hidden" name="selecteditems" id="selections" />
116
                    <div id="bigloop">
123
                            <div id="bigloop">
117
                        [% FOREACH bibitemloo IN bibitemloop %]
124
                                [% FOREACH bibitemloo IN bibitemloop %]
118
                            <div class="holdrow">
125
                                    <div class="holdrow">
119
                                [% IF bibitemloo.forced_hold_level %]
126
                                        [% IF bibitemloo.forced_hold_level %]
120
                                    <div class="alert alert-info forced_hold_level">
127
                                            <div class="alert alert-info forced_hold_level">
121
                                        [% IF bibitemloo.forced_hold_level == 'item' %]
128
                                                [% IF bibitemloo.forced_hold_level == 'item' %]
122
                                            <span>You already have at least one item level hold on this title. All further holds must be item level.</span>
129
                                                    <span>You already have at least one item level hold on this title. All further holds must be item level.</span>
123
                                        [% ELSE %]
130
                                                [% ELSE %]
124
                                            <span>You already have at least one record level hold on this title. All further holds must be record level.</span>
131
                                                    <span>You already have at least one record level hold on this title. All further holds must be record level.</span>
132
                                                [% END %]
133
                                            </div>
125
                                        [% END %]
134
                                        [% END %]
126
                                    </div>
127
                                [% END %]
128
135
129
                                [% IF ( bibitemloo.reserve_charge ) %]
136
                                        [% IF ( bibitemloo.reserve_charge ) %]
130
                                    <div class="alert" id="reserve_fee">
137
                                            <div class="alert" id="reserve_fee">
131
                                        [% IF Koha.Preference('HoldFeeMode') == 'any_time_is_collected' %]
138
                                                [% IF Koha.Preference('HoldFeeMode') == 'any_time_is_collected' %]
132
                                            <span>You will be charged a hold fee of [% bibitemloo.reserve_charge | $Price %] when you collect this item</span>
139
                                                    <span>You will be charged a hold fee of [% bibitemloo.reserve_charge | $Price %] when you collect this item</span>
133
                                        [% ELSE %]
140
                                                [% ELSE %]
134
                                            <span>You will be charged a hold fee of [% bibitemloo.reserve_charge | $Price %] for placing this hold</span>
141
                                                    <span>You will be charged a hold fee of [% bibitemloo.reserve_charge | $Price %] for placing this hold</span>
142
                                                [% END %]
143
                                            </div>
135
                                        [% END %]
144
                                        [% END %]
136
                                    </div>
137
                                [% END %]
138
145
139
                                <p>
146
                                        <p>
140
                                    [% IF ( bibitemloo.holdable ) %]
147
                                            [% IF ( bibitemloo.holdable ) %]
141
                                        <input class="reserve_mode" name="reserve_mode" type="hidden" value="single" />
148
                                                <input class="reserve_mode" name="reserve_mode" type="hidden" value="single" />
142
                                        <input class="single_bib" name="single_bib" type="hidden" value="[% bibitemloo.biblionumber | html %]" />
149
                                                <input class="single_bib" name="single_bib" type="hidden" value="[% bibitemloo.biblionumber | html %]" />
143
                                        <span class="confirmjs_hold" title="[% bibitemloo.biblionumber | html %]" style="padding:.3em"></span>
150
                                                <span class="confirmjs_hold" title="[% bibitemloo.biblionumber | html %]" style="padding:.3em"></span>
144
                                        <span class="confirm_nonjs">
151
                                                <span class="confirm_nonjs">
145
                                            <input
152
                                                    <input
146
                                                type="radio"
153
                                                        type="radio"
147
                                                class="confirmbox checkitem [% bibitemloo.biblionumber | html %]"
154
                                                        class="confirmbox checkitem [% bibitemloo.biblionumber | html %]"
148
                                                name="[% bibitemloo.biblionumber | html %]"
155
                                                        name="[% bibitemloo.biblionumber | html %]"
149
                                                checked="checked"
156
                                                        checked="checked"
150
                                                id="single_[% bibitemloo.biblionumber | html %]"
157
                                                        id="single_[% bibitemloo.biblionumber | html %]"
151
                                                value="any"
158
                                                        value="any"
152
                                            />
159
                                                    />
153
                                            <label class="confirm_label" for="single_[% bibitemloo.biblionumber | html %]">Place a hold on </label>
160
                                                    <label class="confirm_label" for="single_[% bibitemloo.biblionumber | html %]">Place a hold on </label>
154
                                        </span>
161
                                                </span>
155
                                    [% END # / bibitemloo.holdable %]
162
                                            [% END # / bibitemloo.holdable %]
156
157
                                    [% INCLUDE 'biblio-title.inc' biblio=bibitemloo link=> 1 %]
158
159
                                    [% IF ( bibitemloo.author ) %], by [% bibitemloo.author | html %][% END %]
160
                                </p>
161
162
                                [% UNLESS ( bibitemloo.holdable ) %]
163
                                    [% IF ( bibitemloo.ageRestricted ) %]
164
                                        <div class="alert alert-warning">Sorry, you are too young to place a hold for this item.</div>
165
                                    [% END %]
166
                                    [% IF ( bibitemloo.already_reserved ) %]
167
                                        <div class="alert alert-warning">You have already requested this title.</div>
168
                                    [% ELSIF ( bibitemloo.recall ) %]
169
                                        <div class="alert alert-warning">You have already placed a recall on this title.</div>
170
                                    [% ELSE %]
171
                                        [% IF bibitemloo.alreadypossession %]
172
                                            <div class="alert alert-warning">This title cannot be requested because it's already in your possession.</div>
173
                                        [% ELSIF bibitemloo.tooManyReserves %]
174
                                            <div class="alert alert-warning">This title cannot be requested because you reached the maximum number of holds.</div>
175
                                        [% ELSIF bibitemloo.tooManyHoldsForThisRecord %]
176
                                            <div class="alert alert-warning">This title cannot be requested because you exceeded max holds per record.</div>
177
                                        [% ELSIF bibitemloo.tooManyReservesToday %]
178
                                            <div class="alert alert-warning">This title cannot be requested because you reached the daily hold limit.</div>
179
                                        [% ELSIF bibitemloo.itemAlreadyOnHold %]
180
                                            <div class="alert alert-warning">This title cannot be requested because you already have hold for this item.</div>
181
                                        [% ELSE %]
182
                                            [% UNLESS ( bibitemloo.bib_available ) %]
183
                                                <div class="alert">There are no items that can be placed on hold.</div>
184
                                            [% ELSE %]
185
                                                <div class="alert">This title cannot be requested.</div>
186
                                            [% END %]
187
                                        [% END # / UNLESS bibitemloo.already_patron_possession %]
188
                                    [% END # / IF bibitemloo.already_reserved %]
189
                                [% END # / UNLESS bibitemloo.holdable %]
190
191
                                [% IF ( bibitemloo.holdable ) %]
192
                                    <fieldset class="rows">
193
                                        <ul>
194
                                            <!-- HOLDABLE -->
195
                                            [% UNLESS ( item_level_itypes ) %]
196
                                                <li class="itype">
197
                                                    <span class="label">Item type: </span>
198
                                                    [% IF ( bibitemloo.imageurl ) %]<img class="itemtype-image" src="[% bibitemloo.imageurl | html %]" alt="" />[% END %]
199
                                                    <span class="itypetext">[% bibitemloo.translated_description | html %]</span>
200
                                                </li>
201
                                            [% END %]
202
163
203
                                            [% SET OPACShowHoldQueueDetails = Koha.Preference('OPACShowHoldQueueDetails') %]
164
                                            [% INCLUDE 'biblio-title.inc' biblio=bibitemloo link=> 1 %]
204
                                            [% IF OPACShowHoldQueueDetails == 'holds_priority' || OPACShowHoldQueueDetails == 'priority' %]
205
                                                <li class="priority">
206
                                                    <span class="label">Your priority: </span>
207
                                                    [% bibitemloo.rank | html %]
208
                                                </li>
209
                                            [% END %]
210
165
211
                                            [% IF OPACShowHoldQueueDetails == 'holds_priority' || OPACShowHoldQueueDetails == 'holds' %]
166
                                            [% IF ( bibitemloo.author ) %], by [% bibitemloo.author | html %][% END %]
212
                                                <li class="holds-count">
167
                                        </p>
213
                                                    <span class="label">Number of holds: </span>
214
                                                    [% bibitemloo.reservecount | html %]
215
                                                </li>
216
                                            [% END %]
217
168
218
                                            [% UNLESS ( singleBranchMode ) %]
169
                                        [% UNLESS ( bibitemloo.holdable ) %]
219
                                                [% IF ( bibitemloo.holdable && Koha.Preference('OPACAllowUserToChooseBranch')) %]
170
                                            [% IF ( bibitemloo.ageRestricted ) %]
220
                                                    <li class="branch">
171
                                                <div class="alert alert-warning">Sorry, you are too young to place a hold for this item.</div>
221
                                                        <label for="branch_[% bibitemloo.biblionumber | html %]">Pick up location:</label>
172
                                            [% END %]
222
                                                        [% UNLESS ( bibitemloo.holdable ) %]
173
                                            [% IF ( bibitemloo.already_reserved ) %]
223
                                                            <select name="branch" id="branch_[% bibitemloo.biblionumber | html %]" disabled="disabled">
174
                                                <div class="alert alert-warning">You have already requested this title.</div>
224
                                                                [% PROCESS options_for_libraries libraries => Branches.pickup_locations({ search_params => { biblio => bibitemloo.biblionumber, patron => logged_in_user }, selected => branch }) %]
175
                                            [% ELSIF ( bibitemloo.recall ) %]
225
                                                            </select>
176
                                                <div class="alert alert-warning">You have already placed a recall on this title.</div>
226
                                                        [% ELSE %]
177
                                            [% ELSE %]
227
                                                            [% SET at_least_one_library_not_available_for_pickup = 0 %]
178
                                                [% IF bibitemloo.alreadypossession %]
228
                                                            <select name="branch" id="branch_[% bibitemloo.biblionumber | html %]">
179
                                                    <div class="alert alert-warning">This title cannot be requested because it's already in your possession.</div>
229
                                                                [% FOREACH library IN Branches.pickup_locations({ search_params => { biblio => bibitemloo.biblionumber, patron => logged_in_user }, selected => branch }) %]
180
                                                [% ELSIF bibitemloo.tooManyReserves %]
230
                                                                    [% SET pickup_available_at = bibitemloo.not_available_at.grep('^' _ library.branchcode _ '$').size ? 0 : 1 %]
181
                                                    <div class="alert alert-warning">This title cannot be requested because you reached the maximum number of holds.</div>
231
                                                                    [% IF library.selected AND pickup_available_at %]
182
                                                [% ELSIF bibitemloo.tooManyHoldsForThisRecord %]
232
                                                                        <option value="[% library.branchcode | html %]" selected="selected">[% library.branchname | html %]</option>
183
                                                    <div class="alert alert-warning">This title cannot be requested because you exceeded max holds per record.</div>
233
                                                                    [% ELSIF pickup_available_at %]
184
                                                [% ELSIF bibitemloo.tooManyReservesToday %]
234
                                                                        <option value="[% library.branchcode | html %]">[% library.branchname | html %]</option>
185
                                                    <div class="alert alert-warning">This title cannot be requested because you reached the daily hold limit.</div>
235
                                                                    [% ELSE %]
186
                                                [% ELSIF bibitemloo.itemAlreadyOnHold %]
236
                                                                        [% SET at_least_one_library_not_available_for_pickup = 1 %]
187
                                                    <div class="alert alert-warning">This title cannot be requested because you already have hold for this item.</div>
237
                                                                        <option value="[% library.branchcode | html %]" disabled="disabled" title="At least one item is available at this library">[% library.branchname | html %]</option>
188
                                                [% ELSE %]
238
                                                                    [% END %]
189
                                                    [% UNLESS ( bibitemloo.bib_available ) %]
239
                                                                [% END %]
190
                                                        <div class="alert">There are no items that can be placed on hold.</div>
240
                                                            </select>
191
                                                    [% ELSE %]
241
                                                            [% IF at_least_one_library_not_available_for_pickup %]
192
                                                        <div class="alert">This title cannot be requested.</div>
242
                                                                <div class="at_least_one_library_not_available_note">
193
                                                    [% END %]
243
                                                                    Note: Library policy does not allow hold/pickup of an item available locally. Please come to the library to retrieve these items
194
                                                [% END # / UNLESS bibitemloo.already_patron_possession %]
244
                                                                </div>
195
                                            [% END # / IF bibitemloo.already_reserved %]
245
                                                            [% END %]
196
                                        [% END # / UNLESS bibitemloo.holdable %]
246
                                                        [% END # / UNLESS bibitemloo.holdable %]
197
247
                                                    </li>
198
                                        [% IF ( bibitemloo.holdable ) %]
248
                                                [% END # / IF bibitemloo.holdable && Koha.Preference('OPACAllowUserToChooseBranch') %]
199
                                            <fieldset class="rows">
249
                                            [% END # / UNLESS singleBranchMode %]
200
                                                <ul>
250
                                        </ul>
201
                                                    <!-- HOLDABLE -->
251
202
                                                    [% UNLESS ( item_level_itypes ) %]
252
                                        <a class="toggle-hold-options" id="toggle-hold-options-[% bibitemloo.biblionumber | html %]" style="display:none;" href="#">Show more options</a>
203
                                                        <li class="itype">
253
204
                                                            <span class="label">Item type: </span>
254
                                        <div id="hold-options-[% bibitemloo.biblionumber | html %]" class="hold-options">
205
                                                            [% IF ( bibitemloo.imageurl ) %]<img class="itemtype-image" src="[% bibitemloo.imageurl | html %]" alt="" />[% END %]
255
                                            <ul>
206
                                                            <span class="itypetext">[% bibitemloo.translated_description | html %]</span>
256
                                                [% IF ( reserve_in_future ) %]
207
                                                        </li>
257
                                                    <li>
208
                                                    [% END %]
258
                                                        <label for="from[% bibitemloo.biblionumber | html %]">Hold starts on date:</label>
259
                                                        <input
260
                                                            type="text"
261
                                                            name="reserve_date_[% bibitemloo.biblionumber | html %]"
262
                                                            id="from[% bibitemloo.biblionumber | html %]"
263
                                                            data-start_for="to[% bibitemloo.biblionumber | html %]"
264
                                                            data-flatpickr-futureinclusive="true"
265
                                                            size="10"
266
                                                            class="flatpickr holddatefrom"
267
                                                            value="[% KohaDates.datetime_from_string | $KohaDates dateformat => 'iso' %]"
268
                                                        />
269
                                                        <span class="date-format from" data-biblionumber="[% bibitemloo.biblionumber | html %]">[% INCLUDE 'date-format.inc' %]</span>
270
                                                        <div class="required_label" style="display:none;">Required</div>
271
                                                    </li>
272
                                                [% END %]
273
209
274
                                                <li>
210
                                                    [% SET OPACShowHoldQueueDetails = Koha.Preference('OPACShowHoldQueueDetails') %]
275
                                                    <label for="to[% bibitemloo.biblionumber | html %]">Hold not needed after:</label>
211
                                                    [% IF OPACShowHoldQueueDetails == 'holds_priority' || OPACShowHoldQueueDetails == 'priority' %]
276
                                                    <input
212
                                                        <li class="priority">
277
                                                        type="text"
213
                                                            <span class="label">Your priority: </span>
278
                                                        name="expiration_date_[% bibitemloo.biblionumber | html %]"
214
                                                            [% bibitemloo.rank | html %]
279
                                                        id="to[% bibitemloo.biblionumber | html %]"
215
                                                        </li>
280
                                                        size="10"
216
                                                    [% END %]
281
                                                        data-flatpickr-future="true"
282
                                                        class="flatpickr futuredate"
283
                                                    />
284
                                                    <span class="date-format to" data-biblionumber="[% bibitemloo.biblionumber | html %]">[% INCLUDE 'date-format.inc' %]</span>
285
                                                    <div class="required_label" style="display:none;">Required</div>
286
                                                </li>
287
288
                                                [% IF Koha.Preference('AllowHoldItemTypeSelection') %]
289
                                                    <li>
290
                                                        <label for="itemtype">Request specific item type:</label>
291
                                                        <select name="itemtype" id="itemtype">
292
                                                            <option value="">Any item type</option>
293
                                                            [% FOREACH i IN bibitemloo.allowed_item_types %]
294
                                                                <option value="[% i | html %]">[% ItemTypes.GetDescription( i ) | html %]</option>
295
                                                            [%- END %]
296
                                                        </select>
297
                                                    </li>
298
                                                [% END %]
299
217
300
                                                [% UNLESS bibitemloo.forced_hold_level && ( bibitemloo.forced_hold_level == 'item' || bibitemloo.forced_hold_level == 'record' ) %]
218
                                                    [% IF OPACShowHoldQueueDetails == 'holds_priority' || OPACShowHoldQueueDetails == 'holds' %]
301
                                                    [% IF Koha.Preference('EnableItemGroupHolds') && bibitemloo.object.item_groups.count %]
219
                                                        <li class="holds-count">
302
                                                        <li>
220
                                                            <span class="label">Number of holds: </span>
303
                                                            <label for="itemtype">Request specific item group:</label>
221
                                                            [% bibitemloo.reservecount | html %]
304
                                                            <select name="item_group_id_[% bibitemloo.biblionumber | html %]" id="item_group_id_[% bibitemloo.biblionumber | html %]">
305
                                                                <option value="">Any item group</option>
306
                                                                [% FOREACH g IN bibitemloo.object.item_groups.search({}, { order_by => ['display_order'] }) %]
307
                                                                    [% IF g.items.count %]
308
                                                                        <option value="[% g.id | html %]">[% g.description | html %]</option>
309
                                                                    [% END %]
310
                                                                [% END %]
311
                                                            </select>
312
                                                        </li>
222
                                                        </li>
313
                                                    [% END %]
223
                                                    [% END %]
314
                                                [% END %]
315
224
316
                                                [% IF ( OpacHoldNotes ) %]
225
                                                    [% UNLESS ( singleBranchMode ) %]
317
                                                    <li>
226
                                                        [% IF ( bibitemloo.holdable && Koha.Preference('OPACAllowUserToChooseBranch')) %]
318
                                                        <div class="notesrow" id="notesrow_[% bibitemloo.biblionumber | html %]">
227
                                                            <li class="branch">
319
                                                            <label for="holdnotes_[% bibitemloo.biblionumber | html %]">Hold notes:</label>
228
                                                                <label for="branch_[% bibitemloo.biblionumber | html %]">Pick up location:</label>
320
                                                            <textarea id="holdnotes_[% bibitemloo.biblionumber | html %]" rows="2" cols="30" name="notes_[% bibitemloo.biblionumber | html %]">[% bibitemloo.holdnotes | html %]</textarea>
229
                                                                [% UNLESS ( bibitemloo.holdable ) %]
321
                                                        </div>
230
                                                                    <select name="branch" id="branch_[% bibitemloo.biblionumber | html %]" disabled="disabled">
322
                                                    </li>
231
                                                                        [% PROCESS options_for_libraries libraries => Branches.pickup_locations({ search_params => { biblio => bibitemloo.biblionumber, patron => logged_in_user }, selected => branch }) %]
323
                                                [% END # / IF OpacHoldNotes %]
232
                                                                    </select>
324
325
                                                [% IF bibitemloo.itemholdable %]
326
                                                    <!-- ITEM HOLDS -->
327
                                                    <li class="lradio place_on_type" style="display:none;">
328
                                                        [% UNLESS bibitemloo.forced_hold_level == 'item' || bibitemloo.forced_hold_level == 'item_group' || bibitemloo.force_hold %]
329
                                                            <label class="radio inline" for="reqany_[% bibitemloo.biblionumber | html %]">Next available item</label>
330
                                                            <input type="radio" name="reqtype_[% bibitemloo.biblionumber | html %]" id="reqany_[% bibitemloo.biblionumber | html %]" class="selectany" value="Any" checked="checked" />
331
                                                        [% END %]
332
                                                        <label class="radio inline" for="reqspecific_[% bibitemloo.biblionumber | html %]">A specific item</label>
333
                                                        <input type="radio" name="reqtype_[% bibitemloo.biblionumber | html %]" id="reqspecific_[% bibitemloo.biblionumber | html %]" class="selectspecific" value="Specific" />
334
                                                    </li>
335
                                                [% END # / IF bibitemloo.itemholdable %]
336
                                            </ul>
337
338
                                            [% IF bibitemloo.itemholdable %]
339
                                                <div id="copiesrow_[% bibitemloo.biblionumber | html %]" class="copiesrow">
340
                                                    <table class="table table-bordered table-striped itemstable">
341
                                                        <caption>Select a specific item:</caption>
342
                                                        <thead>
343
                                                            <tr>
344
                                                                <th>Copy number</th>
345
                                                                [% IF ( item_level_itypes ) %]
346
                                                                    <th>Item type</th>
347
                                                                [% END %]
348
                                                                <th>Barcode</th>
349
                                                                [% UNLESS ( singleBranchMode ) %]
350
                                                                    <th>Home library</th>
351
                                                                    <th>Last location</th>
352
                                                                [% END %]
353
                                                                [% IF ( itemdata_ccode ) %]
354
                                                                    <th>Collection</th>
355
                                                                [% END %]
356
                                                                <th>Call number</th>
357
                                                                [% IF ( itemdata_enumchron ) %]
358
                                                                    <th>Vol info</th>
359
                                                                [% END %]
360
                                                                <th>Notes</th>
361
                                                                <th>Information</th>
362
                                                            </tr>
363
                                                        </thead>
364
                                                        <tbody>
365
                                                            [% SET unholdable_items = 0 %]
366
                                                            [% FOREACH itemLoo IN bibitemloo.itemLoop %]
367
                                                                [% SET row_class = "holdable" %]
368
                                                                [% SET row_style = "" %]
369
                                                                [% IF ( itemLoo.available ) %]
370
                                                                    [% IF ( itemLoo.checkout ) %]
371
                                                                        [% row_class = "holdable onloan" %]
372
                                                                    [% ELSE %]
373
                                                                        [% row_class = "holdable" %]
374
                                                                    [% END %]
375
                                                                [% ELSE %]
233
                                                                [% ELSE %]
376
                                                                    [% SET unholdable_items = 1 %]
234
                                                                    [% SET at_least_one_library_not_available_for_pickup = 0 %]
377
                                                                    [% row_style = "display:none" %]
235
                                                                    <select name="branch" id="branch_[% bibitemloo.biblionumber | html %]">
378
                                                                    [% IF ( itemLoo.checkout ) %]
236
                                                                        [% FOREACH library IN Branches.pickup_locations({ search_params => { biblio => bibitemloo.biblionumber, patron => logged_in_user }, selected => branch }) %]
379
                                                                        [% row_class = "unholdable onloan" %]
237
                                                                            [% SET pickup_available_at = bibitemloo.not_available_at.grep('^' _ library.branchcode _ '$').size ? 0 : 1 %]
380
                                                                    [% ELSE %]
238
                                                                            [% IF library.selected AND pickup_available_at %]
381
                                                                        [% row_class = "unholdable" %]
239
                                                                                <option value="[% library.branchcode | html %]" selected="selected">[% library.branchname | html %]</option>
240
                                                                            [% ELSIF pickup_available_at %]
241
                                                                                <option value="[% library.branchcode | html %]">[% library.branchname | html %]</option>
242
                                                                            [% ELSE %]
243
                                                                                [% SET at_least_one_library_not_available_for_pickup = 1 %]
244
                                                                                <option value="[% library.branchcode | html %]" disabled="disabled" title="At least one item is available at this library"
245
                                                                                    >[% library.branchname | html %]</option
246
                                                                                >
247
                                                                            [% END %]
248
                                                                        [% END %]
249
                                                                    </select>
250
                                                                    [% IF at_least_one_library_not_available_for_pickup %]
251
                                                                        <div class="at_least_one_library_not_available_note">
252
                                                                            Note: Library policy does not allow hold/pickup of an item available locally. Please come to the library to retrieve these items
253
                                                                        </div>
382
                                                                    [% END %]
254
                                                                    [% END %]
255
                                                                [% END # / UNLESS bibitemloo.holdable %]
256
                                                            </li>
257
                                                        [% END # / IF bibitemloo.holdable && Koha.Preference('OPACAllowUserToChooseBranch') %]
258
                                                    [% END # / UNLESS singleBranchMode %]
259
                                                </ul>
260
261
                                                <a class="toggle-hold-options" id="toggle-hold-options-[% bibitemloo.biblionumber | html %]" style="display:none;" href="#">Show more options</a>
262
263
                                                <div id="hold-options-[% bibitemloo.biblionumber | html %]" class="hold-options">
264
                                                    <ul>
265
                                                        [% IF ( reserve_in_future ) %]
266
                                                            <li>
267
                                                                <label for="from[% bibitemloo.biblionumber | html %]">Hold starts on date:</label>
268
                                                                <input
269
                                                                    type="text"
270
                                                                    name="reserve_date_[% bibitemloo.biblionumber | html %]"
271
                                                                    id="from[% bibitemloo.biblionumber | html %]"
272
                                                                    data-start_for="to[% bibitemloo.biblionumber | html %]"
273
                                                                    data-flatpickr-futureinclusive="true"
274
                                                                    size="10"
275
                                                                    class="flatpickr holddatefrom"
276
                                                                    value="[% KohaDates.datetime_from_string | $KohaDates dateformat => 'iso' %]"
277
                                                                />
278
                                                                <span class="date-format from" data-biblionumber="[% bibitemloo.biblionumber | html %]">[% INCLUDE 'date-format.inc' %]</span>
279
                                                                <div class="required_label" style="display:none;">Required</div>
280
                                                            </li>
281
                                                        [% END %]
282
283
                                                        <li>
284
                                                            <label for="to[% bibitemloo.biblionumber | html %]">Hold not needed after:</label>
285
                                                            <input
286
                                                                type="text"
287
                                                                name="expiration_date_[% bibitemloo.biblionumber | html %]"
288
                                                                id="to[% bibitemloo.biblionumber | html %]"
289
                                                                size="10"
290
                                                                data-flatpickr-future="true"
291
                                                                class="flatpickr futuredate"
292
                                                            />
293
                                                            <span class="date-format to" data-biblionumber="[% bibitemloo.biblionumber | html %]">[% INCLUDE 'date-format.inc' %]</span>
294
                                                            <div class="required_label" style="display:none;">Required</div>
295
                                                        </li>
296
297
                                                        [% IF Koha.Preference('AllowHoldItemTypeSelection') %]
298
                                                            <li>
299
                                                                <label for="itemtype">Request specific item type:</label>
300
                                                                <select name="itemtype" id="itemtype">
301
                                                                    <option value="">Any item type</option>
302
                                                                    [% FOREACH i IN bibitemloo.allowed_item_types %]
303
                                                                        <option value="[% i | html %]">[% ItemTypes.GetDescription( i ) | html %]</option>
304
                                                                    [%- END %]
305
                                                                </select>
306
                                                            </li>
307
                                                        [% END %]
308
309
                                                        [% UNLESS bibitemloo.forced_hold_level && ( bibitemloo.forced_hold_level == 'item' || bibitemloo.forced_hold_level == 'record' ) %]
310
                                                            [% IF Koha.Preference('EnableItemGroupHolds') && bibitemloo.object.item_groups.count %]
311
                                                                <li>
312
                                                                    <label for="itemtype">Request specific item group:</label>
313
                                                                    <select name="item_group_id_[% bibitemloo.biblionumber | html %]" id="item_group_id_[% bibitemloo.biblionumber | html %]">
314
                                                                        <option value="">Any item group</option>
315
                                                                        [% FOREACH g IN bibitemloo.object.item_groups.search({}, { order_by => ['display_order'] }) %]
316
                                                                            [% IF g.items.count %]
317
                                                                                <option value="[% g.id | html %]">[% g.description | html %]</option>
318
                                                                            [% END %]
319
                                                                        [% END %]
320
                                                                    </select>
321
                                                                </li>
322
                                                            [% END %]
323
                                                        [% END %]
324
325
                                                        [% IF ( OpacHoldNotes ) %]
326
                                                            <li>
327
                                                                <div class="notesrow" id="notesrow_[% bibitemloo.biblionumber | html %]">
328
                                                                    <label for="holdnotes_[% bibitemloo.biblionumber | html %]">Hold notes:</label>
329
                                                                    <textarea id="holdnotes_[% bibitemloo.biblionumber | html %]" rows="2" cols="30" name="notes_[% bibitemloo.biblionumber | html %]">
330
[% bibitemloo.holdnotes | html %]</textarea
331
                                                                    >
332
                                                                </div>
333
                                                            </li>
334
                                                        [% END # / IF OpacHoldNotes %]
335
336
                                                        [% IF bibitemloo.itemholdable %]
337
                                                            <!-- ITEM HOLDS -->
338
                                                            <li class="lradio place_on_type" style="display:none;">
339
                                                                [% UNLESS bibitemloo.forced_hold_level == 'item' || bibitemloo.forced_hold_level == 'item_group' || bibitemloo.force_hold %]
340
                                                                    <label class="radio inline" for="reqany_[% bibitemloo.biblionumber | html %]">Next available item</label>
341
                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber | html %]" id="reqany_[% bibitemloo.biblionumber | html %]" class="selectany" value="Any" checked="checked" />
383
                                                                [% END %]
342
                                                                [% END %]
384
                                                                <tr class="[% row_class | html %]" style="[% row_style | html %]">
343
                                                                <label class="radio inline" for="reqspecific_[% bibitemloo.biblionumber | html %]">A specific item</label>
385
                                                                    [% IF ( itemLoo.available ) %]
344
                                                                <input type="radio" name="reqtype_[% bibitemloo.biblionumber | html %]" id="reqspecific_[% bibitemloo.biblionumber | html %]" class="selectspecific" value="Specific" />
386
                                                                        <td class="copynumber" data-order="[% itemLoo.copynumber | html %]">
345
                                                            </li>
387
                                                                            <input
346
                                                        [% END # / IF bibitemloo.itemholdable %]
388
                                                                                type="[% reserve_input_type | html %]"
347
                                                    </ul>
389
                                                                                class="checkitem checkitem_[% bibitemloo.biblionumber | html %]"
348
390
                                                                                name="checkitem_[% bibitemloo.biblionumber | html %]"
349
                                                    [% IF bibitemloo.itemholdable %]
391
                                                                                value="[% itemLoo.itemnumber | html %]"
350
                                                        <div id="copiesrow_[% bibitemloo.biblionumber | html %]" class="copiesrow">
392
                                                                            />
351
                                                            <table class="table table-bordered table-striped itemstable">
393
                                                                            [% IF ( itemLoo.copynumber ) %]
352
                                                                <caption>Select a specific item:</caption>
394
                                                                                [% itemLoo.copynumber | html %]
353
                                                                <thead>
354
                                                                    <tr>
355
                                                                        <th data-colname="selection" class="no-sort">Choose</th>
356
                                                                        [% IF ( itemdata_copynumber ) %]
357
                                                                            <th data-colname="copy_number">Copy number</th>
358
                                                                        [% END %]
359
                                                                        [% IF ( item_level_itypes ) %]
360
                                                                            <th data-colname="itemtype">Item type</th>
361
                                                                        [% END %]
362
                                                                        <th data-colname="barcode">Barcode</th>
363
                                                                        [% UNLESS ( singleBranchMode ) %]
364
                                                                            <th data-colname="current_library">Current library</th>
365
                                                                            <th data-colname="home_library">Home library</th>
366
                                                                        [% END %]
367
                                                                        [% IF ( itemdata_ccode ) %]
368
                                                                            <th data-colname="collection">Collection</th>
369
                                                                        [% END %]
370
                                                                        <th data-colname="call_number">Call number</th>
371
                                                                        [% IF ( itemdata_enumchron ) %]
372
                                                                            <th data-colname="enumchron">Vol info</th>
373
                                                                        [% END %]
374
                                                                        <th data-colname="notes">Notes</th>
375
                                                                        <th data-colname="information">Information</th>
376
                                                                        <th data-colname=""></th>
377
                                                                    </tr>
378
                                                                </thead>
379
                                                                <tbody>
380
                                                                    [% SET unholdable_items = 0 %]
381
                                                                    [% FOREACH itemLoo IN bibitemloo.itemLoop %]
382
                                                                        [% SET row_class = "holdable" %]
383
                                                                        [% SET row_style = "" %]
384
                                                                        [% IF ( itemLoo.available ) %]
385
                                                                            [% IF ( itemLoo.checkout ) %]
386
                                                                                [% row_class = "holdable onloan" %]
387
                                                                            [% ELSE %]
388
                                                                                [% row_class = "holdable" %]
389
                                                                            [% END %]
390
                                                                        [% ELSE %]
391
                                                                            [% SET unholdable_items = 1 %]
392
                                                                            [% row_style = "display:none" %]
393
                                                                            [% IF ( itemLoo.checkout ) %]
394
                                                                                [% row_class = "unholdable onloan" %]
395
                                                                            [% ELSE %]
396
                                                                                [% row_class = "unholdable" %]
395
                                                                            [% END %]
397
                                                                            [% END %]
396
                                                                        </td>
398
                                                                        [% END %]
397
                                                                        [%# copynumber %]
399
                                                                        <tr class="[% row_class | html %]" style="[% row_style | html %]">
398
                                                                    [% ELSE %]
400
                                                                            [% IF ( itemLoo.available ) %]
399
                                                                        <td class="copynumber">
401
                                                                                <td class="checkbox">
400
                                                                            <input
402
                                                                                    <input
401
                                                                                disabled="disabled"
403
                                                                                        type="[% reserve_input_type | html %]"
402
                                                                                type="radio"
404
                                                                                        class="checkitem checkitem_[% bibitemloo.biblionumber | html %]"
403
                                                                                aria-label="Cannot be put on hold"
405
                                                                                        name="checkitem_[% bibitemloo.biblionumber | html %]"
404
                                                                                class="checkitem"
406
                                                                                        value="[% itemLoo.itemnumber | html %]"
405
                                                                                name="checkitem"
407
                                                                                    />
406
                                                                                value="[% itemLoo.itemnumber | html %]"
408
                                                                                </td>
407
                                                                                style="display:none;"
409
                                                                            [% ELSE %]
408
                                                                            />
410
                                                                                <td class="checkbox">
409
                                                                            <i class="fa fa-times danger" aria-hidden="true" title="Cannot be put on hold"></i>
411
                                                                                    <input disabled="disabled" type="radio" class="checkitem" name="checkitem" value="[% itemLoo.itemnumber | html %]" style="display:none;" />
410
                                                                            [% IF ( itemLoo.copynumber ) %]
412
                                                                                    <i class="fa fa-times danger" aria-hidden="true"></i>
411
                                                                                [% itemLoo.copynumber | html %]
413
                                                                                    <span class="fa-sr-only">Cannot be put on hold</span>
414
                                                                                </td>
412
                                                                            [% END %]
415
                                                                            [% END %]
413
                                                                        </td>
414
                                                                        [%# copynumber %]
415
                                                                    [% END %]
416
416
417
                                                                    [% IF ( item_level_itypes ) %]
417
                                                                            [% IF ( itemdata_copynumber ) %]
418
                                                                        <td class="itype">
418
                                                                                <td class="copynumber" data-order="[% itemLoo.copynumber | html %]">
419
                                                                            [% UNLESS ( Koha.Preference('OpacNoItemTypeImages') ) %]
419
                                                                                    [% IF ( itemLoo.copynumber ) %]
420
                                                                                [% IF ( itemLoo.imageurl ) %]
420
                                                                                        [% itemLoo.copynumber | html %]
421
                                                                                    <img class="itemtype-image" src="[% itemLoo.imageurl | html %]" alt="" />
421
                                                                                    [% END %]
422
                                                                                [% END %]
422
                                                                                </td>
423
                                                                            [% END %]
423
                                                                            [% END %]
424
                                                                            <span class="itypetext">[% itemLoo.translated_description | html %]</span>
425
                                                                        </td>
426
                                                                    [% END %]
427
424
428
                                                                    <td class="barcode">[% itemLoo.barcode | html %]</td>
425
                                                                            [% IF ( item_level_itypes ) %]
429
                                                                    [% UNLESS ( singleBranchMode ) %]
426
                                                                                <td class="itype">
430
                                                                        <td class="homebranch">[% Branches.GetName( itemLoo.homebranch) | html %]</td>
427
                                                                                    [% UNLESS ( Koha.Preference('OpacNoItemTypeImages') ) %]
431
                                                                        <td class="holdingbranch">[% Branches.GetName( itemLoo.holdingbranch ) | html %]</td>
428
                                                                                        [% IF ( itemLoo.imageurl ) %]
432
                                                                    [% END %]
429
                                                                                            <img class="itemtype-image" src="[% itemLoo.imageurl | html %]" alt="" />
433
                                                                    [% IF ( itemdata_ccode ) %]
430
                                                                                        [% END %]
434
                                                                        <td class="ccode">
431
                                                                                    [% END %]
435
                                                                            [% IF ( itemLoo.ccode ) %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => itemLoo.ccode, opac => 1 ) | html %][% END %]</td
432
                                                                                    <span class="itypetext">[% itemLoo.translated_description | html %]</span>
436
                                                                        >
433
                                                                                </td>
437
                                                                    [% END %]
434
                                                                            [% END %]
438
                                                                    <td class="call_no">[% itemLoo.itemcallnumber | html %]</td>
439
                                                                    [% IF ( itemdata_enumchron ) %]
440
                                                                        <td class="vol_info">[% itemLoo.enumchron | html %]</td>
441
                                                                    [% END %]
442
                                                                    <td class="itemnotes"> [% itemLoo.itemnotes | html %] </td>
443
                                                                    <td class="information">
444
                                                                        [% IF ( itemLoo.checkout.date_due) %]
445
                                                                            <span class="checkedout">Due [% itemLoo.checkout.date_due| $KohaDates as_due_date => 1 %]</span>
446
                                                                        [% ELSIF ( itemLoo.transfertwhen ) %]
447
                                                                            <span class="intransit"
448
                                                                                >In transit from [% Branches.GetName( itemLoo.transfertfrom ) | html %] to [% Branches.GetName( itemLoo.transfertto ) | html %] since
449
                                                                                [% itemLoo.transfertwhen | $KohaDates %]</span
450
                                                                            >
451
                                                                        [% END %]
452
435
453
                                                                        [% IF ( itemLoo.itemlost == 1 || itemLoo.itemlost == 2 ) %]
436
                                                                            <td class="barcode">[% itemLoo.barcode | html %]</td>
454
                                                                            [%# FIXME Why only for 1 or 2? Shouldn't we test for withdrawn as well? %]
437
                                                                            [% UNLESS ( singleBranchMode ) %]
455
                                                                            <span class="lost">Unavailable (lost or missing)</span>
438
                                                                                <td class="homebranch">[% Branches.GetName( itemLoo.homebranch) | html %]</td>
456
                                                                        [% END %]
439
                                                                                <td class="holdingbranch">[% Branches.GetName( itemLoo.holdingbranch ) | html %]</td>
440
                                                                            [% END %]
441
                                                                            [% IF ( itemdata_ccode ) %]
442
                                                                                <td class="ccode">
443
                                                                                    [% IF ( itemLoo.ccode ) %][% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => itemLoo.ccode, opac => 1 ) | html %][% END %]</td
444
                                                                                >
445
                                                                            [% END %]
446
                                                                            <td class="call_no">[% itemLoo.itemcallnumber | html %]</td>
447
                                                                            [% IF ( itemdata_enumchron ) %]
448
                                                                                <td class="vol_info">[% itemLoo.enumchron | html %]</td>
449
                                                                            [% END %]
450
                                                                            <td class="itemnotes"> [% itemLoo.itemnotes | html %] </td>
451
                                                                            <td class="information">
452
                                                                                [% IF ( itemLoo.checkout.date_due) %]
453
                                                                                    <span class="checkedout">Due [% itemLoo.checkout.date_due| $KohaDates as_due_date => 1 %]</span>
454
                                                                                [% ELSIF ( itemLoo.transfertwhen ) %]
455
                                                                                    <span class="intransit"
456
                                                                                        >In transit from [% Branches.GetName( itemLoo.transfertfrom ) | html %] to [% Branches.GetName( itemLoo.transfertto ) | html %] since
457
                                                                                        [% itemLoo.transfertwhen | $KohaDates %]</span
458
                                                                                    >
459
                                                                                [% END %]
457
460
458
                                                                        [% IF ( itemLoo.notforloan ) %]
461
                                                                                [% IF ( itemLoo.itemlost == 1 || itemLoo.itemlost == 2 ) %]
459
                                                                            <span class="notforloan"
462
                                                                                    [%# FIXME Why only for 1 or 2? Shouldn't we test for withdrawn as well? %]
460
                                                                                >Not for loan ([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => itemLoo.notforloan ) %])</span
463
                                                                                    <span class="lost">Unavailable (lost or missing)</span>
461
                                                                            >
464
                                                                                [% END %]
462
                                                                        [% END %]
463
465
464
                                                                        [% IF ( itemLoo.first_hold ) %]
466
                                                                                [% IF ( itemLoo.notforloan ) %]
465
                                                                            <span class="waiting">
467
                                                                                    <span class="notforloan"
466
                                                                                [% IF ( itemLoo.waitingdate ) %]
468
                                                                                        >Not for loan ([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => itemLoo.notforloan ) %])</span
467
                                                                                    <span>Waiting for patron at [% Branches.GetName( itemLoo.ExpectedAtLibrary ) | html %] since [% itemLoo.waitingdate | $KohaDates %]</span>
469
                                                                                    >
468
                                                                                [% ELSIF ( itemLoo.reservedate ) %]
469
                                                                                    <span>On hold for patron expected at [% Branches.GetName( itemLoo.ExpectedAtLibrary ) | html %] since [% itemLoo.reservedate | $KohaDates %]</span>
470
                                                                                [% ELSE %]
471
                                                                                    <span>On hold for patron expected at [% Branches.GetName( itemLoo.ExpectedAtLibrary ) | html %]</span>
472
                                                                                [% END %]
470
                                                                                [% END %]
473
                                                                            </span>
471
474
                                                                        [% ELSE %]
472
                                                                                [% IF ( itemLoo.first_hold ) %]
475
                                                                            <span class="notonhold">Not on hold</span>
473
                                                                                    <span class="waiting">
476
                                                                        [% END # / IF ( itemLoo.first_hold ) %]
474
                                                                                        [% IF ( itemLoo.waitingdate ) %]
477
                                                                    </td>
475
                                                                                            <span>Waiting for patron at [% Branches.GetName( itemLoo.ExpectedAtLibrary ) | html %] since [% itemLoo.waitingdate | $KohaDates %]</span>
478
                                                                </tr>
476
                                                                                        [% ELSIF ( itemLoo.reservedate ) %]
479
                                                            [% END # / FOREACH itemLoo IN bibitemloo.itemLoop %]
477
                                                                                            <span>On hold for patron expected at [% Branches.GetName( itemLoo.ExpectedAtLibrary ) | html %] since [% itemLoo.reservedate | $KohaDates %]</span>
480
                                                        </tbody>
478
                                                                                        [% ELSE %]
481
                                                    </table>
479
                                                                                            <span>On hold for patron expected at [% Branches.GetName( itemLoo.ExpectedAtLibrary ) | html %]</span>
482
                                                    <!-- / #copiesrow_[% bibitemloo.biblionumber | html %] -->
480
                                                                                        [% END %]
483
                                                    [% IF unholdable_items %]
481
                                                                                    </span>
484
                                                        <button id="show_unholdable" class="btn btn-primary toggle_unholdable unholdable">Show unholdable items</button>
482
                                                                                [% ELSE %]
485
                                                        <button id="hide_unholdable" class="btn btn-primary toggle_unholdable unholdable" style="display:none;">Hide unholdable items</button>
483
                                                                                    <span class="notonhold">Not on hold</span>
486
                                                    [% END %]
484
                                                                                [% END # / IF ( itemLoo.first_hold ) %]
485
                                                                            </td>
486
                                                                            <td></td>
487
                                                                        </tr>
488
                                                                    [% END # / FOREACH itemLoo IN bibitemloo.itemLoop %]
489
                                                                </tbody>
490
                                                            </table>
491
                                                            <!-- / #copiesrow_[% bibitemloo.biblionumber | html %] -->
492
                                                            [% IF unholdable_items %]
493
                                                                <button id="show_unholdable" class="btn btn-primary toggle_unholdable unholdable">Show unholdable items</button>
494
                                                                <button id="hide_unholdable" class="btn btn-primary toggle_unholdable unholdable" style="display:none;">Hide unholdable items</button>
495
                                                            [% END %]
496
                                                        </div>
497
                                                        <!-- /.copiesrow -->
498
                                                    [% END # / IF ( bibitemloo.itemholdable ) %]
487
                                                </div>
499
                                                </div>
488
                                            [% END # / IF ( bibitemloo.itemholdable ) %]
500
                                                <!-- / #hold-options-[% bibitemloo.biblionumber | html %] -->
489
                                        </div>
501
                                            </fieldset>
490
                                        <!-- / #hold-options-[% bibitemloo.biblionumber | html %] -->
502
                                        [% END # / IF ( bibitemloo.holdable ) %]
491
                                    </fieldset>
503
                                    </div>
492
                                [% END # / IF ( bibitemloo.holdable ) %]
504
                                    <!-- / .holdrow -->
493
                            </div>
505
                                [% END # / FOREACH bibitemloo IN bibitemloop %] </div
494
                            <!-- / .holdrow -->
506
                            ><!-- #bigloop -->
495
                        [% END # / FOREACH bibitemloo IN bibitemloop %] </div
507
496
                    ><!-- #bigloop -->
508
                            [% UNLESS ( none_available ) %]
497
509
                                <input type="submit" value="Confirm hold" class="btn btn-primary placehold" />
498
                    [% UNLESS ( none_available ) %]
510
                            [% END %]
499
                        <input type="submit" value="Confirm hold" class="btn btn-primary placehold" />
511
                        </form>
500
                    [% END %]
512
                    [% END # / UNLESS message %]
501
                </form>
513
                </div>
502
            [% END # / UNLESS message %]
514
                <!-- / #holds -->
515
            </div>
503
        </div>
516
        </div>
504
        <!-- / #holds -->
505
    </div>
517
    </div>
506
    <!-- / .container -->
518
    <!-- / .container -->
507
</main>
519
</main>
Lines 731-745 Link Here
731
743
732
                return true;
744
                return true;
733
            });
745
            });
734
            $(".itemstable").each(function(){
746
735
                $(this).DataTable({
747
            var table_settings = [% TablesSettings.GetTableSettings( 'opac', 'opac_holds', 'opac_holds_items', 'json' ) | $raw %];
736
                    dom: "t",
748
737
                    initComplete: function() {
749
            $(".itemstable").kohaTable({
738
                        this.find("input:radio").first().prop("checked", true );
750
                bKohaColumnsUseNames: true,
739
                    },
751
                order: [[ 1, "asc" ]],
740
                    paging: false
752
                responsive: {
741
                });
753
                    details: { "type": 'column',"target": -1 }
742
            });
754
                },
755
                columnDefs: [
756
                    { "className": 'dtr-control', "orderable": false, "targets": -1 }
757
                ],
758
                initComplete: function(settings, json) {
759
                    /* Select the first radio button in the table as a default */
760
                    $( "#" + settings.sInstance ).find("input:radio").first().prop("checked", true );
761
                },
762
                paging: false
763
            }, table_settings
764
            );
743
        });
765
        });
744
    </script>
766
    </script>
745
[% END %]
767
[% END %]
(-)a/opac/opac-reserve.pl (-8 / +13 lines)
Lines 366-378 $template->param( select_item_types => 1 ); Link Here
366
#
366
#
367
#
367
#
368
368
369
my $biblioLoop         = [];
369
my $biblioLoop          = [];
370
my $numBibsAvailable   = 0;
370
my $numBibsAvailable    = 0;
371
my $itemdata_enumchron = 0;
371
my $itemdata_copynumber = 0;
372
my $itemdata_ccode     = 0;
372
my $itemdata_enumchron  = 0;
373
my $anyholdable        = 0;
373
my $itemdata_ccode      = 0;
374
my $itemLevelTypes     = C4::Context->preference('item-level_itypes');
374
my $anyholdable         = 0;
375
my $pickup_locations   = Koha::Libraries->search( { pickup_location => 1 } );
375
my $itemLevelTypes      = C4::Context->preference('item-level_itypes');
376
my $pickup_locations    = Koha::Libraries->search( { pickup_location => 1 } );
376
$template->param( 'item_level_itypes' => $itemLevelTypes );
377
$template->param( 'item_level_itypes' => $itemLevelTypes );
377
378
378
my $patron_unblessed = $patron->unblessed;
379
my $patron_unblessed = $patron->unblessed;
Lines 486-491 foreach my $biblioNum (@biblionumbers) { Link Here
486
            }
487
            }
487
        }
488
        }
488
489
490
        # Show copy number when needed
491
        if ( $item_info->{copynumber} ) {
492
            $itemdata_copynumber = 1;
493
        }
494
489
        # Show serial enumeration when needed
495
        # Show serial enumeration when needed
490
        if ( $item_info->{enumchron} ) {
496
        if ( $item_info->{enumchron} ) {
491
            $itemdata_enumchron = 1;
497
            $itemdata_enumchron = 1;
492
- 

Return to bug 37219