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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt (-1471 / +1656 lines)
Lines 36-46 Link Here
36
[% SET footerjs = 1 %]
36
[% SET footerjs = 1 %]
37
[% INCLUDE 'doc-head-open.inc' %]
37
[% INCLUDE 'doc-head-open.inc' %]
38
<title>
38
<title>
39
  [% IF ( unknownbiblionumber ) %]
39
    [% IF ( unknownbiblionumber ) %]
40
    Unknown record
40
        Unknown record
41
  [% ELSE %]
41
    [% ELSE %]
42
    Details for [% INCLUDE 'biblio-title-head.inc' %]
42
        Details for [% INCLUDE 'biblio-title-head.inc' %]
43
  [% END %] &rsaquo; Catalog &rsaquo; Koha
43
    [% END %] &rsaquo; Catalog &rsaquo; Koha
44
</title>
44
</title>
45
[% INCLUDE 'doc-head-close.inc' %]
45
[% INCLUDE 'doc-head-close.inc' %]
46
[% Asset.css("lib/Chocolat/css/chocolat.css") | $raw %]
46
[% Asset.css("lib/Chocolat/css/chocolat.css") | $raw %]
Lines 73-1341 Link Here
73
    [% END #/ WRAPPER breadcrumbs %]
73
    [% END #/ WRAPPER breadcrumbs %]
74
[% END #/ WRAPPER sub-header.inc %]
74
[% END #/ WRAPPER sub-header.inc %]
75
75
76
<div class="main container-fluid">
77
    <div class="row">
78
        <div class="col-sm-10 col-sm-push-2">
79
            <main>
80
                <div class="row">
81
82
[% IF ( unknownbiblionumber ) %]
76
[% IF ( unknownbiblionumber ) %]
83
  <div class="dialog message">The record you requested does not exist ([% biblionumber | html %]).</div>
77
    <div class="dialog message">The record you requested does not exist ([% biblionumber | html %]).</div>
84
[% ELSE %]
78
[% ELSE %]
85
79
86
[% IntranetCoce    = Koha.Preference('IntranetCoce') %]
80
    <div class="main container-fluid">
87
[% CoceProviders   = Koha.Preference('CoceProviders') %]
81
        <div class="row">
88
[% CoceHost        = Koha.Preference('CoceHost') %]
82
            <div class="col-sm-10 col-sm-push-2">
89
[% SyndeticsCovers = Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') %]
83
                <main>
90
84
                    <div class="row">
91
[% INCLUDE 'cat-toolbar.inc' %]
85
92
    [% IF decoding_error %]
86
                        [% IntranetCoce    = Koha.Preference('IntranetCoce') %]
93
        <div>
87
                        [% CoceProviders   = Koha.Preference('CoceProviders') %]
94
           <span class="biberror">
88
                        [% CoceHost        = Koha.Preference('CoceHost') %]
95
            There is an error with this bibliographic record, the view may be degraded.</span>
89
                        [% SyndeticsCovers = Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') %]
96
            <span class="error"><br/> Error: [% decoding_error | html %]</span>
90
97
        </div>
91
                        [% INCLUDE 'cat-toolbar.inc' %]
98
    [% END %]
92
                        [% IF decoding_error %]
99
    [% IF analytics_error %]
93
                            <div>
100
        <div>
94
                                <span class="biberror">
101
           <span class="analytics_error">
95
                                    There is an error with this bibliographic record, the view may be degraded.
102
            There was an error searching for analytic records, please see the logs for details.</span>
96
                                </span>
103
        </div>
97
                                <span class="error"><br/> Error: [% decoding_error | html %]</span>
104
    [% END %]
98
                            </div>
105
    [% IF ( ocoins ) %]
99
                        [% END %]
106
        <!-- COinS / OpenURL -->
100
                        [% IF analytics_error %]
107
        <span class="Z3988" title="[% ocoins | html %]"></span>
101
                            <div>
108
    [% END %]
102
                                <span class="analytics_error">
109
103
                                    There was an error searching for analytic records, please see the logs for details.
110
    [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
104
                                </span>
111
        <div id="catalogue_detail_biblio" class="col-xs-9">
105
                            </div>
112
    [% ELSE %]
106
                        [% END %]
113
        <div id="catalogue_detail_biblio" class="col-xs-12">
107
                        [% IF ( ocoins ) %]
114
    [% END %]
108
                            <!-- COinS / OpenURL -->
115
        <div class="page-section">
109
                            <span class="Z3988" title="[% ocoins | html %]"></span>
116
110
                        [% END %]
117
        [% XSLTBloc | $raw %]
118
111
119
        [% IF shelves.count %]
112
                        [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
120
            <span class="results_summary"><span class="label">Lists that include this title: </span>
113
                            <div id="catalogue_detail_biblio" class="col-xs-9">
121
            [% FOREACH s IN shelves %]
122
                <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a>
123
                [% IF ( loop.last ) %][% ELSE %]|[% END %]
124
            [% END %]
125
            </span>
126
        [% END %]
127
        [% IF ( TagsEnabled &&  TagsShowOnDetail &&  TagLoop ) %]
128
                <span class="results_summary"><span class="label">Tags:</span>
129
                    [% FOREACH TagLoo IN TagLoop %]
130
                        [% IF ( CAN_user_tools_moderate_tags ) %]
131
                        <a href="/cgi-bin/koha/tags/list.pl?tag=[% TagLoo.term |uri %]">[% TagLoo.term | html %]</a>
132
                        [% ELSE %]
114
                        [% ELSE %]
133
                        [% TagLoo.term | html %]
115
                            <div id="catalogue_detail_biblio" class="col-xs-12">
134
                        [% END %]
116
                        [% END %]
135
                        <span class="weight">([% TagLoo.weight_total | html %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %]
136
                    [% END %]
137
                    </span>
138
        [% END %]
139
        <span id="catalogue_detail_marc_preview" class="results_summary"><span class="label">MARC preview:</span> <a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% biblionumber | uri %]&amp;viewas=html" title="MARC" class="previewMARC">Show</a></span>
140
        <span id="catalogue_detail_framework" class="results_summary">
141
            <span class="label">MARC framework:</span>
142
            <span class="frameworkcode">[% Frameworks.GetName(biblio.frameworkcode) | html %]</span>
143
        </span>
144
        [% IF !item_level_itypes ||  Koha.Preference("BiblioItemtypeInfo") %]
145
           <span class="results_summary itemtype"><span class="label">Itemtype:</span>
146
          [% IF ( !noItemTypeImages && imageurl ) %]
147
              <img src="[% imageurl | html %]" alt="" />
148
          [% END %]
149
          [% IF ( description ) %]
150
              <span class="itypetext">[% description | html %]</span>
151
          [% ELSE %]
152
              <span class="itypetext">[% itemtype | html %]</span>
153
          [% END %]
154
          </span>
155
        [% END %]
156
157
        [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %]
158
            <span id="catalogue_detail_elastic_record" class="results_summary"><span class="label">Elasticsearch record:</span> <a href="/cgi-bin/koha/catalogue/showelastic.pl?id=[% biblionumber | uri %]" title="Elasticsearch record" class="previewElastic">Show</a></span>
159
        [% END %]
160
161
        [% IF ( holdcount ) %]
162
            <span class="results_summary">
163
                <span class="label">Holds:</span>
164
                <span class="number_box">
165
                    [% IF CAN_user_reserveforothers_place_holds %]
166
                        <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber | uri %]">[% holdcount | html %]</a>
167
                    [% ELSE %]
168
                        <span>[% holdcount | html %]</span>
169
                    [% END %]
170
                </span>
171
            </span>
172
        [% END %]
173
174
        [% IF illrequests.count %]
175
            <span class="results_summary">
176
                <span class="label">ILL requests:</span>
177
                [% IF CAN_user_ill %]
178
                    [% FOREACH ill IN illrequests %]
179
                        <a href="/cgi-bin/koha/ill/ill-requests.pl?method=illview&illrequest_id=[% ill.illrequest_id | uri %]">Request [% ill.illrequest_id | html %]</a>[% IF ! loop.last %], [% END %]
180
                    [% END %]
181
                [% ELSE %]
182
                    [% FOREACH ill IN illrequests %]
183
                        <span>Request [% ill.illrequest_id | html %]</span>[% IF ! loop.last %], [% END %]
184
                    [% END %]
185
                [% END %]
186
            </span>
187
        [% END %]
188
117
189
        [% IF ( article_requests_count = Biblio.ArticleRequestsActiveCount( biblionumber ) ) %]
118
                        <div class="page-section">
190
            <span class="results_summary">
191
                <span class="label">Article requests:</span>
192
                <span class="number_box">
193
                    <a href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% biblionumber | uri %]">[% article_requests_count | html %]</a>
194
                </span>
195
            </span>
196
        [% END %]
197
198
        [% IF course_reserves %]
199
            <span class="results_summary"><span class="label">Courses that have reserved this title: </span>
200
            [% FOREACH c IN course_reserves %]
201
                <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% c.course_id | uri %]">[% c.course.course_name | html %]</a>
202
                [% IF ( loop.last ) %][% ELSE %]|[% END %]
203
            [% END %]
204
            </span>
205
        [% END %]
206
        </div> [%# .page-section %]
207
119
208
        [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
120
                            [% XSLTBloc | $raw %]
209
        </div>
210
            <div class="col-xs-3 bookcoverimg">
211
                <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]">
212
                    [% IF ( LocalCoverImages ) %]
213
                        [% IF localimages.count %]
214
                            [% FOREACH image IN localimages %]
215
                                <div class="cover-image local-coverimg">
216
                                    <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image">
217
                                        <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]" />
218
                                    </a>
219
                                    <div class="hint">Local cover image</div>
220
                                </div>
221
                            [% END %]
222
                        [% END %]
223
                    [% END %]
224
225
                    [% IF ( AmazonCoverImages && normalized_isbn) %]
226
                        <div class="cover-image" id="amazon-bookcoverimg">
227
                            <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image">
228
                                <img src="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.MZZZZZZZ.jpg" alt="Amazon cover image" data-link="http://www.amazon[% AmazonTld | uri %]/gp/reader/[% normalized_isbn | uri %][% AmazonAssocTag | uri %]#reader-link"/>
229
                            </a>
230
                            <div class="hint">Image from Amazon.com</div>
231
                        </div>
232
                    [% END %]
233
121
234
                    [% IF ( IntranetCoce && CoceProviders && normalized_isbn ) %]
122
                            [% IF shelves.count %]
235
                        [% coce_id = normalized_ean || normalized_isbn %]
123
                                <span class="results_summary"><span class="label">Lists that include this title: </span>
236
                        <div class="cover-image coce-coverimg">
124
                                [% FOREACH s IN shelves %]
237
                            [% IF ( coce_id ) %]
125
                                    <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a>
238
                                <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a>
126
                                    [% IF ( loop.last ) %][% ELSE %]|[% END %]
239
                            [% ELSE %]
240
                                <span class="no-image">No cover image available</span>
241
                            [% END %]
242
                            <div class="hint">Image from Coce</div>
243
                        </div>
244
                    [% END %]
245
246
                    [% IF ( SyndeticsCovers ) %]
247
                        [% IF ( content_identifier_exists ) %]
248
                        <div class="cover-image" id="syndetics-bookcoverimg">
249
                            <a href="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/LC.GIF&amp;client=[% Koha.Preference('SyndeticsClientCode') | url %]&amp;type=xw10&amp;upc=[% normalized_upc | url %]&amp;oclc=[% normalized_oclc | url %]" title="Syndetics cover image">
250
                                <img src="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/[% Koha.Preference('SyndeticsCoverImageSize') | url %].GIF&amp;client=[% Koha.Preference('SyndeticsClientCode') | url %]&amp;type=xw10&amp;upc=[% normalized_upc | url %]&amp;oclc=[% normalized_oclc | url %]" alt="" class="thumbnail" />
251
                            </a>
252
                            <div class="hint">Image from Syndetics</div>
253
                        </div>
254
                            [% ELSE %]
255
                                <span class="no-image">No cover image available</span>
256
                            [% END %]
257
                    [% END %]
258
259
                    [% IF Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL') %]
260
                        [% SET custom_cover_image_url = biblio.custom_cover_image_url %]
261
                        [% IF custom_cover_image_url %]
262
                            <div class="cover-image" id="custom-coverimg">
263
                                <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image">
264
                                    <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" />
265
                                </a>
266
                                <div class="hint">Custom cover image</div>
267
                            </div>
268
                        [% END %]
269
                    [% END %]
270
                </div> <!-- /.cover-slider -->
271
            </div> <!-- /.bookcoverimg.col-xs-3 -->
272
        [% ELSE %]
273
        </div> <!-- /.col-xs-* -->
274
        [% END # /IF ( AmazonCoverImages, etc ) %]
275
</div>
276
277
<div id="bibliodetails" class="toptabs">
278
279
<ul class="nav nav-tabs" role="tablist">
280
    [% IF (SeparateHoldings) %]
281
        <li role="presentation">
282
            <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">[% Branches.GetLoggedInBranchname | html %] holdings ([% itemloop.size() || 0 | html %])</a>
283
        </li>
284
        <li role="presentation">
285
            <a href="#otherholdings"  aria-controls="otherholdings" role="tab" data-toggle="tab">Other holdings ([% otheritemloop.size() || 0 | html %])</a>
286
        </li>
287
    [% ELSE %]
288
        <li role="presentation">
289
            <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">Holdings ([% itemloop.size() || 0 | html %])</a>
290
        </li>
291
    [% END %]
292
    [% IF Koha.Preference('EnableItemGroups') %]
293
        <li role="presentation">
294
            <a href="#item_groups" aria-controls="item_groups" role="tab" data-toggle="tab">Item groups</a>
295
        </li>
296
    [% END %]
297
[% IF ( MARCNOTES || notes ) %]<li role="presentation"><a href="#description" aria-controls="description" role="tab" data-toggle="tab">Descriptions ([% ( MARCNOTES.size || 1 ) | html %])</a></li>[% END %]
298
[% IF ComponentParts && ComponentParts.size %]<li id="components_tab" role="presentation"><a href="#components"  aria-controls="components" role="tab" data-toggle="tab">Components ([% ComponentParts.size | html %])</a></li>[% END %]
299
[% IF ( subscriptionsnumber ) %]<li role="presentation"><a href="#subscriptions"  aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a></li>[% END %]
300
[% IF Koha.Preference('AcquisitionDetails') %]<li role="presentation"><a href="#acq_details"  aria-controls="acq_details" role="tab" data-toggle="tab">Acquisition details</a></li>[% END %]
301
[% IF suggestions.count %]<li role="presentation"><a href="#suggestion_details"  aria-controls="suggestion_details" role="tab" data-toggle="tab">Suggestion details</a></li>[% END %]
302
[% IF ( FRBRizeEditions ) %][% IF ( XISBNS ) %]<li role="presentation"><a href="#editions"  aria-controls="editions" role="tab" data-toggle="tab">Editions</a></li>[% END %][% END %]
303
[% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]<li role="presentation"><a href="#concerns" aria-controls="concerns" role="tab" data-toggle="tab">Concerns ([% biblio.tickets.count | html %])</a></li>[% END %]
304
[% IF ( LocalCoverImages ) %]
305
    <li role="presentation">
306
        <a href="#images"  aria-controls="images" role="tab" data-toggle="tab">Images ([% localimages.count || 0 | html %])</a>
307
    </li>
308
[% END %]
309
[% IF HTML5MediaEnabled && HTML5MediaSets.size %]
310
    <li id="media_tab" role="presentation"><a href="#html5media"  aria-controls="html5media" role="tab" data-toggle="tab">Play media</a></li>
311
[% END %]
312
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
313
    <li class="NovelistSelect" style="display:none;" role="presentation"><a href="#NovelistSelect"  aria-controls="NovelistSelect" role="tab" data-toggle="tab">NoveList Select</a></li>
314
[% END %]
315
[% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
316
    <li role="presentation"><a href="#[% plugins_intranet_catalog_biblio_tab.id | uri %]"  aria-controls="[% plugins_intranet_catalog_biblio_tab.id | uri %]" role="tab" data-toggle="tab">[% plugins_intranet_catalog_biblio_tab.title | html %]</a></li>
317
[% END %]
318
</ul>
319
320
<div class="tab-content">
321
[% items_table_block_iter = 0 %]
322
[% BLOCK items_table %]
323
    [% items_table_block_iter = items_table_block_iter + 1 %]
324
    <div class="[% tab | html %]_table_table_controls">
325
        [% IF (StaffDetailItemSelection) %]
326
            | <a href="#" class="SelectAll" data-tab="[% tab | html %]"><i class="fa fa-check"></i> Select all</a> |
327
            <a href="#" class="ClearAll" data-tab="[% tab | html %]"><i class="fa fa-remove"></i> Clear all</a>
328
            <span class="itemselection_actions">
329
              | Actions:
330
              [% IF CAN_user_tools_items_batchdel %]
331
                <a class="itemselection_action_delete"><i class="fa fa-trash"></i> Delete selected items</a>
332
              [% END %]
333
              [% IF CAN_user_tools_items_batchmod %]
334
                <a class="itemselection_action_modify"><i class="fa fa-pencil"></i> Modify selected items</a>
335
              [% END %]
336
              [% IF CAN_user_editcatalogue_manage_item_groups && biblio.item_groups.count %]
337
                <a class="itemselection_action_item_group_set" href="#"><i class="fa fa-book"></i> Add/move to item group</a>
338
                <a class="itemselection_action_item_group_unset" href="#"><i class="fa fa-unlink"></i> Remove from item group</a>
339
              [% END %]
340
            </span>
341
        [% END %]
342
    </div>
343
    <table class="items_table" id="[% tab | html %]_table">
344
        <thead>
345
            <tr>
346
                [% IF (StaffDetailItemSelection) %]<th id="[% tab | html %]_checkbox" data-colname="[% tab | html %]_checkbox" class="NoSort"></th>[% END %]
347
                [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %]
348
                    <th id="[% tab | html %]_cover_image" data-colname="[% tab | html %]_cover_image">Cover image</th>
349
                [% END %]
350
                [% IF ( item_level_itypes ) %]<th id="[% tab | html %]_itype" data-colname="[% tab | html %]_itype">Item type</th>[% END %]
351
                <th id="[% tab | html %]_holdingbranch" data-colname="[% tab | html %]_holdingbranch">Current library</th>
352
                <th id="[% tab | html %]_homebranch" data-colname="[% tab | html %]_homebranch">Home library</th>
353
                [% IF ( itemdata_ccode ) %]<th id="[% tab | html %]_ccode" data-colname="[% tab | html %]_ccode">Collection</th>[% END %]
354
                [% IF Koha.Preference('EnableItemGroups') %]
355
                    <th id="[% tab | html %]_item_group" data-colname="[% tab | html %]_item_group">Item group</th>
356
                [% END %]
357
                <th id="[% tab | html %]_itemcallnumber" data-colname="[% tab | html %]_itemcallnumber">Call number</th>
358
                [% IF volinfo %]
359
                    <th id="[% tab | html %]_enumchron" data-colname="[% tab | html %]_enumchron">Serial enumeration / chronology</th>
360
                [% END %]
361
                <th id="[% tab | html %]_status" data-colname="[% tab | html %]_status">Status</th>
362
                <th id="[% tab | html %]_lastseen" data-colname="[% tab | html %]_lastseen">Last seen</th>
363
                <th id="[% tab | html %]_issues" data-colname="[% tab | html %]_issues">Checkouts</th>
364
                <th id="[% tab | html %]_renewals" data-colname="[% tab | html %]_renewals">Renewals</th>
365
                <th id="[% tab | html %]_dateaccessioned" data-colname="[% tab | html %]_dateaccessioned">Date accessioned</th>
366
                <th id="[% tab | html %]_datelastborrowed" data-colname="[% tab | html %]_datelastborrowed">Date last borrowed</th>
367
                <th id="[% tab | html %]_barcode" data-colname="[% tab | html %]_barcode">Barcode</th>
368
                [% IF ( itemdata_uri ) %]<th id="[% tab | html %]_uri" data-colname="[% tab | html %]_uri">URL</th>[% END %]
369
                [% IF ( itemdata_copynumber ) %]<th id="[% tab | html %]_copynumber" data-colname="[% tab | html %]_copynumber">Copy number</th>[% END %]
370
                [% IF ( itemdata_stocknumber ) %]<th id="[% tab | html %]_stocknumber" data-colname="[% tab | html %]_stocknumber">Inventory number</th>[% END %]
371
                [% IF materials %]<th id="[% tab | html %]_materials" data-colname="[% tab | html %]_materials">Materials specified</th>[% END %]
372
                [% IF ( itemdata_itemnotes ) %]<th id="[% tab | html %]_itemnotes" data-colname="[% tab | html %]_itemnotes">Public notes</th>[% END %]
373
                [% IF ( itemdata_nonpublicnotes ) %]<th id="[% tab | html %]_itemnotes_nonpublic" data-colname="[% tab | html %]_itemnotes_nonpublic">Non-public notes</th>[% END %]
374
                [% IF ( hostrecords ) %]<th id="[% tab | html %]_hostrecord" data-colname="[% tab | html %]_hostrecord">Host records</th>[% END %]
375
                [% IF ( analyze ) %]<th id="[% tab | html %]_usedin" data-colname="[% tab | html %]_usedin">Used in</th><th></th>[% END %]
376
                [% IF ( ShowCourseReserves ) %]<th id="[% tab | html %]_course_reserves" data-colname="[% tab | html %]_course_reserves">Course reserves</th>[% END %]
377
                [% IF ( SpineLabelShowPrintOnBibDetails ) %]<th id="[% tab | html %]_spinelabel" data-colname="[% tab | html %]_spinelabel" class="NoSort">Spine label</th>[% END %]
378
                [% IF ( CAN_user_editcatalogue_edit_items ) %]<th id="[% tab | html %]_actions" data-colname="[% tab | html %]_actions"class="NoSort noExport">&nbsp;</th>[% END %]
379
            </tr>
380
        </thead>
381
        <tbody>
382
            [% FOREACH item IN items %]
383
                <tr id="item_[% item.itemnumber | html %]" data-itemnumber="[% item.itemnumber | html %]" data-duedate="[% item.datedue | html %]">
384
                [% IF (StaffDetailItemSelection) %]
385
                    <td style="text-align:center;vertical-align:middle">
386
                        [% IF item.can_be_edited %]
387
                            <input type="checkbox" value="[% item.itemnumber | html %]" name="itemnumber" />
388
                        [% END %]
389
                    </td>
390
                [% END %]
391
                    [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %]
392
                        <td class="cover">
393
                            <div class="bookcoverimg">
394
                                <div class="cover-slider">
395
                                    [% FOREACH image IN item.object.cover_images %]
396
                                        <div class="cover-image local-coverimg">
397
                                            <a href="/cgi-bin/koha/catalogue/image.pl?itemnumber=[% image.itemnumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]" title="Local cover image">
398
                                                <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?itemnumber=[% item.itemnumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]" />
399
                                            </a>
400
                                        </div>
401
                                    [% END %]
402
                                </div>
403
                            </div>
404
                        </td>
405
                    [% END %]
406
407
                    [% IF ( item_level_itypes ) %]
408
                        <td class="itype">
409
                            [% SET itemtype = item.itemtype %]
410
                            [% IF !noItemTypeImages && itemtype.image_location('intranet') %]
411
                                <img src="[% itemtype.image_location('intranet') | html %]" alt="[% itemtype.translated_description | html %]" title="[% itemtype.translated_description | html %]" />
412
                            [% END %]
413
                            <span class="itypedesc itypetext">[% itemtype.translated_description | html %]</span>
414
                        </td>
415
                    [% END %]
416
                    <td class="location">[% UNLESS ( singlebranchmode ) %][% Branches.GetName( item.holdingbranch ) | html %] [% END %]</td>
417
                    <td class="homebranch">
418
                        <span class="homebranchdesc">[% Branches.GetName(item.homebranch) | html %]</span>
419
                        <span class="shelvingloc">
420
                        [%# If permanent location is defined, show description or code and             %]
421
                        [%# display current location in parentheses. If not, display current location. %]
422
                        [%# Note that permanent location is a code, and location may be an authval.    %]
423
                                [% IF item.permanent_location %]
424
                                [% SET permloc_authval = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.permanent_location ) %]
425
                                [% permloc_authval | html %]
426
                                [% SET item_location = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.location ) %]
427
                                [% IF item_location AND item_location != permloc_authval AND item.location != item.permanent_location %]
428
                                    ([% item_location | html %])
429
                                [% END %]
127
                                [% END %]
430
                            [% ELSE %]
128
                                </span>
431
                                [% item_location | html %]
432
                            [% END %]
129
                            [% END %]
433
                        </span>
130
434
                    </td>
131
                            [% IF ( TagsEnabled &&  TagsShowOnDetail &&  TagLoop ) %]
435
                    [% IF ( itemdata_ccode ) %]<td>[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => item.ccode ) | html %]</td>[% END %]
132
                                <span class="results_summary"><span class="label">Tags:</span>
436
                    [% IF Koha.Preference('EnableItemGroups') %]<td class="item_group">[% item.object.item_group.description | html %]</td>[% END %]
133
                                    [% FOREACH TagLoo IN TagLoop %]
437
                    <td class="itemcallnumber">[% IF ( item.itemcallnumber ) %] [% item.itemcallnumber | html %][% END %]</td>
134
                                        [% IF ( CAN_user_tools_moderate_tags ) %]
438
                    [% IF ( volinfo ) %]
135
                                            <a href="/cgi-bin/koha/tags/list.pl?tag=[% TagLoo.term |uri %]">[% TagLoo.term | html %]</a>
439
                        [% SET serial = item.serial %]
136
                                        [% ELSE %]
440
                        [% IF itemdata_publisheddate #If there is at least one published date, use it for sorting %]
137
                                            [% TagLoo.term | html %]
441
                            <td class="enumchron" data-order="[% serial.publisheddate | html %]">
138
                                        [% END %]
442
                        [% ELSE %]
139
                                        <span class="weight">([% TagLoo.weight_total | html %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %]
443
                            <td class="enumchron">
444
                        [% END %]
445
                            [% IF ( itemdata_enumchron ) %]
446
                                [% IF item.enumchron && serial.serialseq %]
447
                                    <span class="enum">[% item.enumchron | html %]</span>
448
                                    [% IF ( serial.serialseq && item.enumchron != serial.serialseq ) %]
449
                                        <span class="sep"> -- </span>
450
                                        <span class="serialseq">[% serial.serialseq | html %]</span>
451
                                    [% END %]
140
                                    [% END %]
452
                                [% ELSIF item.enumchron %]
141
                                </span>
453
                                    <span class="enum">[% item.enumchron | html %]</span>
454
                                [% ELSIF item.serialseq %]
455
                                    <span class="serialseq">[% serial.serialseq | html %]</span>
456
                                [% END %]
457
                                [% IF serial.publisheddate %]
458
                                    <span class="pubdate">([% serial.publisheddate | $KohaDates %])</span>
459
                                [% END %]
460
                            [% END %]
142
                            [% END %]
143
144
                            <span id="catalogue_detail_marc_preview" class="results_summary">
145
                                <span class="label">MARC preview:</span>
146
                                <a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% biblionumber | uri %]&amp;viewas=html" title="MARC" class="previewMARC">Show</a>
461
                            </span>
147
                            </span>
462
                        </td>
148
463
                    [% END %]
149
                            <span id="catalogue_detail_framework" class="results_summary">
464
                    <td class="status">
150
                                <span class="label">MARC framework:</span>
465
151
                                <span class="frameworkcode">[% Frameworks.GetName(biblio.frameworkcode) | html %]</span>
466
                        [% IF item.object.checkout %]
467
                          [% IF item.object.checkout.onsite_checkout %]
468
                            <span>Currently in local use
469
                          [% ELSE %]
470
                            <span class="datedue">Checked out
471
                          [% END %]
472
                                [% IF item.can_be_edited %]
473
                                  [% IF item.object.checkout.onsite_checkout %]
474
                                    by
475
                                  [% ELSE %]
476
                                    to
477
                                  [% END %]
478
                                  [% INCLUDE 'patron-title.inc' patron=item.object.checkout.patron hide_patron_infos_if_needed=1 %]
479
                                [% END %]
480
                                : due [% item.object.checkout.date_due | $KohaDates as_due_date => 1 %]
481
                            </span>
152
                            </span>
482
                        [% ELSIF ( transfer = item.object.get_transfer ) %]
483
                            [% IF (transfer.datesent) %]
484
                                <span class="intransit">In transit from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% transfer.datesent | $KohaDates %]</span>
485
                            [% ELSE %]
486
                                <span class="transitrequested">Transit pending from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% item.transfer.daterequested | $KohaDates %]</span>
487
153
154
                            [% IF !item_level_itypes ||  Koha.Preference("BiblioItemtypeInfo") %]
155
                                <span class="results_summary itemtype">
156
                                    <span class="label">Itemtype:</span>
157
                                    [% IF ( !noItemTypeImages && imageurl ) %]
158
                                        <img src="[% imageurl | html %]" alt="" />
159
                                    [% END %]
160
                                    [% IF ( description ) %]
161
                                        <span class="itypetext">[% description | html %]</span>
162
                                    [% ELSE %]
163
                                        <span class="itypetext">[% itemtype | html %]</span>
164
                                    [% END %]
165
                                </span>
488
                            [% END %]
166
                            [% END %]
489
                        [% END %]
490
167
491
                        [% IF ( item.itemlost ) %]
168
                            [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %]
492
                            [% SET itemlost_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => item.itemlost ) %]
169
                                <span id="catalogue_detail_elastic_record" class="results_summary">
493
                            [% IF itemlostloop %]
170
                                    <span class="label">Elasticsearch record:</span>
494
                                <span class="lost">[% itemlost_description | html %]</span>
171
                                    <a href="/cgi-bin/koha/catalogue/showelastic.pl?id=[% biblionumber | uri %]" title="Elasticsearch record" class="previewElastic">Show</a>
495
                            [% ELSE %]
172
                                </span>
496
                                <span class="lost">Unavailable (lost or missing)</span>
497
                            [% END %]
173
                            [% END %]
498
                        [% END %]
499
174
500
                        [% IF ( item.withdrawn ) %]
175
                            [% IF ( holdcount ) %]
501
                            [% SET withdrawn_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => item.withdrawn ) %]
176
                                <span class="results_summary">
502
                            [% IF withdrawn_description %]
177
                                    <span class="label">Holds:</span>
503
                                <span class="wdn">[% withdrawn_description | html %]</span>
178
                                    <span class="number_box">
504
                            [% ELSE %]
179
                                        [% IF CAN_user_reserveforothers_place_holds %]
505
                                <span class="wdn">Withdrawn</span>
180
                                            <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber | uri %]">[% holdcount | html %]</a>
181
                                        [% ELSE %]
182
                                            <span>[% holdcount | html %]</span>
183
                                        [% END %]
184
                                    </span>
185
                                </span>
506
                            [% END %]
186
                            [% END %]
507
                        [% END %]
508
187
509
                        [% IF ( item.damaged ) %]
188
                            [% IF illrequests.count %]
510
                            [% SET damaged_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => item.damaged ) %]
189
                                <span class="results_summary">
511
                            [% IF damaged_description %]
190
                                    <span class="label">ILL requests:</span>
512
                                <span class="dmg">[% damaged_description | html %]</span>
191
                                    [% IF CAN_user_ill %]
513
                            [% ELSE %]
192
                                        [% FOREACH ill IN illrequests %]
514
                                <span class="dmg">Damaged</span>
193
                                            <a href="/cgi-bin/koha/ill/ill-requests.pl?method=illview&illrequest_id=[% ill.illrequest_id | uri %]">Request [% ill.illrequest_id | html %]</a>[% IF ! loop.last %], [% END %]
194
                                        [% END %]
195
                                    [% ELSE %]
196
                                        [% FOREACH ill IN illrequests %]
197
                                            <span>Request [% ill.illrequest_id | html %]</span>[% IF ! loop.last %], [% END %]
198
                                        [% END %]
199
                                    [% END %]
200
                                </span>
515
                            [% END %]
201
                            [% END %]
516
                        [% END %]
517
202
518
                        [% IF ( item.notforloan || item.itemtype.notforloan ) %]
203
                            [% IF ( article_requests_count = Biblio.ArticleRequestsActiveCount( biblionumber ) ) %]
519
                            <span class="notforloan">Not for loan
204
                                <span class="results_summary">
520
                            [% SET not_for_loan_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => item.notforloan ) %]
205
                                    <span class="label">Article requests:</span>
521
                            [% IF not_for_loan_description %]
206
                                    <span class="number_box">
522
                                <span class="reason">([% not_for_loan_description | html %])</span>
207
                                        <a href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% biblionumber | uri %]">[% article_requests_count | html %]</a>
208
                                    </span>
209
                                </span>
523
                            [% END %]
210
                            [% END %]
524
                            </span>
525
                        [% END %]
526
211
527
                        [% SET hold = item.first_hold %]
212
                            [% IF course_reserves %]
528
                        [% IF hold %]
213
                                <span class="results_summary">
529
                            [% IF hold.waitingdate %]
214
                                    <span class="label">Courses that have reserved this title: </span>
530
                                <span class="waitingat">Waiting at [% Branches.GetName( hold.branchcode ) | html %][% IF ( hold.desk_id ) %], [% hold.desk.desk_name | html %][% END %] since [% hold.waitingdate | $KohaDates %].</span>
215
                                    [% FOREACH c IN course_reserves %]
531
                                [% IF canreservefromotherbranches AND ( hold.waitingdate OR hold.priority == 1 ) %]
216
                                        <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% c.course_id | uri %]">[% c.course.course_name | html %]</a>
532
                                    <span class="heldfor">Hold for:</span>
217
                                        [% IF ( loop.last ) %][% ELSE %]|[% END %]
533
                                    [% INCLUDE 'patron-title.inc' patron=hold.borrower hide_patron_infos_if_needed=1 %]
218
                                    [% END %]
534
                                [% END %]
219
                                </span>
535
                            [% ELSE %]
536
                                <span class="holdonitem">There is an item level hold on this item (priority = [% hold.priority | html %]).</span>
537
                            [% END %]
220
                            [% END %]
538
                        [% END %]
221
                        </div> [%# .page-section %]
539
222
540
                        [% IF Koha.Preference('UseRecalls') %]
223
                        [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
541
                            [% SET recall = item.object.recall %]
224
                            </div>
542
                            [% IF recall %]
225
                            <div class="col-xs-3 bookcoverimg">
543
                                [% IF recall.waiting_date %]
226
                                <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]">
544
                                    <span>Waiting at [% Branches.GetName( recall.pickup_library_id ) | html %] since [% recall.waiting_date | $KohaDates %]</span>
227
                                    [% IF ( LocalCoverImages ) %]
545
                                [% ELSE %]
228
                                        [% IF localimages.count %]
546
                                    [% patron_link = BLOCK %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% recall.patron_id | uri %]">[% recall.patron.firstname | html %] [% recall.patron.surname | html %] ([% recall.patron.cardnumber | html %])</a>[% END %]
229
                                            [% FOREACH image IN localimages %]
547
                                    <span>recalled by [% patron_link| $raw %] on [% recall.created_date | $KohaDates %]</span>
230
                                                <div class="cover-image local-coverimg">
548
                                [% END %]
231
                                                    <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image">
549
                            [% END %]
232
                                                        <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]" />
550
                        [% END %]
233
                                                    </a>
234
                                                    <div class="hint">Local cover image</div>
235
                                                </div>
236
                                            [% END %]
237
                                        [% END %]
238
                                    [% END %]
551
239
552
                        [% UNLESS ( item.notforloan || item.itemtype.notforloan || item.onloan || item.itemlost || item.withdrawn || item.damaged || item.transfer || hold || ( Koha.Preference('UseRecalls') && recall ) ) %]
240
                                    [% IF ( AmazonCoverImages && normalized_isbn) %]
553
                            <span>Available</span>
241
                                        <div class="cover-image" id="amazon-bookcoverimg">
554
                        [% END %]
242
                                            <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image">
243
                                                <img src="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.MZZZZZZZ.jpg" alt="Amazon cover image" data-link="http://www.amazon[% AmazonTld | uri %]/gp/reader/[% normalized_isbn | uri %][% AmazonAssocTag | uri %]#reader-link"/>
244
                                            </a>
245
                                            <div class="hint">Image from Amazon.com</div>
246
                                        </div>
247
                                    [% END %]
555
248
556
                        [% IF ( item.restricted ) %]
249
                                    [% IF ( IntranetCoce && CoceProviders && normalized_isbn ) %]
557
                            <span class="restricted">([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.restricted', authorised_value => item.restricted ) | html %])</span>
250
                                        [% coce_id = normalized_ean || normalized_isbn %]
558
                        [% END %]
251
                                        <div class="cover-image coce-coverimg">
252
                                            [% IF ( coce_id ) %]
253
                                                <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a>
254
                                            [% ELSE %]
255
                                                <span class="no-image">No cover image available</span>
256
                                            [% END %]
257
                                            <div class="hint">Image from Coce</div>
258
                                        </div>
259
                                    [% END %]
559
260
560
                        [% IF ( item.bundle_host ) %]
261
                                    [% IF ( SyndeticsCovers ) %]
561
                            <span class="bundled">In bundle: [% INCLUDE 'biblio-title.inc' biblio = item.bundle_host.biblio link = 1 %]</span>
262
                                        [% IF ( content_identifier_exists ) %]
562
                        [% END %]
263
                                            <div class="cover-image" id="syndetics-bookcoverimg">
264
                                                <a href="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/LC.GIF&amp;client=[% Koha.Preference('SyndeticsClientCode') | url %]&amp;type=xw10&amp;upc=[% normalized_upc | url %]&amp;oclc=[% normalized_oclc | url %]" title="Syndetics cover image">
265
                                                    <img src="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/[% Koha.Preference('SyndeticsCoverImageSize') | url %].GIF&amp;client=[% Koha.Preference('SyndeticsClientCode') | url %]&amp;type=xw10&amp;upc=[% normalized_upc | url %]&amp;oclc=[% normalized_oclc | url %]" alt="" class="thumbnail" />
266
                                                </a>
267
                                                <div class="hint">Image from Syndetics</div>
268
                                            </div>
269
                                        [% ELSE %]
270
                                            <span class="no-image">No cover image available</span>
271
                                        [% END %]
272
                                    [% END %]
563
273
564
                    </td>
274
                                    [% IF Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL') %]
565
                    <td class="datelastseen" data-order="[% item.datelastseen | html %]">[% item.datelastseen | $KohaDates with_hours => 1 %]</td>
275
                                        [% SET custom_cover_image_url = biblio.custom_cover_image_url %]
566
                    <td class="issues" data-order="[% item.issues || 0 | html %]">[% item.issues || 0 | html %]</td>
276
                                        [% IF custom_cover_image_url %]
567
                    <td class="renewals" data-order="[% item.renewals || 0 | html %]">[% item.renewals || 0 | html %]</td>
277
                                            <div class="cover-image" id="custom-coverimg">
568
                    <td class="dateaccessioned" data-order="[% item.dateaccessioned | html %]">[% item.dateaccessioned | $KohaDates %]</td>
278
                                                <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image">
569
                    <td class="datelastborrowed" data-order="[% item.datelastborrowed | html %]">[% item.datelastborrowed | $KohaDates %]</td>
279
                                                    <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" />
570
                    <td><a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% item.itemnumber | uri %]&amp;biblionumber=[% item.biblionumber | uri %]&amp;bi=[% item.biblioitemnumber | uri %]#item[% item.itemnumber | uri %]">[% item.barcode | html %]</a></td>
280
                                                </a>
571
                    [% IF ( itemdata_uri ) %]
281
                                                <div class="hint">Custom cover image</div>
572
                        [% IF item.uri.split(' \| ').size > 1 %]
282
                                            </div>
573
                            <td class="uri">
283
                                        [% END %]
574
                                [% FOREACH uri IN item.uri.split(' \| ') %]<a href="[% uri | url %]">[% uri | html %]</a><br>[% END %]
284
                                    [% END %]
575
                            </td>
285
                                </div> <!-- /.cover-slider -->
286
                            </div> <!-- /.bookcoverimg.col-xs-3 -->
576
                        [% ELSE %]
287
                        [% ELSE %]
577
                            <td class="uri">
288
                            </div> <!-- /.col-xs-* -->
578
                                [% IF item.uri %]
289
                        [% END # /IF ( AmazonCoverImages, etc ) %]
579
                                    <a href="[% item.uri | url %]">[% IF Koha.Preference('URLLinkText') %][% Koha.Preference('URLLinkText') | html %][% ELSE %]Link to resource[% END %]</a>
290
                    </div>
291
292
                    <div id="bibliodetails" class="toptabs">
293
                        <ul class="nav nav-tabs" role="tablist">
294
                            [% IF (SeparateHoldings) %]
295
                                <li role="presentation">
296
                                    <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">[% Branches.GetLoggedInBranchname | html %] holdings ([% itemloop.size() || 0 | html %])</a>
297
                                </li>
298
                                <li role="presentation">
299
                                    <a href="#otherholdings"  aria-controls="otherholdings" role="tab" data-toggle="tab">Other holdings ([% otheritemloop.size() || 0 | html %])</a>
300
                                </li>
301
                            [% ELSE %]
302
                                <li role="presentation">
303
                                    <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">Holdings ([% itemloop.size() || 0 | html %])</a>
304
                                </li>
305
                            [% END %]
306
                            [% IF Koha.Preference('EnableItemGroups') %]
307
                                <li role="presentation">
308
                                    <a href="#item_groups" aria-controls="item_groups" role="tab" data-toggle="tab">Item groups</a>
309
                                </li>
310
                            [% END %]
311
                            [% IF ( MARCNOTES || notes ) %]
312
                                <li role="presentation">
313
                                    <a href="#description" aria-controls="description" role="tab" data-toggle="tab">Descriptions ([% ( MARCNOTES.size || 1 ) | html %])</a>
314
                                </li>
315
                            [% END %]
316
                            [% IF ComponentParts && ComponentParts.size %]
317
                                <li id="components_tab" role="presentation">
318
                                    <a href="#components"  aria-controls="components" role="tab" data-toggle="tab">Components ([% ComponentParts.size | html %])</a>
319
                                </li>
320
                            [% END %]
321
                            [% IF ( subscriptionsnumber ) %]
322
                                <li role="presentation">
323
                                    <a href="#subscriptions"  aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a>
324
                                </li>
325
                            [% END %]
326
                            [% IF Koha.Preference('AcquisitionDetails') %]
327
                                <li role="presentation">
328
                                    <a href="#acq_details"  aria-controls="acq_details" role="tab" data-toggle="tab">Acquisition details</a>
329
                                </li>
330
                            [% END %]
331
                            [% IF suggestions.count %]
332
                                <li role="presentation">
333
                                    <a href="#suggestion_details"  aria-controls="suggestion_details" role="tab" data-toggle="tab">Suggestion details</a>
334
                                </li>
335
                            [% END %]
336
                            [% IF ( FRBRizeEditions ) %]
337
                                [% IF ( XISBNS ) %]
338
                                    <li role="presentation">
339
                                        <a href="#editions"  aria-controls="editions" role="tab" data-toggle="tab">Editions</a>
340
                                    </li>
580
                                [% END %]
341
                                [% END %]
581
                            </td>
582
                        [% END %]
583
                    [% END %]
584
                    [% IF ( itemdata_copynumber ) %]
585
                        <td class="copynumber">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.copynumber', authorised_value => item.copynumber ) | html %]</td>
586
                    [% END %]
587
                    [% IF ( itemdata_stocknumber ) %]
588
                        <td class="stocknumber">[% item.stocknumber | html %]</td>
589
                    [% END %]
590
                    [% IF materials %]
591
                        <td class="materials"> [% item.materials | html %] </td>
592
                    [% END %]
593
                    [% IF ( itemdata_itemnotes ) %]
594
                        <td><div class="itemnotes">[% item.object.itemnotes.replace('\n','<br />') | $raw %]</div></td>
595
                    [% END %]
596
                    [% IF itemdata_nonpublicnotes %]
597
                        <td class="nonpublicnote">[% item.itemnotes_nonpublic | html %]</td>
598
                    [% END %]
599
                    [% IF ( hostrecords ) %]
600
                        <td>[% IF ( item.hostbiblionumber) %]<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item.hostbiblionumber | uri %]" >[% item.hosttitle | html %]</a>[% END %]</td>
601
                    [% END %]
602
                    [% IF ( analyze ) %]
603
                        <td>
604
                            [% IF ( item.countanalytics ) %]
605
                                <a href="/cgi-bin/koha/catalogue/search.pl?idx=hi&amp;q=[% item.itemnumber | uri %]">[% item.countanalytics | html %] analytics</a>
606
                            [% END %]
342
                            [% END %]
607
                        </td>
343
                            [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
608
                    [% END %]
344
                                <li role="presentation">
609
                    [% IF ( analyze ) %]
345
                                    <a href="#concerns" aria-controls="concerns" role="tab" data-toggle="tab">Concerns ([% biblio.tickets.count | html %])</a>
610
                        <td><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?hostbiblionumber=[% item.biblionumber | uri %]&amp;hostitemnumber=[% item.itemnumber | uri %]">Create analytics</a></td>
346
                                </li>
611
                    [% END %]
347
                            [% END %]
612
348
                            [% IF ( LocalCoverImages ) %]
613
                [% IF ShowCourseReserves %]
349
                                <li role="presentation">
614
                    <td>
350
                                    <a href="#images"  aria-controls="images" role="tab" data-toggle="tab">Images ([% localimages.count || 0 | html %])</a>
615
                        [% IF item.course_reserves %]
351
                                </li>
616
                            [% FOREACH r IN item.course_reserves %]
352
                            [% END %]
617
                                [% IF r.course.enabled == 'yes' %]
353
                            [% IF HTML5MediaEnabled && HTML5MediaSets.size %]
618
                                    <p>
354
                                <li id="media_tab" role="presentation"><a href="#html5media"  aria-controls="html5media" role="tab" data-toggle="tab">Play media</a></li>
619
                                      <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% r.course.course_id | uri %]">
355
                            [% END %]
620
                                         [% r.course.course_name | html %]
356
                            [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
621
                                         <!--[% IF r.course.course_number %] [% r.course.course_number | html %] [% END %]-->
357
                                <li class="NovelistSelect" style="display:none;" role="presentation">
622
                                         [% IF r.course.section %] [% r.course.section | html %] [% END %]
358
                                    <a href="#NovelistSelect"  aria-controls="NovelistSelect" role="tab" data-toggle="tab">NoveList Select</a>
623
                                         [% IF r.course.term %] [% AuthorisedValues.GetByCode( 'TERM', r.course.term ) | html %] [% END %]
359
                                </li>
624
                                      </a>
360
                            [% END %]
625
                                   </p>
361
                            [% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
626
                               [% END %]
362
                                <li role="presentation">
627
                           [% END %]
363
                                    <a href="#[% plugins_intranet_catalog_biblio_tab.id | uri %]"  aria-controls="[% plugins_intranet_catalog_biblio_tab.id | uri %]" role="tab" data-toggle="tab">[% plugins_intranet_catalog_biblio_tab.title | html %]</a>
628
                       [% END %]
364
                                </li>
629
                    </td>
365
                            [% END %]
630
                [% END %]
366
                        </ul>
631
367
632
                [% IF ( SpineLabelShowPrintOnBibDetails ) %]
368
                        <div class="tab-content">
633
                    <td><a class="btn btn-default btn-xs print-label" href="/cgi-bin/koha/labels/spinelabel-print.pl?barcode=[% item.barcode | uri %]"><i class="fa fa-print"></i> Print label</a></td>
369
                            [% items_table_block_iter = 0 %]
634
                [% END %]
370
                            [% BLOCK items_table %]
371
                                [% items_table_block_iter = items_table_block_iter + 1 %]
372
                                <div class="[% tab | html %]_table_table_controls">
373
                                    [% IF (StaffDetailItemSelection) %]
374
                                        | <a href="#" class="SelectAll" data-tab="[% tab | html %]"><i class="fa fa-check"></i> Select all</a> |
375
                                        <a href="#" class="ClearAll" data-tab="[% tab | html %]"><i class="fa fa-remove"></i> Clear all</a>
376
                                        <span class="itemselection_actions">
377
                                            | Actions:
378
                                            [% IF CAN_user_tools_items_batchdel %]
379
                                                <a class="itemselection_action_delete"><i class="fa fa-trash"></i> Delete selected items</a>
380
                                            [% END %]
381
                                            [% IF CAN_user_tools_items_batchmod %]
382
                                                <a class="itemselection_action_modify"><i class="fa fa-pencil"></i> Modify selected items</a>
383
                                            [% END %]
384
                                            [% IF CAN_user_editcatalogue_manage_item_groups && biblio.item_groups.count %]
385
                                                <a class="itemselection_action_item_group_set" href="#"><i class="fa fa-book"></i> Add/move to item group</a>
386
                                                <a class="itemselection_action_item_group_unset" href="#"><i class="fa fa-unlink"></i> Remove from item group</a>
387
                                            [% END %]
388
                                        </span>
389
                                    [% END %]
390
                                </div>
635
391
636
                [% IF CAN_user_editcatalogue_edit_items %]
392
                                <table class="items_table" id="[% tab | html %]_table">
637
                    <td class="actions">
393
                                    <thead>
638
                        [% IF item.can_be_edited %]
394
                                        <tr>
639
                            [% IF Koha.Preference('LocalCoverImages') OR Koha.Preference('OPACLocalCoverImages') %]
395
                                            [% IF (StaffDetailItemSelection) %]
640
                                <div class="btn-group">
396
                                                <th id="[% tab | html %]_checkbox" data-colname="[% tab | html %]_checkbox" class="NoSort"></th>
641
                                    <a  class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a><a class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a>
397
                                            [% END %]
642
                                    <ul class="dropdown-menu pull-right">
398
                                            [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %]
643
                                        <li><a href="/cgi-bin/koha/tools/upload-cover-image.pl?itemnumber=[% item.itemnumber | uri %]&amp;filetype=image"><i class="fa fa-upload"></i> Upload image</a></li>
399
                                                <th id="[% tab | html %]_cover_image" data-colname="[% tab | html %]_cover_image">Cover image</th>
644
                                    </ul>
400
                                            [% END %]
401
                                            [% IF ( item_level_itypes ) %]
402
                                                <th id="[% tab | html %]_itype" data-colname="[% tab | html %]_itype">Item type</th>
403
                                            [% END %]
404
                                            <th id="[% tab | html %]_holdingbranch" data-colname="[% tab | html %]_holdingbranch">Current library</th>
405
                                            <th id="[% tab | html %]_homebranch" data-colname="[% tab | html %]_homebranch">Home library</th>
406
                                            [% IF ( itemdata_ccode ) %]
407
                                                <th id="[% tab | html %]_ccode" data-colname="[% tab | html %]_ccode">Collection</th>
408
                                            [% END %]
409
                                            [% IF Koha.Preference('EnableItemGroups') %]
410
                                                <th id="[% tab | html %]_item_group" data-colname="[% tab | html %]_item_group">Item group</th>
411
                                            [% END %]
412
                                            <th id="[% tab | html %]_itemcallnumber" data-colname="[% tab | html %]_itemcallnumber">Call number</th>
413
                                            [% IF volinfo %]
414
                                                <th id="[% tab | html %]_enumchron" data-colname="[% tab | html %]_enumchron">Serial enumeration / chronology</th>
415
                                            [% END %]
416
                                            <th id="[% tab | html %]_status" data-colname="[% tab | html %]_status">Status</th>
417
                                            <th id="[% tab | html %]_lastseen" data-colname="[% tab | html %]_lastseen">Last seen</th>
418
                                            <th id="[% tab | html %]_issues" data-colname="[% tab | html %]_issues">Checkouts</th>
419
                                            <th id="[% tab | html %]_renewals" data-colname="[% tab | html %]_renewals">Renewals</th>
420
                                            <th id="[% tab | html %]_dateaccessioned" data-colname="[% tab | html %]_dateaccessioned">Date accessioned</th>
421
                                            <th id="[% tab | html %]_datelastborrowed" data-colname="[% tab | html %]_datelastborrowed">Date last borrowed</th>
422
                                            <th id="[% tab | html %]_barcode" data-colname="[% tab | html %]_barcode">Barcode</th>
423
                                            [% IF ( itemdata_uri ) %]
424
                                                <th id="[% tab | html %]_uri" data-colname="[% tab | html %]_uri">URL</th>
425
                                            [% END %]
426
                                            [% IF ( itemdata_copynumber ) %]
427
                                                <th id="[% tab | html %]_copynumber" data-colname="[% tab | html %]_copynumber">Copy number</th>
428
                                            [% END %]
429
                                            [% IF ( itemdata_stocknumber ) %]
430
                                                <th id="[% tab | html %]_stocknumber" data-colname="[% tab | html %]_stocknumber">Inventory number</th>
431
                                            [% END %]
432
                                            [% IF materials %]
433
                                                <th id="[% tab | html %]_materials" data-colname="[% tab | html %]_materials">Materials specified</th>
434
                                            [% END %]
435
                                            [% IF ( itemdata_itemnotes ) %]
436
                                                <th id="[% tab | html %]_itemnotes" data-colname="[% tab | html %]_itemnotes">Public notes</th>
437
                                            [% END %]
438
                                            [% IF ( itemdata_nonpublicnotes ) %]
439
                                                <th id="[% tab | html %]_itemnotes_nonpublic" data-colname="[% tab | html %]_itemnotes_nonpublic">Non-public notes</th>
440
                                            [% END %]
441
                                            [% IF ( hostrecords ) %]
442
                                                <th id="[% tab | html %]_hostrecord" data-colname="[% tab | html %]_hostrecord">Host records</th>
443
                                            [% END %]
444
                                            [% IF ( analyze ) %]
445
                                                <th id="[% tab | html %]_usedin" data-colname="[% tab | html %]_usedin">Used in</th><th></th>
446
                                            [% END %]
447
                                            [% IF ( ShowCourseReserves ) %]
448
                                                <th id="[% tab | html %]_course_reserves" data-colname="[% tab | html %]_course_reserves">Course reserves</th>
449
                                            [% END %]
450
                                            [% IF ( SpineLabelShowPrintOnBibDetails ) %]
451
                                                <th id="[% tab | html %]_spinelabel" data-colname="[% tab | html %]_spinelabel" class="NoSort">Spine label</th>
452
                                            [% END %]
453
                                            [% IF ( CAN_user_editcatalogue_edit_items ) %]
454
                                                <th id="[% tab | html %]_actions" data-colname="[% tab | html %]_actions"class="NoSort noExport">&nbsp;</th>
455
                                            [% END %]
456
                                        </tr>
457
                                    </thead>
458
                                    <tbody>
459
                                        [% FOREACH item IN items %]
460
                                            <tr id="item_[% item.itemnumber | html %]" data-itemnumber="[% item.itemnumber | html %]" data-duedate="[% item.datedue | html %]">
461
                                                [% IF (StaffDetailItemSelection) %]
462
                                                    <td style="text-align:center;vertical-align:middle">
463
                                                        [% IF item.can_be_edited %]
464
                                                            <input type="checkbox" value="[% item.itemnumber | html %]" name="itemnumber" />
465
                                                        [% END %]
466
                                                    </td>
467
                                                [% END %]
468
                                                [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %]
469
                                                    <td class="cover">
470
                                                        <div class="bookcoverimg">
471
                                                            <div class="cover-slider">
472
                                                                [% FOREACH image IN item.object.cover_images %]
473
                                                                    <div class="cover-image local-coverimg">
474
                                                                        <a href="/cgi-bin/koha/catalogue/image.pl?itemnumber=[% image.itemnumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]" title="Local cover image">
475
                                                                            <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?itemnumber=[% item.itemnumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]" />
476
                                                                        </a>
477
                                                                    </div>
478
                                                                [% END %]
479
                                                            </div>
480
                                                        </div>
481
                                                    </td>
482
                                                [% END %]
483
484
                                                [% IF ( item_level_itypes ) %]
485
                                                    <td class="itype">
486
                                                        [% SET itemtype = item.itemtype %]
487
                                                        [% IF !noItemTypeImages && itemtype.image_location('intranet') %]
488
                                                            <img src="[% itemtype.image_location('intranet') | html %]" alt="[% itemtype.translated_description | html %]" title="[% itemtype.translated_description | html %]" />
489
                                                        [% END %]
490
                                                        <span class="itypedesc itypetext">[% itemtype.translated_description | html %]</span>
491
                                                    </td>
492
                                                [% END %]
493
                                                <td class="location">
494
                                                    [% UNLESS ( singlebranchmode ) %]
495
                                                        [% Branches.GetName( item.holdingbranch ) | html %]
496
                                                    [% END %]
497
                                                </td>
498
                                                <td class="homebranch">
499
                                                    <span class="homebranchdesc">[% Branches.GetName(item.homebranch) | html %]</span>
500
                                                    <span class="shelvingloc">
501
                                                        [%# If permanent location is defined, show description or code and             %]
502
                                                        [%# display current location in parentheses. If not, display current location. %]
503
                                                        [%# Note that permanent location is a code, and location may be an authval.    %]
504
                                                        [% IF item.permanent_location %]
505
                                                            [% SET permloc_authval = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.permanent_location ) %]
506
                                                            [% permloc_authval | html %]
507
                                                            [% SET item_location = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.location ) %]
508
                                                            [% IF item_location AND item_location != permloc_authval AND item.location != item.permanent_location %]
509
                                                                ([% item_location | html %])
510
                                                            [% END %]
511
                                                        [% ELSE %]
512
                                                            [% item_location | html %]
513
                                                        [% END %]
514
                                                    </span>
515
                                                </td>
516
                                                [% IF ( itemdata_ccode ) %]
517
                                                    <td>
518
                                                        [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => item.ccode ) | html %]
519
                                                    </td>
520
                                                [% END %]
521
                                                [% IF Koha.Preference('EnableItemGroups') %]
522
                                                    <td class="item_group">
523
                                                        [% item.object.item_group.description | html %]
524
                                                    </td>
525
                                                [% END %]
526
                                                <td class="itemcallnumber">
527
                                                    [% IF ( item.itemcallnumber ) %]
528
                                                        [% item.itemcallnumber | html %]
529
                                                    [% END %]
530
                                                </td>
531
                                                [% IF ( volinfo ) %]
532
                                                    [% SET serial = item.serial %]
533
                                                    [% IF itemdata_publisheddate #If there is at least one published date, use it for sorting %]
534
                                                        <td class="enumchron" data-order="[% serial.publisheddate | html %]">
535
                                                    [% ELSE %]
536
                                                        <td class="enumchron">
537
                                                    [% END %]
538
                                                        [% IF ( itemdata_enumchron ) %]
539
                                                            [% IF item.enumchron && serial.serialseq %]
540
                                                                <span class="enum">[% item.enumchron | html %]</span>
541
                                                                [% IF ( serial.serialseq && item.enumchron != serial.serialseq ) %]
542
                                                                    <span class="sep"> -- </span>
543
                                                                    <span class="serialseq">[% serial.serialseq | html %]</span>
544
                                                                [% END %]
545
                                                            [% ELSIF item.enumchron %]
546
                                                                <span class="enum">[% item.enumchron | html %]</span>
547
                                                            [% ELSIF item.serialseq %]
548
                                                                <span class="serialseq">[% serial.serialseq | html %]</span>
549
                                                            [% END %]
550
                                                            [% IF serial.publisheddate %]
551
                                                                <span class="pubdate">([% serial.publisheddate | $KohaDates %])</span>
552
                                                            [% END %]
553
                                                        [% END %]
554
                                                    </td>
555
                                                [% END %]
556
557
                                                <td class="status">
558
                                                    [% IF item.object.checkout %]
559
                                                        [% IF item.object.checkout.onsite_checkout %]
560
                                                            <span>Currently in local use
561
                                                        [% ELSE %]
562
                                                            <span class="datedue">Checked out
563
                                                        [% END %]
564
565
                                                        [% IF item.can_be_edited %]
566
                                                            [% IF item.object.checkout.onsite_checkout %]
567
                                                                by
568
                                                            [% ELSE %]
569
                                                                to
570
                                                            [% END %]
571
                                                            [% INCLUDE 'patron-title.inc' patron=item.object.checkout.patron hide_patron_infos_if_needed=1 %]
572
                                                        [% END %]
573
                                                        : due [% item.object.checkout.date_due | $KohaDates as_due_date => 1 %]
574
                                                        </span>
575
                                                    [% ELSIF ( transfer = item.object.get_transfer ) %]
576
                                                        [% IF (transfer.datesent) %]
577
                                                            <span class="intransit">In transit from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% transfer.datesent | $KohaDates %]</span>
578
                                                        [% ELSE %]
579
                                                            <span class="transitrequested">Transit pending from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% item.transfer.daterequested | $KohaDates %]</span>
580
581
                                                        [% END %]
582
                                                    [% END %]
583
584
                                                    [% IF ( item.itemlost ) %]
585
                                                        [% SET itemlost_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => item.itemlost ) %]
586
                                                        [% IF itemlostloop %]
587
                                                            <span class="lost">[% itemlost_description | html %]</span>
588
                                                        [% ELSE %]
589
                                                            <span class="lost">Unavailable (lost or missing)</span>
590
                                                        [% END %]
591
                                                    [% END %]
592
593
                                                    [% IF ( item.withdrawn ) %]
594
                                                        [% SET withdrawn_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => item.withdrawn ) %]
595
                                                        [% IF withdrawn_description %]
596
                                                            <span class="wdn">[% withdrawn_description | html %]</span>
597
                                                        [% ELSE %]
598
                                                            <span class="wdn">Withdrawn</span>
599
                                                        [% END %]
600
                                                    [% END %]
601
602
                                                    [% IF ( item.damaged ) %]
603
                                                        [% SET damaged_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => item.damaged ) %]
604
                                                        [% IF damaged_description %]
605
                                                            <span class="dmg">[% damaged_description | html %]</span>
606
                                                        [% ELSE %]
607
                                                            <span class="dmg">Damaged</span>
608
                                                        [% END %]
609
                                                    [% END %]
610
611
                                                    [% IF ( item.notforloan || item.itemtype.notforloan ) %]
612
                                                        <span class="notforloan">Not for loan
613
                                                        [% SET not_for_loan_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => item.notforloan ) %]
614
                                                        [% IF not_for_loan_description %]
615
                                                            <span class="reason">([% not_for_loan_description | html %])</span>
616
                                                        [% END %]
617
                                                        </span>
618
                                                    [% END %]
619
620
                                                    [% SET hold = item.first_hold %]
621
                                                    [% IF hold %]
622
                                                        [% IF hold.waitingdate %]
623
                                                            <span class="waitingat">Waiting at [% Branches.GetName( hold.branchcode ) | html %][% IF ( hold.desk_id ) %], [% hold.desk.desk_name | html %][% END %] since [% hold.waitingdate | $KohaDates %].</span>
624
                                                            [% IF canreservefromotherbranches AND ( hold.waitingdate OR hold.priority == 1 ) %]
625
                                                                <span class="heldfor">Hold for:</span>
626
                                                                [% INCLUDE 'patron-title.inc' patron=hold.borrower hide_patron_infos_if_needed=1 %]
627
                                                            [% END %]
628
                                                        [% ELSE %]
629
                                                            <span class="holdonitem">There is an item level hold on this item (priority = [% hold.priority | html %]).</span>
630
                                                        [% END %]
631
                                                    [% END %]
632
633
                                                    [% IF Koha.Preference('UseRecalls') %]
634
                                                        [% SET recall = item.object.recall %]
635
                                                        [% IF recall %]
636
                                                            [% IF recall.waiting_date %]
637
                                                                <span>Waiting at [% Branches.GetName( recall.pickup_library_id ) | html %] since [% recall.waiting_date | $KohaDates %]</span>
638
                                                            [% ELSE %]
639
                                                                [% patron_link = BLOCK %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% recall.patron_id | uri %]">[% recall.patron.firstname | html %] [% recall.patron.surname | html %] ([% recall.patron.cardnumber | html %])</a>[% END %]
640
                                                                <span>recalled by [% patron_link| $raw %] on [% recall.created_date | $KohaDates %]</span>
641
                                                            [% END %]
642
                                                        [% END %]
643
                                                    [% END %]
644
645
                                                    [% UNLESS ( item.notforloan || item.itemtype.notforloan || item.onloan || item.itemlost || item.withdrawn || item.damaged || item.transfer || hold || ( Koha.Preference('UseRecalls') && recall ) ) %]
646
                                                        <span>Available</span>
647
                                                    [% END %]
648
649
                                                    [% IF ( item.restricted ) %]
650
                                                        <span class="restricted">([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.restricted', authorised_value => item.restricted ) | html %])</span>
651
                                                    [% END %]
652
653
                                                    [% IF ( item.bundle_host ) %]
654
                                                        <span class="bundled">In bundle: [% INCLUDE 'biblio-title.inc' biblio = item.bundle_host.biblio link = 1 %]</span>
655
                                                    [% END %]
656
                                                </td>
657
658
                                                <td class="datelastseen" data-order="[% item.datelastseen | html %]">
659
                                                    [% item.datelastseen | $KohaDates with_hours => 1 %]
660
                                                </td>
661
                                                <td class="issues" data-order="[% item.issues || 0 | html %]">
662
                                                    [% item.issues || 0 | html %]
663
                                                </td>
664
                                                <td class="renewals" data-order="[% item.renewals || 0 | html %]">
665
                                                    [% item.renewals || 0 | html %]
666
                                                </td>
667
                                                <td class="dateaccessioned" data-order="[% item.dateaccessioned | html %]">
668
                                                    [% item.dateaccessioned | $KohaDates %]
669
                                                </td>
670
                                                <td class="datelastborrowed" data-order="[% item.datelastborrowed | html %]">
671
                                                    [% item.datelastborrowed | $KohaDates %]
672
                                                </td>
673
                                                <td>
674
                                                    <a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% item.itemnumber | uri %]&amp;biblionumber=[% item.biblionumber | uri %]&amp;bi=[% item.biblioitemnumber | uri %]#item[% item.itemnumber | uri %]">[% item.barcode | html %]</a>
675
                                                </td>
676
                                                [% IF ( itemdata_uri ) %]
677
                                                    [% IF item.uri.split(' \| ').size > 1 %]
678
                                                        <td class="uri">
679
                                                            [% FOREACH uri IN item.uri.split(' \| ') %]<a href="[% uri | url %]">[% uri | html %]</a><br>[% END %]
680
                                                        </td>
681
                                                    [% ELSE %]
682
                                                        <td class="uri">
683
                                                            [% IF item.uri %]
684
                                                                <a href="[% item.uri | url %]">[% IF Koha.Preference('URLLinkText') %][% Koha.Preference('URLLinkText') | html %][% ELSE %]Link to resource[% END %]</a>
685
                                                            [% END %]
686
                                                        </td>
687
                                                    [% END %]
688
                                                [% END %]
689
                                                [% IF ( itemdata_copynumber ) %]
690
                                                    <td class="copynumber">
691
                                                        [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.copynumber', authorised_value => item.copynumber ) | html %]
692
                                                    </td>
693
                                                [% END %]
694
                                                [% IF ( itemdata_stocknumber ) %]
695
                                                    <td class="stocknumber">[% item.stocknumber | html %]</td>
696
                                                [% END %]
697
                                                [% IF materials %]
698
                                                    <td class="materials"> [% item.materials | html %] </td>
699
                                                [% END %]
700
                                                [% IF ( itemdata_itemnotes ) %]
701
                                                    <td>
702
                                                        <div class="itemnotes">[% item.object.itemnotes.replace('\n','<br />') | $raw %]</div>
703
                                                    </td>
704
                                                [% END %]
705
                                                [% IF itemdata_nonpublicnotes %]
706
                                                    <td class="nonpublicnote">[% item.itemnotes_nonpublic | html %]</td>
707
                                                [% END %]
708
                                                [% IF ( hostrecords ) %]
709
                                                    <td>
710
                                                        [% IF ( item.hostbiblionumber) %]
711
                                                            <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item.hostbiblionumber | uri %]" >[% item.hosttitle | html %]</a>
712
                                                        [% END %]
713
                                                    </td>
714
                                                [% END %]
715
                                                [% IF ( analyze ) %]
716
                                                    <td>
717
                                                        [% IF ( item.countanalytics ) %]
718
                                                            <a href="/cgi-bin/koha/catalogue/search.pl?idx=hi&amp;q=[% item.itemnumber | uri %]">[% item.countanalytics | html %] analytics</a>
719
                                                        [% END %]
720
                                                    </td>
721
                                                [% END %]
722
                                                [% IF ( analyze ) %]
723
                                                    <td><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?hostbiblionumber=[% item.biblionumber | uri %]&amp;hostitemnumber=[% item.itemnumber | uri %]">Create analytics</a></td>
724
                                                [% END %]
725
726
                                                [% IF ShowCourseReserves %]
727
                                                    <td>
728
                                                        [% IF item.course_reserves %]
729
                                                            [% FOREACH r IN item.course_reserves %]
730
                                                                [% IF r.course.enabled == 'yes' %]
731
                                                                    <p>
732
                                                                    <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% r.course.course_id | uri %]">
733
                                                                        [% r.course.course_name | html %]
734
                                                                        <!--[% IF r.course.course_number %] [% r.course.course_number | html %] [% END %]-->
735
                                                                        [% IF r.course.section %] [% r.course.section | html %] [% END %]
736
                                                                        [% IF r.course.term %] [% AuthorisedValues.GetByCode( 'TERM', r.course.term ) | html %] [% END %]
737
                                                                        </a>
738
                                                                    </p>
739
                                                                [% END %]
740
                                                            [% END %]
741
                                                        [% END %]
742
                                                    </td>
743
                                                [% END %]
744
745
                                                [% IF ( SpineLabelShowPrintOnBibDetails ) %]
746
                                                    <td>
747
                                                        <a class="btn btn-default btn-xs print-label" href="/cgi-bin/koha/labels/spinelabel-print.pl?barcode=[% item.barcode | uri %]"><i class="fa fa-print"></i> Print label</a>
748
                                                    </td>
749
                                                [% END %]
750
751
                                                [% IF CAN_user_editcatalogue_edit_items %]
752
                                                    <td class="actions">
753
                                                        [% IF item.can_be_edited %]
754
                                                            [% IF Koha.Preference('LocalCoverImages') OR Koha.Preference('OPACLocalCoverImages') %]
755
                                                                <div class="btn-group">
756
                                                                    <a  class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a><a class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a>
757
                                                                    <ul class="dropdown-menu pull-right">
758
                                                                        <li><a href="/cgi-bin/koha/tools/upload-cover-image.pl?itemnumber=[% item.itemnumber | uri %]&amp;filetype=image"><i class="fa fa-upload"></i> Upload image</a></li>
759
                                                                    </ul>
760
                                                                </div>
761
                                                            [% ELSE %]
762
                                                                <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a>
763
                                                            [% END %]
764
                                                        [% END %]
765
                                                        [% IF bundlesEnabled %]
766
                                                            <button class="btn btn-default btn-xs details-control"><i class="fa fa-folder"></i> Manage bundle ([% item.bundled | html %]|[% item.bundled_lost | html %])</button>
767
                                                        [% END %]
768
                                                    </td>
769
                                                [% END %]
770
                                            </tr>
771
                                        [% END %]
772
                                    </tbody>
773
                                </table>
774
                            [% END %][%# end of block items_table %]
775
776
                            [% IF Koha.Preference('EnableItemGroups') %]
777
                                <div role="tabpanel" class="tab-pane" id="item_groups">
778
                                    [% IF CAN_user_editcatalogue_manage_item_groups %]
779
                                        <div class="item_groups_table_table_controls">
780
                                            <a href="#" class="item-group-create btn btn-default btn-xs"><i class="fa fa-plus"></i> New item group</a>
781
                                        </div>
782
                                    [% END %]
783
                                    <table class="items-group-table" id="items-group-table">
784
                                        <thead>
785
                                            <tr>
786
                                                <td>Display order</td>
787
                                                <td>Description</td>
788
                                                <td>&nbsp;</td>
789
                                            </tr>
790
                                        </thead>
791
                                    </table>
645
                                </div>
792
                                </div>
646
                            [% ELSE %]
647
                                <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a>
648
                            [% END %]
793
                            [% END %]
649
                        [% END %]
650
                        [% IF bundlesEnabled %]
651
                            <button class="btn btn-default btn-xs details-control"><i class="fa fa-folder"></i> Manage bundle ([% item.bundled | html %]|[% item.bundled_lost | html %])</button>
652
                        [% END %]
653
                    </td>
654
                [% END %]
655
                </tr>
656
            [% END %]
657
        </tbody>
658
    </table>
659
660
[% END %][%# end of block items_table %]
661
662
[% IF Koha.Preference('EnableItemGroups') %]
663
    <div role="tabpanel" class="tab-pane" id="item_groups">
664
        [% IF CAN_user_editcatalogue_manage_item_groups %]
665
            <div class="item_groups_table_table_controls">
666
                <a href="#" class="item-group-create btn btn-default btn-xs"><i class="fa fa-plus"></i> New item group</a>
667
            </div>
668
        [% END %]
669
        <table class="items-group-table" id="items-group-table">
670
            <thead>
671
                <tr>
672
                    <td>Display order</td>
673
                    <td>Description</td>
674
                    <td>&nbsp;</td>
675
                </tr>
676
            </thead>
677
        </table>
678
    </div>
679
[% END %]
680
681
682
<div role="tabpanel" class="tab-pane" id="holdings">
683
684
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'above' ) %]
685
    <span class="results_summary NovelistSelect" style="display:none;">
686
        <span class="label">Novelist Select: </span>
687
        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
688
    </span>
689
[% END %]
690
691
[% IF ( count ) %]
692
    [% IF ( showncount ) %]
693
        [% PROCESS items_table tab="holdings" items=itemloop %]
694
        [% END %]
695
                [% IF ( hiddencount ) %]
696
                   <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]&amp;showallitems=1">Show all items ([% hiddencount | html %] hidden)</a>
697
                [% END %] 		
698
		[% IF ( debug_display ) %]
699
		<br /><br />
700
		<table>
701
			<tr><td>itemdata_enumchron</td><td>[% itemdata_enumchron | html %]</td></tr>
702
			<tr><td>itemdata_copynumber</td><td>[% itemdata_copynumber | html %]</td></tr>
703
			<tr><td>serial</td><td>[% serial | html %]</td></tr>
704
		</table>
705
                [% END %]
706
[% ELSE %]
707
    [% IF ( ALTERNATEHOLDINGS ) %]
708
    [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
709
        <div id="alternateholdings"><span class="holdings_label">Holdings:</span> [% ALTERNATEHOLDING.holding | html %]</div>
710
    [% END %]
711
    [% ELSE %]
712
    <div id="noitems">No physical items for this record</div>
713
    [% END %]
714
[% END %]
715
716
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'below' ) %]
717
    <span class="results_summary NovelistSelect" style="display:none;">
718
        <span class="label">Novelist Select: </span>
719
        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
720
    </span>
721
[% END %]
722
    </div>
723
794
724
[% IF (SeparateHoldings) %]
795
                            <div role="tabpanel" class="tab-pane" id="holdings">
725
    <div role="tabpanel" class="tab-pane" id="otherholdings">
796
                                [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'above' ) %]
726
        [% IF (otheritemloop.size) %]
797
                                    <span class="results_summary NovelistSelect" style="display:none;">
727
            [% PROCESS items_table tab="otherholdings" items=otheritemloop %]
798
                                        <span class="label">Novelist Select: </span>
728
        [% ELSE %]
799
                                        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
729
            <span class="nootheritems">No other items.</span>
800
                                    </span>
730
        [% END %]
801
                                [% END %]
731
    </div>
732
[% END %]
733
734
[% IF ( MARCNOTES ) %]
735
736
<div role="tabpanel" class="tab-pane" id="description">
737
<div class="content_set">
738
739
    [% FOREACH MARCNOTE IN MARCNOTES %]
740
        <p>
741
        [% IF MARCNOTE.marcnote.match('^https?://\S+$') %]
742
            <a href="[% MARCNOTE.marcnote | url %]">[% MARCNOTE.marcnote | html %]</a>
743
        [% ELSE %]
744
            [% MARCNOTE.marcnote | html | html_line_break %]
745
        [% END %]
746
        </p>
747
[% END %]
748
</div>
749
</div>
750
802
751
[% END %]
803
                                [% IF ( count ) %]
804
                                    [% IF ( showncount ) %]
805
                                        [% PROCESS items_table tab="holdings" items=itemloop %]
806
                                    [% END %]
807
                                    [% IF ( hiddencount ) %]
808
                                        <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]&amp;showallitems=1">Show all items ([% hiddencount | html %] hidden)</a>
809
                                    [% END %]
810
                                    [% IF ( debug_display ) %]
811
                                        <br /><br />
812
                                        <table>
813
                                            <tr><td>itemdata_enumchron</td><td>[% itemdata_enumchron | html %]</td></tr>
814
                                            <tr><td>itemdata_copynumber</td><td>[% itemdata_copynumber | html %]</td></tr>
815
                                            <tr><td>serial</td><td>[% serial | html %]</td></tr>
816
                                        </table>
817
                                    [% END %]
818
                                [% ELSE %]
819
                                    [% IF ( ALTERNATEHOLDINGS ) %]
820
                                        [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
821
                                            <div id="alternateholdings">
822
                                                <span class="holdings_label">Holdings:</span>
823
                                                [% ALTERNATEHOLDING.holding | html %]
824
                                            </div>
825
                                        [% END %]
826
                                    [% ELSE %]
827
                                        <div id="noitems">No physical items for this record</div>
828
                                    [% END %]
829
                                [% END %]
752
830
753
[% IF ComponentParts && ComponentParts.size %]
831
                                [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'below' ) %]
754
<div role="tabpanel" class="tab-pane" id="components">
832
                                    <span class="results_summary NovelistSelect" style="display:none;">
755
    <div class="content_set">
833
                                        <span class="label">Novelist Select: </span>
756
        <table>
834
                                        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
757
            [% FOR PART IN ComponentParts %]
835
                                    </span>
758
            <tr>
836
                                [% END %]
759
                <td>
837
                            </div>
760
                    [% PART | $raw %]
761
                </td>
762
            </tr>
763
            [% END %]
764
        </table>
765
        [% IF ComponentParts.size == Koha.Preference('MaxComponentRecords')%]
766
        <p>Only [% ComponentParts.size | html %] results are shown: <a href="/cgi-bin/koha/catalogue/search.pl?q=[% ComponentPartsQuery | url %]"/>show all component parts</a></p>
767
        [% END %]
768
    </div> <!-- /.content_set -->
769
</div> <!-- /#components -->
770
838
771
[% END %]
839
                            [% IF (SeparateHoldings) %]
840
                                <div role="tabpanel" class="tab-pane" id="otherholdings">
841
                                    [% IF (otheritemloop.size) %]
842
                                        [% PROCESS items_table tab="otherholdings" items=otheritemloop %]
843
                                    [% ELSE %]
844
                                        <span class="nootheritems">No other items.</span>
845
                                    [% END %]
846
                                </div>
847
                            [% END %]
772
848
773
[% IF ( subscriptionsnumber ) %]
849
                            [% IF ( MARCNOTES ) %]
774
<div role="tabpanel" class="tab-pane" id="subscriptions">
850
                                <div role="tabpanel" class="tab-pane" id="description">
775
<div id="catalogue_detail_subscriptions">
851
                                    <div class="content_set">
776
    <h2>This is a serial subscription</h2>
852
                                        [% FOREACH MARCNOTE IN MARCNOTES %]
777
    <p> (There are [% subscriptionsnumber | html %] subscriptions associated with this title).</p> 
853
                                            <p>
778
    [% FOREACH subscription IN subscriptions %]
854
                                                [% IF MARCNOTE.marcnote.match('^https?://\S+$') %]
779
            [% IF subscription.branchcode %]
855
                                                    <a href="[% MARCNOTE.marcnote | url %]">[% MARCNOTE.marcnote | html %]</a>
780
                <h3>At library: [% Branches.GetName(subscription.branchcode) || subscription.branchcode | html %]</h3>
856
                                                [% ELSE %]
781
            [% END %]
857
                                                    [% MARCNOTE.marcnote | html | html_line_break %]
782
            [% IF ( subscription.closed ) %]<p>This subscription is closed.</p>[% END %]
858
                                                [% END %]
783
            [% IF ( subscription.location ) %]<p class="subscription_location">Location: [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => subscription.location ) | html %]</p>[% END %]
859
                                            </p>
784
            [% IF ( subscription.callnumber ) %]<p>Callnumber: [% subscription.callnumber | html %] </p>[% END %]
860
                                        [% END %]
785
            [% IF ( subscription.subscriptionnotes ) %]<p>[% subscription.subscriptionnotes | html | html_line_break %] </p>[% END %]
861
                                    </div>
786
            [% IF ( subscription.missinglist ) %]<p>Missing issues: [% subscription.missinglist | html %] </p>[% END %]
862
                                </div>
787
            [% IF ( subscription.librariannote ) %]<p>([% subscription.librariannote | html %])</p>[% END %]
863
                            [% END %]
788
            [% IF ( subscription.latestserials ) %]
789
            <p> The [% subscription.staffdisplaycount | html %] latest issues related to this subscription:</p>
790
            <table>
791
                <tr>
792
                    <th>Issue #</th>
793
                    <th>Date arrived</th>
794
                    <th>Date published</th>
795
                    <th>Date published (text)</th>
796
                    <th>Status</th>
797
                    <th>Note</th>
798
                </tr>
799
            [% FOREACH latestserial IN subscription.latestserials %]
800
                <tr>
801
                    <td>[% latestserial.serialseq | html %]</td>
802
                    <td data-order="[% latestserial.planneddate | html %]">[% latestserial.planneddate | $KohaDates %]</td>
803
                    <td data-order="[% latestserial.publisheddate | html %]">[% latestserial.publisheddate | $KohaDates %]</td>
804
                    <td>[% latestserial.publisheddatetext | html %]</td>
805
                    <td>
806
                        [% INCLUDE 'serial-status.inc' serial = latestserial %]
807
                    </td>
808
                    <td>[% latestserial.notes | html %]</td>
809
                </tr>
810
            [% END %]
811
            </table>
812
            [% END %]
813
            <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]">Subscription details</a>
814
    [% END %]
815
</div>
816
</div>
817
[% END %]
818
864
819
[% IF Koha.Preference('AcquisitionDetails') %]
865
                            [% IF ComponentParts && ComponentParts.size %]
820
<div role="tabpanel" class="tab-pane" id="acq_details">
866
                                <div role="tabpanel" class="tab-pane" id="components">
821
  [% IF orders.count %]
867
                                    <div class="content_set">
822
    <table id="orders">
868
                                        <table>
823
      <thead>
869
                                            [% FOR PART IN ComponentParts %]
824
        <tr>
870
                                                <tr>
825
          <th>Vendor</th>
871
                                                    <td>
826
          <th>Invoice</th>
872
                                                        [% PART | $raw %]
827
          <th>Basket group</th>
873
                                                    </td>
828
          <th>Basket</th>
874
                                                </tr>
829
          <th>Order number</th>
875
                                            [% END %]
830
          <th>Creation date</th>
876
                                        </table>
831
          <th>Receive date</th>
877
                                        [% IF ComponentParts.size == Koha.Preference('MaxComponentRecords')%]
832
          <th>Status</th>
878
                                            <p>Only [% ComponentParts.size | html %] results are shown: <a href="/cgi-bin/koha/catalogue/search.pl?q=[% ComponentPartsQuery | url %]"/>show all component parts</a></p>
833
          <th>Quantity</th>
879
                                        [% END %]
834
          <th title="Estimated cost tax incl. while pending, actual cost tax incl. once received">Price</th>
880
                                    </div> <!-- /.content_set -->
835
          <th>Internal note</th>
881
                                </div> <!-- /#components -->
836
          <th>Subscription</th>
882
                            [% END %]
837
          <th>Subscription call number</th>
838
        </tr>
839
      </thead>
840
      <tbody>
841
      [% FOR order IN orders %]
842
        [% SET basket = order.basket %]
843
        [% SET vendor = basket.bookseller %]
844
          <tr>
845
            <td>
846
                <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% vendor.id | uri %]" title="Vendor detail page">[% vendor.name | html %]</a>
847
            </td>
848
            <td>
849
            [% IF order.invoiceid %]
850
                [% IF CAN_user_acquisition %]
851
                    <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]"
852
                       title="Invoice detail page">
853
                       [% order.invoice.invoicenumber | html %]</a>
854
                [% ELSE %]
855
                    [% order.invoice.invoicenumber | html %]
856
                [% END %]
857
            [% END %]
858
            </td>
859
            <td>
860
            [% IF basket.basketgroupid %]
861
                [% SET basket_group = basket.basket_group %]
862
                [% IF CAN_user_acquisition_group_manage %]
863
                    <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&booksellerid=[% vendor.id | uri %]&basketgroupid=[% basket_group.id | uri %]">[% basket_group.name | html%] ([% basket_group.id | html %])</a>
864
                [% ELSE %]
865
                    [% basket_group.name | html %] ([% basket_group.id | html %])
866
                [% END %]
867
            [% END %]
868
            </td>
869
            <td>[% IF CAN_user_acquisition_order_manage %]
870
                <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %] ([% basket.basketno | html %])</a>
871
            [% ELSE %]
872
                [% basket.basketname | html %] ([% basket.basketno | html %])
873
            [% END %]</td>
874
            <td>[% order.ordernumber | html %]</td>
875
            <td data-order="[% basket.creationdate | uri %]">[% basket.creationdate | $KohaDates%]</td>
876
            <td data-order="[% order.datereceived | uri %]">[% order.datereceived | $KohaDates%]</td>
877
            <td>
878
              [% SWITCH order.orderstatus %]
879
                [% CASE 'new' %]<span>New</span>
880
                [% CASE 'ordered' %]<span>Ordered</span>
881
                [% CASE 'partial' %]<span>Partial</span>
882
                [% CASE 'complete' %]<span>Complete</span>
883
                [% CASE 'cancelled' %]<span>Cancelled</span>
884
              [% END %]
885
            </td>
886
            <td>[% order.quantity | html %]</td>
887
            <td>[% IF ( order.unitprice_tax_included > 0 ) %][% order.unitprice_tax_included | $Price %][% ELSE %][% order.ecost_tax_included | $Price %][% END %]
888
            <td>[% order.order_internalnote | html %]</td>
889
            <td>
890
                [% IF order.subscriptionid %]
891
                    <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% order.subscriptionid | uri %]">[% order.subscriptionid | html %]</a>
892
                [% END %]
893
            </td>
894
            <td>
895
                [% IF order.subscriptionid %]
896
                    [% order.subscription.callnumber | html %]
897
                [% END %]
898
            </td>
899
          </tr>
900
      [% END %]
901
      </tbody>
902
    </table>
903
  [% ELSE %]
904
    <span class="noorder">There is no order for this bibliographic record.</span>
905
  [% END %]
906
</div>
907
[% END %]
908
883
909
[% IF suggestions.count %]
884
                            [% IF ( subscriptionsnumber ) %]
910
    <div role="tabpanel" class="tab-pane" id="suggestion_details">
885
                                <div role="tabpanel" class="tab-pane" id="subscriptions">
911
        [% IF nb_archived_suggestions > 0 %]
886
                                    <div id="catalogue_detail_subscriptions">
912
            <p>[% tnpx('pluralization', 'There is one archived suggestion.', 'There are {count} archived suggestions.', nb_archived_suggestions, { count = nb_archived_suggestions }) | $raw  %]
887
                                        <h2>This is a serial subscription</h2>
913
        [% END %]
888
                                        <p> (There are [% subscriptionsnumber | html %] subscriptions associated with this title).</p>
914
        <table id="suggestions" class="sorted">
889
                                        [% FOREACH subscription IN subscriptions %]
915
            <thead>
890
                                            [% IF subscription.branchcode %]
916
                <tr>
891
                                                <h3>At library: [% Branches.GetName(subscription.branchcode) || subscription.branchcode | html %]</h3>
917
                    <th class="NoSort">&nbsp;</th>
892
                                            [% END %]
918
                    <th class="anti-the">Suggestion</th>
893
                                            [% IF ( subscription.closed ) %]
919
                    <th>Suggested by - on</th>
894
                                                <p>This subscription is closed.</p>
920
                    <th>Managed by - on</th>
895
                                            [% END %]
921
                    <th>Last modification by - on</th>
896
                                            [% IF ( subscription.location ) %]
922
                    <th>Library</th>
897
                                                <p class="subscription_location">Location: [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => subscription.location ) | html %]</p>
923
                    <th>Fund</th>
898
                                            [% END %]
924
                    <th>Status</th>
899
                                            [% IF ( subscription.callnumber ) %]
925
                </tr>
900
                                                <p>Callnumber: [% subscription.callnumber | html %] </p>
926
            </thead>
901
                                            [% END %]
927
            <tbody>
902
                                            [% IF ( subscription.subscriptionnotes ) %]
928
            [% FOREACH suggestion IN suggestions %]
903
                                                <p>[% subscription.subscriptionnotes | html | html_line_break %] </p>
929
                <tr>
904
                                            [% END %]
930
                    <td>[% suggestion.suggestionid | html %]</td>
905
                                            [% IF ( subscription.missinglist ) %]
931
                    <td>
906
                                                <p>Missing issues: [% subscription.missinglist | html %] </p>
932
                        <a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestion.suggestionid | uri %]&amp;op=show" title="suggestion" >
907
                                            [% END %]
933
                            [% suggestion.title | html %][% IF ( suggestion.author ) %], by [% suggestion.author | html %][% END %]</a>
908
                                            [% IF ( subscription.librariannote ) %]
934
                        <br />
909
                                                <p>([% subscription.librariannote | html %])</p>
935
                        [% IF ( suggestion.copyrightdate ) %]&copy; [% suggestion.copyrightdate | html %] [% END %]
910
                                            [% END %]
936
                        [% IF ( suggestion.volumedesc ) %]; Volume:<em>[% suggestion.volumedesc | html %]</em> [% END %]
911
                                            [% IF ( subscription.latestserials ) %]
937
                        [% IF ( suggestion.isbn ) %]; ISBN:<em>[% suggestion.isbn | html %]</em> [% END %][% IF ( suggestion.publishercode ) %]; Published by [% suggestion.publishercode | html %] [% END %][% IF ( suggestion.publicationyear ) %] in <em>[% suggestion.publicationyear | html %]</em> [% END %][% IF ( suggestion.place ) %] in <em>[% suggestion.place | html %]</em> [% END %][% IF ( suggestion.collectiontitle ) %]; [% suggestion.collectiontitle | html %] [% END %][% IF ( suggestion.itemtype ) %]; [% AuthorisedValues.GetByCode( 'SUGGEST_FORMAT', suggestion.itemtype, 0 ) | html %] [% END %]<br />[% IF ( suggestion.note ) %]<div class="suggestion_note"><i class="fa fa-comment"></i> [% suggestion.note | html %]</div>[% END %]
912
                                                <p> The [% subscription.staffdisplaycount | html %] latest issues related to this subscription:</p>
938
                    </td>
913
                                                <table>
939
                    <td>
914
                                                    <tr>
940
                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.suggestedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.suggester %]</a>
915
                                                        <th>Issue #</th>
941
                        [% IF suggestion.suggesteddate %] - [% suggestion.suggesteddate | $KohaDates %][% END %]
916
                                                        <th>Date arrived</th>
942
                    </td>
917
                                                        <th>Date published</th>
943
                    <td>
918
                                                        <th>Date published (text)</th>
944
                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.managedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.manager %]</a>
919
                                                        <th>Status</th>
945
                        [% IF suggestion.manageddate %] - [% suggestion.manageddate | $KohaDates %][% END %]
920
                                                        <th>Note</th>
946
                    </td>
921
                                                    </tr>
947
                    <td>
922
                                                    [% FOREACH latestserial IN subscription.latestserials %]
948
                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.lastmodificationby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.last_modifier %]</a>
923
                                                        <tr>
949
                        [% IF suggestion.lastmodificationdate %] - [% suggestion.lastmodificationdate | $KohaDates %][% END %]
924
                                                            <td>[% latestserial.serialseq | html %]</td>
950
                    </td>
925
                                                            <td data-order="[% latestserial.planneddate | html %]">[% latestserial.planneddate | $KohaDates %]</td>
951
                    <td>
926
                                                            <td data-order="[% latestserial.publisheddate | html %]">[% latestserial.publisheddate | $KohaDates %]</td>
952
                        [% Branches.GetName( suggestion.branchcode ) | html %]
927
                                                            <td>[% latestserial.publisheddatetext | html %]</td>
953
                    </td>
928
                                                            <td>
954
                    <td>
929
                                                                [% INCLUDE 'serial-status.inc' serial = latestserial %]
955
                        [% suggestion.fund.budget_name | html %]
930
                                                            </td>
956
                    </td>
931
                                                            <td>[% latestserial.notes | html %]</td>
957
                    <td>
932
                                                        </tr>
958
                        [% IF    suggestion.STATUS == 'ASKED'     %]<span>Pending</span>
933
                                                    [% END %]
959
                        [% ELSIF suggestion.STATUS == 'ACCEPTED'  %]<span>Accepted</span>
934
                                                </table>
960
                        [% ELSIF suggestion.STATUS == 'ORDERED'   %]<span>Ordered</span>
935
                                            [% END %]
961
                        [% ELSIF suggestion.STATUS == 'REJECTED'  %]<span>Rejected</span>
936
                                            <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]">Subscription details</a>
962
                        [% ELSIF suggestion.STATUS == 'CHECKED'   %]<span>Checked</span>
937
                                        [% END %]
963
                        [% ELSIF suggestion.STATUS == 'AVAILABLE' %]<span>Available</span>
938
                                    </div>
964
                        [% ELSIF AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) %]
939
                                </div>
965
                            [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) | html %]
940
                            [% END %]
966
                        [% ELSE %]<span>Status unknown</span>
967
                        [% END %]
968
                        [% IF suggestion.reason %]
969
                            <br />([% suggestion.reason | html %])
970
                        [% END %]
971
                    </td>
972
                </tr>
973
                [% END %]
974
            </tbody>
975
        </table>
976
    </div>
977
[% END %]
978
941
979
[% IF ( FRBRizeEditions ) %][% IF ( XISBNS ) %]
942
                            [% IF Koha.Preference('AcquisitionDetails') %]
980
<div role="tabpanel" class="tab-pane" id="editions"><h4>Editions</h4>
943
                                <div role="tabpanel" class="tab-pane" id="acq_details">
981
<table>
944
                                    [% IF orders.count %]
982
[% FOREACH XISBN IN XISBNS %]<tr>[% IF ( AmazonCoverImages ) %]<td><a href="http://www.amazon.com/gp/reader/[% XISBN.normalized_isbn | uri %][% AmazonAssocTag | uri %]#reader-link"><img src="https://images-na.ssl-images-amazon.com/images/P/[% XISBN.normalized_isbn | html %].01._AA75_PU_PU-5_.jpg" /></a></td>[% END %]
945
                                        <table id="orders">
983
[% IF ( !item_level_itypes || Koha.Preference('BiblioItemtypeInfo') ) %]<td>[% IF ( noItemTypeImages ) %]<span class="itypetext">[% XISBN.description | html %]</span>[% ELSE %]<img src="[% XISBN.imageurl | html %]" alt="[% XISBN.description | html %]" title="[% XISBN.description | html %]">[% END %]</td>[% END %]
946
                                            <thead>
984
<td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% XISBN.biblionumber | uri %]">[% XISBN.title | html %]</a> <span>by</span> [% XISBN.author | html %] &copy;[% XISBN.copyrightdate | html %]
947
                                                <tr>
985
  [% IF ( XISBN.publishercode ) %]
948
                                                    <th>Vendor</th>
986
[% XISBN.publishercode | html %] [% IF ( XISBN.place ) %]([% XISBN.place | html %])[% END %] [% IF ( XISBN.publicationyear ) %], [% XISBN.publicationyear | html %][% END %] [% IF ( XISBN.editionstatement ) %][% XISBN.editionstatement | html %][% END %] [% IF ( XISBN.editionresponsibility ) %][% XISBN.editionresponsibility | html %][% END %]
949
                                                    <th>Invoice</th>
987
    [% END %]
950
                                                    <th>Basket group</th>
988
                [% IF ( XISBN.pages ) %] [% END %][% XISBN.pages | html %] [% IF ( XISBN.illus ) %][% XISBN.illus | html %][% END %]
951
                                                    <th>Basket</th>
989
                [% IF ( XISBN.size ) %], [% END %][% XISBN.size | html %]
952
                                                    <th>Order number</th>
990
</td>
953
                                                    <th>Creation date</th>
954
                                                    <th>Receive date</th>
955
                                                    <th>Status</th>
956
                                                    <th>Quantity</th>
957
                                                    <th title="Estimated cost tax incl. while pending, actual cost tax incl. once received">Price</th>
958
                                                    <th>Internal note</th>
959
                                                    <th>Subscription</th>
960
                                                    <th>Subscription call number</th>
961
                                                </tr>
962
                                            </thead>
963
                                            <tbody>
964
                                                [% FOR order IN orders %]
965
                                                    [% SET basket = order.basket %]
966
                                                    [% SET vendor = basket.bookseller %]
967
                                                    <tr>
968
                                                        <td>
969
                                                            <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% vendor.id | uri %]" title="Vendor detail page">[% vendor.name | html %]</a>
970
                                                        </td>
971
                                                        <td>
972
                                                            [% IF order.invoiceid %]
973
                                                                [% IF CAN_user_acquisition %]
974
                                                                    <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]"
975
                                                                    title="Invoice detail page">
976
                                                                    [% order.invoice.invoicenumber | html %]</a>
977
                                                                [% ELSE %]
978
                                                                    [% order.invoice.invoicenumber | html %]
979
                                                                [% END %]
980
                                                            [% END %]
981
                                                        </td>
982
                                                        <td>
983
                                                            [% IF basket.basketgroupid %]
984
                                                                [% SET basket_group = basket.basket_group %]
985
                                                                [% IF CAN_user_acquisition_group_manage %]
986
                                                                    <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&booksellerid=[% vendor.id | uri %]&basketgroupid=[% basket_group.id | uri %]">[% basket_group.name | html%] ([% basket_group.id | html %])</a>
987
                                                                [% ELSE %]
988
                                                                    [% basket_group.name | html %] ([% basket_group.id | html %])
989
                                                                [% END %]
990
                                                            [% END %]
991
                                                        </td>
992
                                                        <td>
993
                                                            [% IF CAN_user_acquisition_order_manage %]
994
                                                                <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %] ([% basket.basketno | html %])</a>
995
                                                            [% ELSE %]
996
                                                                [% basket.basketname | html %] ([% basket.basketno | html %])
997
                                                            [% END %]
998
                                                        </td>
999
                                                        <td>
1000
                                                            [% order.ordernumber | html %]
1001
                                                        </td>
1002
                                                        <td data-order="[% basket.creationdate | uri %]">
1003
                                                            [% basket.creationdate | $KohaDates%]
1004
                                                        </td>
1005
                                                        <td data-order="[% order.datereceived | uri %]">
1006
                                                            [% order.datereceived | $KohaDates%]
1007
                                                        </td>
1008
                                                        <td>
1009
                                                            [% SWITCH order.orderstatus %]
1010
                                                                [% CASE 'new' %]<span>New</span>
1011
                                                                [% CASE 'ordered' %]<span>Ordered</span>
1012
                                                                [% CASE 'partial' %]<span>Partial</span>
1013
                                                                [% CASE 'complete' %]<span>Complete</span>
1014
                                                                [% CASE 'cancelled' %]<span>Cancelled</span>
1015
                                                            [% END %]
1016
                                                        </td>
1017
                                                        <td>
1018
                                                            [% order.quantity | html %]</td>
1019
                                                        <td>
1020
                                                            [% IF ( order.unitprice_tax_included > 0 ) %][% order.unitprice_tax_included | $Price %][% ELSE %][% order.ecost_tax_included | $Price %][% END %]
1021
                                                        <td>
1022
                                                            [% order.order_internalnote | html %]</td>
1023
                                                        <td>
1024
                                                            [% IF order.subscriptionid %]
1025
                                                                <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% order.subscriptionid | uri %]">[% order.subscriptionid | html %]</a>
1026
                                                            [% END %]
1027
                                                        </td>
1028
                                                        <td>
1029
                                                            [% IF order.subscriptionid %]
1030
                                                                [% order.subscription.callnumber | html %]
1031
                                                            [% END %]
1032
                                                        </td>
1033
                                                    </tr>
1034
                                                [% END %]
1035
                                            </tbody>
1036
                                        </table>
1037
                                    [% ELSE %]
1038
                                        <span class="noorder">There is no order for this bibliographic record.</span>
1039
                                    [% END %]
1040
                                </div>
1041
                            [% END %]
991
1042
992
[% END %]
1043
                            [% IF suggestions.count %]
993
</table></div>[% END %]
1044
                                <div role="tabpanel" class="tab-pane" id="suggestion_details">
994
[% END %]
1045
                                    [% IF nb_archived_suggestions > 0 %]
1046
                                        <p>[% tnpx('pluralization', 'There is one archived suggestion.', 'There are {count} archived suggestions.', nb_archived_suggestions, { count = nb_archived_suggestions }) | $raw  %]
1047
                                    [% END %]
1048
                                    <table id="suggestions" class="sorted">
1049
                                        <thead>
1050
                                            <tr>
1051
                                                <th class="NoSort">&nbsp;</th>
1052
                                                <th class="anti-the">Suggestion</th>
1053
                                                <th>Suggested by - on</th>
1054
                                                <th>Managed by - on</th>
1055
                                                <th>Last modification by - on</th>
1056
                                                <th>Library</th>
1057
                                                <th>Fund</th>
1058
                                                <th>Status</th>
1059
                                            </tr>
1060
                                        </thead>
1061
                                        <tbody>
1062
                                            [% FOREACH suggestion IN suggestions %]
1063
                                                <tr>
1064
                                                    <td>[% suggestion.suggestionid | html %]</td>
1065
                                                    <td>
1066
                                                        <a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestion.suggestionid | uri %]&amp;op=show" title="suggestion" >
1067
                                                            [% suggestion.title | html %][% IF ( suggestion.author ) %], by [% suggestion.author | html %][% END %]</a>
1068
                                                        <br />
1069
                                                        [% IF ( suggestion.copyrightdate ) %]&copy; [% suggestion.copyrightdate | html %] [% END %]
1070
                                                        [% IF ( suggestion.volumedesc ) %]; Volume:<em>[% suggestion.volumedesc | html %]</em> [% END %]
1071
                                                        [% IF ( suggestion.isbn ) %]; ISBN:<em>[% suggestion.isbn | html %]</em> [% END %][% IF ( suggestion.publishercode ) %]; Published by [% suggestion.publishercode | html %] [% END %]
1072
                                                        [% IF ( suggestion.publicationyear ) %] in <em>[% suggestion.publicationyear | html %]</em> [% END %]
1073
                                                        [% IF ( suggestion.place ) %] in <em>[% suggestion.place | html %]</em> [% END %]
1074
                                                        [% IF ( suggestion.collectiontitle ) %]; [% suggestion.collectiontitle | html %] [% END %]
1075
                                                        [% IF ( suggestion.itemtype ) %]; [% AuthorisedValues.GetByCode( 'SUGGEST_FORMAT', suggestion.itemtype, 0 ) | html %] [% END %]<br />
1076
                                                        [% IF ( suggestion.note ) %]
1077
                                                            <div class="suggestion_note"><i class="fa fa-comment"></i> [% suggestion.note | html %]</div>
1078
                                                        [% END %]
1079
                                                    </td>
1080
                                                    <td>
1081
                                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.suggestedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.suggester %]</a>
1082
                                                        [% IF suggestion.suggesteddate %] - [% suggestion.suggesteddate | $KohaDates %][% END %]
1083
                                                    </td>
1084
                                                    <td>
1085
                                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.managedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.manager %]</a>
1086
                                                        [% IF suggestion.manageddate %] - [% suggestion.manageddate | $KohaDates %][% END %]
1087
                                                    </td>
1088
                                                    <td>
1089
                                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.lastmodificationby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.last_modifier %]</a>
1090
                                                        [% IF suggestion.lastmodificationdate %] - [% suggestion.lastmodificationdate | $KohaDates %][% END %]
1091
                                                    </td>
1092
                                                    <td>
1093
                                                        [% Branches.GetName( suggestion.branchcode ) | html %]
1094
                                                    </td>
1095
                                                    <td>
1096
                                                        [% suggestion.fund.budget_name | html %]
1097
                                                    </td>
1098
                                                    <td>
1099
                                                        [% IF suggestion.STATUS == 'ASKED' %]
1100
                                                            <span>Pending</span>
1101
                                                        [% ELSIF suggestion.STATUS == 'ACCEPTED'  %]
1102
                                                            <span>Accepted</span>
1103
                                                        [% ELSIF suggestion.STATUS == 'ORDERED'   %]
1104
                                                            <span>Ordered</span>
1105
                                                        [% ELSIF suggestion.STATUS == 'REJECTED'  %]
1106
                                                            <span>Rejected</span>
1107
                                                        [% ELSIF suggestion.STATUS == 'CHECKED'   %]
1108
                                                            <span>Checked</span>
1109
                                                        [% ELSIF suggestion.STATUS == 'AVAILABLE' %]
1110
                                                            <span>Available</span>
1111
                                                        [% ELSIF AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) %]
1112
                                                            [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) | html %]
1113
                                                        [% ELSE %]
1114
                                                            <span>Status unknown</span>
1115
                                                        [% END %]
1116
                                                        [% IF suggestion.reason %]
1117
                                                            <br />([% suggestion.reason | html %])
1118
                                                        [% END %]
1119
                                                    </td>
1120
                                                </tr>
1121
                                            [% END %]
1122
                                        </tbody>
1123
                                    </table>
1124
                                </div>
1125
                            [% END %]
995
1126
996
[% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
1127
                            [% IF ( FRBRizeEditions ) %]
997
<div role="tabpanel" class="tab-pane" id="concerns">
1128
                                [% IF ( XISBNS ) %]
998
    <fieldset class="action" style="cursor:pointer;">
1129
                                    <div role="tabpanel" class="tab-pane" id="editions"
999
        <a id="hideResolved"><i class="fa fa-minus-square"></i> Hide resolved</a>
1130
                                        <h4>Editions</h4>
1000
        | <a id="showAll"><i class="fa fa-bars"></i> Show all</a>
1131
                                        <table>
1001
    </fieldset>
1132
                                            [% FOREACH XISBN IN XISBNS %]
1002
1133
                                                <tr>
1003
    <table id="table_concerns" width="100%">
1134
                                                    [% IF ( AmazonCoverImages ) %]
1004
        <thead>
1135
                                                        <td>
1005
            <tr>
1136
                                                            <a href="http://www.amazon.com/gp/reader/[% XISBN.normalized_isbn | uri %][% AmazonAssocTag | uri %]#reader-link"><img src="https://images-na.ssl-images-amazon.com/images/P/[% XISBN.normalized_isbn | html %].01._AA75_PU_PU-5_.jpg" /></a>
1006
                <th>Reported</th>
1137
                                                        </td>
1007
                <th>Details</th>
1138
                                                    [% END %]
1008
                <th>Status</th>
1139
                                                    [% IF ( !item_level_itypes || Koha.Preference('BiblioItemtypeInfo') ) %]
1009
                <th data-class-name="actions noExport">Actions</th>
1140
                                                        <td>
1010
            </tr>
1141
                                                            [% IF ( noItemTypeImages ) %]
1011
        </thead>
1142
                                                                <span class="itypetext">[% XISBN.description | html %]</span>
1012
    </table>
1143
                                                            [% ELSE %]
1013
</div>
1144
                                                                <img src="[% XISBN.imageurl | html %]" alt="[% XISBN.description | html %]" title="[% XISBN.description | html %]">
1014
[% END %]
1145
                                                            [% END %]
1146
                                                        </td>
1147
                                                    [% END %]
1148
                                                    <td>
1149
                                                        <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% XISBN.biblionumber | uri %]">[% XISBN.title | html %]</a>
1150
                                                        <span>by</span> [% XISBN.author | html %] &copy;[% XISBN.copyrightdate | html %]
1151
                                                        [% IF ( XISBN.publishercode ) %]
1152
                                                            [% XISBN.publishercode | html %] [% IF ( XISBN.place ) %]([% XISBN.place | html %])[% END %] [% IF ( XISBN.publicationyear ) %], [% XISBN.publicationyear | html %][% END %] [% IF ( XISBN.editionstatement ) %][% XISBN.editionstatement | html %][% END %] [% IF ( XISBN.editionresponsibility ) %][% XISBN.editionresponsibility | html %][% END %]
1153
                                                        [% END %]
1154
                                                        [% IF ( XISBN.pages ) %] [% END %][% XISBN.pages | html %] [% IF ( XISBN.illus ) %][% XISBN.illus | html %][% END %]
1155
                                                        [% IF ( XISBN.size ) %], [% END %][% XISBN.size | html %]
1156
                                                    </td>
1157
                                                </tr>
1158
                                            [% END %]
1159
                                        </table>
1160
                                    </div>
1161
                                [% END %]
1162
                            [% END %]
1015
1163
1016
[% IF ( LocalCoverImages ) %]
1164
                            [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
1017
    <div role="tabpanel" class="tab-pane" id="images">
1165
                                <div role="tabpanel" class="tab-pane" id="concerns">
1018
        [% IF localimages.count %]
1166
                                    <fieldset class="action" style="cursor:pointer;">
1019
            <p>Click on an image to view it in the image viewer</p>
1167
                                        <a id="hideResolved"><i class="fa fa-minus-square"></i> Hide resolved</a>
1020
            <ul class="thumbnails">
1168
                                        | <a id="showAll"><i class="fa fa-bars"></i> Show all</a>
1021
                [% FOREACH image IN localimages %]
1169
                                    </fieldset>
1022
                    [% IF image %]
1170
1023
                        <li id="imagenumber-[% image.imagenumber | html %]" class="thumbnail">
1171
                                    <table id="table_concerns" width="100%">
1024
                            <a href="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]">
1172
                                        <thead>
1025
                                <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" />
1173
                                            <tr>
1026
                            </a>
1174
                                                <th>Reported</th>
1027
                            [% IF CAN_user_tools_upload_local_cover_images %]
1175
                                                <th>Details</th>
1028
                                <a href="#" class="remove"><i class="fa fa-trash"></i> Delete image</a>
1176
                                                <th>Status</th>
1177
                                                <th data-class-name="actions noExport">Actions</th>
1178
                                            </tr>
1179
                                        </thead>
1180
                                    </table>
1181
                                </div>
1029
                            [% END %]
1182
                            [% END %]
1030
                        </li>
1031
                    [% END %]
1032
                [% END %]
1033
            </ul>
1034
        [% ELSE # - No image passed JavaScript takes care %]
1035
            <span class="noimagesuploaded">No images have been uploaded for this bibliographic record yet.</span>
1036
        [% END %]
1037
        [% IF ( CAN_user_tools_upload_local_cover_images ) %]
1038
            <p>Upload an image file: <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/upload-cover-image.pl?biblionumber=[% biblionumber | uri %]&amp;filetype=image"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a>
1039
            </p>
1040
        [% END %]
1041
    </div>
1042
[% END %]
1043
1183
1044
[% IF ( HTML5MediaEnabled ) %]
1184
                            [% IF ( LocalCoverImages ) %]
1045
<div role="tabpanel" class="tab-pane" id="html5media">
1185
                                <div role="tabpanel" class="tab-pane" id="images">
1046
          [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
1186
                                    [% IF localimages.count %]
1047
            <p>
1187
                                        <p>Click on an image to view it in the image viewer</p>
1048
                [% IF HTML5MediaSet.is_youtube %]
1188
                                        <ul class="thumbnails">
1049
                    <iframe id="player" width="640" height="360" src="[% HTML5MediaSet.srcblock | url %]"></iframe>
1189
                                            [% FOREACH image IN localimages %]
1050
                [% ELSE %]
1190
                                                [% IF image %]
1051
                  <[% HTML5MediaParent | html %] controls preload=none>
1191
                                                    <li id="imagenumber-[% image.imagenumber | html %]" class="thumbnail">
1052
                    <[% HTML5MediaSet.child | html %] src="[% HTML5MediaSet.srcblock | url %]"[% HTML5MediaSet.typeblock | html %] />
1192
                                                        <a href="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]">
1053
                    [[% HTML5MediaParent | html %] tag not supported by your browser.]
1193
                                                            <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" />
1054
                  </[% HTML5MediaParent | html %]>
1194
                                                        </a>
1055
                [% END %]
1195
                                                        [% IF CAN_user_tools_upload_local_cover_images %]
1056
            </p>
1196
                                                            <a href="#" class="remove"><i class="fa fa-trash"></i> Delete image</a>
1057
          [% END %]
1197
                                                        [% END %]
1058
</div>
1198
                                                    </li>
1059
[% END %]
1199
                                                [% END %]
1200
                                            [% END %]
1201
                                        </ul>
1202
                                    [% ELSE # - No image passed JavaScript takes care %]
1203
                                        <span class="noimagesuploaded">No images have been uploaded for this bibliographic record yet.</span>
1204
                                    [% END %]
1205
                                    [% IF ( CAN_user_tools_upload_local_cover_images ) %]
1206
                                        <p>Upload an image file: <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/upload-cover-image.pl?biblionumber=[% biblionumber | uri %]&amp;filetype=image"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a>
1207
                                        </p>
1208
                                    [% END %]
1209
                                </div>
1210
                            [% END %]
1060
1211
1212
                            [% IF ( HTML5MediaEnabled ) %]
1213
                                <div role="tabpanel" class="tab-pane" id="html5media">
1214
                                    [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
1215
                                        <p>
1216
                                            [% IF HTML5MediaSet.is_youtube %]
1217
                                                <iframe id="player" width="640" height="360" src="[% HTML5MediaSet.srcblock | url %]"></iframe>
1218
                                            [% ELSE %]
1219
                                                <[% HTML5MediaParent | html %] controls preload=none>
1220
                                                    <[% HTML5MediaSet.child | html %] src="[% HTML5MediaSet.srcblock | url %]"[% HTML5MediaSet.typeblock | html %] />
1221
                                                    [[% HTML5MediaParent | html %] tag not supported by your browser.]
1222
                                                </[% HTML5MediaParent | html %]>
1223
                                            [% END %]
1224
                                        </p>
1225
                                    [% END %]
1226
                                </div>
1227
                            [% END %]
1061
1228
1062
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
1229
                            [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
1063
    <div role="tabpanel" class="tab-pane" id="NovelistSelect" class="novelistSelect">
1230
                                <div role="tabpanel" class="tab-pane" id="NovelistSelect" class="novelistSelect">
1064
        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
1231
                                    <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
1065
    </div>
1232
                                </div>
1066
[% END %]
1233
                            [% END %]
1067
1234
1068
[% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
1235
                            [% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
1069
    <div role="tabpanel" class="tab-pane" id="[% plugins_intranet_catalog_biblio_tab.id | html %]">
1236
                                <div role="tabpanel" class="tab-pane" id="[% plugins_intranet_catalog_biblio_tab.id | html %]">
1070
        [% plugins_intranet_catalog_biblio_tab.content | $raw %]
1237
                                    [% plugins_intranet_catalog_biblio_tab.content | $raw %]
1071
    </div>
1238
                                </div>
1072
[% END %]
1239
                            [% END %]
1073
1240
1074
</div><!-- /tab-content -->
1241
                        </div><!-- /tab-content -->
1075
</div><!-- /bibliodetails -->
1242
                    </div><!-- /bibliodetails -->
1076
1243
1077
<div id="export" style="margin-top: 1em;">
1244
                    <div id="export" style="margin-top: 1em;">
1078
<form method="get" action="/cgi-bin/koha/catalogue/export.pl">
1245
                        <form method="get" action="/cgi-bin/koha/catalogue/export.pl">
1079
<table>  <tr>
1246
                            <table>
1080
      <th>Save record</th>   </tr>
1247
                                <tr>
1081
    <tr><td> Select download format:    <select name="format">
1248
                                    <th>Save record</th>
1082
        <option value="mods">MODS (XML)</option>
1249
                                </tr>
1083
        <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option>
1250
                                <tr>
1084
        <option value="marcxml">MARCXML</option>
1251
                                    <td>
1085
        <option value="marc8">MARC (non-Unicode/MARC-8)</option>
1252
                                        Select download format:
1086
        <option value="utf8">MARC (Unicode/UTF-8)</option>    </select>
1253
                                        <select name="format">
1087
        <input type="submit" name="save" class="btn btn-primary" value="Download record" /></td>
1254
                                            <option value="mods">MODS (XML)</option>
1088
  </tr>
1255
                                            <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option>
1089
  <tr><td>
1256
                                            <option value="marcxml">MARCXML</option>
1090
    <input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber | html %]" />
1257
                                            <option value="marc8">MARC (non-Unicode/MARC-8)</option>
1091
  </td></tr>
1258
                                            <option value="utf8">MARC (Unicode/UTF-8)</option>
1092
</table>
1259
                                        </select>
1093
</form>
1260
                                        <input type="submit" name="save" class="btn btn-primary" value="Download record" />
1094
</div>
1261
                                    </td>
1095
1262
                                </tr>
1096
<div id="marcPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true">
1263
                                <tr>
1097
    <div class="modal-dialog modal-lg">
1264
                                    <td>
1098
    <div class="modal-content">
1265
                                        <input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber | html %]" />
1099
    <div class="modal-header">
1266
                                    </td>
1100
        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1267
                                </tr>
1101
        <h3 id="marcPreviewLabel">MARC preview</h3>
1268
                            </table>
1102
    </div>
1269
                        </form>
1103
    <div class="modal-body">
1270
                    </div>
1104
        <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
1105
    </div>
1106
    <div class="modal-footer">
1107
        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1108
    </div>
1109
    </div>
1110
    </div>
1111
</div>
1112
1113
<div id="elasticPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="elasticPreviewLabel" aria-hidden="true">
1114
    <div class="modal-dialog modal-lg">
1115
    <div class="modal-content">
1116
    <div class="modal-header">
1117
        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1118
        <h3 id="elasticPreviewLabel">Elasticsearch record</h3>
1119
    </div>
1120
    <div class="modal-body">
1121
        <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
1122
    </div>
1123
    <div class="modal-footer">
1124
        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1125
    </div>
1126
    </div>
1127
    </div>
1128
</div>
1129
1130
            </main>
1131
        </div> <!-- /.col-sm-10.col-sm-push-2 -->
1132
1133
        <div class="col-sm-2 col-sm-pull-10">
1134
            <aside>
1135
                [% INCLUDE 'biblio-view-menu.inc' %]
1136
            </aside>
1137
        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
1138
     </div> <!-- /.row -->
1139
1271
1140
[% END %]
1272
                    <div id="marcPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true">
1273
                        <div class="modal-dialog modal-lg">
1274
                            <div class="modal-content">
1275
                                <div class="modal-header">
1276
                                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1277
                                    <h3 id="marcPreviewLabel">MARC preview</h3>
1278
                                </div>
1279
                                <div class="modal-body">
1280
                                    <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
1281
                                </div>
1282
                                <div class="modal-footer">
1283
                                    <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1284
                                </div>
1285
                            </div>
1286
                        </div>
1287
                    </div>
1141
1288
1142
<div class="modal fade" id="modal-item-group-create" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-create-label">
1289
                    <div id="elasticPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="elasticPreviewLabel" aria-hidden="true">
1143
    <div class="modal-dialog">
1290
                        <div class="modal-dialog modal-lg">
1144
        <div class="modal-content">
1291
                            <div class="modal-content">
1145
            <div class="modal-header">
1292
                                <div class="modal-header">
1146
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1293
                                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1147
                <h3 id="modal-item-group-create-label"><i class="fa fa-plus"></i> Create a new item group</h3>
1294
                                    <h3 id="elasticPreviewLabel">Elasticsearch record</h3>
1148
            </div>
1295
                                </div>
1149
            <form id="modal-item-group-create-form" class="validated">
1296
                                <div class="modal-body">
1150
                <div class="modal-body">
1297
                                    <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
1151
                    <fieldset>
1298
                                </div>
1152
                        <p>
1299
                                <div class="modal-footer">
1153
                            <label for="item_group_description" class="required">Name: </label>
1300
                                    <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1154
                            <input name="description" id="modal-item-group-create-form-description" type="text" size="30" required="required" class="required" />
1301
                                </div>
1155
                            <span class="required">Required</span>
1302
                            </div>
1156
                        </p>
1303
                        </div>
1157
                        <p>
1304
                    </div>
1158
                            <label for="item_group_display_order" class="required">Display order: </label>
1305
                </main>
1159
                            <input name="display_order" id="modal-item-group-create-form-display_order" value="0" size="5" required="required" class="required" />
1306
            </div> <!-- /.col-sm-10.col-sm-push-2 -->
1160
                            <span class="required">Required</span>
1307
1161
                            <br/>
1308
            <div class="col-sm-2 col-sm-pull-10">
1162
                            <span class="hint">Numbers only, item groups will be displayed in counting order</span>
1309
                <aside>
1163
                        </p>
1310
                    [% INCLUDE 'biblio-view-menu.inc' %]
1164
                    </fieldset>
1311
                </aside>
1165
                </div>
1312
            </div> <!-- /.col-sm-2.col-sm-pull-10 -->
1166
                <div class="modal-footer">
1313
        </div> <!-- /.row -->
1167
                    <button id="modal-item-group-create-submit" class="btn btn-default"><i class="fa fa-plus"></i> Submit</button>
1314
1168
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1315
        <div class="modal fade" id="modal-item-group-create" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-create-label">
1316
            <div class="modal-dialog">
1317
                <div class="modal-content">
1318
                    <div class="modal-header">
1319
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1320
                        <h3 id="modal-item-group-create-label"><i class="fa fa-plus"></i> Create a new item group</h3>
1321
                    </div>
1322
                    <form id="modal-item-group-create-form" class="validated">
1323
                        <div class="modal-body">
1324
                            <fieldset>
1325
                                <p>
1326
                                    <label for="item_group_description" class="required">Name: </label>
1327
                                    <input name="description" id="modal-item-group-create-form-description" type="text" size="30" required="required" class="required" />
1328
                                    <span class="required">Required</span>
1329
                                </p>
1330
                                <p>
1331
                                    <label for="item_group_display_order" class="required">Display order: </label>
1332
                                    <input name="display_order" id="modal-item-group-create-form-display_order" value="0" size="5" required="required" class="required" />
1333
                                    <span class="required">Required</span>
1334
                                    <br/>
1335
                                    <span class="hint">Numbers only, item groups will be displayed in counting order</span>
1336
                                </p>
1337
                            </fieldset>
1338
                        </div>
1339
                        <div class="modal-footer">
1340
                            <button id="modal-item-group-create-submit" class="btn btn-default"><i class="fa fa-plus"></i> Submit</button>
1341
                            <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1342
                        </div>
1343
                    </form>
1169
                </div>
1344
                </div>
1170
            </form>
1171
        </div>
1172
    </div>
1173
</div>
1174
1175
<div class="modal fade" id="modal-item-group-edit" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-edit-label">
1176
    <div class="modal-dialog">
1177
        <div class="modal-content">
1178
            <div class="modal-header">
1179
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1180
                <h3 id="modal-item-group-edit-label"><i class='fa fa-edit'></i> Edit item group</h3>
1181
            </div>
1345
            </div>
1182
            <form id="modal-item-group-edit-form" class="validated">
1183
                <div class="modal-body">
1184
                    <fieldset>
1185
                        <p>
1186
                            <label for="item_group_description" class="required">Name: </label>
1187
                            <input name="description" id="modal-item-group-edit-form-description" type="text" size="30" required="required" class="required" />
1188
                            <span class="required">Required</span>
1189
                        </p>
1190
                        <p>
1191
                            <label for="item_group_display_order" class="required">Sort order: </label>
1192
                            <input name="display_order" id="modal-item-group-edit-form-display_order" size="5" />
1193
                            <span class="hint">Numbers only, item groups will be displayed in counting order</span>
1194
                        </p>
1195
                    </fieldset>
1196
                </div>
1197
                <div class="modal-footer">
1198
                    <button id="modal-item-group-edit-submit" class="btn btn-default"><i class='fa fa-edit'></i> Submit</button>
1199
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1200
                </div>
1201
            </form>
1202
        </div>
1346
        </div>
1203
    </div>
1347
1204
</div>
1348
        <div class="modal fade" id="modal-item-group-edit" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-edit-label">
1205
1349
            <div class="modal-dialog">
1206
<div class="modal fade" id="modal-item-group-delete" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-delete-label">
1350
                <div class="modal-content">
1207
    <div class="modal-dialog">
1351
                    <div class="modal-header">
1208
        <div class="modal-content">
1352
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1209
            <div class="modal-header">
1353
                        <h3 id="modal-item-group-edit-label"><i class='fa fa-edit'></i> Edit item group</h3>
1210
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1354
                    </div>
1211
                <h3 id="modal-item-group-delete-label"><i class='fa fa-trash'></i> Delete item group</h3>
1355
                    <form id="modal-item-group-edit-form" class="validated">
1212
            </div>
1356
                        <div class="modal-body">
1213
            <div class="modal-body">
1357
                            <fieldset>
1214
                Are you sure you want to delete this item group?
1358
                                <p>
1215
            </div>
1359
                                    <label for="item_group_description" class="required">Name: </label>
1216
            <div class="modal-footer">
1360
                                    <input name="description" id="modal-item-group-edit-form-description" type="text" size="30" required="required" class="required" />
1217
                <button id="modal-item-group-delete-submit" class="btn btn-danger"><i class='fa fa-trash'></i> Delete</button>
1361
                                    <span class="required">Required</span>
1218
                <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1362
                                </p>
1219
            </div>
1363
                                <p>
1220
        </div>
1364
                                    <label for="item_group_display_order" class="required">Sort order: </label>
1221
    </div>
1365
                                    <input name="display_order" id="modal-item-group-edit-form-display_order" size="5" />
1222
</div>
1366
                                    <span class="hint">Numbers only, item groups will be displayed in counting order</span>
1223
1367
                                </p>
1224
<div class="modal fade" id="modal-item-group-set" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-set-label">
1368
                            </fieldset>
1225
    <div class="modal-dialog">
1369
                        </div>
1226
        <div class="modal-content">
1370
                        <div class="modal-footer">
1227
            <div class="modal-header">
1371
                            <button id="modal-item-group-edit-submit" class="btn btn-default"><i class='fa fa-edit'></i> Submit</button>
1228
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1372
                            <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1229
                <h3 id="modal-item-group-set-label"><i class='fa fa-book'></i> Set item group for items</h3>
1373
                        </div>
1230
            </div>
1374
                    </form>
1231
            <form id="modal-item-group-set-form" class="validated">
1232
                <div class="modal-body">
1233
                    <fieldset>
1234
                        <p>
1235
                            <label for="item_group" class="required">Item group: </label>
1236
                            <select name="item_group" id="item-group-add-form-select">
1237
                                [% FOREACH ig IN biblio.item_groups %]
1238
                                    <option value="[% ig.id | html %]">[% ig.description | html %]</option>
1239
                                [% END %]
1240
                            </select>
1241
                            <span class="required">Required</span>
1242
                        </p>
1243
                    </fieldset>
1244
                </div>
1245
                <div class="modal-footer">
1246
                    <button id="modal-item-group-set-submit" class="btn btn-default"><i class='fa fa-book'></i> Set item group</button>
1247
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1248
                </div>
1375
                </div>
1249
            </form>
1250
        </div>
1251
    </div>
1252
</div>
1253
1254
<div class="modal fade" id="modal-item-group-unset" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-unset-label">
1255
    <div class="modal-dialog">
1256
        <div class="modal-content">
1257
            <div class="modal-header">
1258
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1259
                <h3 id="modal-item-group-unset-label"><i class='fa fa-unlink'></i> Remove item from item group</h3>
1260
            </div>
1261
            <div class="modal-body">
1262
                Are you sure you want to remove these item(s) from their item group(s)?
1263
            </div>
1264
            <div class="modal-footer">
1265
                <button id="modal-item-group-unset-submit" class="btn btn-danger"><i class='fa fa-unlink'></i> Remove</button>
1266
                <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1267
            </div>
1376
            </div>
1268
        </div>
1377
        </div>
1269
    </div>
1270
</div>
1271
1378
1272
    [% IF bundlesEnabled %]
1379
        <div class="modal fade" id="modal-item-group-delete" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-delete-label">
1273
    <div class="modal" id="addToBundleModal" tabindex="-1" role="dialog" aria-labelledby="addToBundleLabel">
1380
            <div class="modal-dialog">
1274
        <form id="addToBundleForm" action="">
1275
            <div class="modal-dialog" role="document">
1276
                <div class="modal-content">
1381
                <div class="modal-content">
1277
                    <div class="modal-header">
1382
                    <div class="modal-header">
1278
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1383
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1279
                        <h3 id="addToBundleLabel">Add to bundle</h3>
1384
                        <h3 id="modal-item-group-delete-label"><i class='fa fa-trash'></i> Delete item group</h3>
1280
                    </div>
1385
                    </div>
1281
                    <div class="modal-body">
1386
                    <div class="modal-body">
1282
                        <div id="addResult"></div>
1387
                        Are you sure you want to delete this item group?
1283
                        <fieldset class="rows">
1284
                            <ol>
1285
                                <li>
1286
                                    <label class="required" for="external_id">Item barcode: </label>
1287
                                    <input type="text" id="external_id" name="external_id" required="required">
1288
                                    <span class="required">Required</span>
1289
                                </li>
1290
                            </ol>
1291
                        </fieldset>
1292
                    </div>
1388
                    </div>
1293
                    <div class="modal-footer">
1389
                    <div class="modal-footer">
1294
                        <button type="submit" class="btn btn-default">Submit</button>
1390
                        <button id="modal-item-group-delete-submit" class="btn btn-danger"><i class='fa fa-trash'></i> Delete</button>
1295
                        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1391
                        <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1296
                    </div>
1392
                    </div>
1297
                </div>
1393
                </div>
1298
            </div>
1394
            </div>
1299
        </form>
1395
        </div>
1300
    </div>
1301
1396
1302
    <div class="modal" id="removeFromBundleModal" tabindex="-1" role="dialog" aria-labelledby="removeFromBundleLabel">
1397
        <div class="modal fade" id="modal-item-group-set" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-set-label">
1303
        <form id="removeFromBundleForm" action="">
1398
            <div class="modal-dialog">
1304
            <div class="modal-dialog" role="document">
1305
                <div class="modal-content">
1399
                <div class="modal-content">
1306
                    <div class="modal-header">
1400
                    <div class="modal-header">
1307
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1401
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1308
                        <h3 id="removeFromBundleLabel">Remove from bundle</h3>
1402
                        <h3 id="modal-item-group-set-label"><i class='fa fa-book'></i> Set item group for items</h3>
1309
                    </div>
1403
                    </div>
1310
                    <div class="modal-body">
1404
                    <form id="modal-item-group-set-form" class="validated">
1311
                        <div id="removeResult"></div>
1405
                        <div class="modal-body">
1312
                        <fieldset class="rows">
1406
                            <fieldset>
1313
                            <ol>
1407
                                <p>
1314
                                <li>
1408
                                    <label for="item_group" class="required">Item group: </label>
1315
                                    <label class="required" for="external_id">Item barcode: </label>
1409
                                    <select name="item_group" id="item-group-add-form-select">
1316
                                    <input type="text" id="rm_external_id" name="external_id" required="required">
1410
                                        [% FOREACH ig IN biblio.item_groups %]
1411
                                            <option value="[% ig.id | html %]">[% ig.description | html %]</option>
1412
                                        [% END %]
1413
                                    </select>
1317
                                    <span class="required">Required</span>
1414
                                    <span class="required">Required</span>
1318
                                </li>
1415
                                </p>
1319
                            </ol>
1416
                            </fieldset>
1320
                        </fieldset>
1417
                        </div>
1418
                        <div class="modal-footer">
1419
                            <button id="modal-item-group-set-submit" class="btn btn-default"><i class='fa fa-book'></i> Set item group</button>
1420
                            <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1421
                        </div>
1422
                    </form>
1423
                </div>
1424
            </div>
1425
        </div>
1426
1427
        <div class="modal fade" id="modal-item-group-unset" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-unset-label">
1428
            <div class="modal-dialog">
1429
                <div class="modal-content">
1430
                    <div class="modal-header">
1431
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1432
                        <h3 id="modal-item-group-unset-label"><i class='fa fa-unlink'></i> Remove item from item group</h3>
1433
                    </div>
1434
                    <div class="modal-body">
1435
                        Are you sure you want to remove these item(s) from their item group(s)?
1321
                    </div>
1436
                    </div>
1322
                    <div class="modal-footer">
1437
                    <div class="modal-footer">
1323
                        <button type="submit" class="btn btn-default">Submit</button>
1438
                        <button id="modal-item-group-unset-submit" class="btn btn-danger"><i class='fa fa-unlink'></i> Remove</button>
1324
                        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1439
                        <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1325
                    </div>
1440
                    </div>
1326
                </div>
1441
                </div>
1327
            </div>
1442
            </div>
1328
        </form>
1443
        </div>
1329
    </div>
1330
    [% END %]
1331
1444
1332
    [% IF ( Koha.Preference('CatalogConcerns') ) %]
1445
        [% IF bundlesEnabled %]
1333
    [% INCLUDE 'modals/add_catalog_concern.inc' %]
1446
            <div class="modal" id="addToBundleModal" tabindex="-1" role="dialog" aria-labelledby="addToBundleLabel">
1334
    [% END %]
1447
                <form id="addToBundleForm" action="">
1448
                    <div class="modal-dialog" role="document">
1449
                        <div class="modal-content">
1450
                            <div class="modal-header">
1451
                                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1452
                                <h3 id="addToBundleLabel">Add to bundle</h3>
1453
                            </div>
1454
                            <div class="modal-body">
1455
                                <div id="addResult"></div>
1456
                                <fieldset class="rows">
1457
                                    <ol>
1458
                                        <li>
1459
                                            <label class="required" for="external_id">Item barcode: </label>
1460
                                            <input type="text" id="external_id" name="external_id" required="required">
1461
                                            <span class="required">Required</span>
1462
                                        </li>
1463
                                    </ol>
1464
                                </fieldset>
1465
                            </div>
1466
                            <div class="modal-footer">
1467
                                <button type="submit" class="btn btn-default">Submit</button>
1468
                                <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1469
                            </div>
1470
                        </div>
1471
                    </div>
1472
                </form>
1473
            </div>
1335
1474
1336
    [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
1475
            <div class="modal" id="removeFromBundleModal" tabindex="-1" role="dialog" aria-labelledby="removeFromBundleLabel">
1337
    [% INCLUDE 'modals/display_ticket.inc' %]
1476
                <form id="removeFromBundleForm" action="">
1338
    [% END %]
1477
                    <div class="modal-dialog" role="document">
1478
                        <div class="modal-content">
1479
                            <div class="modal-header">
1480
                                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1481
                                <h3 id="removeFromBundleLabel">Remove from bundle</h3>
1482
                            </div>
1483
                            <div class="modal-body">
1484
                                <div id="removeResult"></div>
1485
                                <fieldset class="rows">
1486
                                    <ol>
1487
                                        <li>
1488
                                            <label class="required" for="external_id">Item barcode: </label>
1489
                                            <input type="text" id="rm_external_id" name="external_id" required="required">
1490
                                            <span class="required">Required</span>
1491
                                        </li>
1492
                                    </ol>
1493
                                </fieldset>
1494
                            </div>
1495
                            <div class="modal-footer">
1496
                                <button type="submit" class="btn btn-default">Submit</button>
1497
                                <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1498
                            </div>
1499
                        </div>
1500
                    </div>
1501
                </form>
1502
            </div>
1503
        [% END %]
1504
1505
        [% IF ( Koha.Preference('CatalogConcerns') ) %]
1506
            [% INCLUDE 'modals/add_catalog_concern.inc' %]
1507
        [% END %]
1508
1509
        [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
1510
            [% INCLUDE 'modals/display_ticket.inc' %]
1511
        [% END %]
1512
1513
[% END %]
1339
1514
1340
[% MACRO jsinclude BLOCK %]
1515
[% MACRO jsinclude BLOCK %]
1341
    [% INCLUDE 'catalog-strings.inc' %]
1516
    [% INCLUDE 'catalog-strings.inc' %]
Lines 1814-2122 Link Here
1814
        browser.show();
1989
        browser.show();
1815
1990
1816
        [% IF bundlesEnabled %]
1991
        [% IF bundlesEnabled %]
1817
        var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %];
1992
            var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %];
1818
        var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %];
1993
            var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %];
1819
        [% END %]
1994
        [% END %]
1820
        $(document).ready(function() {
1995
        $(document).ready(function() {
1821
1996
1822
            [% IF bundlesEnabled %] // Bundle handling
1997
            [% IF bundlesEnabled %] // Bundle handling
1823
            function createChild ( row, itemnumber, duedate ) {
1998
                function createChild ( row, itemnumber, duedate ) {
1824
1999
1825
                // Toolbar
2000
                    // Toolbar
1826
                var bundle_toolbar = $('<div id="toolbar" class="btn-toolbar"></div>');
2001
                    var bundle_toolbar = $('<div id="toolbar" class="btn-toolbar"></div>');
1827
                bundle_toolbar.append('<a class="btn btn-default" data-toggle="modal" data-target="#addToBundleModal" data-item="' + itemnumber + '"><i class="fa fa-plus"></i> ' + _("Add to bundle") + '</a>');
2002
                    bundle_toolbar.append('<a class="btn btn-default" data-toggle="modal" data-target="#addToBundleModal" data-item="' + itemnumber + '"><i class="fa fa-plus"></i> ' + _("Add to bundle") + '</a>');
1828
                bundle_toolbar.append('<a class="btn btn-default" data-toggle="modal" data-target="#removeFromBundleModal" data-item="' + itemnumber + '"><i class="fa fa-minus"></i> ' + _("Remove from bundle") + '</a>');
2003
                    bundle_toolbar.append('<a class="btn btn-default" data-toggle="modal" data-target="#removeFromBundleModal" data-item="' + itemnumber + '"><i class="fa fa-minus"></i> ' + _("Remove from bundle") + '</a>');
1829
2004
1830
                // Disable management if there's a duedate
2005
                    // Disable management if there's a duedate
1831
                if(duedate) {
2006
                    if(duedate) {
1832
                    bundle_toolbar.children('.btn').addClass("disabled");
2007
                        bundle_toolbar.children('.btn').addClass("disabled");
1833
                }
2008
                    }
1834
2009
1835
                // This is the table we'll convert into a DataTable
2010
                    // This is the table we'll convert into a DataTable
1836
                var bundles_table = $('<table class="display tbundle" data-itemnumber="'+itemnumber+'" id="bundle_table_'+itemnumber+'" width="100%"/>');
2011
                    var bundles_table = $('<table class="display tbundle" data-itemnumber="'+itemnumber+'" id="bundle_table_'+itemnumber+'" width="100%"/>');
1837
2012
1838
                // Display it the child row
2013
                    // Display it the child row
1839
                row.child( bundle_toolbar.add(bundles_table), 'bundle' ).show();
2014
                    row.child( bundle_toolbar.add(bundles_table), 'bundle' ).show();
1840
2015
1841
                // Initialise as a DataTable
2016
                    // Initialise as a DataTable
1842
                var bundle_table_url = "/api/v1/items/" + itemnumber + "/bundled_items?";
2017
                    var bundle_table_url = "/api/v1/items/" + itemnumber + "/bundled_items?";
1843
                var bundle_table = bundles_table.kohaTable({
2018
                    var bundle_table = bundles_table.kohaTable({
1844
                    "ajax": {
2019
                        "ajax": {
1845
                        "url": bundle_table_url
2020
                            "url": bundle_table_url
1846
                    },
1847
                    "embed": [
1848
                        "biblio",
1849
                        "return_claim.patron"
1850
                    ],
1851
                    "order": [[ 1, "asc" ]],
1852
                    "columnDefs": [ {
1853
                        "targets": [0,1,2,3],
1854
                        "render": function (data, type, row, meta) {
1855
                            if ( data && type == 'display' ) {
1856
                                return data.escapeHtml();
1857
                            }
1858
                            return data;
1859
                        }
1860
                    } ],
1861
                    "columns": [
1862
                        {
1863
                            "data": "biblio.title:biblio.subtitle:biblio.medium",
1864
                            "title": _("Title"),
1865
                            "searchable": true,
1866
                            "orderable": true,
1867
                            "render": function(data, type, row, meta) {
1868
                                return $biblio_to_html(row.biblio, { link: 1 });
1869
                            }
1870
                        },
1871
                        {
1872
                            "data": "biblio.author",
1873
                            "title": _("Author"),
1874
                            "searchable": true,
1875
                            "orderable": true,
1876
                        },
2021
                        },
1877
                        {
2022
                        "embed": [
1878
                            "data": "callnumber",
2023
                            "biblio",
1879
                            "title": _("Callnumber"),
2024
                            "return_claim.patron"
1880
                            "searchable": true,
2025
                        ],
1881
                            "orderable": true,
2026
                        "order": [[ 1, "asc" ]],
1882
                        },
2027
                        "columnDefs": [ {
1883
                        {
2028
                            "targets": [0,1,2,3],
1884
                            "data": "external_id",
2029
                            "render": function (data, type, row, meta) {
1885
                            "title": _("Barcode"),
2030
                                if ( data && type == 'display' ) {
1886
                            "searchable": true,
2031
                                    return data.escapeHtml();
1887
                            "orderable": true,
1888
                        },
1889
                        {
1890
                            "data": "lost_status:last_seen_date:return_claim.patron",
1891
                            "title": _("Status"),
1892
                            "searchable": false,
1893
                            "orderable": true,
1894
                            "render": function(data, type, row, meta) {
1895
                                if ( row.lost_status == bundle_lost_value ) {
1896
                                    let out = '<span class="lost">' + _("Last seen") + ': ' + $date(row.last_seen_date) + '</span>';
1897
                                    if ( row.return_claim ) {
1898
                                        out = out + '<span class="claims_return">' + _("Claims returned by") + ': ' + $patron_to_html( row.return_claim.patron, { display_cardnumber: false, url: true } ) + '</span>';
1899
                                    }
1900
                                    return out;
1901
                                }
1902
                                else if ( row.lost_status !== 0 ) {
1903
                                    return '<span class="lost">' + _("Lost") + ': ' + row.lost_status + '</span>';
1904
                                }
2032
                                }
1905
                                return '<span class="available">' + _("Present") + '</span>';
2033
                                return data;
1906
                            }
2034
                            }
1907
                        },
2035
                        } ],
1908
                        {
2036
                        "columns": [
1909
                            "data": function( row, type, val, meta ) {
2037
                            {
1910
                                var result;
2038
                                "data": "biblio.title:biblio.subtitle:biblio.medium",
1911
                                if (duedate) {
2039
                                "title": _("Title"),
1912
                                    result = '<button class="btn btn-default btn-xs remove disabled" role="button" data-itemnumber="'+row.item_id+'"><i class="fa fa-minus" aria-hidden="true"></i> '+_("Remove")+'</button>\n';
2040
                                "searchable": true,
1913
                                } else {
2041
                                "orderable": true,
1914
                                    result = '<button class="btn btn-default btn-xs remove" role="button" data-itemnumber="'+row.item_id+'"><i class="fa fa-minus" aria-hidden="true"></i> '+_("Remove")+'</button>\n';
2042
                                "render": function(data, type, row, meta) {
2043
                                    return $biblio_to_html(row.biblio, { link: 1 });
1915
                                }
2044
                                }
1916
                                return result;
1917
                            },
2045
                            },
1918
                            "title": _("Actions"),
2046
                            {
1919
                            "searchable": false,
2047
                                "data": "biblio.author",
1920
                            "orderable": false,
2048
                                "title": _("Author"),
1921
                            "class": "noExport"
2049
                                "searchable": true,
1922
                        }
2050
                                "orderable": true,
1923
                    ]
2051
                            },
1924
                }, bundle_settings, 1);
2052
                            {
1925
                $(".tbundle").on("click", ".remove:not(.disabled)", function(){
2053
                                "data": "callnumber",
1926
                    var bundle_table = $(this).closest('table');
2054
                                "title": _("Callnumber"),
1927
                    var host_itemnumber = bundle_table.data('itemnumber');
2055
                                "searchable": true,
1928
                    var component_itemnumber = $(this).data('itemnumber');
2056
                                "orderable": true,
1929
                    var unlink_item_url = "/api/v1/items/" + host_itemnumber + "/bundled_items/" + component_itemnumber;
2057
                            },
1930
                    $.ajax({
2058
                            {
1931
                        type: "DELETE",
2059
                                "data": "external_id",
1932
                        url: unlink_item_url,
2060
                                "title": _("Barcode"),
1933
                        success: function(){
2061
                                "searchable": true,
1934
                            bundle_table.DataTable({ 'retrieve': true }).draw(false);
2062
                                "orderable": true,
1935
                        }
2063
                            },
2064
                            {
2065
                                "data": "lost_status:last_seen_date:return_claim.patron",
2066
                                "title": _("Status"),
2067
                                "searchable": false,
2068
                                "orderable": true,
2069
                                "render": function(data, type, row, meta) {
2070
                                    if ( row.lost_status == bundle_lost_value ) {
2071
                                        let out = '<span class="lost">' + _("Last seen") + ': ' + $date(row.last_seen_date) + '</span>';
2072
                                        if ( row.return_claim ) {
2073
                                            out = out + '<span class="claims_return">' + _("Claims returned by") + ': ' + $patron_to_html( row.return_claim.patron, { display_cardnumber: false, url: true } ) + '</span>';
2074
                                        }
2075
                                        return out;
2076
                                    }
2077
                                    else if ( row.lost_status !== 0 ) {
2078
                                        return '<span class="lost">' + _("Lost") + ': ' + row.lost_status + '</span>';
2079
                                    }
2080
                                    return '<span class="available">' + _("Present") + '</span>';
2081
                                }
2082
                            },
2083
                            {
2084
                                "data": function( row, type, val, meta ) {
2085
                                    var result;
2086
                                    if (duedate) {
2087
                                        result = '<button class="btn btn-default btn-xs remove disabled" role="button" data-itemnumber="'+row.item_id+'"><i class="fa fa-minus" aria-hidden="true"></i> '+_("Remove")+'</button>\n';
2088
                                    } else {
2089
                                        result = '<button class="btn btn-default btn-xs remove" role="button" data-itemnumber="'+row.item_id+'"><i class="fa fa-minus" aria-hidden="true"></i> '+_("Remove")+'</button>\n';
2090
                                    }
2091
                                    return result;
2092
                                },
2093
                                "title": _("Actions"),
2094
                                "searchable": false,
2095
                                "orderable": false,
2096
                                "class": "noExport"
2097
                            }
2098
                        ]
2099
                    }, bundle_settings, 1);
2100
                    $(".tbundle").on("click", ".remove:not(.disabled)", function(){
2101
                        var bundle_table = $(this).closest('table');
2102
                        var host_itemnumber = bundle_table.data('itemnumber');
2103
                        var component_itemnumber = $(this).data('itemnumber');
2104
                        var unlink_item_url = "/api/v1/items/" + host_itemnumber + "/bundled_items/" + component_itemnumber;
2105
                        $.ajax({
2106
                            type: "DELETE",
2107
                            url: unlink_item_url,
2108
                            success: function(){
2109
                                bundle_table.DataTable({ 'retrieve': true }).draw(false);
2110
                            }
2111
                        });
1936
                    });
2112
                    });
1937
                });
1938
2113
1939
                return;
2114
                    return;
1940
            }
2115
                }
1941
2116
1942
            var bundle_changed;
2117
                var bundle_changed;
1943
            var bundle_form_active;
2118
                var bundle_form_active;
1944
            $("#addToBundleModal").on("shown.bs.modal", function(e){
2119
                $("#addToBundleModal").on("shown.bs.modal", function(e){
1945
                var button = $(e.relatedTarget);
2120
                    var button = $(e.relatedTarget);
1946
                var item_id = button.data('item');
2121
                    var item_id = button.data('item');
1947
                $("#addResult").replaceWith('<div id="addResult"></div>');
2122
                    $("#addResult").replaceWith('<div id="addResult"></div>');
1948
                $("#addToBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items');
2123
                    $("#addToBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items');
1949
                $("#external_id").focus();
2124
                    $("#external_id").focus();
1950
                bundle_changed = 0;
2125
                    bundle_changed = 0;
1951
                bundle_form_active = item_id;
2126
                    bundle_form_active = item_id;
1952
            });
2127
                });
1953
2128
1954
            function addToBundle (url, data) {
2129
                function addToBundle (url, data) {
1955
                  /* Send the data using post with external_id */
2130
                    /* Send the data using post with external_id */
1956
                  var posting = $.post({
2131
                    var posting = $.post({
1957
                      url: url,
2132
                        url: url,
1958
                      data: JSON.stringify(data),
2133
                        data: JSON.stringify(data),
1959
                      contentType: "application/json; charset=utf-8",
2134
                        contentType: "application/json; charset=utf-8",
1960
                      dataType: "json"
2135
                        dataType: "json"
1961
                  });
2136
                    });
1962
1963
                  const barcode = data.external_id;
1964
1965
                  /* Report the results */
1966
                  posting.done(function(data) {
1967
                      $('#addResult').replaceWith('<div id="addResult" class="alert alert-success">'+_("Success: Added '%s'").format(barcode)+'</div>');
1968
                      $('#external_id').val('').focus();
1969
                      bundle_changed = 1;
1970
                  });
1971
                  posting.fail(function(data) {
1972
                      if ( data.status === 409 ) {
1973
                          var response = data.responseJSON;
1974
                          if ( response.error_code === 'already_bundled' ) {
1975
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
1976
                          } else if (response.error_code === 'checked_out') {
1977
                              const button = $('<button type="button">')
1978
                                .addClass('btn btn-xs')
1979
                                .text(__("Check in and add to bundle"))
1980
                                .on('click', function () {
1981
                                    addToBundle(url, { external_id: barcode, force_checkin: true });
1982
                                });
1983
                              $('#addResult')
1984
                                .empty()
1985
                                .attr('class', 'alert alert-warning')
1986
                                .append(__x('Warning: Item {barcode} is checked out', { barcode }))
1987
                                .append(' ', button);
1988
                          } else if (response.error_code === 'failed_checkin') {
1989
                              $('#addResult')
1990
                                .empty()
1991
                                .attr('class', 'alert alert-danger')
1992
                                .append(__x('Failure: Item {barcode} cannot be checked in', { barcode }))
1993
                          } else if (response.error_code === 'reserved') {
1994
                              const button = $('<button type="button">')
1995
                                .addClass('btn btn-xs')
1996
                                .text(__("Ignore holds and add to bundle"))
1997
                                .on('click', function () {
1998
                                    addToBundle(url, { external_id: barcode, ignore_holds: true });
1999
                                });
2000
                              $('#addResult')
2001
                                .empty()
2002
                                .attr('class', 'alert alert-warning')
2003
                                .append(__x('Warning: Item {barcode} is on hold', { barcode }))
2004
                                .append(' ', button);
2005
                          } else {
2006
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
2007
                          }
2008
                      } else if ( data.status === 404 ) {
2009
                          $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
2010
                      } else if ( data.status === 400 ) {
2011
                          var response = data.responseJSON;
2012
                          if ( response.error_code === "failed_nesting" ) {
2013
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' is a bundle and bundles cannot be nested").format(barcode)+'</div>');
2014
                          } else {
2015
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
2016
                          }
2017
                      } else {
2018
                          $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
2019
                      }
2020
                      $('#external_id').val('').focus();
2021
                  });
2022
            }
2023
2137
2024
            $("#addToBundleForm").submit(function(event) {
2138
                    const barcode = data.external_id;
2025
                  /* stop form from submitting normally */
2026
                  event.preventDefault();
2027
2139
2028
                  const url = this.action;
2140
                function addToBundle (url, data) {
2029
                  const data = { external_id: this.elements.external_id.value };
2141
                    /* Send the data using post with external_id */
2142
                    var posting = $.post({
2143
                        url: url,
2144
                        data: JSON.stringify(data),
2145
                        contentType: "application/json; charset=utf-8",
2146
                        dataType: "json"
2147
                    });
2030
2148
2031
                  addToBundle(url, data);
2149
                    const barcode = data.external_id;
2032
            });
2033
2150
2034
            $("#addToBundleModal").on("hidden.bs.modal", function(e){
2151
                    /* Report the results */
2035
                if ( bundle_changed ) {
2152
                    posting.done(function(data) {
2036
                    $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
2153
                        $('#addResult').replaceWith('<div id="addResult" class="alert alert-success">'+_("Success: Added '%s'").format(barcode)+'</div>');
2154
                        $('#external_id').val('').focus();
2155
                        bundle_changed = 1;
2156
                    });
2157
                    posting.fail(function(data) {
2158
                        if ( data.status === 409 ) {
2159
                            var response = data.responseJSON;
2160
                            if ( response.error_code === 'already_bundled' ) {
2161
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
2162
                            } else if (response.error_code === 'checked_out') {
2163
                                const button = $('<button type="button">')
2164
                                    .addClass('btn btn-xs')
2165
                                    .text(__("Check in and add to bundle"))
2166
                                    .on('click', function () {
2167
                                        addToBundle(url, { external_id: barcode, force_checkin: true });
2168
                                    });
2169
                                $('#addResult')
2170
                                    .empty()
2171
                                    .attr('class', 'alert alert-warning')
2172
                                    .append(__x('Warning: Item {barcode} is checked out', { barcode }))
2173
                                    .append(' ', button);
2174
                            } else if (response.error_code === 'failed_checkin') {
2175
                                $('#addResult')
2176
                                    .empty()
2177
                                    .attr('class', 'alert alert-danger')
2178
                                    .append(__x('Failure: Item {barcode} cannot be checked in', { barcode }))
2179
                            } else if (response.error_code === 'reserved') {
2180
                                const button = $('<button type="button">')
2181
                                    .addClass('btn btn-xs')
2182
                                    .text(__("Ignore holds and add to bundle"))
2183
                                    .on('click', function () {
2184
                                        addToBundle(url, { external_id: barcode, ignore_holds: true });
2185
                                    });
2186
                                $('#addResult')
2187
                                    .empty()
2188
                                    .attr('class', 'alert alert-warning')
2189
                                    .append(__x('Warning: Item {barcode} is on hold', { barcode }))
2190
                                    .append(' ', button);
2191
                            } else {
2192
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
2193
                            }
2194
                        } else if ( data.status === 404 ) {
2195
                            $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
2196
                        } else if ( data.status === 400 ) {
2197
                            var response = data.responseJSON;
2198
                            if ( response.error_code === "failed_nesting" ) {
2199
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' is a bundle and bundles cannot be nested").format(barcode)+'</div>');
2200
                            } else {
2201
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
2202
                            }
2203
                        } else {
2204
                            $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
2205
                        }
2206
                        $('#external_id').val('').focus();
2207
                    });
2037
                }
2208
                }
2038
                bundle_form_active = 0;
2039
                bundle_changed = 0;
2040
            });
2041
2209
2042
            $("#removeFromBundleModal").on("shown.bs.modal", function(e){
2210
                $("#addToBundleForm").submit(function(event) {
2043
                var button = $(e.relatedTarget);
2211
                    /* stop form from submitting normally */
2044
                var item_id = button.data('item');
2212
                    event.preventDefault();
2045
                $("#removeResult").replaceWith('<div id="removeResult"></div>');
2046
                $("#removeFromBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items/');
2047
                $("#rm_external_id").focus();
2048
                bundle_changed = 0;
2049
                bundle_form_active = item_id;
2050
            });
2051
2213
2052
            $("#removeFromBundleForm").submit(function(event) {
2214
                    const url = this.action;
2215
                    const data = { external_id: this.elements.external_id.value };
2053
2216
2054
                /* stop form from submitting normally */
2217
                    addToBundle(url, data);
2055
                event.preventDefault();
2218
                });
2056
2219
2057
                /* get the action attribute from the <form action=""> element */
2220
                $("#addToBundleModal").on("hidden.bs.modal", function(e){
2058
                var $form = $(this),
2221
                    if ( bundle_changed ) {
2059
                url = $form.attr('action');
2222
                        $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
2223
                    }
2224
                    bundle_form_active = 0;
2225
                    bundle_changed = 0;
2226
                });
2060
2227
2061
                var barcode = $('#rm_external_id').val();
2228
                $("#removeFromBundleModal").on("shown.bs.modal", function(e){
2229
                    var button = $(e.relatedTarget);
2230
                    var item_id = button.data('item');
2231
                    $("#removeResult").replaceWith('<div id="removeResult"></div>');
2232
                    $("#removeFromBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items/');
2233
                    $("#rm_external_id").focus();
2234
                    bundle_changed = 0;
2235
                    bundle_form_active = item_id;
2236
                });
2062
2237
2063
                /* Fetch itemnumber using rm_external_id */
2238
                $("#removeFromBundleForm").submit(function(event) {
2064
                var itemReq = $.get('/api/v1/items', { q: JSON.stringify({
2065
                    external_id: barcode
2066
                }) }, null, "json");
2067
2239
2068
                var itemnumber;
2240
                    /* stop form from submitting normally */
2069
                itemReq.done(function(data) {
2241
                    event.preventDefault();
2070
                    if (data.length === 1) {
2071
                        itemnumber = data[0].item_id;
2072
2242
2073
                        /* Remove link using fetch itemnumber */
2243
                    /* get the action attribute from the <form action=""> element */
2074
                        var deleteReq = $.ajax( url + itemnumber, {
2244
                    var $form = $(this),
2075
                            type : 'DELETE'
2245
                    url = $form.attr('action');
2076
                        });
2077
2246
2078
                        /* Report the results */
2247
                    var barcode = $('#rm_external_id').val();
2079
                        deleteReq.done(function(data) {
2248
2080
                            var barcode = $('#rm_external_id').val();
2249
                    /* Fetch itemnumber using rm_external_id */
2081
                            $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-success">'+_("Success: Removed '%s'").format(barcode)+'</div>');
2250
                    var itemReq = $.get('/api/v1/items', { q: JSON.stringify({
2082
                            $('#rm_external_id').val('').focus();
2251
                        external_id: barcode
2083
                            bundle_changed = 1;
2252
                    }) }, null, "json");
2084
                        });
2253
2085
                        deleteReq.fail(function(data) {
2254
                    var itemnumber;
2086
                            var barcode = $('#rm_external_id').val();
2255
                    itemReq.done(function(data) {
2087
                            if ( data.status === 409 ) {
2256
                        if (data.length === 1) {
2088
                                var response = data.responseJSON;
2257
                            itemnumber = data[0].item_id;
2089
                                if ( response.key === "PRIMARY" ) {
2258
2090
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
2259
                            /* Remove link using fetch itemnumber */
2260
                            var deleteReq = $.ajax( url + itemnumber, {
2261
                                type : 'DELETE'
2262
                            });
2263
2264
                            /* Report the results */
2265
                            deleteReq.done(function(data) {
2266
                                var barcode = $('#rm_external_id').val();
2267
                                $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-success">'+_("Success: Removed '%s'").format(barcode)+'</div>');
2268
                                $('#rm_external_id').val('').focus();
2269
                                bundle_changed = 1;
2270
                            });
2271
                            deleteReq.fail(function(data) {
2272
                                var barcode = $('#rm_external_id').val();
2273
                                if ( data.status === 409 ) {
2274
                                    var response = data.responseJSON;
2275
                                    if ( response.key === "PRIMARY" ) {
2276
                                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
2277
                                    } else {
2278
                                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
2279
                                    }
2280
                                } else if ( data.status === 404 ) {
2281
                                    $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
2091
                                } else {
2282
                                } else {
2092
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
2283
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
2093
                                }
2284
                                }
2094
                            } else if ( data.status === 404 ) {
2285
                                $('#rm_external_id').val('').focus();
2095
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
2286
                            });
2096
                            } else {
2287
                        } else {
2097
                                $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
2288
                            $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Barcode matched more than one item '%s'").format(barcode)+'</div>');
2098
                            }
2289
                        }
2099
                            $('#rm_external_id').val('').focus();
2290
                    });
2100
                        });
2291
                    itemReq.fail(function(data) {
2101
                    } else {
2292
                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Item not found '%s'").format(barcode)+'</div>');
2102
                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Barcode matched more than one item '%s'").format(barcode)+'</div>');
2293
                        $('#rm_external_id').val('').focus();
2103
                    }
2104
                });
2105
                itemReq.fail(function(data) {
2106
                     $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Item not found '%s'").format(barcode)+'</div>');
2107
                    $('#rm_external_id').val('').focus();
2108
2294
2295
                    });
2109
                });
2296
                });
2110
            });
2111
2297
2112
            $("#removeFromBundleModal").on("hidden.bs.modal", function(e){
2298
                $("#removeFromBundleModal").on("hidden.bs.modal", function(e){
2113
                if ( bundle_changed ) {
2299
                    if ( bundle_changed ) {
2114
                    $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
2300
                        $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
2115
                }
2301
                    }
2116
                bundle_form_active = 0;
2302
                    bundle_form_active = 0;
2117
                bundle_changed = 0;
2303
                    bundle_changed = 0;
2118
            });
2304
                });
2119
            // End bundle handling
2305
                // End bundle handling
2120
            [% END %]
2306
            [% END %]
2121
2307
2122
            var table_names = [ 'holdings_table', 'otherholdings_table' ];
2308
            var table_names = [ 'holdings_table', 'otherholdings_table' ];
Lines 2136-2164 Link Here
2136
                var table = KohaTable( table_name, dt_parameters, table_settings[index], 'with_filters' );
2322
                var table = KohaTable( table_name, dt_parameters, table_settings[index], 'with_filters' );
2137
2323
2138
                [% IF bundlesEnabled %]
2324
                [% IF bundlesEnabled %]
2139
                // Add event listener for opening and closing bundle details
2325
                    // Add event listener for opening and closing bundle details
2140
                $('#' + table_name + ' tbody').on('click', 'button.details-control', function () {
2326
                    $('#' + table_name + ' tbody').on('click', 'button.details-control', function () {
2141
                    var button = $(this);
2327
                        var button = $(this);
2142
                    var tr = button.closest('tr');
2328
                        var tr = button.closest('tr');
2143
                    var dTable = button.closest('table').DataTable({ 'retrieve': true });
2329
                        var dTable = button.closest('table').DataTable({ 'retrieve': true });
2144
2330
2145
                    var itemnumber = tr.data('itemnumber');
2331
                        var itemnumber = tr.data('itemnumber');
2146
                    var duedate = tr.data('duedate');
2332
                        var duedate = tr.data('duedate');
2147
                    var row = dTable.row( tr );
2333
                        var row = dTable.row( tr );
2148
2334
2149
                    if ( row.child.isShown() ) {
2335
                        if ( row.child.isShown() ) {
2150
                        // This row is already open - close it
2336
                            // This row is already open - close it
2151
                        row.child.hide();
2337
                            row.child.hide();
2152
                        tr.removeClass('shown');
2338
                            tr.removeClass('shown');
2153
                        button.removeClass('active');
2339
                            button.removeClass('active');
2154
                    }
2340
                        }
2155
                    else {
2341
                        else {
2156
                        // Open this row
2342
                            // Open this row
2157
                        createChild(row, itemnumber, duedate);
2343
                            createChild(row, itemnumber, duedate);
2158
                        tr.addClass('shown');
2344
                            tr.addClass('shown');
2159
                        button.addClass('active');
2345
                            button.addClass('active');
2160
                    }
2346
                        }
2161
                } );
2347
                    } );
2162
                [% END %]
2348
                [% END %]
2163
            });
2349
            });
2164
2350
2165
- 

Return to bug 33195