Bugzilla – Attachment 151432 Details for
Bug 33195
Reindent the bibliographic details page
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33195: Reindent the bibliographic details page
Bug-33195-Reindent-the-bibliographic-details-page.patch (text/plain), 222.31 KB, created by
Owen Leonard
on 2023-05-18 18:02:15 UTC
(
hide
)
Description:
Bug 33195: Reindent the bibliographic details page
Filename:
MIME Type:
Creator:
Owen Leonard
Created:
2023-05-18 18:02:15 UTC
Size:
222.31 KB
patch
obsolete
>From 43811c555d99545849ce8e4d393e0419d50873b3 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Tue, 16 May 2023 17:35:54 +0000 >Subject: [PATCH] Bug 33195: Reindent the bibliographic details page > >This patch reindents the bibliographic details template so that >it has consistent indentation. These changes should have no visible >effect on the page. > >To test, apply the patch and view the detail page for a bibliographic >record. Test as many variations as you can: > >- With and without cover images enabled >- With FRBRizeEditions enabled (and multiple editions in your catalog) >- With LocalCoverImages enabled >- With AcquisitionDetails enabled >- With a serial record >- With a record with component parts >- With EnableItemGroups enabled >- Wtih CatalogConcerns enabled >- With HTML5MediaEnabled and a record with media links > >Viewing the diff while ignoring whitespace changes should show only >places where a line break was added. >--- > .../prog/en/modules/catalogue/detail.tt | 3126 +++++++++-------- > 1 file changed, 1656 insertions(+), 1470 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index cd48d884a0..712b84794a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -36,11 +36,11 @@ > [% SET footerjs = 1 %] > [% INCLUDE 'doc-head-open.inc' %] > <title> >- [% IF ( unknownbiblionumber ) %] >- Unknown record >- [% ELSE %] >- Details for [% INCLUDE 'biblio-title-head.inc' %] >- [% END %] › Catalog › Koha >+ [% IF ( unknownbiblionumber ) %] >+ Unknown record >+ [% ELSE %] >+ Details for [% INCLUDE 'biblio-title-head.inc' %] >+ [% END %] › Catalog › Koha > </title> > [% INCLUDE 'doc-head-close.inc' %] > [% Asset.css("lib/Chocolat/css/chocolat.css") | $raw %] >@@ -73,1269 +73,1444 @@ > [% END #/ WRAPPER breadcrumbs %] > [% END #/ WRAPPER sub-header.inc %] > >-<div class="main container-fluid"> >- <div class="row"> >- <div class="col-sm-10 col-sm-push-2"> >- <main> >- <div class="row"> >- > [% IF ( unknownbiblionumber ) %] >- <div class="dialog message">The record you requested does not exist ([% biblionumber | html %]).</div> >+ <div class="dialog message">The record you requested does not exist ([% biblionumber | html %]).</div> > [% ELSE %] > >-[% IntranetCoce = Koha.Preference('IntranetCoce') %] >-[% CoceProviders = Koha.Preference('CoceProviders') %] >-[% CoceHost = Koha.Preference('CoceHost') %] >-[% SyndeticsCovers = Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') %] >- >-[% INCLUDE 'cat-toolbar.inc' %] >- [% IF decoding_error %] >- <div> >- <span class="biberror"> >- There is an error with this bibliographic record, the view may be degraded.</span> >- <span class="error"><br/> Error: [% decoding_error | html %]</span> >- </div> >- [% END %] >- [% IF analytics_error %] >- <div> >- <span class="analytics_error"> >- There was an error searching for analytic records, please see the logs for details.</span> >- </div> >- [% END %] >- [% IF ( ocoins ) %] >- <!-- COinS / OpenURL --> >- <span class="Z3988" title="[% ocoins | html %]"></span> >- [% END %] >- >- [% IF ( CoverImagePlugins || AmazonCoverImages || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %] >- <div id="catalogue_detail_biblio" class="col-xs-9"> >- [% ELSE %] >- <div id="catalogue_detail_biblio" class="col-xs-12"> >- [% END %] >- <div class="page-section"> >- >- [% XSLTBloc | $raw %] >+ <div class="main container-fluid"> >+ <div class="row"> >+ <div class="col-sm-10 col-sm-push-2"> >+ <main> >+ <div class="row"> >+ >+ [% IntranetCoce = Koha.Preference('IntranetCoce') %] >+ [% CoceProviders = Koha.Preference('CoceProviders') %] >+ [% CoceHost = Koha.Preference('CoceHost') %] >+ [% SyndeticsCovers = Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') %] >+ >+ [% INCLUDE 'cat-toolbar.inc' %] >+ [% IF decoding_error %] >+ <div> >+ <span class="biberror"> >+ There is an error with this bibliographic record, the view may be degraded. >+ </span> >+ <span class="error"><br/> Error: [% decoding_error | html %]</span> >+ </div> >+ [% END %] >+ [% IF analytics_error %] >+ <div> >+ <span class="analytics_error"> >+ There was an error searching for analytic records, please see the logs for details. >+ </span> >+ </div> >+ [% END %] >+ [% IF ( ocoins ) %] >+ <!-- COinS / OpenURL --> >+ <span class="Z3988" title="[% ocoins | html %]"></span> >+ [% END %] > >- [% IF shelves.count %] >- <span class="results_summary"><span class="label">Lists that include this title: </span> >- [% FOREACH s IN shelves %] >- <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a> >- [% IF ( loop.last ) %][% ELSE %]|[% END %] >- [% END %] >- </span> >- [% END %] >- [% IF ( TagsEnabled && TagsShowOnDetail && TagLoop ) %] >- <span class="results_summary"><span class="label">Tags:</span> >- [% FOREACH TagLoo IN TagLoop %] >- [% IF ( CAN_user_tools_moderate_tags ) %] >- <a href="/cgi-bin/koha/tags/list.pl?tag=[% TagLoo.term |uri %]">[% TagLoo.term | html %]</a> >+ [% IF ( CoverImagePlugins || AmazonCoverImages || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %] >+ <div id="catalogue_detail_biblio" class="col-xs-9"> > [% ELSE %] >- [% TagLoo.term | html %] >+ <div id="catalogue_detail_biblio" class="col-xs-12"> > [% END %] >- <span class="weight">([% TagLoo.weight_total | html %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %] >- [% END %] >- </span> >- [% END %] >- <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 %]&viewas=html" title="MARC" class="previewMARC">Show</a></span> >- <span id="catalogue_detail_framework" class="results_summary"> >- <span class="label">MARC framework:</span> >- <span class="frameworkcode">[% Frameworks.GetName(biblio.frameworkcode) | html %]</span> >- </span> >- [% IF !item_level_itypes || Koha.Preference("BiblioItemtypeInfo") %] >- <span class="results_summary itemtype"><span class="label">Itemtype:</span> >- [% IF ( !noItemTypeImages && imageurl ) %] >- <img src="[% imageurl | html %]" alt="" /> >- [% END %] >- [% IF ( description ) %] >- <span class="itypetext">[% description | html %]</span> >- [% ELSE %] >- <span class="itypetext">[% itemtype | html %]</span> >- [% END %] >- </span> >- [% END %] >- >- [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %] >- <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> >- [% END %] >- >- [% IF ( holdcount ) %] >- <span class="results_summary"> >- <span class="label">Holds:</span> >- <span class="number_box"> >- [% IF CAN_user_reserveforothers_place_holds %] >- <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber | uri %]">[% holdcount | html %]</a> >- [% ELSE %] >- <span>[% holdcount | html %]</span> >- [% END %] >- </span> >- </span> >- [% END %] >- >- [% IF illrequests.count %] >- <span class="results_summary"> >- <span class="label">ILL requests:</span> >- [% IF CAN_user_ill %] >- [% FOREACH ill IN illrequests %] >- <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 %] >- [% END %] >- [% ELSE %] >- [% FOREACH ill IN illrequests %] >- <span>Request [% ill.illrequest_id | html %]</span>[% IF ! loop.last %], [% END %] >- [% END %] >- [% END %] >- </span> >- [% END %] > >- [% IF ( article_requests_count = Biblio.ArticleRequestsActiveCount( biblionumber ) ) %] >- <span class="results_summary"> >- <span class="label">Article requests:</span> >- <span class="number_box"> >- <a href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% biblionumber | uri %]">[% article_requests_count | html %]</a> >- </span> >- </span> >- [% END %] >- >- [% IF course_reserves %] >- <span class="results_summary"><span class="label">Courses that have reserved this title: </span> >- [% FOREACH c IN course_reserves %] >- <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% c.course_id | uri %]">[% c.course.course_name | html %]</a> >- [% IF ( loop.last ) %][% ELSE %]|[% END %] >- [% END %] >- </span> >- [% END %] >- </div> [%# .page-section %] >+ <div class="page-section"> > >- [% IF ( CoverImagePlugins || AmazonCoverImages || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %] >- </div> >- <div class="col-xs-3 bookcoverimg"> >- <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]"> >- [% IF ( LocalCoverImages ) %] >- [% IF localimages.count %] >- [% FOREACH image IN localimages %] >- <div class="cover-image local-coverimg"> >- <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> >- <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]" /> >- </a> >- <div class="hint">Local cover image</div> >- </div> >- [% END %] >- [% END %] >- [% END %] >- >- [% IF ( AmazonCoverImages && normalized_isbn) %] >- <div class="cover-image" id="amazon-bookcoverimg"> >- <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image"> >- <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"/> >- </a> >- <div class="hint">Image from Amazon.com</div> >- </div> >- [% END %] >+ [% XSLTBloc | $raw %] > >- [% IF ( IntranetCoce && CoceProviders && normalized_isbn ) %] >- [% coce_id = normalized_ean || normalized_isbn %] >- <div class="cover-image coce-coverimg"> >- [% IF ( coce_id ) %] >- <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a> >- [% ELSE %] >- <span class="no-image">No cover image available</span> >- [% END %] >- <div class="hint">Image from Coce</div> >- </div> >- [% END %] >- >- [% IF ( SyndeticsCovers ) %] >- [% IF ( content_identifier_exists ) %] >- <div class="cover-image" id="syndetics-bookcoverimg"> >- <a href="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/LC.GIF&client=[% Koha.Preference('SyndeticsClientCode') | url %]&type=xw10&upc=[% normalized_upc | url %]&oclc=[% normalized_oclc | url %]" title="Syndetics cover image"> >- <img src="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/[% Koha.Preference('SyndeticsCoverImageSize') | url %].GIF&client=[% Koha.Preference('SyndeticsClientCode') | url %]&type=xw10&upc=[% normalized_upc | url %]&oclc=[% normalized_oclc | url %]" alt="" class="thumbnail" /> >- </a> >- <div class="hint">Image from Syndetics</div> >- </div> >- [% ELSE %] >- <span class="no-image">No cover image available</span> >- [% END %] >- [% END %] >- >- [% IF Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL') %] >- [% SET custom_cover_image_url = biblio.custom_cover_image_url %] >- [% IF custom_cover_image_url %] >- <div class="cover-image" id="custom-coverimg"> >- <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image"> >- <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" /> >- </a> >- <div class="hint">Custom cover image</div> >- </div> >- [% END %] >- [% END %] >- </div> <!-- /.cover-slider --> >- </div> <!-- /.bookcoverimg.col-xs-3 --> >- [% ELSE %] >- </div> <!-- /.col-xs-* --> >- [% END # /IF ( AmazonCoverImages, etc ) %] >-</div> >- >-<div id="bibliodetails" class="toptabs"> >- >-<ul class="nav nav-tabs" role="tablist"> >- [% IF (SeparateHoldings) %] >- <li role="presentation"> >- <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">[% Branches.GetLoggedInBranchname | html %] holdings ([% itemloop.size() || 0 | html %])</a> >- </li> >- <li role="presentation"> >- <a href="#otherholdings" aria-controls="otherholdings" role="tab" data-toggle="tab">Other holdings ([% otheritemloop.size() || 0 | html %])</a> >- </li> >- [% ELSE %] >- <li role="presentation"> >- <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">Holdings ([% itemloop.size() || 0 | html %])</a> >- </li> >- [% END %] >- [% IF Koha.Preference('EnableItemGroups') %] >- <li role="presentation"> >- <a href="#item_groups" aria-controls="item_groups" role="tab" data-toggle="tab">Item groups</a> >- </li> >- [% END %] >-[% 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 %] >-[% 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 %] >-[% IF ( subscriptionsnumber ) %]<li role="presentation"><a href="#subscriptions" aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a></li>[% END %] >-[% 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 %] >-[% IF suggestions.count %]<li role="presentation"><a href="#suggestion_details" aria-controls="suggestion_details" role="tab" data-toggle="tab">Suggestion details</a></li>[% END %] >-[% IF ( FRBRizeEditions ) %][% IF ( XISBNS ) %]<li role="presentation"><a href="#editions" aria-controls="editions" role="tab" data-toggle="tab">Editions</a></li>[% END %][% END %] >-[% 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 %] >-[% IF ( LocalCoverImages ) %] >- <li role="presentation"> >- <a href="#images" aria-controls="images" role="tab" data-toggle="tab">Images ([% localimages.count || 0 | html %])</a> >- </li> >-[% END %] >-[% IF HTML5MediaEnabled && HTML5MediaSets.size %] >- <li id="media_tab" role="presentation"><a href="#html5media" aria-controls="html5media" role="tab" data-toggle="tab">Play media</a></li> >-[% END %] >-[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %] >- <li class="NovelistSelect" style="display:none;" role="presentation"><a href="#NovelistSelect" aria-controls="NovelistSelect" role="tab" data-toggle="tab">NoveList Select</a></li> >-[% END %] >-[% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %] >- <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> >-[% END %] >-</ul> >- >-<div class="tab-content"> >-[% items_table_block_iter = 0 %] >-[% BLOCK items_table %] >- [% items_table_block_iter = items_table_block_iter + 1 %] >- <div class="[% tab | html %]_table_table_controls"> >- [% IF (StaffDetailItemSelection) %] >- | <a href="#" class="SelectAll" data-tab="[% tab | html %]"><i class="fa fa-check"></i> Select all</a> | >- <a href="#" class="ClearAll" data-tab="[% tab | html %]"><i class="fa fa-remove"></i> Clear all</a> >- <span class="itemselection_actions"> >- | Actions: >- [% IF CAN_user_tools_items_batchdel %] >- <a class="itemselection_action_delete"><i class="fa fa-trash"></i> Delete selected items</a> >- [% END %] >- [% IF CAN_user_tools_items_batchmod %] >- <a class="itemselection_action_modify"><i class="fa fa-pencil"></i> Modify selected items</a> >- [% END %] >- [% IF CAN_user_editcatalogue_manage_item_groups && biblio.item_groups.count %] >- <a class="itemselection_action_item_group_set" href="#"><i class="fa fa-book"></i> Add/move to item group</a> >- <a class="itemselection_action_item_group_unset" href="#"><i class="fa fa-unlink"></i> Remove from item group</a> >- [% END %] >- </span> >- [% END %] >- </div> >- <table class="items_table" id="[% tab | html %]_table"> >- <thead> >- <tr> >- [% IF (StaffDetailItemSelection) %]<th id="[% tab | html %]_checkbox" data-colname="[% tab | html %]_checkbox" class="NoSort"></th>[% END %] >- [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %] >- <th id="[% tab | html %]_cover_image" data-colname="[% tab | html %]_cover_image">Cover image</th> >- [% END %] >- [% IF ( item_level_itypes ) %]<th id="[% tab | html %]_itype" data-colname="[% tab | html %]_itype">Item type</th>[% END %] >- <th id="[% tab | html %]_holdingbranch" data-colname="[% tab | html %]_holdingbranch">Current library</th> >- <th id="[% tab | html %]_homebranch" data-colname="[% tab | html %]_homebranch">Home library</th> >- [% IF ( itemdata_ccode ) %]<th id="[% tab | html %]_ccode" data-colname="[% tab | html %]_ccode">Collection</th>[% END %] >- [% IF Koha.Preference('EnableItemGroups') %] >- <th id="[% tab | html %]_item_group" data-colname="[% tab | html %]_item_group">Item group</th> >- [% END %] >- <th id="[% tab | html %]_itemcallnumber" data-colname="[% tab | html %]_itemcallnumber">Call number</th> >- [% IF volinfo %] >- <th id="[% tab | html %]_enumchron" data-colname="[% tab | html %]_enumchron">Serial enumeration / chronology</th> >- [% END %] >- <th id="[% tab | html %]_status" data-colname="[% tab | html %]_status">Status</th> >- <th id="[% tab | html %]_lastseen" data-colname="[% tab | html %]_lastseen">Last seen</th> >- <th id="[% tab | html %]_issues" data-colname="[% tab | html %]_issues">Checkouts</th> >- <th id="[% tab | html %]_renewals" data-colname="[% tab | html %]_renewals">Renewals</th> >- <th id="[% tab | html %]_dateaccessioned" data-colname="[% tab | html %]_dateaccessioned">Date accessioned</th> >- <th id="[% tab | html %]_datelastborrowed" data-colname="[% tab | html %]_datelastborrowed">Date last borrowed</th> >- <th id="[% tab | html %]_barcode" data-colname="[% tab | html %]_barcode">Barcode</th> >- [% IF ( itemdata_uri ) %]<th id="[% tab | html %]_uri" data-colname="[% tab | html %]_uri">URL</th>[% END %] >- [% IF ( itemdata_copynumber ) %]<th id="[% tab | html %]_copynumber" data-colname="[% tab | html %]_copynumber">Copy number</th>[% END %] >- [% IF ( itemdata_stocknumber ) %]<th id="[% tab | html %]_stocknumber" data-colname="[% tab | html %]_stocknumber">Inventory number</th>[% END %] >- [% IF materials %]<th id="[% tab | html %]_materials" data-colname="[% tab | html %]_materials">Materials specified</th>[% END %] >- [% IF ( itemdata_itemnotes ) %]<th id="[% tab | html %]_itemnotes" data-colname="[% tab | html %]_itemnotes">Public notes</th>[% END %] >- [% IF ( itemdata_nonpublicnotes ) %]<th id="[% tab | html %]_itemnotes_nonpublic" data-colname="[% tab | html %]_itemnotes_nonpublic">Non-public notes</th>[% END %] >- [% IF ( hostrecords ) %]<th id="[% tab | html %]_hostrecord" data-colname="[% tab | html %]_hostrecord">Host records</th>[% END %] >- [% IF ( analyze ) %]<th id="[% tab | html %]_usedin" data-colname="[% tab | html %]_usedin">Used in</th><th></th>[% END %] >- [% IF ( ShowCourseReserves ) %]<th id="[% tab | html %]_course_reserves" data-colname="[% tab | html %]_course_reserves">Course reserves</th>[% END %] >- [% IF ( SpineLabelShowPrintOnBibDetails ) %]<th id="[% tab | html %]_spinelabel" data-colname="[% tab | html %]_spinelabel" class="NoSort">Spine label</th>[% END %] >- [% IF ( CAN_user_editcatalogue_edit_items ) %]<th id="[% tab | html %]_actions" data-colname="[% tab | html %]_actions"class="NoSort noExport"> </th>[% END %] >- </tr> >- </thead> >- <tbody> >- [% FOREACH item IN items %] >- <tr id="item_[% item.itemnumber | html %]" data-itemnumber="[% item.itemnumber | html %]" data-duedate="[% item.datedue | html %]"> >- [% IF (StaffDetailItemSelection) %] >- <td style="text-align:center;vertical-align:middle"> >- [% IF item.can_be_edited %] >- <input type="checkbox" value="[% item.itemnumber | html %]" name="itemnumber" /> >- [% END %] >- </td> >- [% END %] >- [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %] >- <td class="cover"> >- <div class="bookcoverimg"> >- <div class="cover-slider"> >- [% FOREACH image IN item.object.cover_images %] >- <div class="cover-image local-coverimg"> >- <a href="/cgi-bin/koha/catalogue/image.pl?itemnumber=[% image.itemnumber | uri %]&imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> >- <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?itemnumber=[% item.itemnumber | uri %]&imagenumber=[% image.imagenumber | uri %]" /> >- </a> >- </div> >- [% END %] >- </div> >- </div> >- </td> >- [% END %] >- >- [% IF ( item_level_itypes ) %] >- <td class="itype"> >- [% SET itemtype = item.itemtype %] >- [% IF !noItemTypeImages && itemtype.image_location('intranet') %] >- <img src="[% itemtype.image_location('intranet') | html %]" alt="[% itemtype.translated_description | html %]" title="[% itemtype.translated_description | html %]" /> >- [% END %] >- <span class="itypedesc itypetext">[% itemtype.translated_description | html %]</span> >- </td> >- [% END %] >- <td class="location">[% UNLESS ( singlebranchmode ) %][% Branches.GetName( item.holdingbranch ) | html %] [% END %]</td> >- <td class="homebranch"> >- <span class="homebranchdesc">[% Branches.GetName(item.homebranch) | html %]</span> >- <span class="shelvingloc"> >- [%# If permanent location is defined, show description or code and %] >- [%# display current location in parentheses. If not, display current location. %] >- [%# Note that permanent location is a code, and location may be an authval. %] >- [% IF item.permanent_location %] >- [% SET permloc_authval = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.permanent_location ) %] >- [% permloc_authval | html %] >- [% SET item_location = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.location ) %] >- [% IF item_location AND item_location != permloc_authval AND item.location != item.permanent_location %] >- ([% item_location | html %]) >+ [% IF shelves.count %] >+ <span class="results_summary"><span class="label">Lists that include this title: </span> >+ [% FOREACH s IN shelves %] >+ <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a> >+ [% IF ( loop.last ) %][% ELSE %]|[% END %] > [% END %] >- [% ELSE %] >- [% item_location | html %] >+ </span> > [% END %] >- </span> >- </td> >- [% IF ( itemdata_ccode ) %]<td>[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => item.ccode ) | html %]</td>[% END %] >- [% IF Koha.Preference('EnableItemGroups') %]<td class="item_group">[% item.object.item_group.description | html %]</td>[% END %] >- <td class="itemcallnumber">[% IF ( item.itemcallnumber ) %] [% item.itemcallnumber | html %][% END %]</td> >- [% IF ( volinfo ) %] >- [% SET serial = item.serial %] >- [% IF itemdata_publisheddate #If there is at least one published date, use it for sorting %] >- <td class="enumchron" data-order="[% serial.publisheddate | html %]"> >- [% ELSE %] >- <td class="enumchron"> >- [% END %] >- [% IF ( itemdata_enumchron ) %] >- [% IF item.enumchron && serial.serialseq %] >- <span class="enum">[% item.enumchron | html %]</span> >- [% IF ( serial.serialseq && item.enumchron != serial.serialseq ) %] >- <span class="sep"> -- </span> >- <span class="serialseq">[% serial.serialseq | html %]</span> >+ >+ [% IF ( TagsEnabled && TagsShowOnDetail && TagLoop ) %] >+ <span class="results_summary"><span class="label">Tags:</span> >+ [% FOREACH TagLoo IN TagLoop %] >+ [% IF ( CAN_user_tools_moderate_tags ) %] >+ <a href="/cgi-bin/koha/tags/list.pl?tag=[% TagLoo.term |uri %]">[% TagLoo.term | html %]</a> >+ [% ELSE %] >+ [% TagLoo.term | html %] >+ [% END %] >+ <span class="weight">([% TagLoo.weight_total | html %])</span>[% IF ( loop.last ) %][% ELSE %], [% END %] > [% END %] >- [% ELSIF item.enumchron %] >- <span class="enum">[% item.enumchron | html %]</span> >- [% ELSIF item.serialseq %] >- <span class="serialseq">[% serial.serialseq | html %]</span> >- [% END %] >- [% IF serial.publisheddate %] >- <span class="pubdate">([% serial.publisheddate | $KohaDates %])</span> >- [% END %] >+ </span> > [% END %] >+ >+ <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 %]&viewas=html" title="MARC" class="previewMARC">Show</a> > </span> >- </td> >- [% END %] >- <td class="status"> >- >- [% IF item.object.checkout %] >- [% IF item.object.checkout.onsite_checkout %] >- <span>Currently in local use >- [% ELSE %] >- <span class="datedue">Checked out >- [% END %] >- [% IF item.can_be_edited %] >- [% IF item.object.checkout.onsite_checkout %] >- by >- [% ELSE %] >- to >- [% END %] >- [% INCLUDE 'patron-title.inc' patron=item.object.checkout.patron hide_patron_infos_if_needed=1 %] >- [% END %] >- : due [% item.object.checkout.date_due | $KohaDates as_due_date => 1 %] >+ >+ <span id="catalogue_detail_framework" class="results_summary"> >+ <span class="label">MARC framework:</span> >+ <span class="frameworkcode">[% Frameworks.GetName(biblio.frameworkcode) | html %]</span> > </span> >- [% ELSIF ( transfer = item.object.get_transfer ) %] >- [% IF (transfer.datesent) %] >- <span class="intransit">In transit from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% transfer.datesent | $KohaDates %]</span> >- [% ELSE %] >- <span class="transitrequested">Transit pending from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% item.transfer.daterequested | $KohaDates %]</span> > >+ [% IF !item_level_itypes || Koha.Preference("BiblioItemtypeInfo") %] >+ <span class="results_summary itemtype"> >+ <span class="label">Itemtype:</span> >+ [% IF ( !noItemTypeImages && imageurl ) %] >+ <img src="[% imageurl | html %]" alt="" /> >+ [% END %] >+ [% IF ( description ) %] >+ <span class="itypetext">[% description | html %]</span> >+ [% ELSE %] >+ <span class="itypetext">[% itemtype | html %]</span> >+ [% END %] >+ </span> > [% END %] >- [% END %] > >- [% IF ( item.itemlost ) %] >- [% SET itemlost_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => item.itemlost ) %] >- [% IF itemlostloop %] >- <span class="lost">[% itemlost_description | html %]</span> >- [% ELSE %] >- <span class="lost">Unavailable (lost or missing)</span> >+ [% IF ( Koha.Preference('SearchEngine') == 'Elasticsearch' ) %] >+ <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> > [% END %] >- [% END %] > >- [% IF ( item.withdrawn ) %] >- [% SET withdrawn_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => item.withdrawn ) %] >- [% IF withdrawn_description %] >- <span class="wdn">[% withdrawn_description | html %]</span> >- [% ELSE %] >- <span class="wdn">Withdrawn</span> >+ [% IF ( holdcount ) %] >+ <span class="results_summary"> >+ <span class="label">Holds:</span> >+ <span class="number_box"> >+ [% IF CAN_user_reserveforothers_place_holds %] >+ <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber | uri %]">[% holdcount | html %]</a> >+ [% ELSE %] >+ <span>[% holdcount | html %]</span> >+ [% END %] >+ </span> >+ </span> > [% END %] >- [% END %] > >- [% IF ( item.damaged ) %] >- [% SET damaged_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => item.damaged ) %] >- [% IF damaged_description %] >- <span class="dmg">[% damaged_description | html %]</span> >- [% ELSE %] >- <span class="dmg">Damaged</span> >+ [% IF illrequests.count %] >+ <span class="results_summary"> >+ <span class="label">ILL requests:</span> >+ [% IF CAN_user_ill %] >+ [% FOREACH ill IN illrequests %] >+ <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 %] >+ [% END %] >+ [% ELSE %] >+ [% FOREACH ill IN illrequests %] >+ <span>Request [% ill.illrequest_id | html %]</span>[% IF ! loop.last %], [% END %] >+ [% END %] >+ [% END %] >+ </span> > [% END %] >- [% END %] > >- [% IF ( item.notforloan || item.itemtype.notforloan ) %] >- <span class="notforloan">Not for loan >- [% SET not_for_loan_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => item.notforloan ) %] >- [% IF not_for_loan_description %] >- <span class="reason">([% not_for_loan_description | html %])</span> >+ [% IF ( article_requests_count = Biblio.ArticleRequestsActiveCount( biblionumber ) ) %] >+ <span class="results_summary"> >+ <span class="label">Article requests:</span> >+ <span class="number_box"> >+ <a href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% biblionumber | uri %]">[% article_requests_count | html %]</a> >+ </span> >+ </span> > [% END %] >- </span> >- [% END %] > >- [% SET hold = item.first_hold %] >- [% IF hold %] >- [% IF hold.waitingdate %] >- <span class="waitingat">Waiting at [% Branches.GetName( hold.branchcode ) | html %][% IF ( hold.desk_id ) %], [% hold.desk.desk_name | html %][% END %] since [% hold.waitingdate | $KohaDates %].</span> >- [% IF canreservefromotherbranches AND ( hold.waitingdate OR hold.priority == 1 ) %] >- <span class="heldfor">Hold for:</span> >- [% INCLUDE 'patron-title.inc' patron=hold.borrower hide_patron_infos_if_needed=1 %] >- [% END %] >- [% ELSE %] >- <span class="holdonitem">There is an item level hold on this item (priority = [% hold.priority | html %]).</span> >+ [% IF course_reserves %] >+ <span class="results_summary"> >+ <span class="label">Courses that have reserved this title: </span> >+ [% FOREACH c IN course_reserves %] >+ <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% c.course_id | uri %]">[% c.course.course_name | html %]</a> >+ [% IF ( loop.last ) %][% ELSE %]|[% END %] >+ [% END %] >+ </span> > [% END %] >- [% END %] >+ </div> [%# .page-section %] > >- [% IF Koha.Preference('UseRecalls') %] >- [% SET recall = item.object.recall %] >- [% IF recall %] >- [% IF recall.waiting_date %] >- <span>Waiting at [% Branches.GetName( recall.pickup_library_id ) | html %] since [% recall.waiting_date | $KohaDates %]</span> >- [% ELSE %] >- [% patron_link = BLOCK %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% recall.patron_id | uri %]">[% recall.patron.firstname | html %] [% recall.patron.surname | html %] ([% recall.patron.cardnumber | html %])</a>[% END %] >- <span>recalled by [% patron_link| $raw %] on [% recall.created_date | $KohaDates %]</span> >- [% END %] >- [% END %] >- [% END %] >+ [% IF ( CoverImagePlugins || AmazonCoverImages || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %] >+ </div> >+ <div class="col-xs-3 bookcoverimg"> >+ <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]"> >+ [% IF ( LocalCoverImages ) %] >+ [% IF localimages.count %] >+ [% FOREACH image IN localimages %] >+ <div class="cover-image local-coverimg"> >+ <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> >+ <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]" /> >+ </a> >+ <div class="hint">Local cover image</div> >+ </div> >+ [% END %] >+ [% END %] >+ [% END %] > >- [% UNLESS ( item.notforloan || item.itemtype.notforloan || item.onloan || item.itemlost || item.withdrawn || item.damaged || item.transfer || hold || ( Koha.Preference('UseRecalls') && recall ) ) %] >- <span>Available</span> >- [% END %] >+ [% IF ( AmazonCoverImages && normalized_isbn) %] >+ <div class="cover-image" id="amazon-bookcoverimg"> >+ <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image"> >+ <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"/> >+ </a> >+ <div class="hint">Image from Amazon.com</div> >+ </div> >+ [% END %] > >- [% IF ( item.restricted ) %] >- <span class="restricted">([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.restricted', authorised_value => item.restricted ) | html %])</span> >- [% END %] >+ [% IF ( IntranetCoce && CoceProviders && normalized_isbn ) %] >+ [% coce_id = normalized_ean || normalized_isbn %] >+ <div class="cover-image coce-coverimg"> >+ [% IF ( coce_id ) %] >+ <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a> >+ [% ELSE %] >+ <span class="no-image">No cover image available</span> >+ [% END %] >+ <div class="hint">Image from Coce</div> >+ </div> >+ [% END %] > >- [% IF ( item.bundle_host ) %] >- <span class="bundled">In bundle: [% INCLUDE 'biblio-title.inc' biblio = item.bundle_host.biblio link = 1 %]</span> >- [% END %] >+ [% IF ( SyndeticsCovers ) %] >+ [% IF ( content_identifier_exists ) %] >+ <div class="cover-image" id="syndetics-bookcoverimg"> >+ <a href="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/LC.GIF&client=[% Koha.Preference('SyndeticsClientCode') | url %]&type=xw10&upc=[% normalized_upc | url %]&oclc=[% normalized_oclc | url %]" title="Syndetics cover image"> >+ <img src="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/[% Koha.Preference('SyndeticsCoverImageSize') | url %].GIF&client=[% Koha.Preference('SyndeticsClientCode') | url %]&type=xw10&upc=[% normalized_upc | url %]&oclc=[% normalized_oclc | url %]" alt="" class="thumbnail" /> >+ </a> >+ <div class="hint">Image from Syndetics</div> >+ </div> >+ [% ELSE %] >+ <span class="no-image">No cover image available</span> >+ [% END %] >+ [% END %] > >- </td> >- <td class="datelastseen" data-order="[% item.datelastseen | html %]">[% item.datelastseen | $KohaDates with_hours => 1 %]</td> >- <td class="issues" data-order="[% item.issues || 0 | html %]">[% item.issues || 0 | html %]</td> >- <td class="renewals" data-order="[% item.renewals || 0 | html %]">[% item.renewals || 0 | html %]</td> >- <td class="dateaccessioned" data-order="[% item.dateaccessioned | html %]">[% item.dateaccessioned | $KohaDates %]</td> >- <td class="datelastborrowed" data-order="[% item.datelastborrowed | html %]">[% item.datelastborrowed | $KohaDates %]</td> >- <td><a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% item.itemnumber | uri %]&biblionumber=[% item.biblionumber | uri %]&bi=[% item.biblioitemnumber | uri %]#item[% item.itemnumber | uri %]">[% item.barcode | html %]</a></td> >- [% IF ( itemdata_uri ) %] >- [% IF item.uri.split(' \| ').size > 1 %] >- <td class="uri"> >- [% FOREACH uri IN item.uri.split(' \| ') %]<a href="[% uri | url %]">[% uri | html %]</a><br>[% END %] >- </td> >+ [% IF Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL') %] >+ [% SET custom_cover_image_url = biblio.custom_cover_image_url %] >+ [% IF custom_cover_image_url %] >+ <div class="cover-image" id="custom-coverimg"> >+ <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image"> >+ <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" /> >+ </a> >+ <div class="hint">Custom cover image</div> >+ </div> >+ [% END %] >+ [% END %] >+ </div> <!-- /.cover-slider --> >+ </div> <!-- /.bookcoverimg.col-xs-3 --> > [% ELSE %] >- <td class="uri"> >- [% IF item.uri %] >- <a href="[% item.uri | url %]">[% IF Koha.Preference('URLLinkText') %][% Koha.Preference('URLLinkText') | html %][% ELSE %]Link to resource[% END %]</a> >+ </div> <!-- /.col-xs-* --> >+ [% END # /IF ( AmazonCoverImages, etc ) %] >+ </div> >+ >+ <div id="bibliodetails" class="toptabs"> >+ <ul class="nav nav-tabs" role="tablist"> >+ [% IF (SeparateHoldings) %] >+ <li role="presentation"> >+ <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">[% Branches.GetLoggedInBranchname | html %] holdings ([% itemloop.size() || 0 | html %])</a> >+ </li> >+ <li role="presentation"> >+ <a href="#otherholdings" aria-controls="otherholdings" role="tab" data-toggle="tab">Other holdings ([% otheritemloop.size() || 0 | html %])</a> >+ </li> >+ [% ELSE %] >+ <li role="presentation"> >+ <a href="#holdings" aria-controls="holdings" role="tab" data-toggle="tab">Holdings ([% itemloop.size() || 0 | html %])</a> >+ </li> >+ [% END %] >+ [% IF Koha.Preference('EnableItemGroups') %] >+ <li role="presentation"> >+ <a href="#item_groups" aria-controls="item_groups" role="tab" data-toggle="tab">Item groups</a> >+ </li> >+ [% END %] >+ [% 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 %] >+ [% 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 %] >+ [% IF ( subscriptionsnumber ) %] >+ <li role="presentation"> >+ <a href="#subscriptions" aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a> >+ </li> >+ [% END %] >+ [% 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 %] >+ [% IF suggestions.count %] >+ <li role="presentation"> >+ <a href="#suggestion_details" aria-controls="suggestion_details" role="tab" data-toggle="tab">Suggestion details</a> >+ </li> >+ [% END %] >+ [% IF ( FRBRizeEditions ) %] >+ [% IF ( XISBNS ) %] >+ <li role="presentation"> >+ <a href="#editions" aria-controls="editions" role="tab" data-toggle="tab">Editions</a> >+ </li> > [% END %] >- </td> >- [% END %] >- [% END %] >- [% IF ( itemdata_copynumber ) %] >- <td class="copynumber">[% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.copynumber', authorised_value => item.copynumber ) | html %]</td> >- [% END %] >- [% IF ( itemdata_stocknumber ) %] >- <td class="stocknumber">[% item.stocknumber | html %]</td> >- [% END %] >- [% IF materials %] >- <td class="materials"> [% item.materials | html %] </td> >- [% END %] >- [% IF ( itemdata_itemnotes ) %] >- <td><div class="itemnotes">[% item.object.itemnotes.replace('\n','<br />') | $raw %]</div></td> >- [% END %] >- [% IF itemdata_nonpublicnotes %] >- <td class="nonpublicnote">[% item.itemnotes_nonpublic | html %]</td> >- [% END %] >- [% IF ( hostrecords ) %] >- <td>[% IF ( item.hostbiblionumber) %]<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item.hostbiblionumber | uri %]" >[% item.hosttitle | html %]</a>[% END %]</td> >- [% END %] >- [% IF ( analyze ) %] >- <td> >- [% IF ( item.countanalytics ) %] >- <a href="/cgi-bin/koha/catalogue/search.pl?idx=hi&q=[% item.itemnumber | uri %]">[% item.countanalytics | html %] analytics</a> > [% END %] >- </td> >- [% END %] >- [% IF ( analyze ) %] >- <td><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?hostbiblionumber=[% item.biblionumber | uri %]&hostitemnumber=[% item.itemnumber | uri %]">Create analytics</a></td> >- [% END %] >- >- [% IF ShowCourseReserves %] >- <td> >- [% IF item.course_reserves %] >- [% FOREACH r IN item.course_reserves %] >- [% IF r.course.enabled == 'yes' %] >- <p> >- <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% r.course.course_id | uri %]"> >- [% r.course.course_name | html %] >- <!--[% IF r.course.course_number %] [% r.course.course_number | html %] [% END %]--> >- [% IF r.course.section %] [% r.course.section | html %] [% END %] >- [% IF r.course.term %] [% AuthorisedValues.GetByCode( 'TERM', r.course.term ) | html %] [% END %] >- </a> >- </p> >- [% END %] >- [% END %] >- [% END %] >- </td> >- [% END %] >- >- [% IF ( SpineLabelShowPrintOnBibDetails ) %] >- <td><a class="btn btn-default btn-xs print-label" href="/cgi-bin/koha/labels/spinelabel-print.pl?barcode=[% item.barcode | uri %]"><i class="fa fa-print"></i> Print label</a></td> >- [% END %] >+ [% 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 %] >+ [% IF ( LocalCoverImages ) %] >+ <li role="presentation"> >+ <a href="#images" aria-controls="images" role="tab" data-toggle="tab">Images ([% localimages.count || 0 | html %])</a> >+ </li> >+ [% END %] >+ [% IF HTML5MediaEnabled && HTML5MediaSets.size %] >+ <li id="media_tab" role="presentation"><a href="#html5media" aria-controls="html5media" role="tab" data-toggle="tab">Play media</a></li> >+ [% END %] >+ [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %] >+ <li class="NovelistSelect" style="display:none;" role="presentation"> >+ <a href="#NovelistSelect" aria-controls="NovelistSelect" role="tab" data-toggle="tab">NoveList Select</a> >+ </li> >+ [% END %] >+ [% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %] >+ <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> >+ [% END %] >+ </ul> >+ >+ <div class="tab-content"> >+ [% items_table_block_iter = 0 %] >+ [% BLOCK items_table %] >+ [% items_table_block_iter = items_table_block_iter + 1 %] >+ <div class="[% tab | html %]_table_table_controls"> >+ [% IF (StaffDetailItemSelection) %] >+ | <a href="#" class="SelectAll" data-tab="[% tab | html %]"><i class="fa fa-check"></i> Select all</a> | >+ <a href="#" class="ClearAll" data-tab="[% tab | html %]"><i class="fa fa-remove"></i> Clear all</a> >+ <span class="itemselection_actions"> >+ | Actions: >+ [% IF CAN_user_tools_items_batchdel %] >+ <a class="itemselection_action_delete"><i class="fa fa-trash"></i> Delete selected items</a> >+ [% END %] >+ [% IF CAN_user_tools_items_batchmod %] >+ <a class="itemselection_action_modify"><i class="fa fa-pencil"></i> Modify selected items</a> >+ [% END %] >+ [% IF CAN_user_editcatalogue_manage_item_groups && biblio.item_groups.count %] >+ <a class="itemselection_action_item_group_set" href="#"><i class="fa fa-book"></i> Add/move to item group</a> >+ <a class="itemselection_action_item_group_unset" href="#"><i class="fa fa-unlink"></i> Remove from item group</a> >+ [% END %] >+ </span> >+ [% END %] >+ </div> > >- [% IF CAN_user_editcatalogue_edit_items %] >- <td class="actions"> >- [% IF item.can_be_edited %] >- [% IF Koha.Preference('LocalCoverImages') OR Koha.Preference('OPACLocalCoverImages') %] >- <div class="btn-group"> >- <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a><a class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a> >- <ul class="dropdown-menu pull-right"> >- <li><a href="/cgi-bin/koha/tools/upload-cover-image.pl?itemnumber=[% item.itemnumber | uri %]&filetype=image"><i class="fa fa-upload"></i> Upload image</a></li> >- </ul> >+ <table class="items_table" id="[% tab | html %]_table"> >+ <thead> >+ <tr> >+ [% IF (StaffDetailItemSelection) %] >+ <th id="[% tab | html %]_checkbox" data-colname="[% tab | html %]_checkbox" class="NoSort"></th> >+ [% END %] >+ [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %] >+ <th id="[% tab | html %]_cover_image" data-colname="[% tab | html %]_cover_image">Cover image</th> >+ [% END %] >+ [% IF ( item_level_itypes ) %] >+ <th id="[% tab | html %]_itype" data-colname="[% tab | html %]_itype">Item type</th> >+ [% END %] >+ <th id="[% tab | html %]_holdingbranch" data-colname="[% tab | html %]_holdingbranch">Current library</th> >+ <th id="[% tab | html %]_homebranch" data-colname="[% tab | html %]_homebranch">Home library</th> >+ [% IF ( itemdata_ccode ) %] >+ <th id="[% tab | html %]_ccode" data-colname="[% tab | html %]_ccode">Collection</th> >+ [% END %] >+ [% IF Koha.Preference('EnableItemGroups') %] >+ <th id="[% tab | html %]_item_group" data-colname="[% tab | html %]_item_group">Item group</th> >+ [% END %] >+ <th id="[% tab | html %]_itemcallnumber" data-colname="[% tab | html %]_itemcallnumber">Call number</th> >+ [% IF volinfo %] >+ <th id="[% tab | html %]_enumchron" data-colname="[% tab | html %]_enumchron">Serial enumeration / chronology</th> >+ [% END %] >+ <th id="[% tab | html %]_status" data-colname="[% tab | html %]_status">Status</th> >+ <th id="[% tab | html %]_lastseen" data-colname="[% tab | html %]_lastseen">Last seen</th> >+ <th id="[% tab | html %]_issues" data-colname="[% tab | html %]_issues">Checkouts</th> >+ <th id="[% tab | html %]_renewals" data-colname="[% tab | html %]_renewals">Renewals</th> >+ <th id="[% tab | html %]_dateaccessioned" data-colname="[% tab | html %]_dateaccessioned">Date accessioned</th> >+ <th id="[% tab | html %]_datelastborrowed" data-colname="[% tab | html %]_datelastborrowed">Date last borrowed</th> >+ <th id="[% tab | html %]_barcode" data-colname="[% tab | html %]_barcode">Barcode</th> >+ [% IF ( itemdata_uri ) %] >+ <th id="[% tab | html %]_uri" data-colname="[% tab | html %]_uri">URL</th> >+ [% END %] >+ [% IF ( itemdata_copynumber ) %] >+ <th id="[% tab | html %]_copynumber" data-colname="[% tab | html %]_copynumber">Copy number</th> >+ [% END %] >+ [% IF ( itemdata_stocknumber ) %] >+ <th id="[% tab | html %]_stocknumber" data-colname="[% tab | html %]_stocknumber">Inventory number</th> >+ [% END %] >+ [% IF materials %] >+ <th id="[% tab | html %]_materials" data-colname="[% tab | html %]_materials">Materials specified</th> >+ [% END %] >+ [% IF ( itemdata_itemnotes ) %] >+ <th id="[% tab | html %]_itemnotes" data-colname="[% tab | html %]_itemnotes">Public notes</th> >+ [% END %] >+ [% IF ( itemdata_nonpublicnotes ) %] >+ <th id="[% tab | html %]_itemnotes_nonpublic" data-colname="[% tab | html %]_itemnotes_nonpublic">Non-public notes</th> >+ [% END %] >+ [% IF ( hostrecords ) %] >+ <th id="[% tab | html %]_hostrecord" data-colname="[% tab | html %]_hostrecord">Host records</th> >+ [% END %] >+ [% IF ( analyze ) %] >+ <th id="[% tab | html %]_usedin" data-colname="[% tab | html %]_usedin">Used in</th><th></th> >+ [% END %] >+ [% IF ( ShowCourseReserves ) %] >+ <th id="[% tab | html %]_course_reserves" data-colname="[% tab | html %]_course_reserves">Course reserves</th> >+ [% END %] >+ [% IF ( SpineLabelShowPrintOnBibDetails ) %] >+ <th id="[% tab | html %]_spinelabel" data-colname="[% tab | html %]_spinelabel" class="NoSort">Spine label</th> >+ [% END %] >+ [% IF ( CAN_user_editcatalogue_edit_items ) %] >+ <th id="[% tab | html %]_actions" data-colname="[% tab | html %]_actions"class="NoSort noExport"> </th> >+ [% END %] >+ </tr> >+ </thead> >+ <tbody> >+ [% FOREACH item IN items %] >+ <tr id="item_[% item.itemnumber | html %]" data-itemnumber="[% item.itemnumber | html %]" data-duedate="[% item.datedue | html %]"> >+ [% IF (StaffDetailItemSelection) %] >+ <td style="text-align:center;vertical-align:middle"> >+ [% IF item.can_be_edited %] >+ <input type="checkbox" value="[% item.itemnumber | html %]" name="itemnumber" /> >+ [% END %] >+ </td> >+ [% END %] >+ [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %] >+ <td class="cover"> >+ <div class="bookcoverimg"> >+ <div class="cover-slider"> >+ [% FOREACH image IN item.object.cover_images %] >+ <div class="cover-image local-coverimg"> >+ <a href="/cgi-bin/koha/catalogue/image.pl?itemnumber=[% image.itemnumber | uri %]&imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> >+ <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" data-link="/cgi-bin/koha/catalogue/imageviewer.pl?itemnumber=[% item.itemnumber | uri %]&imagenumber=[% image.imagenumber | uri %]" /> >+ </a> >+ </div> >+ [% END %] >+ </div> >+ </div> >+ </td> >+ [% END %] >+ >+ [% IF ( item_level_itypes ) %] >+ <td class="itype"> >+ [% SET itemtype = item.itemtype %] >+ [% IF !noItemTypeImages && itemtype.image_location('intranet') %] >+ <img src="[% itemtype.image_location('intranet') | html %]" alt="[% itemtype.translated_description | html %]" title="[% itemtype.translated_description | html %]" /> >+ [% END %] >+ <span class="itypedesc itypetext">[% itemtype.translated_description | html %]</span> >+ </td> >+ [% END %] >+ <td class="location"> >+ [% UNLESS ( singlebranchmode ) %] >+ [% Branches.GetName( item.holdingbranch ) | html %] >+ [% END %] >+ </td> >+ <td class="homebranch"> >+ <span class="homebranchdesc">[% Branches.GetName(item.homebranch) | html %]</span> >+ <span class="shelvingloc"> >+ [%# If permanent location is defined, show description or code and %] >+ [%# display current location in parentheses. If not, display current location. %] >+ [%# Note that permanent location is a code, and location may be an authval. %] >+ [% IF item.permanent_location %] >+ [% SET permloc_authval = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.permanent_location ) %] >+ [% permloc_authval | html %] >+ [% SET item_location = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => item.location ) %] >+ [% IF item_location AND item_location != permloc_authval AND item.location != item.permanent_location %] >+ ([% item_location | html %]) >+ [% END %] >+ [% ELSE %] >+ [% item_location | html %] >+ [% END %] >+ </span> >+ </td> >+ [% IF ( itemdata_ccode ) %] >+ <td> >+ [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => item.ccode ) | html %] >+ </td> >+ [% END %] >+ [% IF Koha.Preference('EnableItemGroups') %] >+ <td class="item_group"> >+ [% item.object.item_group.description | html %] >+ </td> >+ [% END %] >+ <td class="itemcallnumber"> >+ [% IF ( item.itemcallnumber ) %] >+ [% item.itemcallnumber | html %] >+ [% END %] >+ </td> >+ [% IF ( volinfo ) %] >+ [% SET serial = item.serial %] >+ [% IF itemdata_publisheddate #If there is at least one published date, use it for sorting %] >+ <td class="enumchron" data-order="[% serial.publisheddate | html %]"> >+ [% ELSE %] >+ <td class="enumchron"> >+ [% END %] >+ [% IF ( itemdata_enumchron ) %] >+ [% IF item.enumchron && serial.serialseq %] >+ <span class="enum">[% item.enumchron | html %]</span> >+ [% IF ( serial.serialseq && item.enumchron != serial.serialseq ) %] >+ <span class="sep"> -- </span> >+ <span class="serialseq">[% serial.serialseq | html %]</span> >+ [% END %] >+ [% ELSIF item.enumchron %] >+ <span class="enum">[% item.enumchron | html %]</span> >+ [% ELSIF item.serialseq %] >+ <span class="serialseq">[% serial.serialseq | html %]</span> >+ [% END %] >+ [% IF serial.publisheddate %] >+ <span class="pubdate">([% serial.publisheddate | $KohaDates %])</span> >+ [% END %] >+ [% END %] >+ </td> >+ [% END %] >+ >+ <td class="status"> >+ [% IF item.object.checkout %] >+ [% IF item.object.checkout.onsite_checkout %] >+ <span>Currently in local use >+ [% ELSE %] >+ <span class="datedue">Checked out >+ [% END %] >+ >+ [% IF item.can_be_edited %] >+ [% IF item.object.checkout.onsite_checkout %] >+ by >+ [% ELSE %] >+ to >+ [% END %] >+ [% INCLUDE 'patron-title.inc' patron=item.object.checkout.patron hide_patron_infos_if_needed=1 %] >+ [% END %] >+ : due [% item.object.checkout.date_due | $KohaDates as_due_date => 1 %] >+ </span> >+ [% ELSIF ( transfer = item.object.get_transfer ) %] >+ [% IF (transfer.datesent) %] >+ <span class="intransit">In transit from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% transfer.datesent | $KohaDates %]</span> >+ [% ELSE %] >+ <span class="transitrequested">Transit pending from [% Branches.GetName( transfer.frombranch ) | html %] to [% Branches.GetName( transfer.tobranch ) | html %] since [% item.transfer.daterequested | $KohaDates %]</span> >+ >+ [% END %] >+ [% END %] >+ >+ [% IF ( item.itemlost ) %] >+ [% SET itemlost_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.itemlost', authorised_value => item.itemlost ) %] >+ [% IF itemlostloop %] >+ <span class="lost">[% itemlost_description | html %]</span> >+ [% ELSE %] >+ <span class="lost">Unavailable (lost or missing)</span> >+ [% END %] >+ [% END %] >+ >+ [% IF ( item.withdrawn ) %] >+ [% SET withdrawn_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.withdrawn', authorised_value => item.withdrawn ) %] >+ [% IF withdrawn_description %] >+ <span class="wdn">[% withdrawn_description | html %]</span> >+ [% ELSE %] >+ <span class="wdn">Withdrawn</span> >+ [% END %] >+ [% END %] >+ >+ [% IF ( item.damaged ) %] >+ [% SET damaged_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.damaged', authorised_value => item.damaged ) %] >+ [% IF damaged_description %] >+ <span class="dmg">[% damaged_description | html %]</span> >+ [% ELSE %] >+ <span class="dmg">Damaged</span> >+ [% END %] >+ [% END %] >+ >+ [% IF ( item.notforloan || item.itemtype.notforloan ) %] >+ <span class="notforloan">Not for loan >+ [% SET not_for_loan_description = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.notforloan', authorised_value => item.notforloan ) %] >+ [% IF not_for_loan_description %] >+ <span class="reason">([% not_for_loan_description | html %])</span> >+ [% END %] >+ </span> >+ [% END %] >+ >+ [% SET hold = item.first_hold %] >+ [% IF hold %] >+ [% IF hold.waitingdate %] >+ <span class="waitingat">Waiting at [% Branches.GetName( hold.branchcode ) | html %][% IF ( hold.desk_id ) %], [% hold.desk.desk_name | html %][% END %] since [% hold.waitingdate | $KohaDates %].</span> >+ [% IF canreservefromotherbranches AND ( hold.waitingdate OR hold.priority == 1 ) %] >+ <span class="heldfor">Hold for:</span> >+ [% INCLUDE 'patron-title.inc' patron=hold.borrower hide_patron_infos_if_needed=1 %] >+ [% END %] >+ [% ELSE %] >+ <span class="holdonitem">There is an item level hold on this item (priority = [% hold.priority | html %]).</span> >+ [% END %] >+ [% END %] >+ >+ [% IF Koha.Preference('UseRecalls') %] >+ [% SET recall = item.object.recall %] >+ [% IF recall %] >+ [% IF recall.waiting_date %] >+ <span>Waiting at [% Branches.GetName( recall.pickup_library_id ) | html %] since [% recall.waiting_date | $KohaDates %]</span> >+ [% ELSE %] >+ [% patron_link = BLOCK %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% recall.patron_id | uri %]">[% recall.patron.firstname | html %] [% recall.patron.surname | html %] ([% recall.patron.cardnumber | html %])</a>[% END %] >+ <span>recalled by [% patron_link| $raw %] on [% recall.created_date | $KohaDates %]</span> >+ [% END %] >+ [% END %] >+ [% END %] >+ >+ [% UNLESS ( item.notforloan || item.itemtype.notforloan || item.onloan || item.itemlost || item.withdrawn || item.damaged || item.transfer || hold || ( Koha.Preference('UseRecalls') && recall ) ) %] >+ <span>Available</span> >+ [% END %] >+ >+ [% IF ( item.restricted ) %] >+ <span class="restricted">([% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.restricted', authorised_value => item.restricted ) | html %])</span> >+ [% END %] >+ >+ [% IF ( item.bundle_host ) %] >+ <span class="bundled">In bundle: [% INCLUDE 'biblio-title.inc' biblio = item.bundle_host.biblio link = 1 %]</span> >+ [% END %] >+ </td> >+ >+ <td class="datelastseen" data-order="[% item.datelastseen | html %]"> >+ [% item.datelastseen | $KohaDates with_hours => 1 %] >+ </td> >+ <td class="issues" data-order="[% item.issues || 0 | html %]"> >+ [% item.issues || 0 | html %] >+ </td> >+ <td class="renewals" data-order="[% item.renewals || 0 | html %]"> >+ [% item.renewals || 0 | html %] >+ </td> >+ <td class="dateaccessioned" data-order="[% item.dateaccessioned | html %]"> >+ [% item.dateaccessioned | $KohaDates %] >+ </td> >+ <td class="datelastborrowed" data-order="[% item.datelastborrowed | html %]"> >+ [% item.datelastborrowed | $KohaDates %] >+ </td> >+ <td> >+ <a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% item.itemnumber | uri %]&biblionumber=[% item.biblionumber | uri %]&bi=[% item.biblioitemnumber | uri %]#item[% item.itemnumber | uri %]">[% item.barcode | html %]</a> >+ </td> >+ [% IF ( itemdata_uri ) %] >+ [% IF item.uri.split(' \| ').size > 1 %] >+ <td class="uri"> >+ [% FOREACH uri IN item.uri.split(' \| ') %]<a href="[% uri | url %]">[% uri | html %]</a><br>[% END %] >+ </td> >+ [% ELSE %] >+ <td class="uri"> >+ [% IF item.uri %] >+ <a href="[% item.uri | url %]">[% IF Koha.Preference('URLLinkText') %][% Koha.Preference('URLLinkText') | html %][% ELSE %]Link to resource[% END %]</a> >+ [% END %] >+ </td> >+ [% END %] >+ [% END %] >+ [% IF ( itemdata_copynumber ) %] >+ <td class="copynumber"> >+ [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.copynumber', authorised_value => item.copynumber ) | html %] >+ </td> >+ [% END %] >+ [% IF ( itemdata_stocknumber ) %] >+ <td class="stocknumber">[% item.stocknumber | html %]</td> >+ [% END %] >+ [% IF materials %] >+ <td class="materials"> [% item.materials | html %] </td> >+ [% END %] >+ [% IF ( itemdata_itemnotes ) %] >+ <td> >+ <div class="itemnotes">[% item.object.itemnotes.replace('\n','<br />') | $raw %]</div> >+ </td> >+ [% END %] >+ [% IF itemdata_nonpublicnotes %] >+ <td class="nonpublicnote">[% item.itemnotes_nonpublic | html %]</td> >+ [% END %] >+ [% IF ( hostrecords ) %] >+ <td> >+ [% IF ( item.hostbiblionumber) %] >+ <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% item.hostbiblionumber | uri %]" >[% item.hosttitle | html %]</a> >+ [% END %] >+ </td> >+ [% END %] >+ [% IF ( analyze ) %] >+ <td> >+ [% IF ( item.countanalytics ) %] >+ <a href="/cgi-bin/koha/catalogue/search.pl?idx=hi&q=[% item.itemnumber | uri %]">[% item.countanalytics | html %] analytics</a> >+ [% END %] >+ </td> >+ [% END %] >+ [% IF ( analyze ) %] >+ <td><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?hostbiblionumber=[% item.biblionumber | uri %]&hostitemnumber=[% item.itemnumber | uri %]">Create analytics</a></td> >+ [% END %] >+ >+ [% IF ShowCourseReserves %] >+ <td> >+ [% IF item.course_reserves %] >+ [% FOREACH r IN item.course_reserves %] >+ [% IF r.course.enabled == 'yes' %] >+ <p> >+ <a href="/cgi-bin/koha/course_reserves/course-details.pl?course_id=[% r.course.course_id | uri %]"> >+ [% r.course.course_name | html %] >+ <!--[% IF r.course.course_number %] [% r.course.course_number | html %] [% END %]--> >+ [% IF r.course.section %] [% r.course.section | html %] [% END %] >+ [% IF r.course.term %] [% AuthorisedValues.GetByCode( 'TERM', r.course.term ) | html %] [% END %] >+ </a> >+ </p> >+ [% END %] >+ [% END %] >+ [% END %] >+ </td> >+ [% END %] >+ >+ [% IF ( SpineLabelShowPrintOnBibDetails ) %] >+ <td> >+ <a class="btn btn-default btn-xs print-label" href="/cgi-bin/koha/labels/spinelabel-print.pl?barcode=[% item.barcode | uri %]"><i class="fa fa-print"></i> Print label</a> >+ </td> >+ [% END %] >+ >+ [% IF CAN_user_editcatalogue_edit_items %] >+ <td class="actions"> >+ [% IF item.can_be_edited %] >+ [% IF Koha.Preference('LocalCoverImages') OR Koha.Preference('OPACLocalCoverImages') %] >+ <div class="btn-group"> >+ <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a><a class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a> >+ <ul class="dropdown-menu pull-right"> >+ <li><a href="/cgi-bin/koha/tools/upload-cover-image.pl?itemnumber=[% item.itemnumber | uri %]&filetype=image"><i class="fa fa-upload"></i> Upload image</a></li> >+ </ul> >+ </div> >+ [% ELSE %] >+ <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a> >+ [% END %] >+ [% END %] >+ [% IF bundlesEnabled %] >+ <button class="btn btn-default btn-xs details-control"><i class="fa fa-folder"></i> Manage bundle ([% item.bundled | html %]|[% item.bundled_lost | html %])</button> >+ [% END %] >+ </td> >+ [% END %] >+ </tr> >+ [% END %] >+ </tbody> >+ </table> >+ [% END %][%# end of block items_table %] >+ >+ [% IF Koha.Preference('EnableItemGroups') %] >+ <div role="tabpanel" class="tab-pane" id="item_groups"> >+ [% IF CAN_user_editcatalogue_manage_item_groups %] >+ <div class="item_groups_table_table_controls"> >+ <a href="#" class="item-group-create btn btn-default btn-xs"><i class="fa fa-plus"></i> New item group</a> >+ </div> >+ [% END %] >+ <table class="items-group-table" id="items-group-table"> >+ <thead> >+ <tr> >+ <td>Display order</td> >+ <td>Description</td> >+ <td> </td> >+ </tr> >+ </thead> >+ </table> > </div> >- [% ELSE %] >- <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a> > [% END %] >- [% END %] >- [% IF bundlesEnabled %] >- <button class="btn btn-default btn-xs details-control"><i class="fa fa-folder"></i> Manage bundle ([% item.bundled | html %]|[% item.bundled_lost | html %])</button> >- [% END %] >- </td> >- [% END %] >- </tr> >- [% END %] >- </tbody> >- </table> >- >-[% END %][%# end of block items_table %] >- >-[% IF Koha.Preference('EnableItemGroups') %] >- <div role="tabpanel" class="tab-pane" id="item_groups"> >- [% IF CAN_user_editcatalogue_manage_item_groups %] >- <div class="item_groups_table_table_controls"> >- <a href="#" class="item-group-create btn btn-default btn-xs"><i class="fa fa-plus"></i> New item group</a> >- </div> >- [% END %] >- <table class="items-group-table" id="items-group-table"> >- <thead> >- <tr> >- <td>Display order</td> >- <td>Description</td> >- <td> </td> >- </tr> >- </thead> >- </table> >- </div> >-[% END %] >- >- >-<div role="tabpanel" class="tab-pane" id="holdings"> >- >-[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'above' ) %] >- <span class="results_summary NovelistSelect" style="display:none;"> >- <span class="label">Novelist Select: </span> >- <div data-novelist-novelistselect=[% normalized_isbn | html %]></div> >- </span> >-[% END %] >- >-[% IF ( count ) %] >- [% IF ( showncount ) %] >- [% PROCESS items_table tab="holdings" items=itemloop %] >- [% END %] >- [% IF ( hiddencount ) %] >- <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]&showallitems=1">Show all items ([% hiddencount | html %] hidden)</a> >- [% END %] >- [% IF ( debug_display ) %] >- <br /><br /> >- <table> >- <tr><td>itemdata_enumchron</td><td>[% itemdata_enumchron | html %]</td></tr> >- <tr><td>itemdata_copynumber</td><td>[% itemdata_copynumber | html %]</td></tr> >- <tr><td>serial</td><td>[% serial | html %]</td></tr> >- </table> >- [% END %] >-[% ELSE %] >- [% IF ( ALTERNATEHOLDINGS ) %] >- [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %] >- <div id="alternateholdings"><span class="holdings_label">Holdings:</span> [% ALTERNATEHOLDING.holding | html %]</div> >- [% END %] >- [% ELSE %] >- <div id="noitems">No physical items for this record</div> >- [% END %] >-[% END %] >- >-[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'below' ) %] >- <span class="results_summary NovelistSelect" style="display:none;"> >- <span class="label">Novelist Select: </span> >- <div data-novelist-novelistselect=[% normalized_isbn | html %]></div> >- </span> >-[% END %] >- </div> > >-[% IF (SeparateHoldings) %] >- <div role="tabpanel" class="tab-pane" id="otherholdings"> >- [% IF (otheritemloop.size) %] >- [% PROCESS items_table tab="otherholdings" items=otheritemloop %] >- [% ELSE %] >- <span class="nootheritems">No other items.</span> >- [% END %] >- </div> >-[% END %] >- >-[% IF ( MARCNOTES ) %] >- >-<div role="tabpanel" class="tab-pane" id="description"> >-<div class="content_set"> >- >- [% FOREACH MARCNOTE IN MARCNOTES %] >- <p> >- [% IF MARCNOTE.marcnote.match('^https?://\S+$') %] >- <a href="[% MARCNOTE.marcnote | url %]">[% MARCNOTE.marcnote | html %]</a> >- [% ELSE %] >- [% MARCNOTE.marcnote | html | html_line_break %] >- [% END %] >- </p> >-[% END %] >-</div> >-</div> >+ <div role="tabpanel" class="tab-pane" id="holdings"> >+ [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'above' ) %] >+ <span class="results_summary NovelistSelect" style="display:none;"> >+ <span class="label">Novelist Select: </span> >+ <div data-novelist-novelistselect=[% normalized_isbn | html %]></div> >+ </span> >+ [% END %] > >-[% END %] >+ [% IF ( count ) %] >+ [% IF ( showncount ) %] >+ [% PROCESS items_table tab="holdings" items=itemloop %] >+ [% END %] >+ [% IF ( hiddencount ) %] >+ <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]&showallitems=1">Show all items ([% hiddencount | html %] hidden)</a> >+ [% END %] >+ [% IF ( debug_display ) %] >+ <br /><br /> >+ <table> >+ <tr><td>itemdata_enumchron</td><td>[% itemdata_enumchron | html %]</td></tr> >+ <tr><td>itemdata_copynumber</td><td>[% itemdata_copynumber | html %]</td></tr> >+ <tr><td>serial</td><td>[% serial | html %]</td></tr> >+ </table> >+ [% END %] >+ [% ELSE %] >+ [% IF ( ALTERNATEHOLDINGS ) %] >+ [% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %] >+ <div id="alternateholdings"> >+ <span class="holdings_label">Holdings:</span> >+ [% ALTERNATEHOLDING.holding | html %] >+ </div> >+ [% END %] >+ [% ELSE %] >+ <div id="noitems">No physical items for this record</div> >+ [% END %] >+ [% END %] > >-[% IF ComponentParts && ComponentParts.size %] >-<div role="tabpanel" class="tab-pane" id="components"> >- <div class="content_set"> >- <table> >- [% FOR PART IN ComponentParts %] >- <tr> >- <td> >- [% PART | $raw %] >- </td> >- </tr> >- [% END %] >- </table> >- [% IF ComponentParts.size == Koha.Preference('MaxComponentRecords')%] >- <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> >- [% END %] >- </div> <!-- /.content_set --> >-</div> <!-- /#components --> >+ [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'below' ) %] >+ <span class="results_summary NovelistSelect" style="display:none;"> >+ <span class="label">Novelist Select: </span> >+ <div data-novelist-novelistselect=[% normalized_isbn | html %]></div> >+ </span> >+ [% END %] >+ </div> > >-[% END %] >+ [% IF (SeparateHoldings) %] >+ <div role="tabpanel" class="tab-pane" id="otherholdings"> >+ [% IF (otheritemloop.size) %] >+ [% PROCESS items_table tab="otherholdings" items=otheritemloop %] >+ [% ELSE %] >+ <span class="nootheritems">No other items.</span> >+ [% END %] >+ </div> >+ [% END %] > >-[% IF ( subscriptionsnumber ) %] >-<div role="tabpanel" class="tab-pane" id="subscriptions"> >-<div id="catalogue_detail_subscriptions"> >- <h2>This is a serial subscription</h2> >- <p> (There are [% subscriptionsnumber | html %] subscriptions associated with this title).</p> >- [% FOREACH subscription IN subscriptions %] >- [% IF subscription.branchcode %] >- <h3>At library: [% Branches.GetName(subscription.branchcode) || subscription.branchcode | html %]</h3> >- [% END %] >- [% IF ( subscription.closed ) %]<p>This subscription is closed.</p>[% END %] >- [% IF ( subscription.location ) %]<p class="subscription_location">Location: [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => subscription.location ) | html %]</p>[% END %] >- [% IF ( subscription.callnumber ) %]<p>Callnumber: [% subscription.callnumber | html %] </p>[% END %] >- [% IF ( subscription.subscriptionnotes ) %]<p>[% subscription.subscriptionnotes | html | html_line_break %] </p>[% END %] >- [% IF ( subscription.missinglist ) %]<p>Missing issues: [% subscription.missinglist | html %] </p>[% END %] >- [% IF ( subscription.librariannote ) %]<p>([% subscription.librariannote | html %])</p>[% END %] >- [% IF ( subscription.latestserials ) %] >- <p> The [% subscription.staffdisplaycount | html %] latest issues related to this subscription:</p> >- <table> >- <tr> >- <th>Issue #</th> >- <th>Date arrived</th> >- <th>Date published</th> >- <th>Date published (text)</th> >- <th>Status</th> >- <th>Note</th> >- </tr> >- [% FOREACH latestserial IN subscription.latestserials %] >- <tr> >- <td>[% latestserial.serialseq | html %]</td> >- <td data-order="[% latestserial.planneddate | html %]">[% latestserial.planneddate | $KohaDates %]</td> >- <td data-order="[% latestserial.publisheddate | html %]">[% latestserial.publisheddate | $KohaDates %]</td> >- <td>[% latestserial.publisheddatetext | html %]</td> >- <td> >- [% INCLUDE 'serial-status.inc' serial = latestserial %] >- </td> >- <td>[% latestserial.notes | html %]</td> >- </tr> >- [% END %] >- </table> >- [% END %] >- <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]">Subscription details</a> >- [% END %] >-</div> >-</div> >-[% END %] >+ [% IF ( MARCNOTES ) %] >+ <div role="tabpanel" class="tab-pane" id="description"> >+ <div class="content_set"> >+ [% FOREACH MARCNOTE IN MARCNOTES %] >+ <p> >+ [% IF MARCNOTE.marcnote.match('^https?://\S+$') %] >+ <a href="[% MARCNOTE.marcnote | url %]">[% MARCNOTE.marcnote | html %]</a> >+ [% ELSE %] >+ [% MARCNOTE.marcnote | html | html_line_break %] >+ [% END %] >+ </p> >+ [% END %] >+ </div> >+ </div> >+ [% END %] > >-[% IF Koha.Preference('AcquisitionDetails') %] >-<div role="tabpanel" class="tab-pane" id="acq_details"> >- [% IF orders.count %] >- <table id="orders"> >- <thead> >- <tr> >- <th>Vendor</th> >- <th>Invoice</th> >- <th>Basket group</th> >- <th>Basket</th> >- <th>Order number</th> >- <th>Creation date</th> >- <th>Receive date</th> >- <th>Status</th> >- <th>Quantity</th> >- <th title="Estimated cost tax incl. while pending, actual cost tax incl. once received">Price</th> >- <th>Internal note</th> >- <th>Subscription</th> >- <th>Subscription call number</th> >- </tr> >- </thead> >- <tbody> >- [% FOR order IN orders %] >- [% SET basket = order.basket %] >- [% SET vendor = basket.bookseller %] >- <tr> >- <td> >- <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% vendor.id | uri %]" title="Vendor detail page">[% vendor.name | html %]</a> >- </td> >- <td> >- [% IF order.invoiceid %] >- [% IF CAN_user_acquisition %] >- <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]" >- title="Invoice detail page"> >- [% order.invoice.invoicenumber | html %]</a> >- [% ELSE %] >- [% order.invoice.invoicenumber | html %] >- [% END %] >- [% END %] >- </td> >- <td> >- [% IF basket.basketgroupid %] >- [% SET basket_group = basket.basket_group %] >- [% IF CAN_user_acquisition_group_manage %] >- <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> >- [% ELSE %] >- [% basket_group.name | html %] ([% basket_group.id | html %]) >- [% END %] >- [% END %] >- </td> >- <td>[% IF CAN_user_acquisition_order_manage %] >- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %] ([% basket.basketno | html %])</a> >- [% ELSE %] >- [% basket.basketname | html %] ([% basket.basketno | html %]) >- [% END %]</td> >- <td>[% order.ordernumber | html %]</td> >- <td data-order="[% basket.creationdate | uri %]">[% basket.creationdate | $KohaDates%]</td> >- <td data-order="[% order.datereceived | uri %]">[% order.datereceived | $KohaDates%]</td> >- <td> >- [% SWITCH order.orderstatus %] >- [% CASE 'new' %]<span>New</span> >- [% CASE 'ordered' %]<span>Ordered</span> >- [% CASE 'partial' %]<span>Partial</span> >- [% CASE 'complete' %]<span>Complete</span> >- [% CASE 'cancelled' %]<span>Cancelled</span> >- [% END %] >- </td> >- <td>[% order.quantity | html %]</td> >- <td>[% IF ( order.unitprice_tax_included > 0 ) %][% order.unitprice_tax_included | $Price %][% ELSE %][% order.ecost_tax_included | $Price %][% END %] >- <td>[% order.order_internalnote | html %]</td> >- <td> >- [% IF order.subscriptionid %] >- <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% order.subscriptionid | uri %]">[% order.subscriptionid | html %]</a> >- [% END %] >- </td> >- <td> >- [% IF order.subscriptionid %] >- [% order.subscription.callnumber | html %] >- [% END %] >- </td> >- </tr> >- [% END %] >- </tbody> >- </table> >- [% ELSE %] >- <span class="noorder">There is no order for this bibliographic record.</span> >- [% END %] >-</div> >-[% END %] >+ [% IF ComponentParts && ComponentParts.size %] >+ <div role="tabpanel" class="tab-pane" id="components"> >+ <div class="content_set"> >+ <table> >+ [% FOR PART IN ComponentParts %] >+ <tr> >+ <td> >+ [% PART | $raw %] >+ </td> >+ </tr> >+ [% END %] >+ </table> >+ [% IF ComponentParts.size == Koha.Preference('MaxComponentRecords')%] >+ <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> >+ [% END %] >+ </div> <!-- /.content_set --> >+ </div> <!-- /#components --> >+ [% END %] > >-[% IF suggestions.count %] >- <div role="tabpanel" class="tab-pane" id="suggestion_details"> >- [% IF nb_archived_suggestions > 0 %] >- <p>[% tnpx('pluralization', 'There is one archived suggestion.', 'There are {count} archived suggestions.', nb_archived_suggestions, { count = nb_archived_suggestions }) | $raw %] >- [% END %] >- <table id="suggestions" class="sorted"> >- <thead> >- <tr> >- <th class="NoSort"> </th> >- <th class="anti-the">Suggestion</th> >- <th>Suggested by - on</th> >- <th>Managed by - on</th> >- <th>Last modification by - on</th> >- <th>Library</th> >- <th>Fund</th> >- <th>Status</th> >- </tr> >- </thead> >- <tbody> >- [% FOREACH suggestion IN suggestions %] >- <tr> >- <td>[% suggestion.suggestionid | html %]</td> >- <td> >- <a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestion.suggestionid | uri %]&op=show" title="suggestion" > >- [% suggestion.title | html %][% IF ( suggestion.author ) %], by [% suggestion.author | html %][% END %]</a> >- <br /> >- [% IF ( suggestion.copyrightdate ) %]© [% suggestion.copyrightdate | html %] [% END %] >- [% IF ( suggestion.volumedesc ) %]; Volume:<em>[% suggestion.volumedesc | html %]</em> [% END %] >- [% 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 %] >- </td> >- <td> >- <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.suggestedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.suggester %]</a> >- [% IF suggestion.suggesteddate %] - [% suggestion.suggesteddate | $KohaDates %][% END %] >- </td> >- <td> >- <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.managedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.manager %]</a> >- [% IF suggestion.manageddate %] - [% suggestion.manageddate | $KohaDates %][% END %] >- </td> >- <td> >- <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.lastmodificationby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.last_modifier %]</a> >- [% IF suggestion.lastmodificationdate %] - [% suggestion.lastmodificationdate | $KohaDates %][% END %] >- </td> >- <td> >- [% Branches.GetName( suggestion.branchcode ) | html %] >- </td> >- <td> >- [% suggestion.fund.budget_name | html %] >- </td> >- <td> >- [% IF suggestion.STATUS == 'ASKED' %]<span>Pending</span> >- [% ELSIF suggestion.STATUS == 'ACCEPTED' %]<span>Accepted</span> >- [% ELSIF suggestion.STATUS == 'ORDERED' %]<span>Ordered</span> >- [% ELSIF suggestion.STATUS == 'REJECTED' %]<span>Rejected</span> >- [% ELSIF suggestion.STATUS == 'CHECKED' %]<span>Checked</span> >- [% ELSIF suggestion.STATUS == 'AVAILABLE' %]<span>Available</span> >- [% ELSIF AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) %] >- [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) | html %] >- [% ELSE %]<span>Status unknown</span> >- [% END %] >- [% IF suggestion.reason %] >- <br />([% suggestion.reason | html %]) >- [% END %] >- </td> >- </tr> >- [% END %] >- </tbody> >- </table> >- </div> >-[% END %] >+ [% IF ( subscriptionsnumber ) %] >+ <div role="tabpanel" class="tab-pane" id="subscriptions"> >+ <div id="catalogue_detail_subscriptions"> >+ <h2>This is a serial subscription</h2> >+ <p> (There are [% subscriptionsnumber | html %] subscriptions associated with this title).</p> >+ [% FOREACH subscription IN subscriptions %] >+ [% IF subscription.branchcode %] >+ <h3>At library: [% Branches.GetName(subscription.branchcode) || subscription.branchcode | html %]</h3> >+ [% END %] >+ [% IF ( subscription.closed ) %] >+ <p>This subscription is closed.</p> >+ [% END %] >+ [% IF ( subscription.location ) %] >+ <p class="subscription_location">Location: [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => subscription.location ) | html %]</p> >+ [% END %] >+ [% IF ( subscription.callnumber ) %] >+ <p>Callnumber: [% subscription.callnumber | html %] </p> >+ [% END %] >+ [% IF ( subscription.subscriptionnotes ) %] >+ <p>[% subscription.subscriptionnotes | html | html_line_break %] </p> >+ [% END %] >+ [% IF ( subscription.missinglist ) %] >+ <p>Missing issues: [% subscription.missinglist | html %] </p> >+ [% END %] >+ [% IF ( subscription.librariannote ) %] >+ <p>([% subscription.librariannote | html %])</p> >+ [% END %] >+ [% IF ( subscription.latestserials ) %] >+ <p> The [% subscription.staffdisplaycount | html %] latest issues related to this subscription:</p> >+ <table> >+ <tr> >+ <th>Issue #</th> >+ <th>Date arrived</th> >+ <th>Date published</th> >+ <th>Date published (text)</th> >+ <th>Status</th> >+ <th>Note</th> >+ </tr> >+ [% FOREACH latestserial IN subscription.latestserials %] >+ <tr> >+ <td>[% latestserial.serialseq | html %]</td> >+ <td data-order="[% latestserial.planneddate | html %]">[% latestserial.planneddate | $KohaDates %]</td> >+ <td data-order="[% latestserial.publisheddate | html %]">[% latestserial.publisheddate | $KohaDates %]</td> >+ <td>[% latestserial.publisheddatetext | html %]</td> >+ <td> >+ [% INCLUDE 'serial-status.inc' serial = latestserial %] >+ </td> >+ <td>[% latestserial.notes | html %]</td> >+ </tr> >+ [% END %] >+ </table> >+ [% END %] >+ <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]">Subscription details</a> >+ [% END %] >+ </div> >+ </div> >+ [% END %] > >-[% IF ( FRBRizeEditions ) %][% IF ( XISBNS ) %] >-<div role="tabpanel" class="tab-pane" id="editions"><h4>Editions</h4> >-<table> >-[% 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 %] >-[% 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 %] >-<td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% XISBN.biblionumber | uri %]">[% XISBN.title | html %]</a> <span>by</span> [% XISBN.author | html %] ©[% XISBN.copyrightdate | html %] >- [% IF ( XISBN.publishercode ) %] >-[% 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 %] >- [% END %] >- [% IF ( XISBN.pages ) %] [% END %][% XISBN.pages | html %] [% IF ( XISBN.illus ) %][% XISBN.illus | html %][% END %] >- [% IF ( XISBN.size ) %], [% END %][% XISBN.size | html %] >-</td> >+ [% IF Koha.Preference('AcquisitionDetails') %] >+ <div role="tabpanel" class="tab-pane" id="acq_details"> >+ [% IF orders.count %] >+ <table id="orders"> >+ <thead> >+ <tr> >+ <th>Vendor</th> >+ <th>Invoice</th> >+ <th>Basket group</th> >+ <th>Basket</th> >+ <th>Order number</th> >+ <th>Creation date</th> >+ <th>Receive date</th> >+ <th>Status</th> >+ <th>Quantity</th> >+ <th title="Estimated cost tax incl. while pending, actual cost tax incl. once received">Price</th> >+ <th>Internal note</th> >+ <th>Subscription</th> >+ <th>Subscription call number</th> >+ </tr> >+ </thead> >+ <tbody> >+ [% FOR order IN orders %] >+ [% SET basket = order.basket %] >+ [% SET vendor = basket.bookseller %] >+ <tr> >+ <td> >+ <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% vendor.id | uri %]" title="Vendor detail page">[% vendor.name | html %]</a> >+ </td> >+ <td> >+ [% IF order.invoiceid %] >+ [% IF CAN_user_acquisition %] >+ <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% order.invoiceid | uri %]" >+ title="Invoice detail page"> >+ [% order.invoice.invoicenumber | html %]</a> >+ [% ELSE %] >+ [% order.invoice.invoicenumber | html %] >+ [% END %] >+ [% END %] >+ </td> >+ <td> >+ [% IF basket.basketgroupid %] >+ [% SET basket_group = basket.basket_group %] >+ [% IF CAN_user_acquisition_group_manage %] >+ <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> >+ [% ELSE %] >+ [% basket_group.name | html %] ([% basket_group.id | html %]) >+ [% END %] >+ [% END %] >+ </td> >+ <td> >+ [% IF CAN_user_acquisition_order_manage %] >+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %] ([% basket.basketno | html %])</a> >+ [% ELSE %] >+ [% basket.basketname | html %] ([% basket.basketno | html %]) >+ [% END %] >+ </td> >+ <td> >+ [% order.ordernumber | html %] >+ </td> >+ <td data-order="[% basket.creationdate | uri %]"> >+ [% basket.creationdate | $KohaDates%] >+ </td> >+ <td data-order="[% order.datereceived | uri %]"> >+ [% order.datereceived | $KohaDates%] >+ </td> >+ <td> >+ [% SWITCH order.orderstatus %] >+ [% CASE 'new' %]<span>New</span> >+ [% CASE 'ordered' %]<span>Ordered</span> >+ [% CASE 'partial' %]<span>Partial</span> >+ [% CASE 'complete' %]<span>Complete</span> >+ [% CASE 'cancelled' %]<span>Cancelled</span> >+ [% END %] >+ </td> >+ <td> >+ [% order.quantity | html %]</td> >+ <td> >+ [% IF ( order.unitprice_tax_included > 0 ) %][% order.unitprice_tax_included | $Price %][% ELSE %][% order.ecost_tax_included | $Price %][% END %] >+ <td> >+ [% order.order_internalnote | html %]</td> >+ <td> >+ [% IF order.subscriptionid %] >+ <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% order.subscriptionid | uri %]">[% order.subscriptionid | html %]</a> >+ [% END %] >+ </td> >+ <td> >+ [% IF order.subscriptionid %] >+ [% order.subscription.callnumber | html %] >+ [% END %] >+ </td> >+ </tr> >+ [% END %] >+ </tbody> >+ </table> >+ [% ELSE %] >+ <span class="noorder">There is no order for this bibliographic record.</span> >+ [% END %] >+ </div> >+ [% END %] > >-[% END %] >-</table></div>[% END %] >-[% END %] >+ [% IF suggestions.count %] >+ <div role="tabpanel" class="tab-pane" id="suggestion_details"> >+ [% IF nb_archived_suggestions > 0 %] >+ <p>[% tnpx('pluralization', 'There is one archived suggestion.', 'There are {count} archived suggestions.', nb_archived_suggestions, { count = nb_archived_suggestions }) | $raw %] >+ [% END %] >+ <table id="suggestions" class="sorted"> >+ <thead> >+ <tr> >+ <th class="NoSort"> </th> >+ <th class="anti-the">Suggestion</th> >+ <th>Suggested by - on</th> >+ <th>Managed by - on</th> >+ <th>Last modification by - on</th> >+ <th>Library</th> >+ <th>Fund</th> >+ <th>Status</th> >+ </tr> >+ </thead> >+ <tbody> >+ [% FOREACH suggestion IN suggestions %] >+ <tr> >+ <td>[% suggestion.suggestionid | html %]</td> >+ <td> >+ <a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestion.suggestionid | uri %]&op=show" title="suggestion" > >+ [% suggestion.title | html %][% IF ( suggestion.author ) %], by [% suggestion.author | html %][% END %]</a> >+ <br /> >+ [% IF ( suggestion.copyrightdate ) %]© [% suggestion.copyrightdate | html %] [% END %] >+ [% IF ( suggestion.volumedesc ) %]; Volume:<em>[% suggestion.volumedesc | html %]</em> [% END %] >+ [% 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 %] >+ </td> >+ <td> >+ <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.suggestedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.suggester %]</a> >+ [% IF suggestion.suggesteddate %] - [% suggestion.suggesteddate | $KohaDates %][% END %] >+ </td> >+ <td> >+ <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.managedby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.manager %]</a> >+ [% IF suggestion.manageddate %] - [% suggestion.manageddate | $KohaDates %][% END %] >+ </td> >+ <td> >+ <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestion.lastmodificationby | uri %]">[% INCLUDE 'patron-title.inc' patron => suggestion.last_modifier %]</a> >+ [% IF suggestion.lastmodificationdate %] - [% suggestion.lastmodificationdate | $KohaDates %][% END %] >+ </td> >+ <td> >+ [% Branches.GetName( suggestion.branchcode ) | html %] >+ </td> >+ <td> >+ [% suggestion.fund.budget_name | html %] >+ </td> >+ <td> >+ [% IF suggestion.STATUS == 'ASKED' %] >+ <span>Pending</span> >+ [% ELSIF suggestion.STATUS == 'ACCEPTED' %] >+ <span>Accepted</span> >+ [% ELSIF suggestion.STATUS == 'ORDERED' %] >+ <span>Ordered</span> >+ [% ELSIF suggestion.STATUS == 'REJECTED' %] >+ <span>Rejected</span> >+ [% ELSIF suggestion.STATUS == 'CHECKED' %] >+ <span>Checked</span> >+ [% ELSIF suggestion.STATUS == 'AVAILABLE' %] >+ <span>Available</span> >+ [% ELSIF AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) %] >+ [% AuthorisedValues.GetByCode( 'SUGGEST_STATUS', suggestion.STATUS ) | html %] >+ [% ELSE %] >+ <span>Status unknown</span> >+ [% END %] >+ [% IF suggestion.reason %] >+ <br />([% suggestion.reason | html %]) >+ [% END %] >+ </td> >+ </tr> >+ [% END %] >+ </tbody> >+ </table> >+ </div> >+ [% END %] > >-[% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %] >-<div role="tabpanel" class="tab-pane" id="concerns"> >- <fieldset class="action" style="cursor:pointer;"> >- <a id="hideResolved"><i class="fa fa-minus-square"></i> Hide resolved</a> >- | <a id="showAll"><i class="fa fa-bars"></i> Show all</a> >- </fieldset> >- >- <table id="table_concerns" width="100%"> >- <thead> >- <tr> >- <th>Reported</th> >- <th>Details</th> >- <th>Status</th> >- <th data-class-name="actions noExport">Actions</th> >- </tr> >- </thead> >- </table> >-</div> >-[% END %] >+ [% IF ( FRBRizeEditions ) %] >+ [% IF ( XISBNS ) %] >+ <div role="tabpanel" class="tab-pane" id="editions" >+ <h4>Editions</h4> >+ <table> >+ [% 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 %] >+ [% 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 %] >+ <td> >+ <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% XISBN.biblionumber | uri %]">[% XISBN.title | html %]</a> >+ <span>by</span> [% XISBN.author | html %] ©[% XISBN.copyrightdate | html %] >+ [% IF ( XISBN.publishercode ) %] >+ [% 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 %] >+ [% END %] >+ [% IF ( XISBN.pages ) %] [% END %][% XISBN.pages | html %] [% IF ( XISBN.illus ) %][% XISBN.illus | html %][% END %] >+ [% IF ( XISBN.size ) %], [% END %][% XISBN.size | html %] >+ </td> >+ </tr> >+ [% END %] >+ </table> >+ </div> >+ [% END %] >+ [% END %] > >-[% IF ( LocalCoverImages ) %] >- <div role="tabpanel" class="tab-pane" id="images"> >- [% IF localimages.count %] >- <p>Click on an image to view it in the image viewer</p> >- <ul class="thumbnails"> >- [% FOREACH image IN localimages %] >- [% IF image %] >- <li id="imagenumber-[% image.imagenumber | html %]" class="thumbnail"> >- <a href="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]"> >- <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" /> >- </a> >- [% IF CAN_user_tools_upload_local_cover_images %] >- <a href="#" class="remove"><i class="fa fa-trash"></i> Delete image</a> >+ [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %] >+ <div role="tabpanel" class="tab-pane" id="concerns"> >+ <fieldset class="action" style="cursor:pointer;"> >+ <a id="hideResolved"><i class="fa fa-minus-square"></i> Hide resolved</a> >+ | <a id="showAll"><i class="fa fa-bars"></i> Show all</a> >+ </fieldset> >+ >+ <table id="table_concerns" width="100%"> >+ <thead> >+ <tr> >+ <th>Reported</th> >+ <th>Details</th> >+ <th>Status</th> >+ <th data-class-name="actions noExport">Actions</th> >+ </tr> >+ </thead> >+ </table> >+ </div> > [% END %] >- </li> >- [% END %] >- [% END %] >- </ul> >- [% ELSE # - No image passed JavaScript takes care %] >- <span class="noimagesuploaded">No images have been uploaded for this bibliographic record yet.</span> >- [% END %] >- [% IF ( CAN_user_tools_upload_local_cover_images ) %] >- <p>Upload an image file: <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/upload-cover-image.pl?biblionumber=[% biblionumber | uri %]&filetype=image"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> >- </p> >- [% END %] >- </div> >-[% END %] > >-[% IF ( HTML5MediaEnabled ) %] >-<div role="tabpanel" class="tab-pane" id="html5media"> >- [% FOREACH HTML5MediaSet IN HTML5MediaSets %] >- <p> >- [% IF HTML5MediaSet.is_youtube %] >- <iframe id="player" width="640" height="360" src="[% HTML5MediaSet.srcblock | url %]"></iframe> >- [% ELSE %] >- <[% HTML5MediaParent | html %] controls preload=none> >- <[% HTML5MediaSet.child | html %] src="[% HTML5MediaSet.srcblock | url %]"[% HTML5MediaSet.typeblock | html %] /> >- [[% HTML5MediaParent | html %] tag not supported by your browser.] >- </[% HTML5MediaParent | html %]> >- [% END %] >- </p> >- [% END %] >-</div> >-[% END %] >+ [% IF ( LocalCoverImages ) %] >+ <div role="tabpanel" class="tab-pane" id="images"> >+ [% IF localimages.count %] >+ <p>Click on an image to view it in the image viewer</p> >+ <ul class="thumbnails"> >+ [% FOREACH image IN localimages %] >+ [% IF image %] >+ <li id="imagenumber-[% image.imagenumber | html %]" class="thumbnail"> >+ <a href="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]"> >+ <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" /> >+ </a> >+ [% IF CAN_user_tools_upload_local_cover_images %] >+ <a href="#" class="remove"><i class="fa fa-trash"></i> Delete image</a> >+ [% END %] >+ </li> >+ [% END %] >+ [% END %] >+ </ul> >+ [% ELSE # - No image passed JavaScript takes care %] >+ <span class="noimagesuploaded">No images have been uploaded for this bibliographic record yet.</span> >+ [% END %] >+ [% IF ( CAN_user_tools_upload_local_cover_images ) %] >+ <p>Upload an image file: <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/upload-cover-image.pl?biblionumber=[% biblionumber | uri %]&filetype=image"><i class="fa fa-upload" aria-hidden="true"></i> Upload</a> >+ </p> >+ [% END %] >+ </div> >+ [% END %] > >+ [% IF ( HTML5MediaEnabled ) %] >+ <div role="tabpanel" class="tab-pane" id="html5media"> >+ [% FOREACH HTML5MediaSet IN HTML5MediaSets %] >+ <p> >+ [% IF HTML5MediaSet.is_youtube %] >+ <iframe id="player" width="640" height="360" src="[% HTML5MediaSet.srcblock | url %]"></iframe> >+ [% ELSE %] >+ <[% HTML5MediaParent | html %] controls preload=none> >+ <[% HTML5MediaSet.child | html %] src="[% HTML5MediaSet.srcblock | url %]"[% HTML5MediaSet.typeblock | html %] /> >+ [[% HTML5MediaParent | html %] tag not supported by your browser.] >+ </[% HTML5MediaParent | html %]> >+ [% END %] >+ </p> >+ [% END %] >+ </div> >+ [% END %] > >-[% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %] >- <div role="tabpanel" class="tab-pane" id="NovelistSelect" class="novelistSelect"> >- <div data-novelist-novelistselect=[% normalized_isbn | html %]></div> >- </div> >-[% END %] >+ [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectStaffProfile') && Koha.Preference('NovelistSelectStaffView') == 'tab' ) %] >+ <div role="tabpanel" class="tab-pane" id="NovelistSelect" class="novelistSelect"> >+ <div data-novelist-novelistselect=[% normalized_isbn | html %]></div> >+ </div> >+ [% END %] > >-[% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %] >- <div role="tabpanel" class="tab-pane" id="[% plugins_intranet_catalog_biblio_tab.id | html %]"> >- [% plugins_intranet_catalog_biblio_tab.content | $raw %] >- </div> >-[% END %] >+ [% FOREACH plugins_intranet_catalog_biblio_tab IN plugins_intranet_catalog_biblio_tabs %] >+ <div role="tabpanel" class="tab-pane" id="[% plugins_intranet_catalog_biblio_tab.id | html %]"> >+ [% plugins_intranet_catalog_biblio_tab.content | $raw %] >+ </div> >+ [% END %] > >-</div><!-- /tab-content --> >-</div><!-- /bibliodetails --> >- >-<div id="export" style="margin-top: 1em;"> >-<form method="get" action="/cgi-bin/koha/catalogue/export.pl"> >-<table> <tr> >- <th>Save record</th> </tr> >- <tr><td> Select download format: <select name="format"> >- <option value="mods">MODS (XML)</option> >- <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option> >- <option value="marcxml">MARCXML</option> >- <option value="marc8">MARC (non-Unicode/MARC-8)</option> >- <option value="utf8">MARC (Unicode/UTF-8)</option> </select> >- <input type="submit" name="save" class="btn btn-primary" value="Download record" /></td> >- </tr> >- <tr><td> >- <input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber | html %]" /> >- </td></tr> >-</table> >-</form> >-</div> >- >-<div id="marcPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true"> >- <div class="modal-dialog modal-lg"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="marcPreviewLabel">MARC preview</h3> >- </div> >- <div class="modal-body"> >- <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div> >- </div> >- <div class="modal-footer"> >- <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >- </div> >- </div> >- </div> >-</div> >- >-<div id="elasticPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="elasticPreviewLabel" aria-hidden="true"> >- <div class="modal-dialog modal-lg"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="elasticPreviewLabel">Elasticsearch record</h3> >- </div> >- <div class="modal-body"> >- <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div> >- </div> >- <div class="modal-footer"> >- <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >- </div> >- </div> >- </div> >-</div> >- >- </main> >- </div> <!-- /.col-sm-10.col-sm-push-2 --> >- >- <div class="col-sm-2 col-sm-pull-10"> >- <aside> >- [% INCLUDE 'biblio-view-menu.inc' %] >- </aside> >- </div> <!-- /.col-sm-2.col-sm-pull-10 --> >- </div> <!-- /.row --> >+ </div><!-- /tab-content --> >+ </div><!-- /bibliodetails --> >+ >+ <div id="export" style="margin-top: 1em;"> >+ <form method="get" action="/cgi-bin/koha/catalogue/export.pl"> >+ <table> >+ <tr> >+ <th>Save record</th> >+ </tr> >+ <tr> >+ <td> >+ Select download format: >+ <select name="format"> >+ <option value="mods">MODS (XML)</option> >+ <option data-toggle="modal" data-target="#exportModal_">Dublin Core</option> >+ <option value="marcxml">MARCXML</option> >+ <option value="marc8">MARC (non-Unicode/MARC-8)</option> >+ <option value="utf8">MARC (Unicode/UTF-8)</option> >+ </select> >+ <input type="submit" name="save" class="btn btn-primary" value="Download record" /> >+ </td> >+ </tr> >+ <tr> >+ <td> >+ <input type="hidden" name="op" value="export" /><input type="hidden" name="bib" value="[% biblionumber | html %]" /> >+ </td> >+ </tr> >+ </table> >+ </form> >+ </div> > >-[% END %] >+ <div id="marcPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true"> >+ <div class="modal-dialog modal-lg"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="marcPreviewLabel">MARC preview</h3> >+ </div> >+ <div class="modal-body"> >+ <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div> >+ </div> >+ <div class="modal-footer"> >+ <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >+ </div> >+ </div> >+ </div> >+ </div> > >-<div class="modal fade" id="modal-item-group-create" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-create-label"> >- <div class="modal-dialog"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="modal-item-group-create-label"><i class="fa fa-plus"></i> Create a new item group</h3> >- </div> >- <form id="modal-item-group-create-form" class="validated"> >- <div class="modal-body"> >- <fieldset> >- <p> >- <label for="item_group_description" class="required">Name: </label> >- <input name="description" id="modal-item-group-create-form-description" type="text" size="30" required="required" class="required" /> >- <span class="required">Required</span> >- </p> >- <p> >- <label for="item_group_display_order" class="required">Display order: </label> >- <input name="display_order" id="modal-item-group-create-form-display_order" value="0" size="5" required="required" class="required" /> >- <span class="required">Required</span> >- <br/> >- <span class="hint">Numbers only, item groups will be displayed in counting order</span> >- </p> >- </fieldset> >- </div> >- <div class="modal-footer"> >- <button id="modal-item-group-create-submit" class="btn btn-default"><i class="fa fa-plus"></i> Submit</button> >- <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >+ <div id="elasticPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="elasticPreviewLabel" aria-hidden="true"> >+ <div class="modal-dialog modal-lg"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="elasticPreviewLabel">Elasticsearch record</h3> >+ </div> >+ <div class="modal-body"> >+ <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div> >+ </div> >+ <div class="modal-footer"> >+ <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >+ </div> >+ </div> >+ </div> >+ </div> >+ </main> >+ </div> <!-- /.col-sm-10.col-sm-push-2 --> >+ >+ <div class="col-sm-2 col-sm-pull-10"> >+ <aside> >+ [% INCLUDE 'biblio-view-menu.inc' %] >+ </aside> >+ </div> <!-- /.col-sm-2.col-sm-pull-10 --> >+ </div> <!-- /.row --> >+ >+ <div class="modal fade" id="modal-item-group-create" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-create-label"> >+ <div class="modal-dialog"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="modal-item-group-create-label"><i class="fa fa-plus"></i> Create a new item group</h3> >+ </div> >+ <form id="modal-item-group-create-form" class="validated"> >+ <div class="modal-body"> >+ <fieldset> >+ <p> >+ <label for="item_group_description" class="required">Name: </label> >+ <input name="description" id="modal-item-group-create-form-description" type="text" size="30" required="required" class="required" /> >+ <span class="required">Required</span> >+ </p> >+ <p> >+ <label for="item_group_display_order" class="required">Display order: </label> >+ <input name="display_order" id="modal-item-group-create-form-display_order" value="0" size="5" required="required" class="required" /> >+ <span class="required">Required</span> >+ <br/> >+ <span class="hint">Numbers only, item groups will be displayed in counting order</span> >+ </p> >+ </fieldset> >+ </div> >+ <div class="modal-footer"> >+ <button id="modal-item-group-create-submit" class="btn btn-default"><i class="fa fa-plus"></i> Submit</button> >+ <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >+ </div> >+ </form> > </div> >- </form> >- </div> >- </div> >-</div> >- >-<div class="modal fade" id="modal-item-group-edit" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-edit-label"> >- <div class="modal-dialog"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="modal-item-group-edit-label"><i class='fa fa-edit'></i> Edit item group</h3> > </div> >- <form id="modal-item-group-edit-form" class="validated"> >- <div class="modal-body"> >- <fieldset> >- <p> >- <label for="item_group_description" class="required">Name: </label> >- <input name="description" id="modal-item-group-edit-form-description" type="text" size="30" required="required" class="required" /> >- <span class="required">Required</span> >- </p> >- <p> >- <label for="item_group_display_order" class="required">Sort order: </label> >- <input name="display_order" id="modal-item-group-edit-form-display_order" size="5" /> >- <span class="hint">Numbers only, item groups will be displayed in counting order</span> >- </p> >- </fieldset> >- </div> >- <div class="modal-footer"> >- <button id="modal-item-group-edit-submit" class="btn btn-default"><i class='fa fa-edit'></i> Submit</button> >- <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >- </div> >- </form> > </div> >- </div> >-</div> >- >-<div class="modal fade" id="modal-item-group-delete" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-delete-label"> >- <div class="modal-dialog"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="modal-item-group-delete-label"><i class='fa fa-trash'></i> Delete item group</h3> >- </div> >- <div class="modal-body"> >- Are you sure you want to delete this item group? >- </div> >- <div class="modal-footer"> >- <button id="modal-item-group-delete-submit" class="btn btn-danger"><i class='fa fa-trash'></i> Delete</button> >- <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >- </div> >- </div> >- </div> >-</div> >- >-<div class="modal fade" id="modal-item-group-set" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-set-label"> >- <div class="modal-dialog"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="modal-item-group-set-label"><i class='fa fa-book'></i> Set item group for items</h3> >- </div> >- <form id="modal-item-group-set-form" class="validated"> >- <div class="modal-body"> >- <fieldset> >- <p> >- <label for="item_group" class="required">Item group: </label> >- <select name="item_group" id="item-group-add-form-select"> >- [% FOREACH ig IN biblio.item_groups %] >- <option value="[% ig.id | html %]">[% ig.description | html %]</option> >- [% END %] >- </select> >- <span class="required">Required</span> >- </p> >- </fieldset> >- </div> >- <div class="modal-footer"> >- <button id="modal-item-group-set-submit" class="btn btn-default"><i class='fa fa-book'></i> Set item group</button> >- <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >+ >+ <div class="modal fade" id="modal-item-group-edit" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-edit-label"> >+ <div class="modal-dialog"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="modal-item-group-edit-label"><i class='fa fa-edit'></i> Edit item group</h3> >+ </div> >+ <form id="modal-item-group-edit-form" class="validated"> >+ <div class="modal-body"> >+ <fieldset> >+ <p> >+ <label for="item_group_description" class="required">Name: </label> >+ <input name="description" id="modal-item-group-edit-form-description" type="text" size="30" required="required" class="required" /> >+ <span class="required">Required</span> >+ </p> >+ <p> >+ <label for="item_group_display_order" class="required">Sort order: </label> >+ <input name="display_order" id="modal-item-group-edit-form-display_order" size="5" /> >+ <span class="hint">Numbers only, item groups will be displayed in counting order</span> >+ </p> >+ </fieldset> >+ </div> >+ <div class="modal-footer"> >+ <button id="modal-item-group-edit-submit" class="btn btn-default"><i class='fa fa-edit'></i> Submit</button> >+ <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >+ </div> >+ </form> > </div> >- </form> >- </div> >- </div> >-</div> >- >-<div class="modal fade" id="modal-item-group-unset" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-unset-label"> >- <div class="modal-dialog"> >- <div class="modal-content"> >- <div class="modal-header"> >- <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="modal-item-group-unset-label"><i class='fa fa-unlink'></i> Remove item from item group</h3> >- </div> >- <div class="modal-body"> >- Are you sure you want to remove these item(s) from their item group(s)? >- </div> >- <div class="modal-footer"> >- <button id="modal-item-group-unset-submit" class="btn btn-danger"><i class='fa fa-unlink'></i> Remove</button> >- <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> > </div> > </div> >- </div> >-</div> > >- [% IF bundlesEnabled %] >- <div class="modal" id="addToBundleModal" tabindex="-1" role="dialog" aria-labelledby="addToBundleLabel"> >- <form id="addToBundleForm" action=""> >- <div class="modal-dialog" role="document"> >+ <div class="modal fade" id="modal-item-group-delete" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-delete-label"> >+ <div class="modal-dialog"> > <div class="modal-content"> > <div class="modal-header"> > <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="addToBundleLabel">Add to bundle</h3> >+ <h3 id="modal-item-group-delete-label"><i class='fa fa-trash'></i> Delete item group</h3> > </div> > <div class="modal-body"> >- <div id="addResult"></div> >- <fieldset class="rows"> >- <ol> >- <li> >- <label class="required" for="external_id">Item barcode: </label> >- <input type="text" id="external_id" name="external_id" required="required"> >- <span class="required">Required</span> >- </li> >- </ol> >- </fieldset> >+ Are you sure you want to delete this item group? > </div> > <div class="modal-footer"> >- <button type="submit" class="btn btn-default">Submit</button> >- <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >+ <button id="modal-item-group-delete-submit" class="btn btn-danger"><i class='fa fa-trash'></i> Delete</button> >+ <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> > </div> > </div> > </div> >- </form> >- </div> >+ </div> > >- <div class="modal" id="removeFromBundleModal" tabindex="-1" role="dialog" aria-labelledby="removeFromBundleLabel"> >- <form id="removeFromBundleForm" action=""> >- <div class="modal-dialog" role="document"> >+ <div class="modal fade" id="modal-item-group-set" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-set-label"> >+ <div class="modal-dialog"> > <div class="modal-content"> > <div class="modal-header"> > <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >- <h3 id="removeFromBundleLabel">Remove from bundle</h3> >+ <h3 id="modal-item-group-set-label"><i class='fa fa-book'></i> Set item group for items</h3> > </div> >- <div class="modal-body"> >- <div id="removeResult"></div> >- <fieldset class="rows"> >- <ol> >- <li> >- <label class="required" for="external_id">Item barcode: </label> >- <input type="text" id="rm_external_id" name="external_id" required="required"> >+ <form id="modal-item-group-set-form" class="validated"> >+ <div class="modal-body"> >+ <fieldset> >+ <p> >+ <label for="item_group" class="required">Item group: </label> >+ <select name="item_group" id="item-group-add-form-select"> >+ [% FOREACH ig IN biblio.item_groups %] >+ <option value="[% ig.id | html %]">[% ig.description | html %]</option> >+ [% END %] >+ </select> > <span class="required">Required</span> >- </li> >- </ol> >- </fieldset> >+ </p> >+ </fieldset> >+ </div> >+ <div class="modal-footer"> >+ <button id="modal-item-group-set-submit" class="btn btn-default"><i class='fa fa-book'></i> Set item group</button> >+ <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> >+ </div> >+ </form> >+ </div> >+ </div> >+ </div> >+ >+ <div class="modal fade" id="modal-item-group-unset" tabindex="-1" role="dialog" aria-labelledby="modal-item-group-unset-label"> >+ <div class="modal-dialog"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="modal-item-group-unset-label"><i class='fa fa-unlink'></i> Remove item from item group</h3> >+ </div> >+ <div class="modal-body"> >+ Are you sure you want to remove these item(s) from their item group(s)? > </div> > <div class="modal-footer"> >- <button type="submit" class="btn btn-default">Submit</button> >- <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >+ <button id="modal-item-group-unset-submit" class="btn btn-danger"><i class='fa fa-unlink'></i> Remove</button> >+ <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button> > </div> > </div> > </div> >- </form> >- </div> >- [% END %] >+ </div> > >- [% IF ( Koha.Preference('CatalogConcerns') ) %] >- [% INCLUDE 'modals/add_catalog_concern.inc' %] >- [% END %] >+ [% IF bundlesEnabled %] >+ <div class="modal" id="addToBundleModal" tabindex="-1" role="dialog" aria-labelledby="addToBundleLabel"> >+ <form id="addToBundleForm" action=""> >+ <div class="modal-dialog" role="document"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="addToBundleLabel">Add to bundle</h3> >+ </div> >+ <div class="modal-body"> >+ <div id="addResult"></div> >+ <fieldset class="rows"> >+ <ol> >+ <li> >+ <label class="required" for="external_id">Item barcode: </label> >+ <input type="text" id="external_id" name="external_id" required="required"> >+ <span class="required">Required</span> >+ </li> >+ </ol> >+ </fieldset> >+ </div> >+ <div class="modal-footer"> >+ <button type="submit" class="btn btn-default">Submit</button> >+ <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >+ </div> >+ </div> >+ </div> >+ </form> >+ </div> > >- [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %] >- [% INCLUDE 'modals/display_ticket.inc' %] >- [% END %] >+ <div class="modal" id="removeFromBundleModal" tabindex="-1" role="dialog" aria-labelledby="removeFromBundleLabel"> >+ <form id="removeFromBundleForm" action=""> >+ <div class="modal-dialog" role="document"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">Ã</button> >+ <h3 id="removeFromBundleLabel">Remove from bundle</h3> >+ </div> >+ <div class="modal-body"> >+ <div id="removeResult"></div> >+ <fieldset class="rows"> >+ <ol> >+ <li> >+ <label class="required" for="external_id">Item barcode: </label> >+ <input type="text" id="rm_external_id" name="external_id" required="required"> >+ <span class="required">Required</span> >+ </li> >+ </ol> >+ </fieldset> >+ </div> >+ <div class="modal-footer"> >+ <button type="submit" class="btn btn-default">Submit</button> >+ <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button> >+ </div> >+ </div> >+ </div> >+ </form> >+ </div> >+ [% END %] >+ >+ [% IF ( Koha.Preference('CatalogConcerns') ) %] >+ [% INCLUDE 'modals/add_catalog_concern.inc' %] >+ [% END %] >+ >+ [% IF ( ( Koha.Preference('CatalogConcerns') || Koha.Preference('OpacCatalogConcerns') ) && CAN_user_editcatalogue_edit_catalogue ) %] >+ [% INCLUDE 'modals/display_ticket.inc' %] >+ [% END %] >+ >+[% END %] > > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'catalog-strings.inc' %] >@@ -1814,309 +1989,320 @@ > browser.show(); > > [% IF bundlesEnabled %] >- var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %]; >- var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %]; >+ var bundle_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','bundle_tables','json') | $raw %]; >+ var bundle_lost_value = [% Koha.Preference('BundleLostValue') | html %]; > [% END %] > $(document).ready(function() { > > [% IF bundlesEnabled %] // Bundle handling >- function createChild ( row, itemnumber, duedate ) { >+ function createChild ( row, itemnumber, duedate ) { > >- // Toolbar >- var bundle_toolbar = $('<div id="toolbar" class="btn-toolbar"></div>'); >- 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>'); >- 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>'); >+ // Toolbar >+ var bundle_toolbar = $('<div id="toolbar" class="btn-toolbar"></div>'); >+ 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>'); >+ 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>'); > >- // Disable management if there's a duedate >- if(duedate) { >- bundle_toolbar.children('.btn').addClass("disabled"); >- } >+ // Disable management if there's a duedate >+ if(duedate) { >+ bundle_toolbar.children('.btn').addClass("disabled"); >+ } > >- // This is the table we'll convert into a DataTable >- var bundles_table = $('<table class="display tbundle" data-itemnumber="'+itemnumber+'" id="bundle_table_'+itemnumber+'" width="100%"/>'); >+ // This is the table we'll convert into a DataTable >+ var bundles_table = $('<table class="display tbundle" data-itemnumber="'+itemnumber+'" id="bundle_table_'+itemnumber+'" width="100%"/>'); > >- // Display it the child row >- row.child( bundle_toolbar.add(bundles_table), 'bundle' ).show(); >+ // Display it the child row >+ row.child( bundle_toolbar.add(bundles_table), 'bundle' ).show(); > >- // Initialise as a DataTable >- var bundle_table_url = "/api/v1/items/" + itemnumber + "/bundled_items?"; >- var bundle_table = bundles_table.kohaTable({ >- "ajax": { >- "url": bundle_table_url >- }, >- "embed": [ >- "biblio", >- "return_claim.patron" >- ], >- "order": [[ 1, "asc" ]], >- "columnDefs": [ { >- "targets": [0,1,2,3], >- "render": function (data, type, row, meta) { >- if ( data && type == 'display' ) { >- return data.escapeHtml(); >- } >- return data; >- } >- } ], >- "columns": [ >- { >- "data": "biblio.title:biblio.subtitle:biblio.medium", >- "title": _("Title"), >- "searchable": true, >- "orderable": true, >- "render": function(data, type, row, meta) { >- return $biblio_to_html(row.biblio, { link: 1 }); >- } >- }, >- { >- "data": "biblio.author", >- "title": _("Author"), >- "searchable": true, >- "orderable": true, >+ // Initialise as a DataTable >+ var bundle_table_url = "/api/v1/items/" + itemnumber + "/bundled_items?"; >+ var bundle_table = bundles_table.kohaTable({ >+ "ajax": { >+ "url": bundle_table_url > }, >- { >- "data": "callnumber", >- "title": _("Callnumber"), >- "searchable": true, >- "orderable": true, >- }, >- { >- "data": "external_id", >- "title": _("Barcode"), >- "searchable": true, >- "orderable": true, >- }, >- { >- "data": "lost_status:last_seen_date:return_claim.patron", >- "title": _("Status"), >- "searchable": false, >- "orderable": true, >- "render": function(data, type, row, meta) { >- if ( row.lost_status == bundle_lost_value ) { >- let out = '<span class="lost">' + _("Last seen") + ': ' + $date(row.last_seen_date) + '</span>'; >- if ( row.return_claim ) { >- out = out + '<span class="claims_return">' + _("Claims returned by") + ': ' + $patron_to_html( row.return_claim.patron, { display_cardnumber: false, url: true } ) + '</span>'; >- } >- return out; >- } >- else if ( row.lost_status !== 0 ) { >- return '<span class="lost">' + _("Lost") + ': ' + row.lost_status + '</span>'; >+ "embed": [ >+ "biblio", >+ "return_claim.patron" >+ ], >+ "order": [[ 1, "asc" ]], >+ "columnDefs": [ { >+ "targets": [0,1,2,3], >+ "render": function (data, type, row, meta) { >+ if ( data && type == 'display' ) { >+ return data.escapeHtml(); > } >- return '<span class="available">' + _("Present") + '</span>'; >+ return data; > } >- }, >- { >- "data": function( row, type, val, meta ) { >- var result; >- if (duedate) { >- result = '<button class="btn btn-default btn-xs remove disabled" role="button" data-itemnumber="'+row.item_id+'"><i class="fa fa-minus" aria-hidden="true"></i> '+_("Remove")+'</button>\n'; >- } else { >- 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'; >+ } ], >+ "columns": [ >+ { >+ "data": "biblio.title:biblio.subtitle:biblio.medium", >+ "title": _("Title"), >+ "searchable": true, >+ "orderable": true, >+ "render": function(data, type, row, meta) { >+ return $biblio_to_html(row.biblio, { link: 1 }); > } >- return result; > }, >- "title": _("Actions"), >- "searchable": false, >- "orderable": false, >- "class": "noExport" >- } >- ] >- }, bundle_settings, 1); >- $(".tbundle").on("click", ".remove:not(.disabled)", function(){ >- var bundle_table = $(this).closest('table'); >- var host_itemnumber = bundle_table.data('itemnumber'); >- var component_itemnumber = $(this).data('itemnumber'); >- var unlink_item_url = "/api/v1/items/" + host_itemnumber + "/bundled_items/" + component_itemnumber; >- $.ajax({ >- type: "DELETE", >- url: unlink_item_url, >- success: function(){ >- bundle_table.DataTable({ 'retrieve': true }).draw(false); >- } >+ { >+ "data": "biblio.author", >+ "title": _("Author"), >+ "searchable": true, >+ "orderable": true, >+ }, >+ { >+ "data": "callnumber", >+ "title": _("Callnumber"), >+ "searchable": true, >+ "orderable": true, >+ }, >+ { >+ "data": "external_id", >+ "title": _("Barcode"), >+ "searchable": true, >+ "orderable": true, >+ }, >+ { >+ "data": "lost_status:last_seen_date:return_claim.patron", >+ "title": _("Status"), >+ "searchable": false, >+ "orderable": true, >+ "render": function(data, type, row, meta) { >+ if ( row.lost_status == bundle_lost_value ) { >+ let out = '<span class="lost">' + _("Last seen") + ': ' + $date(row.last_seen_date) + '</span>'; >+ if ( row.return_claim ) { >+ out = out + '<span class="claims_return">' + _("Claims returned by") + ': ' + $patron_to_html( row.return_claim.patron, { display_cardnumber: false, url: true } ) + '</span>'; >+ } >+ return out; >+ } >+ else if ( row.lost_status !== 0 ) { >+ return '<span class="lost">' + _("Lost") + ': ' + row.lost_status + '</span>'; >+ } >+ return '<span class="available">' + _("Present") + '</span>'; >+ } >+ }, >+ { >+ "data": function( row, type, val, meta ) { >+ var result; >+ if (duedate) { >+ result = '<button class="btn btn-default btn-xs remove disabled" role="button" data-itemnumber="'+row.item_id+'"><i class="fa fa-minus" aria-hidden="true"></i> '+_("Remove")+'</button>\n'; >+ } else { >+ 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'; >+ } >+ return result; >+ }, >+ "title": _("Actions"), >+ "searchable": false, >+ "orderable": false, >+ "class": "noExport" >+ } >+ ] >+ }, bundle_settings, 1); >+ $(".tbundle").on("click", ".remove:not(.disabled)", function(){ >+ var bundle_table = $(this).closest('table'); >+ var host_itemnumber = bundle_table.data('itemnumber'); >+ var component_itemnumber = $(this).data('itemnumber'); >+ var unlink_item_url = "/api/v1/items/" + host_itemnumber + "/bundled_items/" + component_itemnumber; >+ $.ajax({ >+ type: "DELETE", >+ url: unlink_item_url, >+ success: function(){ >+ bundle_table.DataTable({ 'retrieve': true }).draw(false); >+ } >+ }); > }); >- }); > >- return; >- } >+ return; >+ } > >- var bundle_changed; >- var bundle_form_active; >- $("#addToBundleModal").on("shown.bs.modal", function(e){ >- var button = $(e.relatedTarget); >- var item_id = button.data('item'); >- $("#addResult").replaceWith('<div id="addResult"></div>'); >- $("#addToBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items'); >- $("#external_id").focus(); >- bundle_changed = 0; >- bundle_form_active = item_id; >- }); >+ var bundle_changed; >+ var bundle_form_active; >+ $("#addToBundleModal").on("shown.bs.modal", function(e){ >+ var button = $(e.relatedTarget); >+ var item_id = button.data('item'); >+ $("#addResult").replaceWith('<div id="addResult"></div>'); >+ $("#addToBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items'); >+ $("#external_id").focus(); >+ bundle_changed = 0; >+ bundle_form_active = item_id; >+ }); > >- function addToBundle (url, data) { >- /* Send the data using post with external_id */ >- var posting = $.post({ >- url: url, >- data: JSON.stringify(data), >- contentType: "application/json; charset=utf-8", >- dataType: "json" >- }); >- >- const barcode = data.external_id; >- >- /* Report the results */ >- posting.done(function(data) { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-success">'+_("Success: Added '%s'").format(barcode)+'</div>'); >- $('#external_id').val('').focus(); >- bundle_changed = 1; >- }); >- posting.fail(function(data) { >- if ( data.status === 409 ) { >- var response = data.responseJSON; >- if ( response.error_code === 'already_bundled' ) { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>'); >- } else if (response.error_code === 'checked_out') { >- const button = $('<button type="button">') >- .addClass('btn btn-xs') >- .text(__("Check in and add to bundle")) >- .on('click', function () { >- addToBundle(url, { external_id: barcode, force_checkin: true }); >- }); >- $('#addResult') >- .empty() >- .attr('class', 'alert alert-warning') >- .append(__x('Warning: Item {barcode} is checked out', { barcode })) >- .append(' ', button); >- } else if (response.error_code === 'failed_checkin') { >- $('#addResult') >- .empty() >- .attr('class', 'alert alert-danger') >- .append(__x('Failure: Item {barcode} cannot be checked in', { barcode })) >- } else if (response.error_code === 'reserved') { >- const button = $('<button type="button">') >- .addClass('btn btn-xs') >- .text(__("Ignore holds and add to bundle")) >- .on('click', function () { >- addToBundle(url, { external_id: barcode, ignore_holds: true }); >- }); >- $('#addResult') >- .empty() >- .attr('class', 'alert alert-warning') >- .append(__x('Warning: Item {barcode} is on hold', { barcode })) >- .append(' ', button); >- } else { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>'); >- } >- } else if ( data.status === 404 ) { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>'); >- } else if ( data.status === 400 ) { >- var response = data.responseJSON; >- if ( response.error_code === "failed_nesting" ) { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' is a bundle and bundles cannot be nested").format(barcode)+'</div>'); >- } else { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>'); >- } >- } else { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>'); >- } >- $('#external_id').val('').focus(); >- }); >- } >+ function addToBundle (url, data) { >+ /* Send the data using post with external_id */ >+ var posting = $.post({ >+ url: url, >+ data: JSON.stringify(data), >+ contentType: "application/json; charset=utf-8", >+ dataType: "json" >+ }); > >- $("#addToBundleForm").submit(function(event) { >- /* stop form from submitting normally */ >- event.preventDefault(); >+ const barcode = data.external_id; > >- const url = this.action; >- const data = { external_id: this.elements.external_id.value }; >+ function addToBundle (url, data) { >+ /* Send the data using post with external_id */ >+ var posting = $.post({ >+ url: url, >+ data: JSON.stringify(data), >+ contentType: "application/json; charset=utf-8", >+ dataType: "json" >+ }); > >- addToBundle(url, data); >- }); >+ const barcode = data.external_id; > >- $("#addToBundleModal").on("hidden.bs.modal", function(e){ >- if ( bundle_changed ) { >- $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload(); >+ /* Report the results */ >+ posting.done(function(data) { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-success">'+_("Success: Added '%s'").format(barcode)+'</div>'); >+ $('#external_id').val('').focus(); >+ bundle_changed = 1; >+ }); >+ posting.fail(function(data) { >+ if ( data.status === 409 ) { >+ var response = data.responseJSON; >+ if ( response.error_code === 'already_bundled' ) { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>'); >+ } else if (response.error_code === 'checked_out') { >+ const button = $('<button type="button">') >+ .addClass('btn btn-xs') >+ .text(__("Check in and add to bundle")) >+ .on('click', function () { >+ addToBundle(url, { external_id: barcode, force_checkin: true }); >+ }); >+ $('#addResult') >+ .empty() >+ .attr('class', 'alert alert-warning') >+ .append(__x('Warning: Item {barcode} is checked out', { barcode })) >+ .append(' ', button); >+ } else if (response.error_code === 'failed_checkin') { >+ $('#addResult') >+ .empty() >+ .attr('class', 'alert alert-danger') >+ .append(__x('Failure: Item {barcode} cannot be checked in', { barcode })) >+ } else if (response.error_code === 'reserved') { >+ const button = $('<button type="button">') >+ .addClass('btn btn-xs') >+ .text(__("Ignore holds and add to bundle")) >+ .on('click', function () { >+ addToBundle(url, { external_id: barcode, ignore_holds: true }); >+ }); >+ $('#addResult') >+ .empty() >+ .attr('class', 'alert alert-warning') >+ .append(__x('Warning: Item {barcode} is on hold', { barcode })) >+ .append(' ', button); >+ } else { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>'); >+ } >+ } else if ( data.status === 404 ) { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>'); >+ } else if ( data.status === 400 ) { >+ var response = data.responseJSON; >+ if ( response.error_code === "failed_nesting" ) { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' is a bundle and bundles cannot be nested").format(barcode)+'</div>'); >+ } else { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>'); >+ } >+ } else { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>'); >+ } >+ $('#external_id').val('').focus(); >+ }); > } >- bundle_form_active = 0; >- bundle_changed = 0; >- }); > >- $("#removeFromBundleModal").on("shown.bs.modal", function(e){ >- var button = $(e.relatedTarget); >- var item_id = button.data('item'); >- $("#removeResult").replaceWith('<div id="removeResult"></div>'); >- $("#removeFromBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items/'); >- $("#rm_external_id").focus(); >- bundle_changed = 0; >- bundle_form_active = item_id; >- }); >+ $("#addToBundleForm").submit(function(event) { >+ /* stop form from submitting normally */ >+ event.preventDefault(); > >- $("#removeFromBundleForm").submit(function(event) { >+ const url = this.action; >+ const data = { external_id: this.elements.external_id.value }; > >- /* stop form from submitting normally */ >- event.preventDefault(); >+ addToBundle(url, data); >+ }); > >- /* get the action attribute from the <form action=""> element */ >- var $form = $(this), >- url = $form.attr('action'); >+ $("#addToBundleModal").on("hidden.bs.modal", function(e){ >+ if ( bundle_changed ) { >+ $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload(); >+ } >+ bundle_form_active = 0; >+ bundle_changed = 0; >+ }); > >- var barcode = $('#rm_external_id').val(); >+ $("#removeFromBundleModal").on("shown.bs.modal", function(e){ >+ var button = $(e.relatedTarget); >+ var item_id = button.data('item'); >+ $("#removeResult").replaceWith('<div id="removeResult"></div>'); >+ $("#removeFromBundleForm").attr('action', '/api/v1/items/' + item_id + '/bundled_items/'); >+ $("#rm_external_id").focus(); >+ bundle_changed = 0; >+ bundle_form_active = item_id; >+ }); > >- /* Fetch itemnumber using rm_external_id */ >- var itemReq = $.get('/api/v1/items', { q: JSON.stringify({ >- external_id: barcode >- }) }, null, "json"); >+ $("#removeFromBundleForm").submit(function(event) { > >- var itemnumber; >- itemReq.done(function(data) { >- if (data.length === 1) { >- itemnumber = data[0].item_id; >+ /* stop form from submitting normally */ >+ event.preventDefault(); > >- /* Remove link using fetch itemnumber */ >- var deleteReq = $.ajax( url + itemnumber, { >- type : 'DELETE' >- }); >+ /* get the action attribute from the <form action=""> element */ >+ var $form = $(this), >+ url = $form.attr('action'); > >- /* Report the results */ >- deleteReq.done(function(data) { >- var barcode = $('#rm_external_id').val(); >- $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-success">'+_("Success: Removed '%s'").format(barcode)+'</div>'); >- $('#rm_external_id').val('').focus(); >- bundle_changed = 1; >- }); >- deleteReq.fail(function(data) { >- var barcode = $('#rm_external_id').val(); >- if ( data.status === 409 ) { >- var response = data.responseJSON; >- if ( response.key === "PRIMARY" ) { >- $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>'); >+ var barcode = $('#rm_external_id').val(); >+ >+ /* Fetch itemnumber using rm_external_id */ >+ var itemReq = $.get('/api/v1/items', { q: JSON.stringify({ >+ external_id: barcode >+ }) }, null, "json"); >+ >+ var itemnumber; >+ itemReq.done(function(data) { >+ if (data.length === 1) { >+ itemnumber = data[0].item_id; >+ >+ /* Remove link using fetch itemnumber */ >+ var deleteReq = $.ajax( url + itemnumber, { >+ type : 'DELETE' >+ }); >+ >+ /* Report the results */ >+ deleteReq.done(function(data) { >+ var barcode = $('#rm_external_id').val(); >+ $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-success">'+_("Success: Removed '%s'").format(barcode)+'</div>'); >+ $('#rm_external_id').val('').focus(); >+ bundle_changed = 1; >+ }); >+ deleteReq.fail(function(data) { >+ var barcode = $('#rm_external_id').val(); >+ if ( data.status === 409 ) { >+ var response = data.responseJSON; >+ if ( response.key === "PRIMARY" ) { >+ $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-warning">'+_("Warning: Item '%s' already attached").format(barcode)+'</div>'); >+ } else { >+ $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>'); >+ } >+ } else if ( data.status === 404 ) { >+ $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>'); > } else { >- $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Item '%s' belongs to another bundle").format(barcode)+'</div>'); >+ $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>'); > } >- } else if ( data.status === 404 ) { >- $('#addResult').replaceWith('<div id="addResult" class="alert alert-danger">'+_("Failure: Item '%s' not found").format(barcode)+'</div>'); >- } else { >- $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failure: Check the logs for details")+'</div>'); >- } >- $('#rm_external_id').val('').focus(); >- }); >- } else { >- $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Barcode matched more than one item '%s'").format(barcode)+'</div>'); >- } >- }); >- itemReq.fail(function(data) { >- $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Item not found '%s'").format(barcode)+'</div>'); >- $('#rm_external_id').val('').focus(); >+ $('#rm_external_id').val('').focus(); >+ }); >+ } else { >+ $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Barcode matched more than one item '%s'").format(barcode)+'</div>'); >+ } >+ }); >+ itemReq.fail(function(data) { >+ $('#removeResult').replaceWith('<div id="removeResult" class="alert alert-danger">'+_("Failed: Item not found '%s'").format(barcode)+'</div>'); >+ $('#rm_external_id').val('').focus(); > >+ }); > }); >- }); > >- $("#removeFromBundleModal").on("hidden.bs.modal", function(e){ >- if ( bundle_changed ) { >- $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload(); >- } >- bundle_form_active = 0; >- bundle_changed = 0; >- }); >- // End bundle handling >+ $("#removeFromBundleModal").on("hidden.bs.modal", function(e){ >+ if ( bundle_changed ) { >+ $('#bundle_table_'+bundle_form_active).DataTable({ 'retrieve': true }).ajax.reload(); >+ } >+ bundle_form_active = 0; >+ bundle_changed = 0; >+ }); >+ // End bundle handling > [% END %] > > var table_names = [ 'holdings_table', 'otherholdings_table' ]; >@@ -2136,29 +2322,29 @@ > var table = KohaTable( table_name, dt_parameters, table_settings[index], 'with_filters' ); > > [% IF bundlesEnabled %] >- // Add event listener for opening and closing bundle details >- $('#' + table_name + ' tbody').on('click', 'button.details-control', function () { >- var button = $(this); >- var tr = button.closest('tr'); >- var dTable = button.closest('table').DataTable({ 'retrieve': true }); >- >- var itemnumber = tr.data('itemnumber'); >- var duedate = tr.data('duedate'); >- var row = dTable.row( tr ); >- >- if ( row.child.isShown() ) { >- // This row is already open - close it >- row.child.hide(); >- tr.removeClass('shown'); >- button.removeClass('active'); >- } >- else { >- // Open this row >- createChild(row, itemnumber, duedate); >- tr.addClass('shown'); >- button.addClass('active'); >- } >- } ); >+ // Add event listener for opening and closing bundle details >+ $('#' + table_name + ' tbody').on('click', 'button.details-control', function () { >+ var button = $(this); >+ var tr = button.closest('tr'); >+ var dTable = button.closest('table').DataTable({ 'retrieve': true }); >+ >+ var itemnumber = tr.data('itemnumber'); >+ var duedate = tr.data('duedate'); >+ var row = dTable.row( tr ); >+ >+ if ( row.child.isShown() ) { >+ // This row is already open - close it >+ row.child.hide(); >+ tr.removeClass('shown'); >+ button.removeClass('active'); >+ } >+ else { >+ // Open this row >+ createChild(row, itemnumber, duedate); >+ tr.addClass('shown'); >+ button.addClass('active'); >+ } >+ } ); > [% END %] > }); > >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 33195
:
151432
|
151433
|
151486
|
167346
|
167347
|
167358
|
167359
|
168724
|
168725