Koha/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt
Jonathan Druart 1ea55acd0c Bug 26921: Don't generate an invalid custom cover image if the url cannot be generated
In case a custom cover image url is used to generate the cover image of
bibliographic records, we should not build one if the record does not
have the necessary data.

For instance if you have
CustomCoverImagesURL set to https://covers.openlibrary.org/b/isbn/{isbn}-M.jpb
and a biblio does not have the isbn defined, we should not generate and
empty image (empty or invalid src)

Test plan:
0.
Set CustomCoverImagesURL to https://covers.openlibrary.org/b/isbn/{isbn}-M.jpb
Enable CustomCoverImages and OPACCustomCoverImages
To highlight the issue you should disable LocalCoverImages and OPACLocalCoverImages.
1. Make sure you have some of your bibliographic records with a valid
isbn
2. Make sure you have at least 1 bibliographic record without an isbn
set
3. Visit the search result and detail views (OPAC and staff interfaces)
=> Without this patch you should see a "Cover image" link, and an empty
block/div on the detail page
=> With this patch applied you should only see images when the url can
be generated

Note that the problem will persist if the isbn is not valid (ie. no
image is generated)

Sponsored-by: Orex Digital
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2020-12-21 10:07:48 +01:00

1109 lines
72 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% SET PRIVATE = 1 %]
[% SET PUBLIC = 2 %]
[% SET TagsShowEnabled = ( ( Koha.Preference( 'TagsEnabled' ) == 1 ) && Koha.Preference('TagsShowOnList') ) %]
[% SET TagsInputEnabled = ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) && ( Koha.Preference( 'TagsEnabled' ) == 1 ) && Koha.Preference('TagsInputOnList') ) %]
[% SET AdlibrisEnabled = Koha.Preference('AdlibrisCoversEnabled') %]
[% SET AdlibrisURL = Koha.Preference('AdlibrisCoversURL') %]
[% BLOCK delete_shelf %]
<form action="/cgi-bin/koha/opac-shelves.pl" method="post" id="deleteshelf[% shelf.shelfnumber | html %]" class="d-inline">
<input type="hidden" name="op" value="delete" />
<input type="hidden" name="referer" value="list" />
<input type='hidden' name='category' value='[% category | html %]' />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<button type="submit" class="btn btn-link remove deleteshelf" data-shelfnumber="[% shelf.shelfnumber | html %]" data-shelfname="[% shelf.shelfname | html %]" data-shared="[% shelf.is_shared | html %]" data-count="[% contents.count | html %]">
<i class="fa fa-remove" aria-hidden="true"></i>
[% IF ( context == "list" ) %]
Delete
[% ELSE %]
Delete list
[% END %]
</button>
</form>
[% END %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog &rsaquo; [% IF op == 'view' %]Contents of [% shelf.shelfname | html %][% ELSE %]Your lists[% END %]</title>[% INCLUDE 'doc-head-close.inc' %]
[% BLOCK cssinclude %][% END %]
</head>
[% IF ( loggedinusername ) %]
[% INCLUDE 'bodytag.inc' bodyid='opac-userlists' bodyclass='scrollto' %]
[% ELSE %]
[% INCLUDE 'bodytag.inc' bodyid='opac-lists' bodyclass='scrollto' %]
[% END %]
[% BLOCK list_permissions %]
<li>
<label for="allow_changes_from">Allow changes to contents from: </label>
<select name="allow_changes_from" id="allow_changes_from" onchange="AdjustRemark()">
[% IF shelf.allow_change_from_owner %]<option value="0">Nobody</option>[% ELSE %]<option value="0" selected="selected">Nobody</option>[% END %]
[% IF shelf.allow_change_from_owner && (( !shelf.is_public && !shelf.is_shared ) || !shelf.allow_change_from_others ) %]
<option value="1" selected="selected">Owner only</option>
[% ELSE %]
<option value="1">Owner only</option>
[% END %]
[% IF shelf.allow_change_from_others %]<option value="2" selected="selected">Anyone seeing this list</option>[% ELSE %]<option value="2">Anyone seeing this list</option>[% END %]
</select>
&emsp; <span id="anyone_remark" style="display:none;color:red;">The "Anyone" permission has no actual effect while this list is strictly private.</span>
</li>
[% END %]
[% INCLUDE 'masthead.inc' %]
<div class="main">
<nav aria-label="breadcrumb">
<ul class="breadcrumb">
<li class="breadcrumb-item">
<a href="/cgi-bin/koha/opac-main.pl">Home</a>
</li>
[% IF ( loggedinusername ) %]
<li class="breadcrumb-item">
<a href="/cgi-bin/koha/opac-user.pl">[% INCLUDE 'patron-title.inc' patron = logged_in_user %]</a>
</li>
[% END %]
[% IF op != 'list' %]
<li class="breadcrumb-item">
<a href="/cgi-bin/koha/opac-shelves.pl">Lists</a>
</li>
[% ELSE %]
<li class="breadcrumb-item" aria-current="page">
Lists
</li>
[% END %]
[% IF shelf and shelf.is_private %]
[% IF op == 'view' OR op == 'edit_form' %]
<li class="breadcrumb-item">
<a href="/cgi-bin/koha/opac-shelves.pl?op=list&amp;category=[% PRIVATE | uri %]">Your lists</a>
</li>
[% ELSE %]
<li class="breadcrumb-item" aria-current="page">
Your lists
</li>
[% END %]
[% ELSIF shelf AND shelf.is_public %]
[% IF op == 'view' %]
<li class="breadcrumb-item">
<a href="/cgi-bin/koha/opac-shelves.pl?op=list&amp;category=[% PUBLIC | uri %]">Public lists</a>
</li>
[% ELSE %]
<li class="breadcrumb-item" aria-current="page">
Public lists
</li>
[% END %]
[% END %]
[% IF op == 'view' %]
<li class="breadcrumb-item" aria-current="page">
Contents of &nbsp;<em>[% shelf.shelfname | html %]</em>
</li>
[% END %]
[% IF op == 'add_form' %]
<li class="breadcrumb-item" aria-current="page">
Create new list
</li>
[% END %]
[% IF op == 'edit_form' %]
<li class="breadcrumb-item" aria-current="page">
Edit list &nbsp;<em>[% shelf.shelfname | html %]</em>
</li>
[% END %]
</ul> <!-- / .breadcrumb -->
</nav>
<div class="container-fluid">
<div class="row">
[% IF ( OpacNav||loggedinusername ) %]
<div class="col col-lg-2 order-2 order-lg-1">
<div id="navigation">
[% INCLUDE 'navigation.inc' IsPatronPage=1 %]
</div>
</div>
<div class="col-md-12 col-lg-10 order-1">
[% ELSE %]
<div class="col order-first order-md-first order-lg-2">
[% END %]
<div id="usershelves" class="maincontent">
[% FOR m IN messages %]
[% SWITCH m.type %]
[% CASE 'message' %]
<div class="alert alert-success" role="alert">
[% CASE 'error' %]
<div class="alert alert-danger" role="alert">
[% END %]
[% SWITCH m.code %]
[% CASE 'error_on_update' %]
<span>An error occurred when updating this list.</span>
[% CASE 'error_on_insert' %]
<span>An error occurred when creating this list.</span>
[% CASE 'error_on_delete' %]
<span>An error occurred when deleting this list.</span>
[% CASE 'error_on_add_biblio' %]
<span>The item has not been added to the list. Please check it's not already in the list.</span>
[% CASE 'error_on_remove_share' %]
<span>The share has not been removed.</span>
[% CASE 'success_on_update' %]
<span>List updated.</span>
[% CASE 'success_on_insert' %]
<span>List created.</span>
[% CASE 'success_on_delete' %]
<span>List deleted.</span>
[% CASE 'success_on_add_biblio' %]
<span>The item has been added to the list.</span>
[% CASE 'success_on_remove_biblios' %]
<span>The item has been removed from the list.</span>
[% CASE 'success_on_remove_share' %]
<span>The share has been removed.</span>
[% CASE 'does_not_exist' %]
<span>This list does not exist.</span>
[% CASE 'item_does_not_exist' %]
<span>This item does not exist.</span>
[% CASE 'unauthorized_on_view' %]
<span>You do not have permission to view this list.</span>
[% CASE 'unauthorized_on_insert' %]
<span>You do not have permission to create a new list.</span>
[% CASE 'unauthorized_on_update' %]
<span>You do not have permission to update this list.</span>
[% CASE 'unauthorized_on_delete' %]
<span>You do not have permission to delete this list.</span>
[% CASE 'unauthorized_on_add_biblio' %]
<span>You do not have permission to add a record to this list.</span>
[% CASE 'no_biblio_removed' %]
<span>No record was removed.</span>
[% CASE 'Koha::Exceptions::Virtualshelves::DuplicateObject' %]
<span>An error occurred when creating the list. The name [% shelfname | html %] already exists.</span>
[% CASE 'DBIx::Class::Exception' %]
[% m.msg | html %]
[% CASE %]
[% m.code | html %]
[% m.msg | html %]
[% END %]
</div>
[% END %]
[% IF shelf AND op == 'view' %]
<h2>
[% shelf.shelfname | html %]
<a href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-shelves.pl?rss=1&amp;op=view&amp;shelfnumber=[% shelf.shelfnumber | uri %]" class="rss-list-link noprint" aria-label="Subscribe to this list">
<i class="fa fa-fw fa-rss rsssearchicon" aria-hidden="true" title="Subscribe to this list"></i>
</a>
</h2>
[% IF ( itemsloop ) %]
[% SET contents = shelf.get_contents %]
[% IF ( contents.count ) %]<p>This list contains [% contents.count | html %] titles</p>[% END %]
<div id="floating">
<div id="toolbar" class="toolbar clearfix">
<div class="list-actions">
<a class="btn btn-link newshelf" href="/cgi-bin/koha/opac-shelves.pl?op=add_form"><i class="fa fa-fw fa-plus" aria-hidden="true"></i> New list</a> <span class="sep">|</span>
<div id="download-list" class="btn-group dropdown">
<a id="format" class="btn btn-link dropdown-toggle" data-toggle="dropdown" href="/cgi-bin/koha/opac-downloadshelf.pl?shelfnumber=[% shelf.shelfnumber | html %]"><i class="fa fa-fw fa-download" aria-hidden="true"></i> Download <b class="caret"></b></a>
<div class="dropdown-menu pull-left" role="menu" aria-labelledby="format">
<a role="menuitem" class="dropdown-item download-list" data-format="bibtex" href="#">BibTeX</a>
<a role="menuitem" class="dropdown-item download-list" data-format="isbd" href="#">ISBD</a>
<a role="menuitem" class="dropdown-item download-list" data-format="iso2709" href="#">MARC</a>
<a role="menuitem" class="dropdown-item download-list" data-format="ris" href="#">RIS (Zotero, EndNote, others)</a>
[% FOREACH csv_profile IN csv_profiles %]
<a role="menuitem" class="dropdown-item download-list" data-format="[% csv_profile.export_format_id | html %]" href="#">CSV - [% csv_profile.profile | html %]</a>
[% END %]
</div>
</div>
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
<span class="sendlist"><a href="/cgi-bin/koha/opac-sendshelf.pl?shelfid=[% shelf.shelfnumber | uri %]" class="btn btn-link send" onclick="open('/cgi-bin/koha/opac-sendshelf.pl?shelfid=[% shelf.shelfnumber | html %]','win_form','scrollbars=yes,resizable=yes,height=400,width=500,top=50,left=100'); return false; "><i class="fa fa-fw fa-envelope" aria-hidden="true"></i> Send list</a></span>
[% END %]
<a class="btn btn-link print-small" target="_blank" href="/cgi-bin/koha/opac-shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | html %]&sortfield=[% sortfield | html %]&direction=[% direction | uri %]&print=1"><i class="fa fa-fw fa-print" aria-hidden="true"></i> Print list</a>
[% IF can_manage_shelf %]
<span class="sep">|</span>
<form method="get" action="/cgi-bin/koha/opac-shelves.pl" class="d-inline">
<input type="hidden" name="op" value="edit_form" />
<input type="hidden" name="referer" value="view" />
<input type='hidden' name='category' value='[% shelf.category | html %]' />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<button type="submit" class="btn btn-link editshelf"><i class="fa fa-fw fa-pencil-square-o" aria-hidden="true"></i> Edit list</button>
</form>
[% PROCESS delete_shelf context = "details" %]
[% IF category == PRIVATE && Koha.Preference('OpacAllowSharingPrivateLists') %]
<a href="/cgi-bin/koha/opac-shareshelf.pl?op=invite&shelfnumber=[% shelf.shelfnumber | uri %]" class="btn btn-link sharelist"><i class="fa fa-fw fa-share" aria-hidden="true"></i> Share list</a>
[% END %]
[% ELSIF category == PRIVATE # not manageshelf and private means shared %]
<form action="/cgi-bin/koha/opac-shelves.pl" method="post" id="unshare[% shelf.shelfnumber | html %]" class="d-inline">
<input type="hidden" name="op" value="remove_share" />
<input type="hidden" name="referer" value="list" />
<input type='hidden' name='category' value='[% category | html %]' />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<button type="submit" class="btn btn-link remove remove_share" data-shelfname="[% shelf.shelfname | html %]" data-shelfnumber="[% shelf.shelfnumber | html %]">
<i class="fa fa-remove" aria-hidden="true"></i> Remove share
</button>
</form>
[% END # /IF can_manage_shelf %]
</div> <!-- /.list-actions -->
<form action="/cgi-bin/koha/opac-shelves.pl" id="sorting-form" class="d-inline sort_by pull-right">
<input type="hidden" name="op" value="view" />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<label for="sortfield">Sort by: </label>
<select name="sortfield" id="sortfield" class="resort">
<option value="">Default sorting</option>
<optgroup label="Author">
[% IF sortfield == 'author' && direction == 'asc' %]
<option value="author:asc" selected="selected">Author (A-Z)</option>
[% ELSE %]
<option value="author:asc">Author (A-Z)</option>
[% END %]
[% IF sortfield == 'author' && direction == 'desc' %]
<option value="author:desc" selected="selected">Author (Z-A)</option>
[% ELSE %]
<option value="author:desc">Author (Z-A)</option>
[% END %]
</optgroup>
<optgroup label="Title">
[% IF sortfield == 'title' && direction == 'asc' %]
<option value="title:asc" selected="selected">Title (A-Z)</option>
[% ELSE %]
<option value="title:asc">Title (A-Z)</option>
[% END %]
[% IF sortfield == 'title' && direction == 'desc' %]
<option value="title:desc" selected="selected">Title (Z-A)</option>
[% ELSE %]
<option value="title:desc">Title (Z-A)</option>
[% END %]
</optgroup>
<optgroup label="Call number">
[% IF sortfield == 'itemcallnumber' && direction == 'asc' %]
<option value="itemcallnumber:asc" selected="selected">Call number (A-Z)</option>
[% ELSE %]
<option value="itemcallnumber:asc">Call number (A-Z)</option>
[% END %]
[% IF sortfield == 'itemcallnumber' && direction == 'desc' %]
<option value="itemcallnumber:desc" selected="selected">Call number (Z-A)</option>
[% ELSE %]
<option value="itemcallnumber:desc">Call number (Z-A)</option>
[% END %]
</optgroup>
<optgroup label="Copyright date">
[% IF sortfield == 'copyrightdate' && direction == 'asc' %]
<option value="copyrightdate:desc" selected="selected">Copyright date (newest to oldest)</option>
[% ELSE %]
<option value="copyrightdate:desc">Copyright date (newest to oldest)</option>
[% END %]
[% IF sortfield == 'copyrightdate' && direction == 'desc' %]
<option value="copyrightdate:asc" selected="selected">Copyright date (oldest to newest)</option>
[% ELSE %]
<option value="copyrightdate:asc">Copyright date (oldest to newest)</option>
[% END %]
</optgroup>
<optgroup label="Date added">
[% IF sortfield == "dateadded" && direction == 'asc' %]
<option value="dateadded:desc" selected="selected">Date added (newest to oldest)</option>
[% ELSE %]
<option value="dateadded:desc">Date added (newest to oldest)</option>
[% END %]
[% IF sortfield == "dateadded" && direction == 'desc' %]
<option value="dateadded:asc" selected="selected">Date added (oldest to newest)</option>
[% ELSE %]
<option value="dateadded:asc">Date added (oldest to newest)</option>
[% END %]
</optgroup>
</select>
<input type="submit" class="btn btn-primary btn-sm" id="sort-submit" value="Resort list" />
</form> <!-- /#sorting-form -->
</div> <!-- / #toolbar -->
<div id="selections-toolbar" class="toolbar noprint">
<span class="checkall"></span> <span class="clearall"></span> <span class="sep">|</span>
<span class="links">
<span id="selections">Select titles to: </span>
[% IF Koha.Preference( 'RequestOnOpac' ) == 1 %]
<span id="placehold"></span>
[% END %]
[% IF ( TagsInputEnabled && loggedinusername ) %]
<span id="addtags">
<a id="tagsel_tag" href="#" class="btn btn-link btn-disabled"><i class="fa fa-fw fa-tag" aria-hidden="true"></i> Tag</a>
</span>
<span id="tagsel_form" class="form-inline" style="display:none">
<label for="tagsel_new">New tag(s), separated by a comma:</label>
<input class="form-control form-control-sm" type="text" name="tagsel_new" id="tagsel_new" maxlength="100" />
<input id="tagsel_button" name="tagsel_button" class="tagsel_button btn btn-primary btn-sm" title="tagsel_button" type="submit" value="Add" />
<a href="#" id="tagsel_cancel">Cancel</a>
</span>
[% END %]
[% IF loggedinusername && can_remove_biblios %]
<span id="removeitems"></span>
[% END %]
</span> <!-- / .links -->
</div> <!-- / #selections-toolbar -->
</div> <!-- /#floating -->
<form action="/cgi-bin/koha/opac-shelves.pl" method="post" id="myform" name="myform">
[% IF can_manage_shelf %]
<input type="hidden" name="op" value="remove_biblios" />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
[% END %]
<div class="searchresults">
<table id="listcontents" class="table">
<tbody>
[% FOREACH itemsloo IN itemsloop %]
<tr>
[% IF ( itemsloo.title ) %]
[% check_title = itemsloo.title %]
[% ELSE %]
[% check_title = itemsloo.biblionumber %]
[% END %]
<td class="select selectcol"><input type="checkbox" class="cb" name="biblionumber" value="[% itemsloo.biblionumber | html %]" aria-label="[% check_title | html %]"/></td>
[% UNLESS ( item_level_itypes ) %]
<td>
[% UNLESS ( Koha.Preference('OpacNoItemTypeImages') ) %]
<img src="[% itemsloo.imageurl | html %]" alt="[% itemsloo.description | html %]" title="[% itemsloo.description | html %]" />
[% END %]
[% itemsloo.description | html %]
</td>
[% END %]
<td>
<div class="coverimages">
<a class="p1" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% itemsloo.biblionumber | html %]">
[% IF ( itemsloo.title ) %]
[% img_title = itemsloo.title %]
[% ELSE %]
[% img_title = itemsloo.biblionumber %]
[% END %]
[% IF ( OPACLocalCoverImages ) %]
<span title="[% img_title | html %]" class="[% itemsloo.biblionumber | html %]" id="local-thumbnail[% loop.count | html %]"></span>
[% END %]
[% IF ( AdlibrisEnabled && itemsloo.normalized_isbn ) %]
<img src="[% AdlibrisURL | html %]?isbn=[% itemsloo.normalized_isbn | html %]" class="adlibris-cover" alt="Adlibris cover image" />
[% END %]
[% IF ( OPACAmazonCoverImages ) %]
[% IF ( itemsloo.normalized_isbn ) %]
<span title="[% img_title | html %]" id="amazon-thumbnail[% loop.count | html %]"><img src="https://images-na.ssl-images-amazon.com/images/P/[% itemsloo.normalized_isbn | html %].01.TZZZZZZZ.jpg" alt="" /></span>
[% ELSE %]
<span class="no-image">No cover image available</span>
[% END %]
[% END %]
[% IF ( SyndeticsEnabled && SyndeticsCoverImages ) %]
<span title="[% img_title | html %]" id="syndetics-thumbnail[% loop.count | html %]"><img src="https://secure.syndetics.com/index.aspx?isbn=[% itemsloo.normalized_isbn | html %]/SC.GIF&amp;client=[% SyndeticsClientCode | html %]&amp;type=xw10&amp;upc=[% itemsloo.normalized_upc | html %]&amp;oclc=[% itemsloo.normalized_oclc | html %]" alt="" /></span>
[% END %]
[% IF ( GoogleJackets ) %]
[% IF ( itemsloo.normalized_isbn ) %]
<div title="[% img_title | html %]" class="[% itemsloo.normalized_isbn | html %]" id="gbs-thumbnail[% loop.count | html %]"></div>
[% ELSE %]
<span class="no-image">No cover image available</span>
[% END %]
[% END %]
[% IF ( Koha.Preference('OpacCoce') && Koha.Preference('CoceProviders') ) %]
[% coce_id = itemsloo.normalized_ean || itemsloo.normalized_isbn %]
[% IF ( coce_id ) %]
<span title="[% img_title | html %]" class="[% coce_id | html %]" id="coce-thumbnail[% loop.count | html %]"></span>
[% ELSE %]
<span class="no-image">No cover image available</span>
[% END %]
[% END %]
[% IF OpenLibraryCovers %]
[% IF itemsloo.normalized_isbn %]
<span title="[% img_title | html %]" class="[% itemsloo.normalized_isbn | html %]" id="openlibrary-thumbnail[% loop.count | html %]"></span>
[% ELSE %]
<span class="no-image">No cover image available</span>
[% END %]
[% END %]
</a> <!-- / .p1 -->
[% IF ( Koha.Preference('BakerTaylorEnabled') && !Koha.Preference('BakerTaylorBookstoreURL') ) %]
[% bt_id = ( itemsloo.normalized_upc || itemsloo.normalized_isbn ) %]
[% IF ( bt_id ) %]
<img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL | html %][% bt_id | html %]" />
[% ELSE %]
<span class="no-image">No cover image available</span>
[% END %]
[% END %]
[% IF ( Koha.Preference('BakerTaylorEnabled') && Koha.Preference('BakerTaylorBookstoreURL') ) %]
[% bt_id = ( itemsloo.normalized_upc || itemsloo.normalized_isbn ) %]
[% IF ( bt_id ) %]
<a href="https://[% Koha.Preference('BakerTaylorBookstoreURL') | uri %][% bt_id | uri %]">
<img alt="See Baker &amp; Taylor" src="[% BakerTaylorImageURL | html %][% bt_id | html %]" />
</a>
[% ELSE %]
<span class="no-image">No cover image available</span>
[% END %]
[% END %]
[% IF Koha.Preference('OPACCustomCoverImages') AND Koha.Preference('CustomCoverImagesURL') %]
[% SET custom_cover_image_url = itemsloo.biblio_object.custom_cover_image_url %]
[% IF custom_cover_image_url %]
[% IF ( itemsloo.BiblioDefaultViewmarc ) %]
<a class="custom_cover_image" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% itemsloo.biblionumber |url %]">
[% ELSE %]
[% IF ( itemsloo.BiblioDefaultViewisbd ) %]
<a class="custom_cover_image" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% itemsloo.biblionumber |url %]">
[% ELSE %]
<a class="custom_cover_image" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% itemsloo.biblionumber |url %]">
[% END %]
[% END %]
<img alt="Cover image" src="[% custom_cover_image_url | url %]" /></a>
[% END %]
[% END %]
</div>
[% IF ( itemsloo.XSLTBloc ) %]
[% itemsloo.XSLTBloc | $raw %]
[% ELSE %]
[% IF ( itemsloo.BiblioDefaultViewmarc ) %]
<a class="title" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=[% itemsloo.biblionumber |url %]" title="View details for this title">
[% ELSE %]
[% IF ( itemsloo.BiblioDefaultViewisbd ) %]
<a class="title" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=[% itemsloo.biblionumber |url %]" title="View details for this title">
[% ELSE %]
<a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% itemsloo.biblionumber |url %]" title="View details for this title">
[% END %]
[% END %]
[% INCLUDE 'biblio-title.inc' biblio=itemsloo %]
</a>
[% IF ( itemsloo.author ) %]
by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% itemsloo.author |url %]" title="Search for works by this author" class="author">[% itemsloo.author | html %]</a>
[% ELSE %]
&nbsp;
[% END %]
<span class="results_summary">
<span class="label">Publication:</span>
[% IF ( itemsloo.place ) %]
[% itemsloo.place | html %]
[% END %]
[% IF ( itemsloo.publishercode ) %]
[% itemsloo.publishercode | html %]
[% END %]
[% IF ( itemsloo.publicationyear ) %]
[% itemsloo.publicationyear | html %]
[% ELSE %]
[% IF ( itemsloo.copyrightdate ) %]
[% itemsloo.copyrightdate | html %]
[% END %]
[% END %]
[% IF ( itemsloo.pages ) %]. [% itemsloo.pages | html %][% END %]
[% IF ( itemsloo.notes ) %], [% itemsloo.notes | html %][% END %]
[% IF ( itemsloo.item('size') ) %] [% itemsloo.item('size') | html %][% END %]
</span>
<span class="results_summary">
<span class="label">Holdings:</span>
[% IF ( itemsloo.ITEM_RESULTS ) %]
[% FOREACH ITEM_RESULT IN itemsloo.ITEM_RESULTS %]
[% ITEM_RESULT.homebranch | html %]
[% IF ( ITEM_RESULT.location_opac ) %]
<span class="shelvingloc">[% ITEM_RESULT.location_opac | html %]</span>
[% END %]
[% IF ( ITEM_RESULT.itemcallnumber ) %]
([% ITEM_RESULT.itemcallnumber | html %])
[% IF ( loop.last ) %].[% ELSE %],[% END %]
[% END %]
[% END %]
[% ELSE %]
This record has no items.
[% END %]
</span>
[% END # / IF itemsloo.XSLTBloc %]
[% IF ( TagsShowEnabled && itemsloo.TagLoop.size ) %]
<div class="results_summary tags">
<span class="label">Tags:</span>
<ul>
[% FOREACH TagLoo IN itemsloo.TagLoop %]
<li><a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term |url %]&amp;q=[% TagLoo.term |url %]">[% TagLoo.term | html %]</a> <span class="weight">([% TagLoo.weight_total | html %])</span></li>
[% END %]
</ul>
</div>
[% END %]
[% INCLUDE 'title-actions-menu.inc' items=itemsloo %]
[% INCLUDE "openlibrary-readapi.inc" bib = itemsloo %]
<!-- COinS / Openurl -->
<span class="Z3988" title="[% itemsloo.coins | html %]"></span>
</td>
</tr>
[% END # / FOREACH itemsloop %]
</tbody>
</table> <!-- / #listcontents -->
</div><!-- / .searchresults -->
[% IF ( pagination_bar ) %]
<div class="pages">[% pagination_bar | $raw %]</div>
[% END %]
[% IF can_remove_biblios %]
<input type="hidden" name="op" value="remove_biblios" />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<input type="hidden" name="modifyshelfcontents" value="1" />
<input type="submit" value="Remove selected items" id="remove-selected" class="btn btn-danger"/>
[% END %]
</form> <!-- /myform -->
[% ELSE %]
<div id="toolbar" class="toolbar clearfix">
<div class="list-actions">
<a class="btn btn-link newshelf" href="/cgi-bin/koha/opac-shelves.pl?op=add_form"><i class="fa fa-fw fa-plus" aria-hidden="true"></i> New list</a>
[% IF can_manage_shelf %]
<span class="sep">|</span>
<form method="get" action="/cgi-bin/koha/opac-shelves.pl" class="d-inline">
<input type="hidden" name="op" value="edit_form" />
<input type="hidden" name="referer" value="view" />
<input type="hidden" name="category" value="[% shelf.category | html %]" />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<button type="submit" class="btn btn-link editshelf"><i class="fa fa-fw fa-pencil-square-o" aria-hidden="true"></i> Edit list</button>
</form>
[% PROCESS delete_shelf context = "details" %]
[% END %]
</div> <!-- / .list-actions -->
</div> <!-- / #toolbar -->
<div class="alert alert-info">
This list is empty.
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
You can add to your lists from the results of any <a href="opac-main.pl">search</a>.
[% END %]
</div>
[% IF can_manage_shelf %]
<form method="post" action="opac-shelves.pl">
<input type="hidden" name="op" value="delete" />
<input type="hidden" name="referer" value="list" />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]"/>
<input type="submit" class="btn btn-danger" value="Delete this list" onclick="return confirmDelete(MSG_CONFIRM_DELETE_LIST)" />
</form>
[% END %]
[% END # / IF itemsloop %]
[% END # /IF shelf AND op == 'view' %]
[% IF op == 'add_form' OR op == 'edit_form' %]
<form method="post" action="/cgi-bin/koha/opac-shelves.pl">
<fieldset class="rows">
[% IF op == 'add_form' %]
<div id="addshelf">
<legend>Create a new list</legend>
<input type="hidden" name="op" value="add" />
[% ELSE %]
<legend>Editing <em>[% shelf.shelfname | html %]</em></legend>
<input type="hidden" name="op" value="edit" />
<input type="hidden" name="referer" value="[% referer | html %]" />
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
[% END %]
<input type="hidden" name="owner" id="owner" value="[% loggedinusernumber | html %]" />
<ol>
<li>
<label class="required" for="shelfname">List name: </label>
<input type="text" id="shelfname" name="shelfname" maxlength="255" value="[% shelf.shelfname | html %]" required="required" class="focus required"/>
<span class="required">Required</span></li>
<li>
<label for="sortfield" >Sort this list by: </label>
<select name="sortfield" id="sortfield">
[% IF shelf.sortfield == "title" %]
<option value="title" selected="selected">Title</option>
[% ELSE %]
<option value="title">Title</option>
[% END %]
[% IF shelf.sortfield == "author" %]
<option value="author" selected="selected">Author</option>
[% ELSE %]
<option value="author">Author</option>
[% END %]
[% IF shelf.sortfield == "copyrightdate" %]
<option value="copyrightdate" selected="selected">Year</option>
[% ELSE %]
<option value="copyrightdate">Year</option>
[% END %]
[% IF shelf.sortfield == "itemcallnumber" %]
<option value="itemcallnumber" selected="selected">Call number</option>
[% ELSE %]
<option value="itemcallnumber">Call number</option>
[% END %]
[% IF shelf.sortfield == "dateadded" %]
<option value="dateadded" selected="selected">Date added</option>
[% ELSE %]
<option value="dateadded">Date added</option>
[% END %]
</select>
</li>
[% IF Koha.Preference('OpacAllowPublicListCreation') OR category == PUBLIC %]
<li>
<label for="category">Category:</label>
<select name="category" id="category" onchange="AdjustRemark()">
[% IF shelf.is_private %]
<option value="1" selected="selected">Private</option>
[% ELSE %]
<option value="1">Private</option>
[% END %]
[% IF shelf.is_public %]
<option value="2" selected="selected">Public</option>
[% ELSE %]
<option value="2">Public</option>
[% END %]
</select>
[% IF shelf.is_public AND NOT Koha.Preference('OpacAllowPublicListCreation') %]
<span class="hint alert alert-info">The library has disabled the ability for patrons to create new public lists. If you make your list private, you will not be able to make it public again.</span>
[% END %]
</li>
[% END %]
[% INCLUDE list_permissions %]
</ol>
[% UNLESS Koha.Preference('OpacAllowPublicListCreation') OR category == PUBLIC %]
<input type="hidden" name="category" value="[% PRIVATE | html %]" />
[% END %]
</fieldset> <!-- /.rows -->
<fieldset class="action">
<input type="submit" value="Save" class="btn btn-primary" />
[% IF referer == 'view' %]
<a href="/cgi-bin/koha/opac-shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | uri %]" class="cancel">Cancel</a>
[% ELSE %]
<a href="/cgi-bin/koha/opac-shelves.pl?op=list&amp;category=[% PRIVATE | uri %]" class="cancel">Cancel</a>
[% END %]
</fieldset>
</form>
[% ELSIF op == 'list' %]
<h2>Lists</h2>
<div class="toptabs ui-tabs ui-widget ui-widget-content ui-corner-all">
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
[% IF category == PRIVATE %]
<li id="privateshelves_tab" class="ui-state-default ui-corner-top ui-tabs-active ui-state-active"><a class="ui-tabs-anchor" href="/cgi-bin/koha/opac-shelves.pl?op=listamp;category=[% PRIVATE | html %]">Your lists</a></li>
[% ELSE %]
<li id="privateshelves_tab" class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="/cgi-bin/koha/opac-shelves.pl?op=list&amp;category=[% PRIVATE | html %]">Your lists</a></li>
[% END %]
[% END %]
[% IF category == PUBLIC %]
<li id="publicshelves_tab" class="ui-state-default ui-corner-top ui-tabs-active ui-state-active"><a class="ui-tabs-anchor" href="/cgi-bin/koha/opac-shelves.pl?op=list&amp;category=[% PUBLIC | html %]">Public lists</a></li>
[% ELSE %]
<li id="publicshelves_tab" class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="/cgi-bin/koha/opac-shelves.pl?op=list&amp;category=[% PUBLIC | html %]">Public lists</a></li>
[% END %]
</ul>
[% IF category == PRIVATE %]
<div id="privateshelves" class="ui-tabs-panel ui-widget-content ui-corner-bottom" style="display:block;">
[% ELSE %]
<div id="publicshelves" class="ui-tabs-panel ui-widget-content ui-corner-bottom" style="display:block;">
[% END %]
[% IF category == PRIVATE || Koha.Preference('OpacAllowPublicListCreation') %]
[% IF loggedinusername %]
<div id="toolbar" class="toolbar"><a class="btn btn-link newshelf" href="/cgi-bin/koha/opac-shelves.pl?op=add_form"><i class="fa fa-plus" aria-hidden="true"></i> New list</a></div>
[% ELSE %]
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
<div class="alert alert-info"><a href="/cgi-bin/koha/opac-shelves.pl?op=add_form">Log in to create a new list</a></div>
[% END %]
[% END %]
[% END %]
[% IF shelves.count %]
<table class="table">
<thead>
<tr>
<th>List name</th>
<th>Contents</th>
<th>Type</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
[% FOREACH s IN shelves %]
[% SET contents = s.get_contents %]
<tr>
<td><a href="/cgi-bin/koha/opac-shelves.pl?op=view&amp;shelfnumber=[% s.shelfnumber | uri %]">[% s.shelfname | html %]</a></td>
<td>[% IF contents.count %][% contents.count | html %] [% IF contents.count == 1 %]item[% ELSE %]items[% END %][% ELSE %]Empty[% END %]</td>
<td>
[% IF s.is_private %]
[% IF s.is_shared %]Shared[% ELSE %]Private[% END %]
[% ELSE %]
Public
[% END %]
</td>
<td>
[% IF s.can_be_managed( loggedinusernumber ) %]
<form action="/cgi-bin/koha/opac-shelves.pl" method="get" class="d-inline">
<input type="hidden" name="shelfnumber" value="[% s.shelfnumber | html %]" />
<input type="hidden" name="category" value="[% s.category | html %]" />
<input type="hidden" name="op" value="edit_form" />
<input type="hidden" name="referer" value="list" />
<button type="submit" class="btn btn-link editshelf"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Edit</button>
</form>
[% END %]
[% IF s.can_be_deleted( loggedinusernumber ) %]
[% PROCESS delete_shelf shelf = s context = "list" %]
[% END %]
[% IF s.is_private AND s.can_be_managed( loggedinusernumber ) AND Koha.Preference('OpacAllowSharingPrivateLists') %]
<a href="/cgi-bin/koha/opac-shareshelf.pl?op=invite&shelfnumber=[% s.shelfnumber | uri %]" class="sharelist btn btn-link"><i class="fa fa-share" aria-hidden="true"></i> Share</a>
[% END %]
[% IF s.is_shared_with( loggedinusernumber ) %]
<form action="opac-shelves.pl" method="post" id="unshare[% s.shelfnumber | html %]" class="d-inline">
<input type="hidden" name="op" value="remove_share" />
<input type="hidden" name="referer" value="list" />
<input type='hidden' name='category' value='[% category | html %]' />
<input type="hidden" name="shelfnumber" value="[% s.shelfnumber | html %]" />
<button type="submit" class="btn btn-link remove remove_share"
data-shelfname="[% s.shelfname | html %]" data-shelfnumber="[% s.shelfnumber | html %]"><i class="fa fa-remove" aria-hidden="true"></i> Remove share</button>
</form>
[% END %]&nbsp;
</td>
</tr>
[% END %]
</tbody>
</table> <!-- /.table -->
<div class="pages">[% pagination_bar | $raw %]</div>
[% ELSE %]
[% IF category == PUBLIC %]
<p>No public lists.</p>
[% ELSIF loggedinusernumber %]
<p>No private lists.</p>
[% END %]
[% END # /IF shelves.count %]
</div> [%# <div class="toptabs ui-tabs ui-widget ui-widget-content ui-corner-all"> %]
[% ELSIF NOT loggedinusernumber %]
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
<div class="alert alert-info"><a href="/cgi-bin/koha/opac-shelves.pl?op=add_form">Log in to create a new list</a></div>
[% END %]
[% END # IF op == 'add_form' OR op == 'edit_form' %]
</div> <!-- / #usershelves -->
</div> <!-- / .col-lg-10/12 -->
</div> <!-- / .row -->
</div> <!-- / .container-fluid -->
</div> <!-- / .main -->
<form method="post" id="download_list" action="/cgi-bin/koha/opac-downloadshelf.pl">
<input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
<input type="hidden" name="format" id="download_format" value="" />
</form>
<!-- DEBUG -->
<div id="debug"></div>
<!-- /DEBUG -->
[% INCLUDE 'opac-bottom.inc' %]
[% BLOCK jsinclude %]
[% Asset.js("lib/hc-sticky.js") | $raw %]
[% IF OpenLibraryCovers || OpenLibrarySearch %]
[% Asset.js("js/openlibrary.js") | $raw %]
[% END %]
<script>
var MSG_REMOVE_FROM_LIST = _("Are you sure you want to remove these items from the list?");
var MSG_REMOVE_ONE_FROM_LIST = _("Are you sure you want to remove this item from the list?");
var MSG_CONFIRM_DELETE_LIST = _("Are you sure you want to delete this list?");
var MSG_CONFIRM_REMOVE_SHARE = _("Are you sure you want to remove this share?");
[% IF ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) && ( Koha.Preference( 'RequestOnOpac' ) == 1 ) ) %]
function holdSelections() {
var checkedBoxes = $("input:checkbox:checked");
if ($(checkedBoxes).size() == 0) {
alert( __("No item was selected") );
} else {
var bibs = "";
$(checkedBoxes).each(function(){
bibs += $(this).val() + "/";
});
document.location = "/cgi-bin/koha/opac-reserve.pl?biblionumbers="+bibs;
}
}
[% END %]
[% IF ( TagsInputEnabled && loggedinusername ) %]
function tagSelected() {
var checkedBoxes = $("input:checkbox:checked");
if ($(checkedBoxes).size()) {
$("#tagsel_tag").hide();
$(".tag_hides").hide();
$("#tagsel_form").show();
} else {
alert( __("No item was selected") );
}
}
function tagCanceled() {
$("#tagsel_form").hide();
$("#tagsel_tag").show();
$(".tag_hides").show();
$("#tagsel_new").val("");
$(".tagstatus").empty().hide();
}
function tagAdded() {
var checkedBoxes = $("input:checkbox:checked");
if (!$(checkedBoxes).size()) {
alert( __("No item was selected") );
return false;
}
var tag = $("#tagsel_new").val();
if (!tag || (tag == "")) {
alert(MSG_NO_TAG_SPECIFIED);
return false;
}
var bibs = [];
for (var i = 0; i < $(checkedBoxes).size(); i++) {
var box = $(checkedBoxes).get(i);
bibs[i] = $(box).val();
}
KOHA.Tags.add_multitags_button(bibs, tag);
return false;
}
[% END %]
function enableCheckboxActions(){
// Enable/disable controls if checkboxes are checked
var checkedBoxes = $(".cb:checked");
if ($(checkedBoxes).size()) {
$("#selections").html(_("With selected titles: "));
$("#selections-toolbar .links a").removeClass("disabled");
} else {
$("#selections").html(_("Select titles to: "));
$("#selections-toolbar .links a").addClass("disabled");
}
}
$(function() {
[% IF Koha.Preference( 'opacbookbag' ) == 1 %]$(".addtocart,.cartRemove").removeClass("hidden");[% END %]
$("span.clearall").html("<a id=\"CheckNone\" class=\"btn btn-link btn-sm\" href=\"#\">"+_("Clear all")+"<\/a>");
$("span.checkall").html("<a id=\"CheckAll\" class=\"btn btn-link btn-sm\" href=\"#\">"+_("Select all")+"<\/a>");
$("a.print").show();
[% IF ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) && ( Koha.Preference( 'RequestOnOpac' ) == 1 ) ) %]
$("#placehold").html("<a href=\"#\" class=\"btn btn-link hold tag_hides btn-disabled\"><i class=\"fa fa-fw fa-bookmark\" aria-hidden=\"true\"></i> "+_("Place hold")+"<\/a>");
$("#selections-toolbar a.hold").click(function(){
holdSelections();
return false;
});
[% END %]
$("#CheckAll").on("click",function(e){
e.preventDefault();
$(".cb").prop("checked", true);
enableCheckboxActions();
});
$("#CheckNone").on("click",function(e){
e.preventDefault();
$(".cb").prop("checked", false);
enableCheckboxActions();
});
$(".cb").click(function(){
enableCheckboxActions();
});
enableCheckboxActions();
[% IF ( TagsInputEnabled && loggedinusername ) %]
var tagAdd = $(".tag_add");
tagAdd.removeClass("hidden");
$("#tagsel_tag").click(function(){
tagSelected();
return false;
});
$("#tagsel_cancel").click(function(){
tagCanceled();
return false;
});
$("#tagsel_button").click(function(){
tagAdded();
return false;
});
tagAdd.click(function(){
var thisid = $(this).attr("id");
thisid = thisid.replace("tag_add","");
$(this).hide();
$("#tagform"+thisid).show();
$("#newtag"+thisid).focus();
$("#newtag"+thisid+"_status").empty().hide();
return false;
});
$(".cancel_tag_add").click(function(){
var thisid = $(this).attr("id");
thisid = thisid.replace("cancel","");
$("#tagform"+thisid).hide();
$("#tag_add"+thisid).show();
$("#newtag"+thisid).val("");
$("#newtag"+thisid+"_status").empty().hide();
return false;
});
$(".tagbutton").click(function(){
var thisid = $(this).attr("title");
var tag = $("#newtag"+thisid).val();
if (!tag || (tag == "")) {
alert(MSG_NO_TAG_SPECIFIED);
return false;
}
KOHA.Tags.add_tag_button(thisid, tag);
return false;
});
[% END %]
[% IF loggedinusername && can_remove_biblios %]
$(".removefromlist").on("click", function(e){
return confirmDelete(MSG_REMOVE_ONE_FROM_LIST);
});
$("#myform").submit(function(){
var checkedBoxes = $(".cb:checked");
var numchecked = $(checkedBoxes).size();
if (numchecked) {
if( numchecked > 1 ){
return confirmDelete(MSG_REMOVE_FROM_LIST);
} else {
return confirmDelete(MSG_REMOVE_ONE_FROM_LIST);
}
} else {
alert( __("No item was selected") );
return false;
}
});
$("#removeitems").html("<a href=\"#\" class=\"btn btn-link disabled removeitems tag_hides\"><i class=\"fa fa-fw fa-remove\" aria-hidden=\"true\"></i> "+_("Remove from list")+"</a>")
.click(function(){
$("#myform").submit();
return false;
});
[% END %]
[% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCoverFromIsbn();[% END %]
[% IF OPACLocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %]
[% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
[% IF ( Koha.Preference('OpacCoce') && Koha.Preference('CoceProviders') ) %]
KOHA.coce.getURL('[% Koha.Preference('CoceHost') | html %]', '[% Koha.Preference('CoceProviders') | html %]');
[% END %]
[% IF print %]
window.print();
window.onafterprint = function () {
window.close();
}
setTimeout('window.close()', 1000); // Hack for Chrome < 63
[% END %]
AdjustRemark();
Sticky = $("#floating");
Sticky.hcSticky({
stickTo: "#usershelves",
stickyClass: "floating"
});
[% IF itemsloop %]
sortMenu( $("#sorting-form") );
$("#sortfield").on("change", function(){
$('#sorting-form').submit();
});
[% END %]
$(".deleteshelf").on("click", function(e){
e.preventDefault();
var shelf_name = $(this).data("shelfname");
var shelf_number = $(this).data("shelfnumber");
var is_shared = $(this).data("shared");
var count = $(this).data("count");
var message = "<p><em>" + shelf_name + "</em></p>";
if( count ){
message += "<p>" + _("Items on this list:") + " <strong>" + count + "</strong></p>";
}
if( is_shared ){
message += "<p>" + _("This list is shared. Other users will lose access to it.") + "</p>";
}
confirmModal( message, _("Are you sure you want to delete this list?"), _("Yes, delete"), _("No, do not delete"), function( result ){
if( result ){
$("#deleteshelf" + shelf_number ).submit();
}
}
);
});
$(".remove_share").on("click", function(e){
e.preventDefault();
var shelf_name = $(this).data("shelfname");
var shelf_number = $(this).data("shelfnumber");
confirmModal( shelf_name, _("Are you sure you want to remove sharing? You will no longer have access to the list."), _("Yes, remove sharing"), _("No, do not remove sharing"), function( result ){
if( result ){
$("#unshare" + shelf_number ).submit();
}
}
);
});
$(".download-list").on("click", function(e){
e.preventDefault();
var format = $(this).data("format");
$("#download_format").val( format );
$("#download_list").submit();
});
}); // document.ready
function sortMenu( sorting_form ){
var shelfnumber = sorting_form.find("input[name='shelfnumber']").val();
var sort_link = "/cgi-bin/koha/opac-shelves.pl?op=view&amp;shelfnumber=" + shelfnumber + "&sortfield=";
var menu = "<div class=\"btn-group dropdown\"><button type=\"button\" class=\"btn btn-link dropdown-toggle\" data-toggle=\"dropdown\" id=\"sortmenu\" aria-haspopup=\"true\" aria-expanded=\"false\"><i class=\"fa fa-sort\" aria-hidden=\"true\"></i> " + _("Sort") + "</span></button><div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"sortmenu\">";
$("#sortfield").children().each(function(){
if( $(this)[0].tagName.toUpperCase() == "OPTION" ){
menu += "<a class=\"dropdown-item\" href=\"" + sort_link + $(this).val() + "\">" + $(this).text() + "</a>";
} else if( $(this)[0].tagName.toUpperCase() == "OPTGROUP" ){
menu += "<span class=\"dropdown-header\">" + $(this).attr("label") + "</span>";
$(this).children().each(function(){
if( $(this)[0].tagName.toUpperCase() == "OPTION" ){
menu += "<a class=\"dropdown-item\" href=\"" + sort_link + $(this).val() + "\">" + $(this).text() + "</a>";
}
});
}
});
menu += "</div>";
$(".list-actions").append( menu );
sorting_form.remove();
}
function AdjustRemark() {
var category;
if( $("#category").length > 0 ) {
category = $("#category").val();
} else {
category = [% category | html %];
}
var perms = $("#allow_changes_from").val();
if( perms < 2 ) {
$("#anyone_remark").hide();
} else if( category==1 ) {
// If we move to Private (without shares), show Anyone remark
// Note: the number of shares is not tested real-time
[% IF !shelf.is_shared %]
$("#anyone_remark").show();
[% ELSE %]
$("#anyone_remark").hide();
[% END %]
} else { // category==2
$("#anyone_remark").hide();
}
}
</script>
[% END %]