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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt (-1196 / +1299 lines)
Lines 34-39 Link Here
34
    [% t("Catalog") | html %] ›
34
    [% t("Catalog") | html %] ›
35
    [% t("Koha") | html %]
35
    [% t("Koha") | html %]
36
[% END %]</title>
36
[% END %]</title>
37
37
[% Asset.css("lib/Chocolat/css/chocolat.css") | $raw %]
38
[% Asset.css("lib/Chocolat/css/chocolat.css") | $raw %]
38
[% INCLUDE 'doc-head-close.inc' %]
39
[% INCLUDE 'doc-head-close.inc' %]
39
</head>
40
</head>
Lines 51-1022 Link Here
51
52
52
<body id="catalog_detail" class="catalog">
53
<body id="catalog_detail" class="catalog">
53
54
54
[% WRAPPER 'header.inc' %]
55
    [% WRAPPER 'header.inc' %]
55
    [% INCLUDE 'cat-search.inc' %]
56
        [% INCLUDE 'cat-search.inc' %]
56
[% END %]
57
    [% END %]
57
58
[% WRAPPER 'sub-header.inc' %]
59
    [% WRAPPER breadcrumbs %]
60
        [% WRAPPER breadcrumb_item %]
61
            <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a>
62
        [% END %]
63
58
64
        [% IF ( unknownbiblionumber ) %]
59
    [% WRAPPER 'sub-header.inc' %]
65
            [% WRAPPER breadcrumb_item bc_active= 1 %]
60
        [% WRAPPER breadcrumbs %]
66
                <span>Unknown record</span>
67
            [% END %]
68
        [% ELSE %]
69
            [% WRAPPER breadcrumb_item %]
61
            [% WRAPPER breadcrumb_item %]
70
                [% INCLUDE 'biblio-title.inc' link = 1 %]
62
                <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a>
71
            [% END %]
63
            [% END %]
72
            [% WRAPPER breadcrumb_item bc_active= 1 %]
73
                <span>Details</span>
74
            [% END %]
75
        [% END %]
76
    [% END #/ WRAPPER breadcrumbs %]
77
[% END #/ WRAPPER sub-header.inc %]
78
79
<div class="main container-fluid">
80
    <div class="row">
81
        <div class="col-sm-10 col-sm-push-2">
82
            <main>
83
                <div class="row">
84
                [% INCLUDE 'messages.inc' %]
85
86
[% IF ( unknownbiblionumber ) %]
87
  <div class="dialog message">The record you requested does not exist ([% biblionumber | html %]).</div>
88
[% ELSE %]
89
90
[% IntranetCoce    = Koha.Preference('IntranetCoce') %]
91
[% CoceProviders   = Koha.Preference('CoceProviders') %]
92
[% CoceHost        = Koha.Preference('CoceHost') %]
93
[% SyndeticsCovers = Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') %]
94
95
[% INCLUDE 'cat-toolbar.inc' %]
96
    [% IF ( ocoins ) %]
97
        <!-- COinS / OpenURL -->
98
        <span class="Z3988" title="[% ocoins | html %]"></span>
99
    [% END %]
100
64
101
    [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
65
            [% IF ( unknownbiblionumber ) %]
102
        <div id="catalogue_detail_biblio" class="col-xs-9">
66
                [% WRAPPER breadcrumb_item bc_active= 1 %]
103
    [% ELSE %]
67
                    <span>Unknown record</span>
104
        <div id="catalogue_detail_biblio" class="col-xs-12">
68
                [% END %]
105
    [% END %]
69
            [% ELSE %]
106
        [% IF decoding_error || analytics_error %]
70
                [% WRAPPER breadcrumb_item %]
107
            <div class="page-section bg-danger">
71
                    [% INCLUDE 'biblio-title.inc' link = 1 %]
108
               <h1>Errors found</h1>
72
                [% END %]
109
               [% IF decoding_error %]
73
                [% WRAPPER breadcrumb_item bc_active= 1 %]
110
                   <h2>Encoding errors</h2>
74
                    <span>Details</span>
111
                   <p class="biberror">There is at least one encoding error with this bibliographic record, the view may be degraded.</p>
75
                [% END %]
112
                   <pre class="error">[% decoding_error | html %]</pre>
113
               [% END %]
114
               [% IF analytics_error %]
115
                   <h2>Analytics errors</h2>
116
                   <p class="analytics_error">There was an error searching for analytic records, please see the logs for details.</p>
117
               [% END %]
118
            </div>
119
        [% END %]
120
121
        <div class="page-section">
122
123
        [% XSLTBloc | $raw %]
124
125
        [% IF shelves.count %]
126
            <span class="results_summary"><span class="label">Lists that include this title: </span>
127
            [% FOREACH s IN shelves %]
128
                <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a>
129
                [% IF ( loop.last ) %][% ELSE %]|[% END %]
130
            [% END %]
76
            [% END %]
131
            </span>
77
        [% END #/ WRAPPER breadcrumbs %]
132
        [% END %]
78
    [% END #/ WRAPPER sub-header.inc %]
133
        [% IF ( TagsEnabled &&  TagsShowOnDetail &&  TagLoop ) %]
79
134
                <span class="results_summary"><span class="label">Tags:</span>
80
    <div class="main container-fluid">
135
                    [% FOREACH TagLoo IN TagLoop %]
81
        <div class="row">
136
                        [% IF ( CAN_user_tools_moderate_tags ) %]
82
            <div class="col-sm-10 col-sm-push-2">
137
                        <a href="/cgi-bin/koha/tags/list.pl?tag=[% TagLoo.term |uri %]">[% TagLoo.term | html %]</a>
83
                <main>
84
                    <div class="row">
85
                        <div class="col">
86
                            [% INCLUDE 'messages.inc' %]
87
88
                            [% IF ( unknownbiblionumber ) %]
89
                                <div class="dialog message">The record you requested does not exist ([% biblionumber | html %]).</div>
90
                                    </div> <!-- /.col -->
91
                            [% ELSE %]
92
                                    [% IntranetCoce    = Koha.Preference('IntranetCoce') %]
93
                                    [% CoceProviders   = Koha.Preference('CoceProviders') %]
94
                                    [% CoceHost        = Koha.Preference('CoceHost') %]
95
                                    [% SyndeticsCovers = Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') %]
96
97
                                    [% INCLUDE 'cat-toolbar.inc' %]
98
                                    [% IF ( ocoins ) %]
99
                                        <!-- COinS / OpenURL -->
100
                                        <span class="Z3988" title="[% ocoins | html %]"></span>
101
                                    [% END %]
102
                                </div> <!-- /.col -->
103
104
                        [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
105
                            <div id="catalogue_detail_biblio" class="col-xs-9">
138
                        [% ELSE %]
106
                        [% ELSE %]
139
                        [% TagLoo.term | html %]
107
                            <div id="catalogue_detail_biblio" class="col-xs-12">
140
                        [% END %]
108
                        [% END %]
141
                        <span class="weight">([% TagLoo.weight_total | html %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %]
142
                    [% END %]
143
                    </span>
144
        [% END %]
145
        <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>
146
        <span id="catalogue_detail_framework" class="results_summary">
147
            <span class="label">MARC framework:</span>
148
            <span class="frameworkcode">[% Frameworks.GetName(biblio.frameworkcode) | html %]</span>
149
        </span>
150
        [% IF !item_level_itypes ||  Koha.Preference("BiblioItemtypeInfo") %]
151
           <span class="results_summary itemtype"><span class="label">Itemtype:</span>
152
          [% IF ( !noItemTypeImages && imageurl ) %]
153
              <img src="[% imageurl | html %]" alt="" />
154
          [% END %]
155
          [% IF ( description ) %]
156
              <span class="itypetext">[% description | html %]</span>
157
          [% ELSE %]
158
              <span class="itypetext">[% itemtype | html %]</span>
159
          [% END %]
160
          </span>
161
        [% END %]
162
109
163
        [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %]
110
                        [% IF decoding_error || analytics_error %]
164
            <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>
111
                            <div class="page-section bg-danger">
165
        [% END %]
112
                                <h1>Errors found</h1>
113
                                [% IF decoding_error %]
114
                                    <h2>Encoding errors</h2>
115
                                    <p class="biberror">There is at least one encoding error with this bibliographic record, the view may be degraded.</p>
116
                                    <pre class="error">[% decoding_error | html %]</pre>
117
                                [% END %]
118
                                [% IF analytics_error %]
119
                                    <h2>Analytics errors</h2>
120
                                    <p class="analytics_error">There was an error searching for analytic records, please see the logs for details.</p>
121
                                [% END %]
122
                            </div>
123
                        [% END %]
166
124
167
        [% SET record_source = biblio.metadata.record_source %]
125
                        <div class="page-section">
168
        [% IF ( record_source ) %]
169
            <span id="catalogue_detail_record_source" class="results_summary">
170
                <span class="label">Record source:</span>
171
                [% IF record_source.can_be_edited %]
172
                    [% record_source.name | html %]
173
                [% ELSE %]
174
                    [% record_source.name | html %] <i class="fa fa-lock"></i>
175
                [% END %]
176
            </span>
177
        [% END %]
178
126
179
        [% IF ( holdcount ) %]
127
                            [% XSLTBloc | $raw %]
180
            <span class="results_summary">
181
                <span class="label">Holds:</span>
182
                <span class="number_box">
183
                    [% IF CAN_user_reserveforothers_place_holds %]
184
                        <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber | uri %]">[% holdcount | html %]</a>
185
                    [% ELSE %]
186
                        <span>[% holdcount | html %]</span>
187
                    [% END %]
188
                </span>
189
            </span>
190
        [% END %]
191
128
192
        [% IF illrequests.count %]
129
                            [% IF shelves.count %]
193
            <span class="results_summary">
130
                                <span class="results_summary"><span class="label">Lists that include this title: </span>
194
                <span class="label">ILL requests:</span>
131
                                [% FOREACH s IN shelves %]
195
                [% IF CAN_user_ill %]
132
                                    <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a>
196
                    [% FOREACH ill IN illrequests %]
133
                                    [% IF ( loop.last ) %][% ELSE %]|[% END %]
197
                        <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 %]
134
                                [% END %]
198
                    [% END %]
135
                                </span>
199
                [% ELSE %]
136
                            [% END %]
200
                    [% FOREACH ill IN illrequests %]
201
                        <span>Request [% ill.illrequest_id | html %]</span>[% IF ! loop.last %], [% END %]
202
                    [% END %]
203
                [% END %]
204
            </span>
205
        [% END %]
206
137
207
        [% IF ( article_requests_count = biblio.article_requests.filter_by_current.count ) %]
138
                            [% IF ( TagsEnabled &&  TagsShowOnDetail &&  TagLoop ) %]
208
            <span class="results_summary">
139
                                <span class="results_summary"><span class="label">Tags:</span>
209
                <span class="label">Article requests:</span>
140
                                    [% FOREACH TagLoo IN TagLoop %]
210
                <span class="number_box">
141
                                        [% IF ( CAN_user_tools_moderate_tags ) %]
211
                    <a href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% biblionumber | uri %]">[% article_requests_count | html %]</a>
142
                                            <a href="/cgi-bin/koha/tags/list.pl?tag=[% TagLoo.term |uri %]">[% TagLoo.term | html %]</a>
212
                </span>
143
                                        [% ELSE %]
213
            </span>
144
                                            [% TagLoo.term | html %]
214
        [% END %]
145
                                        [% END %]
146
                                        <span class="weight">([% TagLoo.weight_total | html %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %]
147
                                    [% END %]
148
                                </span>
149
                            [% END %]
215
150
216
        [% IF course_reserves %]
151
                            <span id="catalogue_detail_marc_preview" class="results_summary">
217
            <span class="results_summary"><span class="label">Courses that have reserved this title: </span>
152
                                <span class="label">MARC preview:</span>
218
            [% FOREACH c IN course_reserves %]
153
                                <a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% biblionumber | uri %]&amp;viewas=html" title="MARC" class="previewMARC">Show</a>
219
                <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% c.course_id | uri %]">[% c.course.course_name | html %]</a>
154
                            </span>
220
                [% IF ( loop.last ) %][% ELSE %]|[% END %]
155
                            <span id="catalogue_detail_framework" class="results_summary">
221
            [% END %]
156
                                <span class="label">MARC framework:</span>
222
            </span>
157
                                <span class="frameworkcode">[% Frameworks.GetName(biblio.frameworkcode) | html %]</span>
223
        [% END %]
158
                            </span>
224
        </div> [%# .page-section %]
159
                            [% IF !item_level_itypes ||  Koha.Preference("BiblioItemtypeInfo") %]
160
                                <span class="results_summary itemtype">
161
                                    <span class="label">Itemtype:</span>
162
                                    [% IF ( !noItemTypeImages && imageurl ) %]
163
                                        <img src="[% imageurl | html %]" alt="" />
164
                                    [% END %]
165
                                    [% IF ( description ) %]
166
                                        <span class="itypetext">[% description | html %]</span>
167
                                    [% ELSE %]
168
                                        <span class="itypetext">[% itemtype | html %]</span>
169
                                    [% END %]
170
                                </span>
171
                            [% END %]
225
172
226
        [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
173
                            [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %]
227
        </div>
174
                                <span id="catalogue_detail_elastic_record" class="results_summary">
228
            <div class="col-xs-3 bookcoverimg">
175
                                    <span class="label">Elasticsearch record:</span>
229
                <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]">
176
                                    <a href="/cgi-bin/koha/catalogue/showelastic.pl?id=[% biblionumber | uri %]" title="Elasticsearch record" class="previewElastic">Show</a>
230
                    [% IF ( LocalCoverImages ) %]
177
                                </span>
231
                        [% IF localimages.count %]
232
                            [% FOREACH image IN localimages %]
233
                                <div class="cover-image local-coverimg">
234
                                    <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image">
235
                                        <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 %]" />
236
                                    </a>
237
                                    <div class="hint">Local cover image</div>
238
                                </div>
239
                            [% END %]
178
                            [% END %]
240
                        [% END %]
241
                    [% END %]
242
243
                    [% IF ( AmazonCoverImages && normalized_isbn) %]
244
                        <div class="cover-image" id="amazon-bookcoverimg">
245
                            <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image">
246
                                <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"/>
247
                            </a>
248
                            <div class="hint">Image from Amazon.com</div>
249
                        </div>
250
                    [% END %]
251
179
252
                    [% IF ( IntranetCoce && CoceProviders && normalized_isbn ) %]
180
                            [% SET record_source = biblio.metadata.record_source %]
253
                        [% coce_id = normalized_ean || normalized_isbn %]
181
                            [% IF ( record_source ) %]
254
                        <div class="cover-image coce-coverimg">
182
                                <span id="catalogue_detail_record_source" class="results_summary">
255
                            [% IF ( coce_id ) %]
183
                                    <span class="label">Record source:</span>
256
                                <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a>
184
                                    [% IF record_source.can_be_edited %]
257
                            [% ELSE %]
185
                                        [% record_source.name | html %]
258
                                <span class="no-image">No cover image available</span>
186
                                    [% ELSE %]
187
                                        [% record_source.name | html %] <i class="fa fa-lock"></i>
188
                                    [% END %]
189
                                </span>
259
                            [% END %]
190
                            [% END %]
260
                            <div class="hint">Image from Coce</div>
191
261
                        </div>
192
                            [% IF ( holdcount ) %]
262
                    [% END %]
193
                                <span class="results_summary">
263
194
                                    <span class="label">Holds:</span>
264
                    [% IF ( SyndeticsCovers ) %]
195
                                    <span class="number_box">
265
                        [% IF ( content_identifier_exists ) %]
196
                                        [% IF CAN_user_reserveforothers_place_holds %]
266
                        <div class="cover-image" id="syndetics-bookcoverimg">
197
                                            <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber | uri %]">[% holdcount | html %]</a>
267
                            <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">
198
                                        [% ELSE %]
268
                                <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" />
199
                                            <span>[% holdcount | html %]</span>
269
                            </a>
200
                                        [% END %]
270
                            <div class="hint">Image from Syndetics</div>
201
                                    </span>
271
                        </div>
202
                                </span>
272
                            [% ELSE %]
273
                                <span class="no-image">No cover image available</span>
274
                            [% END %]
203
                            [% END %]
275
                    [% END %]
204
276
205
                            [% IF illrequests.count %]
277
                    [% IF Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL') %]
206
                                <span class="results_summary">
278
                        [% SET custom_cover_image_url = biblio.custom_cover_image_url %]
207
                                    <span class="label">ILL requests:</span>
279
                        [% IF custom_cover_image_url %]
208
                                    [% IF CAN_user_ill %]
280
                            <div class="cover-image" id="custom-coverimg">
209
                                        [% FOREACH ill IN illrequests %]
281
                                <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image">
210
                                            <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 %]
282
                                    <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" />
211
                                        [% END %]
283
                                </a>
212
                                    [% ELSE %]
284
                                <div class="hint">Custom cover image</div>
213
                                        [% FOREACH ill IN illrequests %]
214
                                            <span>Request [% ill.illrequest_id | html %]</span>[% IF ! loop.last %], [% END %]
215
                                        [% END %]
216
                                    [% END %]
217
                                </span>
218
                            [% END %]
219
220
                            [% IF ( article_requests_count = biblio.article_requests.filter_by_current.count ) %]
221
                                <span class="results_summary">
222
                                    <span class="label">Article requests:</span>
223
                                    <span class="number_box">
224
                                        <a href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% biblionumber | uri %]">[% article_requests_count | html %]</a>
225
                                    </span>
226
                                </span>
227
                            [% END %]
228
229
                            [% IF course_reserves %]
230
                                <span class="results_summary"><span class="label">Courses that have reserved this title: </span>
231
                                [% FOREACH c IN course_reserves %]
232
                                    <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% c.course_id | uri %]">[% c.course.course_name | html %]</a>
233
                                    [% IF ( loop.last ) %][% ELSE %]|[% END %]
234
                                [% END %]
235
                                </span>
236
                            [% END %]
237
                        </div> [%# .page-section %]
238
239
                        [% IF ( CoverImagePlugins || AmazonCoverImages  || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %]
285
                            </div>
240
                            </div>
286
                        [% END %]
241
                            <div class="col-xs-3 bookcoverimg">
287
                    [% END %]
242
                                <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]">
288
                </div> <!-- /.cover-slider -->
243
                                    [% IF ( LocalCoverImages ) %]
289
            </div> <!-- /.bookcoverimg.col-xs-3 -->
244
                                        [% IF localimages.count %]
290
        [% ELSE %]
245
                                            [% FOREACH image IN localimages %]
291
        </div> <!-- /.col-xs-* -->
246
                                                <div class="cover-image local-coverimg">
292
        [% END # /IF ( AmazonCoverImages, etc ) %]
247
                                                    <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image">
293
</div>
248
                                                        <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 %]" />
294
249
                                                    </a>
295
<div id="bibliodetails" class="toptabs">
250
                                                    <div class="hint">Local cover image</div>
296
251
                                                </div>
297
<ul class="nav nav-tabs" role="tablist">
252
                                            [% END %]
298
    [% IF Koha.Preference('SeparateHoldings') %]
253
                                        [% END %]
299
        [% IF items_to_display_count - ( other_holdings_count || 0 ) %]
254
                                    [% END %]
300
            <li role="presentation">
255
301
                [%# FIXME We could build the numbers from DataTable's info %]
256
                                    [% IF ( AmazonCoverImages && normalized_isbn) %]
302
                <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">[% Branches.GetLoggedInBranchname | html %] holdings ([% items_to_display_count - ( other_holdings_count || 0 ) - ( hidden_count || 0 ) || 0 | html %])</a>
257
                                        <div class="cover-image" id="amazon-bookcoverimg">
303
            </li>
258
                                            <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image">
304
        [% END %]
259
                                                <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"/>
305
        [% IF other_holdings_count %]
260
                                            </a>
306
            <li role="presentation">
261
                                            <div class="hint">Image from Amazon.com</div>
307
                <a href="#otherholdings"  aria-controls="otherholdings" role="tab" data-toggle="tab">Other holdings ([% other_holdings_count || 0 | html %])</a>
262
                                        </div>
308
            </li>
263
                                    [% END %]
309
        [% END %]
264
310
    [% ELSE %]
265
                                    [% IF ( IntranetCoce && CoceProviders && normalized_isbn ) %]
311
        <li role="presentation">
266
                                        [% coce_id = normalized_ean || normalized_isbn %]
312
            <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">Holdings ([% items_to_display_count || 0 | html %])</a>
267
                                        <div class="cover-image coce-coverimg">
313
        </li>
268
                                            [% IF ( coce_id ) %]
314
    [% END %]
269
                                                <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a>
315
    [% IF Koha.Preference('EnableItemGroups') %]
270
                                            [% ELSE %]
316
        <li role="presentation">
271
                                                <span class="no-image">No cover image available</span>
317
            <a href="#item_groups" aria-controls="item_groups" role="tab" data-toggle="tab">Item groups</a>
272
                                            [% END %]
318
        </li>
273
                                            <div class="hint">Image from Coce</div>
319
    [% END %]
274
                                        </div>
320
[% 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 %]
275
                                    [% END %]
321
[% 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 %]
276
322
[% IF ( subscriptionsnumber ) %]<li role="presentation"><a href="#subscriptions"  aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a></li>[% END %]
277
                                    [% IF ( SyndeticsCovers ) %]
323
[% 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 %]
278
                                        [% IF ( content_identifier_exists ) %]
324
[% IF suggestions.count %]<li role="presentation"><a href="#suggestion_details"  aria-controls="suggestion_details" role="tab" data-toggle="tab">Suggestion details</a></li>[% END %]
279
                                        <div class="cover-image" id="syndetics-bookcoverimg">
325
[% IF ( FRBRizeEditions ) %][% IF ( XISBNS ) %]<li role="presentation"><a href="#editions"  aria-controls="editions" role="tab" data-toggle="tab">Editions</a></li>[% END %][% END %]
280
                                            <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">
326
[% 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 %]
281
                                                <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" />
327
[% IF ( LocalCoverImages ) %]
282
                                            </a>
328
    <li role="presentation">
283
                                            <div class="hint">Image from Syndetics</div>
329
        <a href="#images"  aria-controls="images" role="tab" data-toggle="tab">Images ([% localimages.count || 0 | html %])</a>
284
                                        </div>
330
    </li>
285
                                            [% ELSE %]
331
[% END %]
286
                                                <span class="no-image">No cover image available</span>
332
[% IF HTML5MediaEnabled && HTML5MediaSets.size %]
287
                                            [% END %]
333
    <li id="media_tab" role="presentation"><a href="#html5media"  aria-controls="html5media" role="tab" data-toggle="tab">Play media</a></li>
288
                                    [% END %]
334
[% END %]
289
335
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
290
                                    [% IF Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL') %]
336
    <li class="NovelistSelect" style="display:none;" role="presentation"><a href="#NovelistSelect"  aria-controls="NovelistSelect" role="tab" data-toggle="tab">NoveList Select</a></li>
291
                                        [% SET custom_cover_image_url = biblio.custom_cover_image_url %]
337
[% END %]
292
                                        [% IF custom_cover_image_url %]
338
[% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
293
                                            <div class="cover-image" id="custom-coverimg">
339
    <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>
294
                                                <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image">
340
[% END %]
295
                                                    <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" />
341
</ul>
296
                                                </a>
342
297
                                                <div class="hint">Custom cover image</div>
343
<div class="tab-content">
298
                                            </div>
344
[% IF Koha.Preference('EnableItemGroups') %]
299
                                        [% END %]
345
    <div role="tabpanel" class="tab-pane" id="item_groups">
300
                                    [% END %]
346
        [% IF CAN_user_editcatalogue_manage_item_groups %]
301
                                </div> <!-- /.cover-slider -->
347
            <div class="item_groups_table_table_controls">
302
                            </div> <!-- /.bookcoverimg.col-xs-3 -->
348
                <a href="#" class="item-group-create btn btn-default btn-xs"><i class="fa fa-plus"></i> New item group</a>
303
                        [% ELSE %]
349
            </div>
304
                            </div> <!-- /.col-xs-* -->
350
        [% END %]
305
                        [% END # /IF ( AmazonCoverImages, etc ) %]
351
        <table class="items-group-table" id="items-group-table">
306
                    </div>
352
            <thead>
353
                <tr>
354
                    <th>Display order</th>
355
                    <th>Description</th>
356
                    <th class="NoSort">&nbsp;</th>
357
                </tr>
358
            </thead>
359
        </table>
360
    </div>
361
[% END %]
362
307
308
                    <div id="bibliodetails" class="toptabs">
363
309
364
<div role="tabpanel" class="tab-pane" id="holdings">
310
                        <ul class="nav nav-tabs" role="tablist">
311
                            [% IF Koha.Preference('SeparateHoldings') %]
312
                                [% IF items_to_display_count - ( other_holdings_count || 0 ) %]
313
                                    <li role="presentation">
314
                                        [%# FIXME We could build the numbers from DataTable's info %]
315
                                        <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">[% Branches.GetLoggedInBranchname | html %] holdings ([% items_to_display_count - ( other_holdings_count || 0 ) - ( hidden_count || 0 ) || 0 | html %])</a>
316
                                    </li>
317
                                [% END %]
318
                                [% IF other_holdings_count %]
319
                                    <li role="presentation">
320
                                        <a href="#otherholdings"  aria-controls="otherholdings" role="tab" data-toggle="tab">Other holdings ([% other_holdings_count || 0 | html %])</a>
321
                                    </li>
322
                                [% END %]
323
                            [% ELSE %]
324
                                <li role="presentation">
325
                                    <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">Holdings ([% items_to_display_count || 0 | html %])</a>
326
                                </li>
327
                            [% END %]
328
                            [% IF Koha.Preference('EnableItemGroups') %]
329
                                <li role="presentation">
330
                                    <a href="#item_groups" aria-controls="item_groups" role="tab" data-toggle="tab">Item groups</a>
331
                                </li>
332
                            [% END %]
365
333
366
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'above' ) %]
334
                            [% IF ( MARCNOTES || notes ) %]
367
    <span class="results_summary NovelistSelect" style="display:none;">
335
                                <li role="presentation">
368
        <span class="label">Novelist Select: </span>
336
                                    <a href="#description" aria-controls="description" role="tab" data-toggle="tab">Descriptions ([% ( MARCNOTES.size || 1 ) | html %])</a>
369
        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
337
                                </li>
370
    </span>
338
                            [% END %]
371
[% END %]
339
                            [% IF ComponentParts && ComponentParts.size %]
340
                                <li id="components_tab" role="presentation">
341
                                    <a href="#components"  aria-controls="components" role="tab" data-toggle="tab">Components ([% ComponentParts.size | html %])</a>
342
                                </li>
343
                            [% END %]
372
344
373
[% SET hidden_count = all_items_count - items_to_display_count %]
345
                            [% IF ( subscriptionsnumber ) %]
374
[% IF all_items_count %]
346
                                <li role="presentation">
375
    [% PROCESS items_table tab="holdings" %]
347
                                    <a href="#subscriptions"  aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a>
348
                                </li>
349
                            [% END %]
376
350
377
    [% IF hidden_count %]
351
                            [% IF Koha.Preference('AcquisitionDetails') %]
378
        [%# FIXME We could deal with that in JS and prevent a full refresh %]
352
                                <li role="presentation">
379
        <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]&amp;showallitems=1">Show all items ([% hidden_count | html %] hidden)</a>
353
                                    <a href="#acq_details"  aria-controls="acq_details" role="tab" data-toggle="tab">Acquisition details</a>
380
    [% END %]
354
                                </li>
381
[% ELSE %]
355
                            [% END %]
382
    [% IF ( ALTERNATEHOLDINGS ) %]
383
    [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
384
        <div id="alternateholdings"><span class="holdings_label">Holdings:</span> [% ALTERNATEHOLDING.holding | html %]</div>
385
    [% END %]
386
    [% ELSE %]
387
    <div id="noitems">No physical items for this record</div>
388
    [% END %]
389
[% END %]
390
356
391
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'below' ) %]
357
                            [% IF suggestions.count %]
392
    <span class="results_summary NovelistSelect" style="display:none;">
358
                                <li role="presentation">
393
        <span class="label">Novelist Select: </span>
359
                                    <a href="#suggestion_details"  aria-controls="suggestion_details" role="tab" data-toggle="tab">Suggestion details</a>
394
        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
360
                                </li>
395
    </span>
361
                            [% END %]
396
[% END %]
397
    </div>
398
362
399
[% IF Koha.Preference('SeparateHoldings') %]
363
                            [% IF ( FRBRizeEditions ) %]
400
    <div role="tabpanel" class="tab-pane" id="otherholdings">
364
                                [% IF ( XISBNS ) %]
401
        [% PROCESS items_table tab="otherholdings" %]
365
                                    <li role="presentation">
402
    </div>
366
                                        <a href="#editions"  aria-controls="editions" role="tab" data-toggle="tab">Editions</a>
403
[% END %]
367
                                    </li>
368
                                [% END %]
369
                            [% END %]
404
370
405
[% IF ( MARCNOTES ) %]
371
                            [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
372
                                <li role="presentation">
373
                                    <a href="#concerns" aria-controls="concerns" role="tab" data-toggle="tab">Concerns ([% biblio.tickets.count | html %])</a>
374
                                </li>
375
                            [% END %]
406
376
407
<div role="tabpanel" class="tab-pane" id="description">
377
                            [% IF ( LocalCoverImages ) %]
408
<div class="content_set">
378
                                <li role="presentation">
379
                                    <a href="#images"  aria-controls="images" role="tab" data-toggle="tab">Images ([% localimages.count || 0 | html %])</a>
380
                                </li>
381
                            [% END %]
409
382
410
    [% FOREACH MARCNOTE IN MARCNOTES %]
383
                            [% IF HTML5MediaEnabled && HTML5MediaSets.size %]
411
        <p class="marcnote marcnote-[% MARCNOTE.tag | html %]" id="marcnote-[% MARCNOTE.tag | html %]-[% loop.count | html %]">
384
                                <li id="media_tab" role="presentation">
412
            [% IF MARCNOTE.marcnote.match('^https?://\S+$') %]
385
                                    <a href="#html5media"  aria-controls="html5media" role="tab" data-toggle="tab">Play media</a>
413
                <a href="[% MARCNOTE.marcnote | url %]">[% MARCNOTE.marcnote | html %]</a>
386
                                </li>
414
            [% ELSE %]
387
                            [% END %]
415
                [% MARCNOTE.marcnote | html | html_line_break %]
416
            [% END %]
417
        </p>
418
[% END %]
419
</div>
420
</div>
421
388
422
[% END %]
389
                            [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
390
                                <li class="NovelistSelect" style="display:none;" role="presentation">
391
                                    <a href="#NovelistSelect"  aria-controls="NovelistSelect" role="tab" data-toggle="tab">NoveList Select</a>
392
                                </li>
393
                            [% END %]
423
394
424
[% IF ComponentParts && ComponentParts.size %]
395
                            [% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
425
<div role="tabpanel" class="tab-pane" id="components">
396
                                <li role="presentation">
426
    <div class="content_set">
397
                                    <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>
427
        <table>
398
                                </li>
428
            [% FOR PART IN ComponentParts %]
399
                            [% END %]
429
            <tr>
400
                        </ul>
430
                <td>
401
431
                    [% PART | $raw %]
402
                        <div class="tab-content">
432
                </td>
403
                            [% IF Koha.Preference('EnableItemGroups') %]
433
            </tr>
404
                                <div role="tabpanel" class="tab-pane" id="item_groups">
434
            [% END %]
405
                                    [% IF CAN_user_editcatalogue_manage_item_groups %]
435
        </table>
406
                                        <div class="item_groups_table_table_controls">
436
        [% IF ComponentParts.size == Koha.Preference('MaxComponentRecords')%]
407
                                            <a href="#" class="item-group-create btn btn-default btn-xs"><i class="fa fa-plus"></i> New item group</a>
437
        <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>
408
                                        </div>
438
        [% END %]
409
                                    [% END %]
439
    </div> <!-- /.content_set -->
410
                                    <table class="items-group-table" id="items-group-table">
440
</div> <!-- /#components -->
411
                                        <thead>
412
                                            <tr>
413
                                                <th>Display order</th>
414
                                                <th>Description</th>
415
                                                <th class="NoSort">&nbsp;</th>
416
                                            </tr>
417
                                        </thead>
418
                                    </table>
419
                                </div>
420
                            [% END %]
441
421
442
[% END %]
422
                            <div role="tabpanel" class="tab-pane" id="holdings">
423
                                [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'above' ) %]
424
                                    <span class="results_summary NovelistSelect" style="display:none;">
425
                                        <span class="label">Novelist Select: </span>
426
                                        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
427
                                    </span>
428
                                [% END %]
443
429
444
[% IF ( subscriptionsnumber ) %]
430
                                [% SET hidden_count = all_items_count - items_to_display_count %]
445
<div role="tabpanel" class="tab-pane" id="subscriptions">
431
                                [% IF all_items_count %]
446
<div id="catalogue_detail_subscriptions">
432
                                    [% PROCESS items_table tab="holdings" %]
447
    <h2>This is a serial subscription</h2>
433
448
    <p> (There are [% subscriptionsnumber | html %] subscriptions associated with this title).</p> 
434
                                    [% IF hidden_count %]
449
    [% FOREACH subscription IN subscriptions %]
435
                                        [%# FIXME We could deal with that in JS and prevent a full refresh %]
450
            [% IF subscription.branchcode %]
436
                                        <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]&amp;showallitems=1">Show all items ([% hidden_count | html %] hidden)</a></p>
451
                <h3>At library: [% Branches.GetName(subscription.branchcode) || subscription.branchcode | html %]</h3>
437
                                    [% END %]
452
            [% END %]
438
                                [% ELSE %]
453
            [% IF ( subscription.closed ) %]<p>This subscription is closed.</p>[% END %]
439
                                    [% IF ( ALTERNATEHOLDINGS ) %]
454
            [% IF ( subscription.location ) %]<p class="subscription_location">Location: [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => subscription.location ) | html %]</p>[% END %]
440
                                        [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
455
            [% IF ( subscription.callnumber ) %]<p>Callnumber: [% subscription.callnumber | html %] </p>[% END %]
441
                                            <div id="alternateholdings"><span class="holdings_label">Holdings:</span> [% ALTERNATEHOLDING.holding | html %]</div>
456
            [% IF ( subscription.subscriptionnotes ) %]<p>[% subscription.subscriptionnotes | html | html_line_break %] </p>[% END %]
442
                                        [% END %]
457
            [% IF ( subscription.missinglist ) %]<p>Missing issues: [% subscription.missinglist | html %] </p>[% END %]
443
                                    [% ELSE %]
458
            [% IF ( subscription.librariannote ) %]<p>([% subscription.librariannote | html %])</p>[% END %]
444
                                        <div id="noitems">No physical items for this record</div>
459
            [% IF ( subscription.latestserials ) %]
445
                                    [% END %]
460
            <p> The [% subscription.staffdisplaycount | html %] latest issues related to this subscription:</p>
446
                                [% END %]
461
            <table>
462
                <tr>
463
                    <th>Issue #</th>
464
                    <th>Date arrived</th>
465
                    <th>Date published</th>
466
                    <th>Date published (text)</th>
467
                    <th>Status</th>
468
                    <th>Note</th>
469
                </tr>
470
            [% FOREACH latestserial IN subscription.latestserials %]
471
                <tr>
472
                    <td>[% latestserial.serialseq | html %]</td>
473
                    <td data-order="[% latestserial.planneddate | html %]">[% latestserial.planneddate | $KohaDates %]</td>
474
                    <td data-order="[% latestserial.publisheddate | html %]">[% latestserial.publisheddate | $KohaDates %]</td>
475
                    <td>[% latestserial.publisheddatetext | html %]</td>
476
                    <td>
477
                        [% INCLUDE 'serial-status.inc' serial = latestserial %]
478
                    </td>
479
                    <td>[% latestserial.notes | html %]</td>
480
                </tr>
481
            [% END %]
482
            </table>
483
            [% END %]
484
            [% IF ( CAN_user_serials ) %]
485
                <p>
486
                    <a class="btn btn-link" href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]"><i class="fa fa-list" aria-hidden="true"></i> Subscription details</a>
487
                </p>
488
            [% END %]
489
    [% END %]
490
</div>
491
</div>
492
[% END %]
493
447
494
[% IF Koha.Preference('AcquisitionDetails') %]
448
                                [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'below' ) %]
495
<div role="tabpanel" class="tab-pane" id="acq_details">
449
                                    <span class="results_summary NovelistSelect" style="display:none;">
496
    <p class="acqstatus_[% acq_status | html %]">This bibliographic record has acquisition status: [% PROCESS acq_status myvar=acq_status %]
450
                                        <span class="label">Novelist Select: </span>
497
    </p>
451
                                        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
498
  [% IF orders.count %]
452
                                    </span>
499
    <table id="orders">
453
                                [% END %]
500
      <thead>
454
                            </div>
501
        <tr>
502
          <th>Vendor</th>
503
          <th>Invoice</th>
504
          <th>Basket group</th>
505
          <th>Basket</th>
506
          <th>Order number</th>
507
          <th>Creation date</th>
508
          <th>Receive date</th>
509
          <th>Status</th>
510
          <th>Quantity</th>
511
          <th title="Estimated cost tax incl. while pending, actual cost tax incl. once received">Price</th>
512
          <th>Internal note</th>
513
          <th>Subscription</th>
514
          <th>Subscription call number</th>
515
        </tr>
516
      </thead>
517
      <tbody>
518
      [% FOR order IN orders %]
519
        [% SET basket = order.basket %]
520
        [% SET vendor = basket.bookseller %]
521
          <tr>
522
            <td>
523
                <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% vendor.id | uri %]" title="Vendor detail page">[% vendor.name | html %]</a>
524
            </td>
525
            <td>
526
            [% IF order.invoiceid %]
527
                [% IF CAN_user_acquisition %]
528
                    <div><a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]"
529
                       title="Invoice detail page">
530
                       [% order.invoice.invoicenumber | html %]</a></div>
531
                [% ELSE %]
532
                    <div>[% order.invoice.invoicenumber | html %]</div>
533
                [% END %]
534
455
535
                [% IF ( Koha.Preference('EDIFACT') && CAN_user_acquisition_edi_manage && order.invoice.message_id ) %]
456
                            [% IF Koha.Preference('SeparateHoldings') %]
536
                    <div><a href="/cgi-bin/koha/acqui/edimsg.pl?id=[% order.invoice.message_id | uri %]" title="EDI INVOICE message">EDI message</a></div>
457
                                <div role="tabpanel" class="tab-pane" id="otherholdings">
537
                [% END %]
458
                                    [% PROCESS items_table tab="otherholdings" %]
538
            [% END %]
459
                                </div>
539
            </td>
460
                            [% END %]
540
            <td>
541
            [% IF basket.basketgroupid %]
542
                [% SET basket_group = basket.basket_group %]
543
                [% IF CAN_user_acquisition_group_manage %]
544
                    <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>
545
                [% ELSE %]
546
                    [% basket_group.name | html %] ([% basket_group.id | html %])
547
                [% END %]
548
            [% END %]
549
            </td>
550
            <td>[% IF CAN_user_acquisition_order_manage %]
551
                <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %] ([% basket.basketno | html %])</a>
552
            [% ELSE %]
553
                [% basket.basketname | html %] ([% basket.basketno | html %])
554
            [% END %]</td>
555
            <td>[% order.ordernumber | html %]</td>
556
            <td data-order="[% basket.creationdate | uri %]">[% basket.creationdate | $KohaDates%]</td>
557
            <td data-order="[% order.datereceived | uri %]">[% order.datereceived | $KohaDates%]</td>
558
            <td>
559
              [% SWITCH order.orderstatus %]
560
                [% CASE 'new' %]<span>New</span>
561
                [% CASE 'ordered' %]<span>Ordered</span>
562
                [% CASE 'partial' %]<span>Partial</span>
563
                [% CASE 'complete' %]<span>Complete</span>
564
                [% CASE 'cancelled' %]<span>Cancelled</span>
565
              [% END %]
566
            </td>
567
            <td>[% order.quantity | html %]</td>
568
            <td>[% IF ( order.orderstatus == "complete" ) %][% order.unitprice_tax_included | $Price %][% ELSE %][% order.ecost_tax_included | $Price %][% END %]
569
            <td>[% order.order_internalnote | html %]</td>
570
            <td>
571
                [% IF order.subscriptionid %]
572
                    <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% order.subscriptionid | uri %]">[% order.subscriptionid | html %]</a>
573
                [% END %]
574
            </td>
575
            <td>
576
                [% IF order.subscriptionid %]
577
                    [% order.subscription.callnumber | html %]
578
                [% END %]
579
            </td>
580
          </tr>
581
      [% END %]
582
      </tbody>
583
    </table>
584
  [% ELSE %]
585
    <span class="noorder">There is no order for this bibliographic record.</span>
586
  [% END %]
587
</div>
588
[% END %]
589
461
590
[% IF suggestions.count %]
462
                            [% IF ( MARCNOTES ) %]
591
    <div role="tabpanel" class="tab-pane" id="suggestion_details">
463
                                <div role="tabpanel" class="tab-pane" id="description">
592
        [% IF nb_archived_suggestions > 0 %]
464
                                    <div class="content_set">
593
            <p>[% tnpx('pluralization', 'There is one archived suggestion.', 'There are {count} archived suggestions.', nb_archived_suggestions, { count = nb_archived_suggestions }) | $raw  %]
465
                                        [% FOREACH MARCNOTE IN MARCNOTES %]
594
        [% END %]
466
                                            <p class="marcnote marcnote-[% MARCNOTE.tag | html %]" id="marcnote-[% MARCNOTE.tag | html %]-[% loop.count | html %]">
595
        <table id="suggestions" class="sorted">
467
                                                [% IF MARCNOTE.marcnote.match('^https?://\S+$') %]
596
            <thead>
468
                                                    <a href="[% MARCNOTE.marcnote | url %]">[% MARCNOTE.marcnote | html %]</a>
597
                <tr>
469
                                                [% ELSE %]
598
                    <th class="NoSort">&nbsp;</th>
470
                                                    [% MARCNOTE.marcnote | html | html_line_break %]
599
                    <th class="anti-the">Suggestion</th>
471
                                                [% END %]
600
                    <th>Suggested by - on</th>
472
                                            </p>
601
                    <th>Managed by - on</th>
473
                                        [% END %]
602
                    <th>Last modification by - on</th>
474
                                    </div>
603
                    <th>Library</th>
475
                                </div>
604
                    <th>Fund</th>
476
                            [% END %]
605
                    <th>Status</th>
606
                </tr>
607
            </thead>
608
            <tbody>
609
            [% FOREACH suggestion IN suggestions %]
610
                <tr>
611
                    <td>[% suggestion.suggestionid | html %]</td>
612
                    <td>
613
                        <a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestion.suggestionid | uri %]&amp;op=show" title="suggestion" >
614
                            [% suggestion.title | html %][% IF ( suggestion.author ) %], by [% suggestion.author | html %][% END %]</a>
615
                        <br />
616
                        [% IF ( suggestion.copyrightdate ) %]&copy; [% suggestion.copyrightdate | html %] [% END %]
617
                        [% IF ( suggestion.volumedesc ) %]; Volume:<em>[% suggestion.volumedesc | html %]</em> [% END %]
618
                        [% 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 %]
619
                    </td>
620
                    <td>
621
                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.suggestedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.suggester %]</a>
622
                        [% IF suggestion.suggesteddate %] - [% suggestion.suggesteddate | $KohaDates %][% END %]
623
                    </td>
624
                    <td>
625
                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.managedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.manager %]</a>
626
                        [% IF suggestion.manageddate %] - [% suggestion.manageddate | $KohaDates %][% END %]
627
                    </td>
628
                    <td>
629
                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.lastmodificationby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.last_modifier %]</a>
630
                        [% IF suggestion.lastmodificationdate %] - [% suggestion.lastmodificationdate | $KohaDates %][% END %]
631
                    </td>
632
                    <td>
633
                        [% Branches.GetName( suggestion.branchcode ) | html %]
634
                    </td>
635
                    <td>
636
                        [% suggestion.fund.budget_name | html %]
637
                    </td>
638
                    <td>
639
                        [% IF    suggestion.STATUS == 'ASKED'     %]<span>Pending</span>
640
                        [% ELSIF suggestion.STATUS == 'ACCEPTED'  %]<span>Accepted</span>
641
                        [% ELSIF suggestion.STATUS == 'ORDERED'   %]<span>Ordered</span>
642
                        [% ELSIF suggestion.STATUS == 'REJECTED'  %]<span>Rejected</span>
643
                        [% ELSIF suggestion.STATUS == 'CHECKED'   %]<span>Checked</span>
644
                        [% ELSIF suggestion.STATUS == 'AVAILABLE' %]<span>Available</span>
645
                        [% ELSIF AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) %]
646
                            [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) | html %]
647
                        [% ELSE %]<span>Status unknown</span>
648
                        [% END %]
649
                        [% IF suggestion.reason %]
650
                            <br />([% suggestion.reason | html %])
651
                        [% END %]
652
                    </td>
653
                </tr>
654
                [% END %]
655
            </tbody>
656
        </table>
657
    </div>
658
[% END %]
659
477
660
[% IF ( FRBRizeEditions ) %][% IF ( XISBNS ) %]
478
                            [% IF ComponentParts && ComponentParts.size %]
661
<div role="tabpanel" class="tab-pane" id="editions"><h4>Editions</h4>
479
                                <div role="tabpanel" class="tab-pane" id="components">
662
<table>
480
                                    <div class="content_set">
663
[% 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 %]
481
                                        <table>
664
[% 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 %]
482
                                            [% FOR PART IN ComponentParts %]
665
<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 %]
483
                                            <tr>
666
  [% IF ( XISBN.publishercode ) %]
484
                                                <td>
667
[% 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 %]
485
                                                    [% PART | $raw %]
668
    [% END %]
486
                                                </td>
669
                [% IF ( XISBN.pages ) %] [% END %][% XISBN.pages | html %] [% IF ( XISBN.illus ) %][% XISBN.illus | html %][% END %]
487
                                            </tr>
670
                [% IF ( XISBN.size ) %], [% END %][% XISBN.size | html %]
488
                                            [% END %]
671
</td>
489
                                        </table>
490
                                        [% IF ComponentParts.size == Koha.Preference('MaxComponentRecords')%]
491
                                            <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>
492
                                        [% END %]
493
                                    </div> <!-- /.content_set -->
494
                                </div> <!-- /#components -->
495
                            [% END %]
672
496
673
[% END %]
497
                            [% IF ( subscriptionsnumber ) %]
674
</table></div>[% END %]
498
                                <div role="tabpanel" class="tab-pane" id="subscriptions">
675
[% END %]
499
                                    <div id="catalogue_detail_subscriptions">
500
                                        <h2>This is a serial subscription</h2>
501
                                        <p> (There are [% subscriptionsnumber | html %] subscriptions associated with this title).</p>
502
                                        [% FOREACH subscription IN subscriptions %]
503
                                            [% IF subscription.branchcode %]
504
                                                <h3>At library: [% Branches.GetName(subscription.branchcode) || subscription.branchcode | html %]</h3>
505
                                            [% END %]
506
                                            [% IF ( subscription.closed ) %]
507
                                                <p>This subscription is closed.</p>
508
                                            [% END %]
509
                                            [% IF ( subscription.location ) %]
510
                                                <p class="subscription_location">Location: [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => subscription.location ) | html %]</p>
511
                                            [% END %]
512
                                            [% IF ( subscription.callnumber ) %]
513
                                                <p>Callnumber: [% subscription.callnumber | html %] </p>
514
                                            [% END %]
515
                                            [% IF ( subscription.subscriptionnotes ) %]
516
                                                <p>[% subscription.subscriptionnotes | html | html_line_break %] </p>
517
                                            [% END %]
518
                                            [% IF ( subscription.missinglist ) %]
519
                                                <p>Missing issues: [% subscription.missinglist | html %] </p>
520
                                            [% END %]
521
                                            [% IF ( subscription.librariannote ) %]
522
                                                <p>([% subscription.librariannote | html %])</p>
523
                                            [% END %]
524
                                            [% IF ( subscription.latestserials ) %]
525
                                                <p> The [% subscription.staffdisplaycount | html %] latest issues related to this subscription:</p>
526
                                                <table>
527
                                                    <tr>
528
                                                        <th>Issue #</th>
529
                                                        <th>Date arrived</th>
530
                                                        <th>Date published</th>
531
                                                        <th>Date published (text)</th>
532
                                                        <th>Status</th>
533
                                                        <th>Note</th>
534
                                                    </tr>
535
                                                    [% FOREACH latestserial IN subscription.latestserials %]
536
                                                        <tr>
537
                                                            <td>[% latestserial.serialseq | html %]</td>
538
                                                            <td data-order="[% latestserial.planneddate | html %]">[% latestserial.planneddate | $KohaDates %]</td>
539
                                                            <td data-order="[% latestserial.publisheddate | html %]">[% latestserial.publisheddate | $KohaDates %]</td>
540
                                                            <td>[% latestserial.publisheddatetext | html %]</td>
541
                                                            <td>
542
                                                                [% INCLUDE 'serial-status.inc' serial = latestserial %]
543
                                                            </td>
544
                                                            <td>[% latestserial.notes | html %]</td>
545
                                                        </tr>
546
                                                    [% END %]
547
                                                </table>
548
                                            [% END %]
549
                                            [% IF ( CAN_user_serials ) %]
550
                                                <p>
551
                                                    <a class="btn btn-link" href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]"><i class="fa fa-list" aria-hidden="true"></i> Subscription details</a>
552
                                                </p>
553
                                            [% END %]
554
                                        [% END %]
555
                                    </div>
556
                                </div>
557
                            [% END %]
676
558
677
[% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
559
                            [% IF Koha.Preference('AcquisitionDetails') %]
678
<div role="tabpanel" class="tab-pane" id="concerns">
560
                                <div role="tabpanel" class="tab-pane" id="acq_details">
679
    <fieldset class="action" style="cursor:pointer;">
561
                                    <p class="acqstatus_[% acq_status | html %]">This bibliographic record has acquisition status: [% PROCESS acq_status myvar=acq_status %]
680
        <a id="hideResolved"><i class="fa fa-minus-square"></i> Hide resolved</a>
562
                                    </p>
681
        | <a id="showAll"><i class="fa fa-bars"></i> Show all</a>
563
                                    [% IF orders.count %]
682
    </fieldset>
564
                                        <table id="orders">
683
565
                                            <thead>
684
    <table id="table_concerns" width="100%">
566
                                                <tr>
685
        <thead>
567
                                                    <th>Vendor</th>
686
            <tr>
568
                                                    <th>Invoice</th>
687
                <th>Reported</th>
569
                                                    <th>Basket group</th>
688
                <th>Details</th>
570
                                                    <th>Basket</th>
689
                <th>Title</th>
571
                                                    <th>Order number</th>
690
                <th>Status</th>
572
                                                    <th>Creation date</th>
691
                <th data-class-name="actions noExport">Actions</th>
573
                                                    <th>Receive date</th>
692
            </tr>
574
                                                    <th>Status</th>
693
        </thead>
575
                                                    <th>Quantity</th>
694
    </table>
576
                                                    <th title="Estimated cost tax incl. while pending, actual cost tax incl. once received">Price</th>
695
</div>
577
                                                    <th>Internal note</th>
696
[% END %]
578
                                                    <th>Subscription</th>
579
                                                    <th>Subscription call number</th>
580
                                                </tr>
581
                                            </thead>
582
                                            <tbody>
583
                                                [% FOR order IN orders %]
584
                                                    [% SET basket = order.basket %]
585
                                                    [% SET vendor = basket.bookseller %]
586
                                                    <tr>
587
                                                        <td>
588
                                                            <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% vendor.id | uri %]" title="Vendor detail page">[% vendor.name | html %]</a>
589
                                                        </td>
590
                                                        <td>
591
                                                            [% IF order.invoiceid %]
592
                                                                [% IF CAN_user_acquisition %]
593
                                                                    <div><a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]"
594
                                                                    title="Invoice detail page">
595
                                                                    [% order.invoice.invoicenumber | html %]</a></div>
596
                                                                [% ELSE %]
597
                                                                    <div>[% order.invoice.invoicenumber | html %]</div>
598
                                                                [% END %]
599
600
                                                                [% IF ( Koha.Preference('EDIFACT') && CAN_user_acquisition_edi_manage && order.invoice.message_id ) %]
601
                                                                    <div><a href="/cgi-bin/koha/acqui/edimsg.pl?id=[% order.invoice.message_id | uri %]" title="EDI INVOICE message">EDI message</a></div>
602
                                                                [% END %]
603
                                                            [% END %]
604
                                                        </td>
605
                                                        <td>
606
                                                            [% IF basket.basketgroupid %]
607
                                                                [% SET basket_group = basket.basket_group %]
608
                                                                [% IF CAN_user_acquisition_group_manage %]
609
                                                                    <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>
610
                                                                [% ELSE %]
611
                                                                    [% basket_group.name | html %] ([% basket_group.id | html %])
612
                                                                [% END %]
613
                                                            [% END %]
614
                                                        </td>
615
                                                        <td>
616
                                                            [% IF CAN_user_acquisition_order_manage %]
617
                                                                <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %] ([% basket.basketno | html %])</a>
618
                                                            [% ELSE %]
619
                                                                [% basket.basketname | html %] ([% basket.basketno | html %])
620
                                                            [% END %]
621
                                                        </td>
622
                                                        <td>[% order.ordernumber | html %]</td>
623
                                                        <td data-order="[% basket.creationdate | uri %]">[% basket.creationdate | $KohaDates%]</td>
624
                                                        <td data-order="[% order.datereceived | uri %]">[% order.datereceived | $KohaDates%]</td>
625
                                                        <td>
626
                                                            [% SWITCH order.orderstatus %]
627
                                                                [% CASE 'new' %]<span>New</span>
628
                                                                [% CASE 'ordered' %]<span>Ordered</span>
629
                                                                [% CASE 'partial' %]<span>Partial</span>
630
                                                                [% CASE 'complete' %]<span>Complete</span>
631
                                                                [% CASE 'cancelled' %]<span>Cancelled</span>
632
                                                            [% END %]
633
                                                        </td>
634
                                                        <td>[% order.quantity | html %]</td>
635
                                                        <td>
636
                                                            [% IF ( order.orderstatus == "complete" ) %]
637
                                                                [% order.unitprice_tax_included | $Price %]
638
                                                            [% ELSE %]
639
                                                                [% order.ecost_tax_included | $Price %]
640
                                                            [% END %]
641
                                                        <td>[% order.order_internalnote | html %]</td>
642
                                                        <td>
643
                                                            [% IF order.subscriptionid %]
644
                                                                <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% order.subscriptionid | uri %]">[% order.subscriptionid | html %]</a>
645
                                                            [% END %]
646
                                                        </td>
647
                                                        <td>
648
                                                            [% IF order.subscriptionid %]
649
                                                                [% order.subscription.callnumber | html %]
650
                                                            [% END %]
651
                                                        </td>
652
                                                    </tr>
653
                                                [% END %]
654
                                            </tbody>
655
                                        </table>
656
                                    [% ELSE %]
657
                                        <span class="noorder">There is no order for this bibliographic record.</span>
658
                                    [% END %]
659
                                </div>
660
                            [% END %]
697
661
698
[% IF ( LocalCoverImages ) %]
662
                            [% IF suggestions.count %]
699
    <div role="tabpanel" class="tab-pane" id="images">
663
                                <div role="tabpanel" class="tab-pane" id="suggestion_details">
700
        [% IF localimages.count %]
664
                                    [% IF nb_archived_suggestions > 0 %]
701
            <p>Click on an image to view it in the image viewer</p>
665
                                        <p>[% tnpx('pluralization', 'There is one archived suggestion.', 'There are {count} archived suggestions.', nb_archived_suggestions, { count = nb_archived_suggestions }) | $raw  %]
702
            <ul class="thumbnails">
666
                                    [% END %]
703
                [% FOREACH image IN localimages %]
667
                                    <table id="suggestions" class="sorted">
704
                    [% IF image %]
668
                                        <thead>
705
                        <li id="imagenumber-[% image.imagenumber | html %]" class="thumbnail">
669
                                            <tr>
706
                            <a href="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]">
670
                                                <th class="NoSort">&nbsp;</th>
707
                                <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" />
671
                                                <th class="anti-the">Suggestion</th>
708
                            </a>
672
                                                <th>Suggested by - on</th>
709
                            [% IF CAN_user_tools_upload_local_cover_images %]
673
                                                <th>Managed by - on</th>
710
                                <a href="#" class="remove"><i class="fa fa-trash-can"></i> Delete image</a>
674
                                                <th>Last modification by - on</th>
675
                                                <th>Library</th>
676
                                                <th>Fund</th>
677
                                                <th>Status</th>
678
                                            </tr>
679
                                        </thead>
680
                                        <tbody>
681
                                            [% FOREACH suggestion IN suggestions %]
682
                                                <tr>
683
                                                    <td>[% suggestion.suggestionid | html %]</td>
684
                                                    <td>
685
                                                        <a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestion.suggestionid | uri %]&amp;op=show" title="suggestion" >
686
                                                            [% suggestion.title | html %][% IF ( suggestion.author ) %], by [% suggestion.author | html %][% END %]</a>
687
                                                        <br />
688
                                                        [% IF ( suggestion.copyrightdate ) %]&copy; [% suggestion.copyrightdate | html %] [% END %]
689
                                                        [% IF ( suggestion.volumedesc ) %]; Volume:<em>[% suggestion.volumedesc | html %]</em> [% END %]
690
                                                        [% IF ( suggestion.isbn ) %]; ISBN:<em>[% suggestion.isbn | html %]</em> [% END %]
691
                                                        [% IF ( suggestion.publishercode ) %]; Published by [% suggestion.publishercode | html %] [% END %]
692
                                                        [% IF ( suggestion.publicationyear ) %] in <em>[% suggestion.publicationyear | html %]</em> [% END %]
693
                                                        [% IF ( suggestion.place ) %] in <em>[% suggestion.place | html %]</em> [% END %]
694
                                                        [% IF ( suggestion.collectiontitle ) %]; [% suggestion.collectiontitle | html %] [% END %]
695
                                                        [% IF ( suggestion.itemtype ) %]; [% AuthorisedValues.GetByCode( 'SUGGEST_FORMAT', suggestion.itemtype, 0 ) | html %] [% END %]<br />
696
                                                        [% IF ( suggestion.note ) %]<div class="suggestion_note"><i class="fa fa-comment"></i> [% suggestion.note | html %]</div>[% END %]
697
                                                    </td>
698
                                                    <td>
699
                                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.suggestedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.suggester %]</a>
700
                                                        [% IF suggestion.suggesteddate %] - [% suggestion.suggesteddate | $KohaDates %][% END %]
701
                                                    </td>
702
                                                    <td>
703
                                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.managedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.manager %]</a>
704
                                                        [% IF suggestion.manageddate %] - [% suggestion.manageddate | $KohaDates %][% END %]
705
                                                    </td>
706
                                                    <td>
707
                                                        <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.lastmodificationby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.last_modifier %]</a>
708
                                                        [% IF suggestion.lastmodificationdate %] - [% suggestion.lastmodificationdate | $KohaDates %][% END %]
709
                                                    </td>
710
                                                    <td>
711
                                                        [% Branches.GetName( suggestion.branchcode ) | html %]
712
                                                    </td>
713
                                                    <td>
714
                                                        [% suggestion.fund.budget_name | html %]
715
                                                    </td>
716
                                                    <td>
717
                                                        [% IF    suggestion.STATUS == 'ASKED'     %]<span>Pending</span>
718
                                                        [% ELSIF suggestion.STATUS == 'ACCEPTED'  %]<span>Accepted</span>
719
                                                        [% ELSIF suggestion.STATUS == 'ORDERED'   %]<span>Ordered</span>
720
                                                        [% ELSIF suggestion.STATUS == 'REJECTED'  %]<span>Rejected</span>
721
                                                        [% ELSIF suggestion.STATUS == 'CHECKED'   %]<span>Checked</span>
722
                                                        [% ELSIF suggestion.STATUS == 'AVAILABLE' %]<span>Available</span>
723
                                                        [% ELSIF AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) %]
724
                                                            [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) | html %]
725
                                                        [% ELSE %]<span>Status unknown</span>
726
                                                        [% END %]
727
                                                        [% IF suggestion.reason %]
728
                                                            <br />([% suggestion.reason | html %])
729
                                                        [% END %]
730
                                                    </td>
731
                                                </tr>
732
                                            [% END %]
733
                                        </tbody>
734
                                    </table>
735
                                </div>
711
                            [% END %]
736
                            [% END %]
712
                        </li>
713
                    [% END %]
714
                [% END %]
715
            </ul>
716
        [% ELSE # - No image passed JavaScript takes care %]
717
            <span class="noimagesuploaded">No images have been uploaded for this bibliographic record yet.</span>
718
        [% END %]
719
        [% IF ( CAN_user_tools_upload_local_cover_images ) %]
720
            <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>
721
            </p>
722
        [% END %]
723
    </div>
724
[% END %]
725
737
726
[% IF ( HTML5MediaEnabled ) %]
738
                            [% IF ( FRBRizeEditions ) %]
727
<div role="tabpanel" class="tab-pane" id="html5media">
739
                                [% IF ( XISBNS ) %]
728
          [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
740
                                    <div role="tabpanel" class="tab-pane" id="editions">
729
            <p>
741
                                        <h4>Editions</h4>
730
                [% IF HTML5MediaSet.is_youtube %]
742
                                        <table>
731
                    <iframe id="player" width="640" height="360" src="[% HTML5MediaSet.srcblock | url %]"></iframe>
743
                                            [% FOREACH XISBN IN XISBNS %]
732
                [% ELSE %]
744
                                                <tr>
733
                  <[% HTML5MediaParent | html %] controls preload=none>
745
                                                    [% IF ( AmazonCoverImages ) %]
734
                    <[% HTML5MediaSet.child | html %] src="[% HTML5MediaSet.srcblock | url %]"[% HTML5MediaSet.typeblock | html %] />
746
                                                        <td>
735
                    [[% HTML5MediaParent | html %] tag not supported by your browser.]
747
                                                            <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>
736
                  </[% HTML5MediaParent | html %]>
748
                                                        </td>
737
                [% END %]
749
                                                    [% END %]
738
            </p>
750
                                                    [% IF ( !item_level_itypes || Koha.Preference('BiblioItemtypeInfo') ) %]
739
          [% END %]
751
                                                        <td>
740
</div>
752
                                                            [% IF ( noItemTypeImages ) %]
741
[% END %]
753
                                                                <span class="itypetext">[% XISBN.description | html %]</span>
754
                                                            [% ELSE %]
755
                                                                <img src="[% XISBN.imageurl | html %]" alt="[% XISBN.description | html %]" title="[% XISBN.description | html %]">
756
                                                            [% END %]
757
                                                        </td>
758
                                                    [% END %]
759
                                                    <td>
760
                                                        <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 %]
761
                                                        [% IF ( XISBN.publishercode ) %]
762
                                                            [% XISBN.publishercode | html %]
763
                                                            [% IF ( XISBN.place ) %]([% XISBN.place | html %])[% END %]
764
                                                            [% IF ( XISBN.publicationyear ) %], [% XISBN.publicationyear | html %][% END %]
765
                                                            [% IF ( XISBN.editionstatement ) %][% XISBN.editionstatement | html %][% END %]
766
                                                            [% IF ( XISBN.editionresponsibility ) %][% XISBN.editionresponsibility | html %][% END %]
767
                                                        [% END %]
768
                                                        [% IF ( XISBN.pages ) %] [% END %][% XISBN.pages | html %]
769
                                                        [% IF ( XISBN.illus ) %][% XISBN.illus | html %][% END %]
770
                                                        [% IF ( XISBN.size ) %], [% END %][% XISBN.size | html %]
771
                                                    </td>
772
773
                                            [% END %]
774
                                        </table>
775
                                    </div>
776
                                [% END %]
777
                            [% END %]
742
778
779
                            [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
780
                                <div role="tabpanel" class="tab-pane" id="concerns">
781
                                    <fieldset class="action" style="cursor:pointer;">
782
                                        <a id="hideResolved"><i class="fa fa-minus-square"></i> Hide resolved</a>
783
                                        | <a id="showAll"><i class="fa fa-bars"></i> Show all</a>
784
                                    </fieldset>
785
786
                                    <table id="table_concerns" width="100%">
787
                                        <thead>
788
                                            <tr>
789
                                                <th>Reported</th>
790
                                                <th>Details</th>
791
                                                <th>Title</th>
792
                                                <th>Status</th>
793
                                                <th data-class-name="actions noExport">Actions</th>
794
                                            </tr>
795
                                        </thead>
796
                                    </table>
797
                                </div>
798
                            [% END %]
743
799
744
[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
800
                            [% IF ( LocalCoverImages ) %]
745
    <div role="tabpanel" class="tab-pane novelistSelect" id="NovelistSelect">
801
                                <div role="tabpanel" class="tab-pane" id="images">
746
        <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
802
                                    [% IF localimages.count %]
747
    </div>
803
                                        <p>Click on an image to view it in the image viewer</p>
748
[% END %]
804
                                        <ul class="thumbnails">
805
                                            [% FOREACH image IN localimages %]
806
                                                [% IF image %]
807
                                                    <li id="imagenumber-[% image.imagenumber | html %]" class="thumbnail">
808
                                                        <a href="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&amp;imagenumber=[% image.imagenumber | uri %]">
809
                                                            <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&amp;imagenumber=[% image.imagenumber | uri %]" />
810
                                                        </a>
811
                                                        [% IF CAN_user_tools_upload_local_cover_images %]
812
                                                            <a href="#" class="remove"><i class="fa fa-trash-can"></i> Delete image</a>
813
                                                        [% END %]
814
                                                    </li>
815
                                                [% END %]
816
                                            [% END %]
817
                                        </ul>
818
                                    [% ELSE # - No image passed JavaScript takes care %]
819
                                        <span class="noimagesuploaded">No images have been uploaded for this bibliographic record yet.</span>
820
                                    [% END %]
821
                                    [% IF ( CAN_user_tools_upload_local_cover_images ) %]
822
                                        <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>
823
                                        </p>
824
                                    [% END %]
825
                                </div>
826
                            [% END %]
749
827
750
[% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
828
                            [% IF ( HTML5MediaEnabled ) %]
751
    <div role="tabpanel" class="tab-pane" id="[% plugins_intranet_catalog_biblio_tab.id | html %]">
829
                                <div role="tabpanel" class="tab-pane" id="html5media">
752
        [% plugins_intranet_catalog_biblio_tab.content | $raw %]
830
                                    [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
753
    </div>
831
                                        <p>
754
[% END %]
832
                                            [% IF HTML5MediaSet.is_youtube %]
833
                                                <iframe id="player" width="640" height="360" src="[% HTML5MediaSet.srcblock | url %]"></iframe>
834
                                            [% ELSE %]
835
                                                <[% HTML5MediaParent | html %] controls preload=none>
836
                                                    <[% HTML5MediaSet.child | html %] src="[% HTML5MediaSet.srcblock | url %]"[% HTML5MediaSet.typeblock | html %] />
837
                                                    [[% HTML5MediaParent | html %] tag not supported by your browser.]
838
                                                </[% HTML5MediaParent | html %]>
839
                                            [% END %]
840
                                        </p>
841
                                    [% END %]
842
                                </div>
843
                            [% END %]
755
844
756
</div><!-- /tab-content -->
845
                            [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %]
757
</div><!-- /bibliodetails -->
846
                                <div role="tabpanel" class="tab-pane novelistSelect" id="NovelistSelect">
758
847
                                    <div data-novelist-novelistselect=[% normalized_isbn | html %]></div>
759
<div id="export" style="margin-top: 1em;">
848
                                </div>
760
<form method="get" action="/cgi-bin/koha/catalogue/export.pl">
849
                            [% END %]
761
<table>  <tr>
762
      <th>Save record</th>   </tr>
763
    <tr><td> Select download format:    <select name="format">
764
        <option value="mods">MODS (XML)</option>
765
        <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option>
766
        <option value="marcxml">MARCXML</option>
767
        <option value="marc8">MARC (non-Unicode/MARC-8)</option>
768
        <option value="utf8">MARC (Unicode/UTF-8)</option>    </select>
769
        <input type="submit" name="save" class="btn btn-primary" value="Download record" /></td>
770
  </tr>
771
  <tr><td>
772
    <input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber | html %]" />
773
  </td></tr>
774
</table>
775
</form>
776
</div>
777
778
<div id="marcPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true">
779
    <div class="modal-dialog modal-lg">
780
    <div class="modal-content">
781
    <div class="modal-header">
782
        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
783
        <h3 id="marcPreviewLabel">MARC preview</h3>
784
    </div>
785
    <div class="modal-body">
786
        <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
787
    </div>
788
    <div class="modal-footer">
789
        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
790
    </div>
791
    </div>
792
    </div>
793
</div>
794
795
<div id="elasticPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="elasticPreviewLabel" aria-hidden="true">
796
    <div class="modal-dialog modal-lg">
797
    <div class="modal-content">
798
    <div class="modal-header">
799
        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
800
        <h3 id="elasticPreviewLabel">Elasticsearch record</h3>
801
    </div>
802
    <div class="modal-body">
803
        <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
804
    </div>
805
    <div class="modal-footer">
806
        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
807
    </div>
808
    </div>
809
    </div>
810
</div>
811
850
812
            </main>
851
                            [% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %]
813
        </div> <!-- /.col-sm-10.col-sm-push-2 -->
852
                                <div role="tabpanel" class="tab-pane" id="[% plugins_intranet_catalog_biblio_tab.id | html %]">
853
                                    [% plugins_intranet_catalog_biblio_tab.content | $raw %]
854
                                </div>
855
                            [% END %]
856
                        </div><!-- /tab-content -->
857
                    </div><!-- /bibliodetails -->
858
859
                    <div id="export" style="margin-top: 1em;">
860
                        <form method="get" action="/cgi-bin/koha/catalogue/export.pl">
861
                            <table>
862
                                <tr>
863
                                    <th>Save record</th>
864
                                </tr>
865
                                <tr>
866
                                    <td>
867
                                        Select download format:
868
                                        <select name="format">
869
                                            <option value="mods">MODS (XML)</option>
870
                                            <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option>
871
                                            <option value="marcxml">MARCXML</option>
872
                                            <option value="marc8">MARC (non-Unicode/MARC-8)</option>
873
                                            <option value="utf8">MARC (Unicode/UTF-8)</option>
874
                                        </select>
875
                                        <input type="submit" name="save" class="btn btn-primary" value="Download record" />
876
                                    </td>
877
                                </tr>
878
                                <tr>
879
                                    <td>
880
                                        <input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber | html %]" />
881
                                    </td>
882
                                </tr>
883
                            </table>
884
                        </form>
885
                    </div>
814
886
815
        <div class="col-sm-2 col-sm-pull-10">
887
                    <div id="marcPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true">
816
            <aside>
888
                        <div class="modal-dialog modal-lg">
817
                [% INCLUDE 'biblio-view-menu.inc' %]
889
                            <div class="modal-content">
818
            </aside>
890
                                <div class="modal-header">
819
        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
891
                                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
820
     </div> <!-- /.row -->
892
                                    <h3 id="marcPreviewLabel">MARC preview</h3>
893
                                </div>
894
                                <div class="modal-body">
895
                                    <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
896
                                </div>
897
                                <div class="modal-footer">
898
                                    <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
899
                                </div>
900
                            </div>
901
                        </div>
902
                    </div>
821
903
822
[% END %]
904
                    <div id="elasticPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="elasticPreviewLabel" aria-hidden="true">
905
                        <div class="modal-dialog modal-lg">
906
                            <div class="modal-content">
907
                                <div class="modal-header">
908
                                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
909
                                    <h3 id="elasticPreviewLabel">Elasticsearch record</h3>
910
                                </div>
911
                                <div class="modal-body">
912
                                    <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
913
                                </div>
914
                                <div class="modal-footer">
915
                                    <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
916
                                </div>
917
                            </div>
918
                        </div>
919
                    </div>
920
                </main>
921
            </div> <!-- /.col-sm-10.col-sm-push-2 -->
922
923
            <div class="col-sm-2 col-sm-pull-10">
924
                <aside>
925
                    [% INCLUDE 'biblio-view-menu.inc' %]
926
                </aside>
927
            </div> <!-- /.col-sm-2.col-sm-pull-10 -->
928
        </div> <!-- /.row -->
929
    [% END %]
823
930
824
<div class="modal fade" id="modal-item-group-create" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-create-label">
931
    <div class="modal fade" id="modal-item-group-create" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-create-label">
825
    <div class="modal-dialog">
932
        <div class="modal-dialog">
826
        <div class="modal-content">
933
            <div class="modal-content">
827
            <div class="modal-header">
934
                <div class="modal-header">
828
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
935
                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
829
                <h3 id="modal-item-group-create-label"><i class="fa fa-plus"></i> Create a new item group</h3>
936
                    <h3 id="modal-item-group-create-label"><i class="fa fa-plus"></i> Create a new item group</h3>
830
            </div>
831
            <form method="get" id="modal-item-group-create-form" class="validated">
832
                <div class="modal-body">
833
                    <fieldset>
834
                        <p>
835
                            <label for="modal-item-group-create-form-description" class="required">Name: </label>
836
                            <input name="description" id="modal-item-group-create-form-description" type="text" size="30" required="required" class="required" />
837
                            <span class="required">Required</span>
838
                        </p>
839
                        <p>
840
                            <label for="modal-item-group-create-form-display_order" class="required">Display order: </label>
841
                            <input name="display_order" id="modal-item-group-create-form-display_order" value="0" size="5" required="required" class="required" />
842
                            <span class="required">Required</span>
843
                            <br/>
844
                            <span class="hint">Numbers only, item groups will be displayed in counting order</span>
845
                        </p>
846
                    </fieldset>
847
                </div>
937
                </div>
848
                <div class="modal-footer">
938
                <form method="get" id="modal-item-group-create-form" class="validated">
849
                    <button id="modal-item-group-create-submit" class="btn btn-default"><i class="fa fa-plus"></i> Submit</button>
939
                    <div class="modal-body">
850
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
940
                        <fieldset>
851
                </div>
941
                            <p>
852
            </form>
942
                                <label for="modal-item-group-create-form-description" class="required">Name: </label>
943
                                <input name="description" id="modal-item-group-create-form-description" type="text" size="30" required="required" class="required" />
944
                                <span class="required">Required</span>
945
                            </p>
946
                            <p>
947
                                <label for="modal-item-group-create-form-display_order" class="required">Display order: </label>
948
                                <input name="display_order" id="modal-item-group-create-form-display_order" value="0" size="5" required="required" class="required" />
949
                                <span class="required">Required</span>
950
                                <br/>
951
                                <span class="hint">Numbers only, item groups will be displayed in counting order</span>
952
                            </p>
953
                        </fieldset>
954
                    </div>
955
                    <div class="modal-footer">
956
                        <button id="modal-item-group-create-submit" class="btn btn-default"><i class="fa fa-plus"></i> Submit</button>
957
                        <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
958
                    </div>
959
                </form>
960
            </div>
853
        </div>
961
        </div>
854
    </div>
962
    </div>
855
</div>
963
856
964
    <div class="modal fade" id="modal-item-group-edit" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-edit-label">
857
<div class="modal fade" id="modal-item-group-edit" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-edit-label">
965
        <div class="modal-dialog">
858
    <div class="modal-dialog">
966
            <div class="modal-content">
859
        <div class="modal-content">
967
                <div class="modal-header">
860
            <div class="modal-header">
968
                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
861
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
969
                    <h3 id="modal-item-group-edit-label"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit item group</h3>
862
                <h3 id="modal-item-group-edit-label"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit item group</h3>
970
                </div>
971
                <form method="get" id="modal-item-group-edit-form" class="validated">
972
                    <div class="modal-body">
973
                        <fieldset>
974
                            <p>
975
                                <label for="modal-item-group-edit-form-description" class="required">Name: </label>
976
                                <input name="description" id="modal-item-group-edit-form-description" type="text" size="30" required="required" class="required" />
977
                                <span class="required">Required</span>
978
                            </p>
979
                            <p>
980
                                <label for="modal-item-group-edit-form-display_order" class="required">Sort order: </label>
981
                                <input name="display_order" id="modal-item-group-edit-form-display_order" size="5" />
982
                                <span class="hint">Numbers only, item groups will be displayed in counting order</span>
983
                            </p>
984
                        </fieldset>
985
                    </div>
986
                    <div class="modal-footer">
987
                        <button id="modal-item-group-edit-submit" class="btn btn-default"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Submit</button>
988
                        <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
989
                    </div>
990
                </form>
863
            </div>
991
            </div>
864
            <form method="get" id="modal-item-group-edit-form" class="validated">
992
        </div>
993
    </div>
994
995
    <div class="modal fade" id="modal-item-group-delete" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-delete-label">
996
        <div class="modal-dialog">
997
            <div class="modal-content">
998
                <div class="modal-header">
999
                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1000
                    <h3 id="modal-item-group-delete-label"><i class='fa fa-trash-can'></i> Delete item group</h3>
1001
                </div>
865
                <div class="modal-body">
1002
                <div class="modal-body">
866
                    <fieldset>
1003
                    Are you sure you want to delete this item group?
867
                        <p>
868
                            <label for="modal-item-group-edit-form-description" class="required">Name: </label>
869
                            <input name="description" id="modal-item-group-edit-form-description" type="text" size="30" required="required" class="required" />
870
                            <span class="required">Required</span>
871
                        </p>
872
                        <p>
873
                            <label for="modal-item-group-edit-form-display_order" class="required">Sort order: </label>
874
                            <input name="display_order" id="modal-item-group-edit-form-display_order" size="5" />
875
                            <span class="hint">Numbers only, item groups will be displayed in counting order</span>
876
                        </p>
877
                    </fieldset>
878
                </div>
1004
                </div>
879
                <div class="modal-footer">
1005
                <div class="modal-footer">
880
                    <button id="modal-item-group-edit-submit" class="btn btn-default"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Submit</button>
1006
                    <button id="modal-item-group-delete-submit" class="btn btn-danger"><i class='fa fa-trash-can'></i> Delete</button>
881
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1007
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
882
                </div>
1008
                </div>
883
            </form>
1009
            </div>
884
        </div>
1010
        </div>
885
    </div>
1011
    </div>
886
</div>
1012
887
1013
    <div class="modal fade" id="modal-item-group-set" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-set-label">
888
<div class="modal fade" id="modal-item-group-delete" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-delete-label">
1014
        <div class="modal-dialog">
889
    <div class="modal-dialog">
1015
            <div class="modal-content">
890
        <div class="modal-content">
1016
                <div class="modal-header">
891
            <div class="modal-header">
1017
                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
892
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1018
                    <h3 id="modal-item-group-set-label"><i class='fa fa-book'></i> Set item group for items</h3>
893
                <h3 id="modal-item-group-delete-label"><i class='fa fa-trash-can'></i> Delete item group</h3>
1019
                </div>
894
            </div>
1020
                <form method="get" id="modal-item-group-set-form" class="validated">
895
            <div class="modal-body">
1021
                    <div class="modal-body">
896
                Are you sure you want to delete this item group?
1022
                        <fieldset>
897
            </div>
1023
                            <p>
898
            <div class="modal-footer">
1024
                                <label for="item-group-add-form-select" class="required">Item group: </label>
899
                <button id="modal-item-group-delete-submit" class="btn btn-danger"><i class='fa fa-trash-can'></i> Delete</button>
1025
                                <select name="item_group" id="item-group-add-form-select">
900
                <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1026
                                    [% FOREACH ig IN biblio.item_groups.search({}, {order_by => 'display_order'}) %]
1027
                                        <option value="[% ig.id | html %]">[% ig.description | html %]</option>
1028
                                    [% END %]
1029
                                </select>
1030
                                <span class="required">Required</span>
1031
                            </p>
1032
                        </fieldset>
1033
                    </div>
1034
                    <div class="modal-footer">
1035
                        <button id="modal-item-group-set-submit" class="btn btn-default"><i class='fa fa-book'></i> Set item group</button>
1036
                        <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1037
                    </div>
1038
                </form>
901
            </div>
1039
            </div>
902
        </div>
1040
        </div>
903
    </div>
1041
    </div>
904
</div>
1042
905
1043
    <div class="modal fade" id="modal-item-group-unset" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-unset-label">
906
<div class="modal fade" id="modal-item-group-set" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-set-label">
1044
        <div class="modal-dialog">
907
    <div class="modal-dialog">
1045
            <div class="modal-content">
908
        <div class="modal-content">
1046
                <div class="modal-header">
909
            <div class="modal-header">
1047
                    <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
910
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1048
                    <h3 id="modal-item-group-unset-label"><i class='fa fa-unlink'></i> Remove item from item group</h3>
911
                <h3 id="modal-item-group-set-label"><i class='fa fa-book'></i> Set item group for items</h3>
1049
                </div>
912
            </div>
913
            <form method="get" id="modal-item-group-set-form" class="validated">
914
                <div class="modal-body">
1050
                <div class="modal-body">
915
                    <fieldset>
1051
                    Are you sure you want to remove these item(s) from their item group(s)?
916
                        <p>
917
                            <label for="item-group-add-form-select" class="required">Item group: </label>
918
                            <select name="item_group" id="item-group-add-form-select">
919
                                [% FOREACH ig IN biblio.item_groups.search({}, {order_by => 'display_order'}) %]
920
                                    <option value="[% ig.id | html %]">[% ig.description | html %]</option>
921
                                [% END %]
922
                            </select>
923
                            <span class="required">Required</span>
924
                        </p>
925
                    </fieldset>
926
                </div>
1052
                </div>
927
                <div class="modal-footer">
1053
                <div class="modal-footer">
928
                    <button id="modal-item-group-set-submit" class="btn btn-default"><i class='fa fa-book'></i> Set item group</button>
1054
                    <button id="modal-item-group-unset-submit" class="btn btn-danger"><i class='fa fa-unlink'></i> Remove</button>
929
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
1055
                    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
930
                </div>
1056
                </div>
931
            </form>
932
        </div>
933
    </div>
934
</div>
935
936
<div class="modal fade" id="modal-item-group-unset" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-unset-label">
937
    <div class="modal-dialog">
938
        <div class="modal-content">
939
            <div class="modal-header">
940
                <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
941
                <h3 id="modal-item-group-unset-label"><i class='fa fa-unlink'></i> Remove item from item group</h3>
942
            </div>
943
            <div class="modal-body">
944
                Are you sure you want to remove these item(s) from their item group(s)?
945
            </div>
946
            <div class="modal-footer">
947
                <button id="modal-item-group-unset-submit" class="btn btn-danger"><i class='fa fa-unlink'></i> Remove</button>
948
                <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
949
            </div>
1057
            </div>
950
        </div>
1058
        </div>
951
    </div>
1059
    </div>
952
</div>
953
1060
954
    [% IF bundlesEnabled %]
1061
    [% IF bundlesEnabled %]
955
    <div class="modal" id="addToBundleModal" tabindex="-1" role="dialog" aria-labelledby="addToBundleLabel">
1062
        <div class="modal" id="addToBundleModal" tabindex="-1" role="dialog" aria-labelledby="addToBundleLabel">
956
        <form method="get" id="addToBundleForm" action="">
1063
            <form method="get" id="addToBundleForm" action="">
957
            <div class="modal-dialog" role="document">
1064
                <div class="modal-dialog" role="document">
958
                <div class="modal-content">
1065
                    <div class="modal-content">
959
                    <div class="modal-header">
1066
                        <div class="modal-header">
960
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1067
                            <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
961
                        <h3 id="addToBundleLabel">Add to bundle</h3>
1068
                            <h3 id="addToBundleLabel">Add to bundle</h3>
962
                    </div>
1069
                        </div>
963
                    <div class="modal-body">
1070
                        <div class="modal-body">
964
                        <div id="addResult"></div>
1071
                            <div id="addResult"></div>
965
                        <fieldset class="rows">
1072
                            <fieldset class="rows">
966
                            <ol>
1073
                                <ol>
967
                                <li>
1074
                                    <li>
968
                                    <label class="required" for="external_id">Item barcode: </label>
1075
                                        <label class="required" for="external_id">Item barcode: </label>
969
                                    <input type="text" id="external_id" name="external_id" required="required">
1076
                                        <input type="text" id="external_id" name="external_id" required="required">
970
                                    <span class="required">Required</span>
1077
                                        <span class="required">Required</span>
971
                                </li>
1078
                                    </li>
972
                            </ol>
1079
                                </ol>
973
                        </fieldset>
1080
                            </fieldset>
974
                    </div>
1081
                        </div>
975
                    <div class="modal-footer">
1082
                        <div class="modal-footer">
976
                        <button type="submit" class="btn btn-default">Submit</button>
1083
                            <button type="submit" class="btn btn-default">Submit</button>
977
                        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1084
                            <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1085
                        </div>
978
                    </div>
1086
                    </div>
979
                </div>
1087
                </div>
980
            </div>
1088
            </form>
981
        </form>
1089
        </div>
982
    </div>
983
1090
984
    <div class="modal" id="removeFromBundleModal" tabindex="-1" role="dialog" aria-labelledby="removeFromBundleLabel">
1091
        <div class="modal" id="removeFromBundleModal" tabindex="-1" role="dialog" aria-labelledby="removeFromBundleLabel">
985
        <form method="get" id="removeFromBundleForm" action="">
1092
            <form method="get" id="removeFromBundleForm" action="">
986
            <div class="modal-dialog" role="document">
1093
                <div class="modal-dialog" role="document">
987
                <div class="modal-content">
1094
                    <div class="modal-content">
988
                    <div class="modal-header">
1095
                        <div class="modal-header">
989
                        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
1096
                            <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
990
                        <h3 id="removeFromBundleLabel">Remove from bundle</h3>
1097
                            <h3 id="removeFromBundleLabel">Remove from bundle</h3>
991
                    </div>
1098
                        </div>
992
                    <div class="modal-body">
1099
                        <div class="modal-body">
993
                        <div id="removeResult"></div>
1100
                            <div id="removeResult"></div>
994
                        <fieldset class="rows">
1101
                            <fieldset class="rows">
995
                            <ol>
1102
                                <ol>
996
                                <li>
1103
                                    <li>
997
                                    <label class="required" for="external_id">Item barcode: </label>
1104
                                        <label class="required" for="external_id">Item barcode: </label>
998
                                    <input type="text" id="rm_external_id" name="external_id" required="required">
1105
                                        <input type="text" id="rm_external_id" name="external_id" required="required">
999
                                    <span class="required">Required</span>
1106
                                        <span class="required">Required</span>
1000
                                </li>
1107
                                    </li>
1001
                            </ol>
1108
                                </ol>
1002
                        </fieldset>
1109
                            </fieldset>
1003
                    </div>
1110
                        </div>
1004
                    <div class="modal-footer">
1111
                        <div class="modal-footer">
1005
                        <button type="submit" class="btn btn-default">Submit</button>
1112
                            <button type="submit" class="btn btn-default">Submit</button>
1006
                        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1113
                            <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
1114
                        </div>
1007
                    </div>
1115
                    </div>
1008
                </div>
1116
                </div>
1009
            </div>
1117
            </form>
1010
        </form>
1118
        </div>
1011
    </div>
1012
    [% END %]
1119
    [% END %]
1013
1120
1014
    [% IF ( Koha.Preference('CatalogConcerns') ) %]
1121
    [% IF ( Koha.Preference('CatalogConcerns') ) %]
1015
    [% INCLUDE 'modals/add_catalog_concern.inc' %]
1122
        [% INCLUDE 'modals/add_catalog_concern.inc' %]
1016
    [% END %]
1123
    [% END %]
1017
1124
1018
    [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
1125
    [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %]
1019
    [% INCLUDE 'modals/display_ticket.inc' %]
1126
        [% INCLUDE 'modals/display_ticket.inc' %]
1020
    [% END %]
1127
    [% END %]
1021
1128
1022
[% MACRO jsinclude BLOCK %]
1129
[% MACRO jsinclude BLOCK %]
Lines 1372-1389 Link Here
1372
1479
1373
            });
1480
            });
1374
1481
1375
           [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %]
1482
            [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %]
1376
            $("body").on("click",".previewElastic", function(e){
1483
                $("body").on("click",".previewElastic", function(e){
1377
                e.preventDefault();
1484
                    e.preventDefault();
1378
                var pageElastic = $(this).attr("href");
1485
                    var pageElastic = $(this).attr("href");
1379
                $("#elasticPreview .modal-body").load(pageElastic, function( response, status, xhr ) {
1486
                    $("#elasticPreview .modal-body").load(pageElastic, function( response, status, xhr ) {
1380
                    if( status == 'error' ){
1487
                        if( status == 'error' ){
1381
                        $("#elasticPreview .modal-body").html("<h1>"+_("An error has occurred!")+"</h1><h2><em>"+_("Error 404")+"</em></h2><ul><li>"+_("An internal link in the staff interface is broken and the page does not exist")+"</li></ul><h3>"+_("What's next?")+"</h3><ul style='margin-bottom: 1em; padding-bottom: 1em; border-bottom: 1px solid #CCC;'><li>"+_("Use top menu bar to navigate to another part of Koha.")+"</li><li>"+_("To report a broken link or any other issue, please contact the Koha administrator.")+" <a href='mailto:[% Koha.Preference("KohaAdminEmailAddress") | uri %]'>"+_("Send email")+"</a></li></ul>");
1488
                            $("#elasticPreview .modal-body").html("<h1>"+_("An error has occurred!")+"</h1><h2><em>"+_("Error 404")+"</em></h2><ul><li>"+_("An internal link in the staff interface is broken and the page does not exist")+"</li></ul><h3>"+_("What's next?")+"</h3><ul style='margin-bottom: 1em; padding-bottom: 1em; border-bottom: 1px solid #CCC;'><li>"+_("Use top menu bar to navigate to another part of Koha.")+"</li><li>"+_("To report a broken link or any other issue, please contact the Koha administrator.")+" <a href='mailto:[% Koha.Preference("KohaAdminEmailAddress") | uri %]'>"+_("Send email")+"</a></li></ul>");
1382
                    }
1489
                        }
1490
                    });
1491
                    $('#elasticPreview').modal({show:true});
1383
                });
1492
                });
1384
                $('#elasticPreview').modal({show:true});
1493
            [% END %]
1385
            });
1386
           [% END %]
1387
1494
1388
            [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && ( normalized_isbn || normalized_upc ) ) %]
1495
            [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && ( normalized_isbn || normalized_upc ) ) %]
1389
                novSelect.loadContentForQuery({
1496
                novSelect.loadContentForQuery({
Lines 1398-1406 Link Here
1398
                        $(".NovelistSelect").show();
1505
                        $(".NovelistSelect").show();
1399
                    }
1506
                    }
1400
                 });
1507
                 });
1401
             [% END %]
1508
            [% END %]
1402
             $(".cover-slider").on("click",".cover-nav", function(e){
1509
            $(".cover-slider").on("click",".cover-nav", function(e){
1403
                 e.preventDefault();
1510
                e.preventDefault();
1404
                var cover_slider = $(this).parent();
1511
                var cover_slider = $(this).parent();
1405
                // Adding click handler for cover image navigation links
1512
                // Adding click handler for cover image navigation links
1406
                var num = $(this).data("num");
1513
                var num = $(this).data("num");
Lines 1408-1414 Link Here
1408
                $(this).addClass("nav-active");
1515
                $(this).addClass("nav-active");
1409
                $(cover_slider).find(".cover-image").hide();
1516
                $(cover_slider).find(".cover-image").hide();
1410
                $(cover_slider).find(".cover-image").eq( num ).show();
1517
                $(cover_slider).find(".cover-image").eq( num ).show();
1411
             });
1518
            });
1412
        });
1519
        });
1413
1520
1414
1521
Lines 1460-1774 Link Here
1460
        browser.show();
1567
        browser.show();
1461
1568
1462
        [% IF bundlesEnabled %]
1569
        [% IF bundlesEnabled %]
1463
        var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %];
1570
            var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %];
1464
        var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %];
1571
            var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %];
1465
        [% END %]
1572
        [% END %]
1466
1573
1467
        $(document).ready(function() {
1574
        $(document).ready(function() {
1468
1575
1469
            [% IF bundlesEnabled %] // Bundle handling
1576
            [% IF bundlesEnabled %] // Bundle handling
1470
            function createChild ( row, itemnumber, duedate ) {
1577
                function createChild ( row, itemnumber, duedate ) {
1471
1578
                    // Toolbar
1472
                // Toolbar
1579
                    var bundle_toolbar = $('<div id="toolbar" class="btn-toolbar"></div>');
1473
                var bundle_toolbar = $('<div id="toolbar" class="btn-toolbar"></div>');
1580
                    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>');
1474
                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>');
1581
                    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>');
1475
                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>');
1582
1476
1583
                    // Disable management if there's a duedate
1477
                // Disable management if there's a duedate
1584
                    if(duedate) {
1478
                if(duedate) {
1585
                        bundle_toolbar.children('.btn').addClass("disabled");
1479
                    bundle_toolbar.children('.btn').addClass("disabled");
1586
                        bundle_toolbar.attr("title", _("This bundle is checked out, it cannot be modified"));
1480
                    bundle_toolbar.attr("title", _("This bundle is checked out, it cannot be modified"));
1587
                    }
1481
                }
1482
1588
1483
                // This is the table we'll convert into a DataTable
1589
                    // This is the table we'll convert into a DataTable
1484
                var bundles_table = $('<table class="display tbundle" data-itemnumber="'+itemnumber+'" id="bundle_table_'+itemnumber+'" width="100%"/>');
1590
                    var bundles_table = $('<table class="display tbundle" data-itemnumber="'+itemnumber+'" id="bundle_table_'+itemnumber+'" width="100%"/>');
1485
1591
1486
                // Display it the child row
1592
                    // Display it the child row
1487
                row.child( bundle_toolbar.add(bundles_table), 'bundle' ).show();
1593
                    row.child( bundle_toolbar.add(bundles_table), 'bundle' ).show();
1488
1594
1489
                // Initialise as a DataTable
1595
                    // Initialise as a DataTable
1490
                var bundle_table_url = "/api/v1/items/" + itemnumber + "/bundled_items?";
1596
                    var bundle_table_url = "/api/v1/items/" + itemnumber + "/bundled_items?";
1491
                var bundle_table = bundles_table.kohaTable({
1597
                    var bundle_table = bundles_table.kohaTable({
1492
                    "ajax": {
1598
                        "ajax": {
1493
                        "url": bundle_table_url
1599
                            "url": bundle_table_url
1494
                    },
1495
                    "embed": [
1496
                        "biblio",
1497
                        "return_claim.patron"
1498
                    ],
1499
                    "order": [[ 1, "asc" ]],
1500
                    "columnDefs": [ {
1501
                        "targets": [0,1,2,3],
1502
                        "render": function (data, type, row, meta) {
1503
                            if ( data && type == 'display' ) {
1504
                                return data.escapeHtml();
1505
                            }
1506
                            return data;
1507
                        }
1508
                    } ],
1509
                    "columns": [
1510
                        {
1511
                            "data": "biblio.title:biblio.subtitle:biblio.medium",
1512
                            "title": _("Title"),
1513
                            "searchable": true,
1514
                            "orderable": true,
1515
                            "render": function(data, type, row, meta) {
1516
                                return $biblio_to_html(row.biblio, { link: 1 });
1517
                            }
1518
                        },
1519
                        {
1520
                            "data": "biblio.author",
1521
                            "title": _("Author"),
1522
                            "searchable": true,
1523
                            "orderable": true,
1524
                        },
1525
                        {
1526
                            "data": "callnumber",
1527
                            "title": _("Callnumber"),
1528
                            "searchable": true,
1529
                            "orderable": true,
1530
                        },
1600
                        },
1531
                        {
1601
                        "embed": [
1532
                            "data": "external_id",
1602
                            "biblio",
1533
                            "title": _("Barcode"),
1603
                            "return_claim.patron"
1534
                            "searchable": true,
1604
                        ],
1535
                            "orderable": true,
1605
                        "order": [[ 1, "asc" ]],
1536
                        },
1606
                        "columnDefs": [ {
1537
                        {
1607
                            "targets": [0,1,2,3],
1538
                            "data": "lost_status:last_seen_date:return_claim.patron",
1608
                            "render": function (data, type, row, meta) {
1539
                            "title": _("Status"),
1609
                                if ( data && type == 'display' ) {
1540
                            "searchable": false,
1610
                                    return data.escapeHtml();
1541
                            "orderable": false,
1542
                            "render": function(data, type, row, meta) {
1543
                                if ( row.lost_status == bundle_lost_value ) {
1544
                                    let out = '<span class="lost">' + _("Last seen") + ': ' + $date(row.last_seen_date) + '</span>';
1545
                                    if ( row.return_claim ) {
1546
                                        out = out + '<span class="claims_return">' + _("Claims returned by") + ': ' + $patron_to_html( row.return_claim.patron, { display_cardnumber: false, url: true } ) + '</span>';
1547
                                    }
1548
                                    return out;
1549
                                }
1550
                                else if ( row.lost_status !== 0 ) {
1551
                                    return '<span class="lost">' + _("Lost") + ': ' + row.lost_status + '</span>';
1552
                                }
1611
                                }
1553
                                return '<span class="available">' + _("Present") + '</span>';
1612
                                return data;
1554
                            }
1613
                            }
1555
                        },
1614
                        } ],
1556
                        {
1615
                        "columns": [
1557
                            "data": function( row, type, val, meta ) {
1616
                            {
1558
                                var result;
1617
                                "data": "biblio.title:biblio.subtitle:biblio.medium",
1559
                                if (duedate) {
1618
                                "title": _("Title"),
1560
                                    result = '<button class="btn btn-default btn-xs remove disabled" role="button" data-itemnumber="'+row.item_id+'" title="%s"><i class="fa fa-minus" aria-hidden="true"></i> %s</button>\n'.format(_("This bundle is checked out, it cannot be modified"), _("Remove"));
1619
                                "searchable": true,
1561
                                } else {
1620
                                "orderable": true,
1562
                                    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';
1621
                                "render": function(data, type, row, meta) {
1622
                                    return $biblio_to_html(row.biblio, { link: 1 });
1563
                                }
1623
                                }
1564
                                return result;
1565
                            },
1624
                            },
1566
                            "title": _("Actions"),
1625
                            {
1567
                            "searchable": false,
1626
                                "data": "biblio.author",
1568
                            "orderable": false,
1627
                                "title": _("Author"),
1569
                            "class": "noExport"
1628
                                "searchable": true,
1570
                        }
1629
                                "orderable": true,
1571
                    ]
1630
                            },
1572
                }, bundle_settings, 1);
1631
                            {
1573
                $(".tbundle").on("click", ".remove:not(.disabled)", function(){
1632
                                "data": "callnumber",
1574
                    var bundle_table = $(this).closest('table');
1633
                                "title": _("Callnumber"),
1575
                    var host_itemnumber = bundle_table.data('itemnumber');
1634
                                "searchable": true,
1576
                    var component_itemnumber = $(this).data('itemnumber');
1635
                                "orderable": true,
1577
                    var unlink_item_url = "/api/v1/items/" + host_itemnumber + "/bundled_items/" + component_itemnumber;
1636
                            },
1578
                    $.ajax({
1637
                            {
1579
                        type: "DELETE",
1638
                                "data": "external_id",
1580
                        url: unlink_item_url,
1639
                                "title": _("Barcode"),
1581
                        success: function(){
1640
                                "searchable": true,
1582
                            bundle_table.DataTable({ 'retrieve': true }).draw(false);
1641
                                "orderable": true,
1583
                        }
1642
                            },
1643
                            {
1644
                                "data": "lost_status:last_seen_date:return_claim.patron",
1645
                                "title": _("Status"),
1646
                                "searchable": false,
1647
                                "orderable": false,
1648
                                "render": function(data, type, row, meta) {
1649
                                    if ( row.lost_status == bundle_lost_value ) {
1650
                                        let out = '<span class="lost">' + _("Last seen") + ': ' + $date(row.last_seen_date) + '</span>';
1651
                                        if ( row.return_claim ) {
1652
                                            out = out + '<span class="claims_return">' + _("Claims returned by") + ': ' + $patron_to_html( row.return_claim.patron, { display_cardnumber: false, url: true } ) + '</span>';
1653
                                        }
1654
                                        return out;
1655
                                    }
1656
                                    else if ( row.lost_status !== 0 ) {
1657
                                        return '<span class="lost">' + _("Lost") + ': ' + row.lost_status + '</span>';
1658
                                    }
1659
                                    return '<span class="available">' + _("Present") + '</span>';
1660
                                }
1661
                            },
1662
                            {
1663
                                "data": function( row, type, val, meta ) {
1664
                                    var result;
1665
                                    if (duedate) {
1666
                                        result = '<button class="btn btn-default btn-xs remove disabled" role="button" data-itemnumber="'+row.item_id+'" title="%s"><i class="fa fa-minus" aria-hidden="true"></i> %s</button>\n'.format(_("This bundle is checked out, it cannot be modified"), _("Remove"));
1667
                                    } else {
1668
                                        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';
1669
                                    }
1670
                                    return result;
1671
                                },
1672
                                "title": _("Actions"),
1673
                                "searchable": false,
1674
                                "orderable": false,
1675
                                "class": "noExport"
1676
                            }
1677
                        ]
1678
                    }, bundle_settings, 1);
1679
                    $(".tbundle").on("click", ".remove:not(.disabled)", function(){
1680
                        var bundle_table = $(this).closest('table');
1681
                        var host_itemnumber = bundle_table.data('itemnumber');
1682
                        var component_itemnumber = $(this).data('itemnumber');
1683
                        var unlink_item_url = "/api/v1/items/" + host_itemnumber + "/bundled_items/" + component_itemnumber;
1684
                        $.ajax({
1685
                            type: "DELETE",
1686
                            url: unlink_item_url,
1687
                            success: function(){
1688
                                bundle_table.DataTable({ 'retrieve': true }).draw(false);
1689
                            }
1690
                        });
1584
                    });
1691
                    });
1692
1693
                    return;
1694
                }
1695
1696
                var bundle_changed;
1697
                var bundle_form_active;
1698
                $("#addToBundleModal").on("shown.bs.modal", function(e){
1699
                    var button = $(e.relatedTarget);
1700
                    var item_id = button.data('item');
1701
                    $("#addResult").replaceWith('<div id="addResult"></div>');
1702
                    $("#addToBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items');
1703
                    $("#external_id").focus();
1704
                    bundle_changed = 0;
1705
                    bundle_form_active = item_id;
1585
                });
1706
                });
1586
1707
1587
                return;
1708
                function addToBundle (url, data) {
1588
            }
1709
                    /* Send the data using post with external_id */
1710
                    var posting = $.post({
1711
                        url: url,
1712
                        data: JSON.stringify(data),
1713
                        contentType: "application/json; charset=utf-8",
1714
                        dataType: "json"
1715
                    });
1589
1716
1590
            var bundle_changed;
1717
                    const barcode = data.external_id;
1591
            var bundle_form_active;
1592
            $("#addToBundleModal").on("shown.bs.modal", function(e){
1593
                var button = $(e.relatedTarget);
1594
                var item_id = button.data('item');
1595
                $("#addResult").replaceWith('<div id="addResult"></div>');
1596
                $("#addToBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items');
1597
                $("#external_id").focus();
1598
                bundle_changed = 0;
1599
                bundle_form_active = item_id;
1600
            });
1601
1718
1602
            function addToBundle (url, data) {
1719
                    /* Report the results */
1603
                  /* Send the data using post with external_id */
1720
                    posting.done(function(data) {
1604
                  var posting = $.post({
1721
                        $('#addResult').replaceWith('<div id="addResult" class="alert alert-success">'+_("Success: Added '%s'").format(barcode)+'</div>');
1605
                      url: url,
1722
                        $('#external_id').val('').focus();
1606
                      data: JSON.stringify(data),
1723
                        bundle_changed = 1;
1607
                      contentType: "application/json; charset=utf-8",
1724
                    });
1608
                      dataType: "json"
1725
                    posting.fail(function(data) {
1609
                  });
1726
                        if ( data.status === 409 ) {
1610
1727
                            var response = data.responseJSON;
1611
                  const barcode = data.external_id;
1728
                            if ( response.error_code === 'already_bundled' ) {
1612
1729
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
1613
                  /* Report the results */
1730
                            } else if (response.error_code === 'bundle_checkout_out') {
1614
                  posting.done(function(data) {
1731
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Bundle is currently checked out")+'</div>');
1615
                      $('#addResult').replaceWith('<div id="addResult" class="alert alert-success">'+_("Success: Added '%s'").format(barcode)+'</div>');
1732
                            } else if (response.error_code === 'checked_out') {
1616
                      $('#external_id').val('').focus();
1733
                                const button = $('<button type="button">')
1617
                      bundle_changed = 1;
1734
                                    .addClass('btn btn-xs')
1618
                  });
1735
                                    .text(_("Check in and add to bundle"))
1619
                  posting.fail(function(data) {
1736
                                    .on('click', function () {
1620
                      if ( data.status === 409 ) {
1737
                                        addToBundle(url, { external_id: barcode, force_checkin: true });
1621
                          var response = data.responseJSON;
1738
                                    });
1622
                          if ( response.error_code === 'already_bundled' ) {
1739
                                $('#addResult')
1623
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
1740
                                    .empty()
1624
                          } else if (response.error_code === 'bundle_checkout_out') {
1741
                                    .attr('class', 'alert alert-warning')
1625
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Bundle is currently checked out")+'</div>');
1742
                                    .append(__x('Warning: Item {barcode} is checked out', { barcode }))
1626
                          } else if (response.error_code === 'checked_out') {
1743
                                    .append(' ', button);
1627
                              const button = $('<button type="button">')
1744
                            } else if (response.error_code === 'failed_checkin') {
1628
                                .addClass('btn btn-xs')
1745
                                $('#addResult')
1629
                                .text(_("Check in and add to bundle"))
1746
                                    .empty()
1630
                                .on('click', function () {
1747
                                    .attr('class', 'alert alert-danger')
1631
                                    addToBundle(url, { external_id: barcode, force_checkin: true });
1748
                                    .append(__x('Failure: Item {barcode} cannot be checked in', { barcode }))
1632
                                });
1749
                            } else if (response.error_code === 'reserved') {
1633
                              $('#addResult')
1750
                                const button = $('<button type="button">')
1634
                                .empty()
1751
                                    .addClass('btn btn-xs')
1635
                                .attr('class', 'alert alert-warning')
1752
                                    .text(_("Ignore holds and add to bundle"))
1636
                                .append(__x('Warning: Item {barcode} is checked out', { barcode }))
1753
                                    .on('click', function () {
1637
                                .append(' ', button);
1754
                                        addToBundle(url, { external_id: barcode, ignore_holds: true });
1638
                          } else if (response.error_code === 'failed_checkin') {
1755
                                    });
1639
                              $('#addResult')
1756
                                $('#addResult')
1640
                                .empty()
1757
                                    .empty()
1641
                                .attr('class', 'alert alert-danger')
1758
                                    .attr('class', 'alert alert-warning')
1642
                                .append(__x('Failure: Item {barcode} cannot be checked in', { barcode }))
1759
                                    .append(__x('Warning: Item {barcode} is on hold', { barcode }))
1643
                          } else if (response.error_code === 'reserved') {
1760
                                    .append(' ', button);
1644
                              const button = $('<button type="button">')
1761
                            } else {
1645
                                .addClass('btn btn-xs')
1762
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
1646
                                .text(_("Ignore holds and add to bundle"))
1763
                            }
1647
                                .on('click', function () {
1764
                        } else if ( data.status === 404 ) {
1648
                                    addToBundle(url, { external_id: barcode, ignore_holds: true });
1765
                            $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
1649
                                });
1766
                        } else if ( data.status === 400 ) {
1650
                              $('#addResult')
1767
                            var response = data.responseJSON;
1651
                                .empty()
1768
                            if ( response.error_code === "failed_nesting" ) {
1652
                                .attr('class', 'alert alert-warning')
1769
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' is a bundle and bundles cannot be nested").format(barcode)+'</div>');
1653
                                .append(__x('Warning: Item {barcode} is on hold', { barcode }))
1770
                            } else {
1654
                                .append(' ', button);
1771
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details.")+'</div>');
1655
                          } else {
1772
                            }
1656
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
1773
                        } else {
1657
                          }
1774
                            $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details.")+'</div>');
1658
                      } else if ( data.status === 404 ) {
1775
                        }
1659
                          $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
1776
                        $('#external_id').val('').focus();
1660
                      } else if ( data.status === 400 ) {
1777
                    });
1661
                          var response = data.responseJSON;
1778
                }
1662
                          if ( response.error_code === "failed_nesting" ) {
1663
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' is a bundle and bundles cannot be nested").format(barcode)+'</div>');
1664
                          } else {
1665
                              $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details.")+'</div>');
1666
                          }
1667
                      } else {
1668
                          $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details.")+'</div>');
1669
                      }
1670
                      $('#external_id').val('').focus();
1671
                  });
1672
            }
1673
1779
1674
            $("#addToBundleForm").submit(function(event) {
1780
                $("#addToBundleForm").submit(function(event) {
1675
                  /* stop form from submitting normally */
1781
                    /* stop form from submitting normally */
1676
                  event.preventDefault();
1782
                    event.preventDefault();
1677
1783
1678
                  const url = this.action;
1784
                    const url = this.action;
1679
                  const data = { external_id: this.elements.external_id.value };
1785
                    const data = { external_id: this.elements.external_id.value };
1680
1786
1681
                  addToBundle(url, data);
1787
                    addToBundle(url, data);
1682
            });
1788
                });
1683
1789
1684
            $("#addToBundleModal").on("hidden.bs.modal", function(e){
1790
                $("#addToBundleModal").on("hidden.bs.modal", function(e){
1685
                if ( bundle_changed ) {
1791
                    if ( bundle_changed ) {
1686
                    $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
1792
                        $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
1687
                }
1793
                    }
1688
                bundle_form_active = 0;
1794
                    bundle_form_active = 0;
1689
                bundle_changed = 0;
1795
                    bundle_changed = 0;
1690
            });
1796
                });
1691
1797
1692
            $("#removeFromBundleModal").on("shown.bs.modal", function(e){
1798
                $("#removeFromBundleModal").on("shown.bs.modal", function(e){
1693
                var button = $(e.relatedTarget);
1799
                    var button = $(e.relatedTarget);
1694
                var item_id = button.data('item');
1800
                    var item_id = button.data('item');
1695
                $("#removeResult").replaceWith('<div id="removeResult"></div>');
1801
                    $("#removeResult").replaceWith('<div id="removeResult"></div>');
1696
                $("#removeFromBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items/');
1802
                    $("#removeFromBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items/');
1697
                $("#rm_external_id").focus();
1803
                    $("#rm_external_id").focus();
1698
                bundle_changed = 0;
1804
                    bundle_changed = 0;
1699
                bundle_form_active = item_id;
1805
                    bundle_form_active = item_id;
1700
            });
1806
                });
1701
1807
1702
            $("#removeFromBundleForm").submit(function(event) {
1808
                $("#removeFromBundleForm").submit(function(event) {
1703
1809
1704
                /* stop form from submitting normally */
1810
                    /* stop form from submitting normally */
1705
                event.preventDefault();
1811
                    event.preventDefault();
1706
1812
1707
                /* get the action attribute from the <form action=""> element */
1813
                    /* get the action attribute from the <form action=""> element */
1708
                var $form = $(this),
1814
                    var $form = $(this),
1709
                url = $form.attr('action');
1815
                    url = $form.attr('action');
1710
1816
1711
                var barcode = $('#rm_external_id').val();
1817
                    var barcode = $('#rm_external_id').val();
1712
1818
1713
                /* Fetch itemnumber using rm_external_id */
1819
                    /* Fetch itemnumber using rm_external_id */
1714
                var itemReq = $.get('/api/v1/items', { q: JSON.stringify({
1820
                    var itemReq = $.get('/api/v1/items', { q: JSON.stringify({
1715
                    external_id: barcode
1821
                        external_id: barcode
1716
                }) }, null, "json");
1822
                    }) }, null, "json");
1717
1823
1718
                var itemnumber;
1824
                    var itemnumber;
1719
                itemReq.done(function(data) {
1825
                    itemReq.done(function(data) {
1720
                    if (data.length === 1) {
1826
                        if (data.length === 1) {
1721
                        itemnumber = data[0].item_id;
1827
                            itemnumber = data[0].item_id;
1722
1828
1723
                        /* Remove link using fetch itemnumber */
1829
                            /* Remove link using fetch itemnumber */
1724
                        var deleteReq = $.ajax( url + itemnumber, {
1830
                            var deleteReq = $.ajax( url + itemnumber, {
1725
                            type : 'DELETE'
1831
                                type : 'DELETE'
1726
                        });
1832
                            });
1727
1833
1728
                        /* Report the results */
1834
                            /* Report the results */
1729
                        deleteReq.done(function(data) {
1835
                            deleteReq.done(function(data) {
1730
                            var barcode = $('#rm_external_id').val();
1836
                                var barcode = $('#rm_external_id').val();
1731
                            $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-success">'+_("Success: Removed '%s'").format(barcode)+'</div>');
1837
                                $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-success">'+_("Success: Removed '%s'").format(barcode)+'</div>');
1732
                            $('#rm_external_id').val('').focus();
1838
                                $('#rm_external_id').val('').focus();
1733
                            bundle_changed = 1;
1839
                                bundle_changed = 1;
1734
                        });
1840
                            });
1735
                        deleteReq.fail(function(data) {
1841
                            deleteReq.fail(function(data) {
1736
                            var barcode = $('#rm_external_id').val();
1842
                                var barcode = $('#rm_external_id').val();
1737
                            if ( data.status === 409 ) {
1843
                                if ( data.status === 409 ) {
1738
                                var response = data.responseJSON;
1844
                                    var response = data.responseJSON;
1739
                                if (response.error_code === 'bundle_checkout_out') {
1845
                                    if (response.error_code === 'bundle_checkout_out') {
1740
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Bundle is currently checked out")+'</div>');
1846
                                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Bundle is currently checked out")+'</div>');
1741
                                } else if ( response.key === "PRIMARY" ) {
1847
                                    } else if ( response.key === "PRIMARY" ) {
1742
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
1848
                                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>');
1849
                                    } else {
1850
                                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
1851
                                    }
1852
                                } else if ( data.status === 404 ) {
1853
                                    $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
1743
                                } else {
1854
                                } else {
1744
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>');
1855
                                    $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
1745
                                }
1856
                                }
1746
                            } else if ( data.status === 404 ) {
1857
                                $('#rm_external_id').val('').focus();
1747
                                $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>');
1858
                            });
1748
                            } else {
1859
                        } else {
1749
                                $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>');
1860
                            $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Barcode matched more than one item '%s'").format(barcode)+'</div>');
1750
                            }
1861
                        }
1751
                            $('#rm_external_id').val('').focus();
1862
                    });
1752
                        });
1863
                    itemReq.fail(function(data) {
1753
                    } else {
1864
                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Item not found '%s'").format(barcode)+'</div>');
1754
                        $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Barcode matched more than one item '%s'").format(barcode)+'</div>');
1865
                        $('#rm_external_id').val('').focus();
1755
                    }
1756
                });
1757
                itemReq.fail(function(data) {
1758
                     $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Item not found '%s'").format(barcode)+'</div>');
1759
                    $('#rm_external_id').val('').focus();
1760
1866
1867
                    });
1761
                });
1868
                });
1762
            });
1763
1869
1764
            $("#removeFromBundleModal").on("hidden.bs.modal", function(e){
1870
                $("#removeFromBundleModal").on("hidden.bs.modal", function(e){
1765
                if ( bundle_changed ) {
1871
                    if ( bundle_changed ) {
1766
                    $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
1872
                        $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload();
1767
                }
1873
                    }
1768
                bundle_form_active = 0;
1874
                    bundle_form_active = 0;
1769
                bundle_changed = 0;
1875
                    bundle_changed = 0;
1770
            });
1876
                });
1771
            // End bundle handling
1877
                // End bundle handling
1772
            [% END %]
1878
            [% END %]
1773
1879
1774
            let items_tab_ids = [ 'holdings', 'otherholdings' ];
1880
            let items_tab_ids = [ 'holdings', 'otherholdings' ];
Lines 1776-1805 Link Here
1776
                build_items_table(tab_id, false, {}, build_items_table_drawncallback);
1882
                build_items_table(tab_id, false, {}, build_items_table_drawncallback);
1777
1883
1778
                [% IF bundlesEnabled %]
1884
                [% IF bundlesEnabled %]
1779
                // Add event listener for opening and closing bundle details
1885
                    // Add event listener for opening and closing bundle details
1780
                $('#' + tab_id + '_table tbody').on('click', 'button.details-control', function () {
1886
                    $('#' + tab_id + '_table tbody').on('click', 'button.details-control', function () {
1781
                    var button = $(this);
1887
                        var button = $(this);
1782
                    var tr = button.closest('tr');
1888
                        var tr = button.closest('tr');
1783
                    var dTable = button.closest('table').DataTable({ 'retrieve': true });
1889
                        var dTable = button.closest('table').DataTable({ 'retrieve': true });
1784
1890
1785
                    let row = dTable.row( tr );
1891
                        let row = dTable.row( tr );
1786
                    let data = row.data();
1892
                        let data = row.data();
1787
                    let itemnumber = data.item_id;
1893
                        let itemnumber = data.item_id;
1788
                    let duedate = (data.checkout&&data.checkout.due_date) || null;
1894
                        let duedate = (data.checkout&&data.checkout.due_date) || null;
1789
1895
1790
                    if ( row.child.isShown() ) {
1896
                        if ( row.child.isShown() ) {
1791
                        // This row is already open - close it
1897
                            // This row is already open - close it
1792
                        row.child.hide();
1898
                            row.child.hide();
1793
                        tr.removeClass('shown');
1899
                            tr.removeClass('shown');
1794
                        button.removeClass('active');
1900
                            button.removeClass('active');
1795
                    }
1901
                        } else {
1796
                    else {
1902
                            // Open this row
1797
                        // Open this row
1903
                            createChild(row, itemnumber, duedate);
1798
                        createChild(row, itemnumber, duedate);
1904
                            tr.addClass('shown');
1799
                        tr.addClass('shown');
1905
                            button.addClass('active');
1800
                        button.addClass('active');
1906
                        }
1801
                    }
1907
                    });
1802
                } );
1803
                [% END %]
1908
                [% END %]
1804
            });
1909
            });
1805
1910
Lines 1930-1936 Link Here
1930
2035
1931
            $('#modal-item-group-create').on('shown.bs.modal', function () {
2036
            $('#modal-item-group-create').on('shown.bs.modal', function () {
1932
                $('#modal-item-group-create-form-description').focus();
2037
                $('#modal-item-group-create-form-description').focus();
1933
            })
2038
            });
1934
2039
1935
            // Edit existing item groups
2040
            // Edit existing item groups
1936
            $('body').on( 'click', '.item-group-edit', function(){
2041
            $('body').on( 'click', '.item-group-edit', function(){
Lines 2071-2077 Link Here
2071
                }
2176
                }
2072
2177
2073
                $('#modal-item-group-unset').modal('hide');
2178
                $('#modal-item-group-unset').modal('hide');
2074
2075
            });
2179
            });
2076
        [% END %]
2180
        [% END %]
2077
2181
2078
- 

Return to bug 33195