Koha-clms/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt

706 lines
44 KiB
Plaintext

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% USE KohaPlugins %]
[% USE To %]
[% PROCESS 'i18n.inc' %]
[% PROCESS 'html_helpers.inc' %]
[% SET LoginEnabled = ( Koha.Preference('opacuserlogin') == 1 ) %]
[% IF ( Koha.Preference('TagsEnabled') ) %]
[% SET TagsShowEnabled = ( ( Koha.Preference('TagsEnabled') == 1 ) && ( Koha.Preference('TagsShowOnList') > 0 ) ) %]
[% SET TagsInputEnabled = LoginEnabled && TagsShowEnabled && ( Koha.Preference('TagsInputOnList') > 0 ) %]
[% END %]
[% SET CartEnabled = ( Koha.Preference('opacbookbag') == 1 ) %]
[% SET ListsEnabled = ( Koha.Preference('virtualshelves') == 1 ) && LoginEnabled %]
[% SET HoldsEnabled = ( Koha.Preference('OPACHoldRequests') == 1 ) && LoginEnabled %]
[% SET RecallsEnabled = ( Koha.Preference('UseRecalls') == 1 ) && LoginEnabled %]
[% SET ArticleRequestsEnabled = ( Koha.Preference('ArticleRequests') == 1 ) && LoginEnabled %]
[% SET MultiHolds = ( Koha.Preference('DisplayMultiPlaceHold') == 1 ) && HoldsEnabled %]
[% SET CoverImagePlugins = KohaPlugins.get_plugins_opac_cover_images %]
[% SET OPACLocalCoverImages = Koha.Preference('OPACLocalCoverImages') %]
[% SET OPACAmazonCoverImages = Koha.Preference('OPACAmazonCoverImages') %]
[% SET SyndeticsCoverImages = ( Koha.Preference('SyndeticsEnabled') && Koha.Preference('SyndeticsCoverImages') ) %]
[% SET GoogleJackets = Koha.Preference('GoogleJackets') %]
[% SET OpenLibraryCovers = Koha.Preference('OpenLibraryCovers') %]
[% SET OPACCoce = ( Koha.Preference('OPACCoce') && Koha.Preference('CoceProviders') ) %]
[% SET OPACCustomCoverImages = ( Koha.Preference('OPACCustomCoverImages') && Koha.Preference('CustomCoverImagesURL') ) %]
[% IF ( CoverImagePlugins || OPACLocalCoverImages || OPACAmazonCoverImages || SyndeticsCoverImages || GoogleJackets || OpenLibraryCovers || OPACCoce || OPACCustomCoverImages ) %]
[% SET CoverImages = 1 %]
[% SET OverDriveEnabled = Koha.Preference('OverDriveLibraryID') && Koha.Preference('OverDriveClientKey') && Koha.Preference('OverDriveClientSecret') %]
[% END %]
[% SET OverDriveEnabled = ( Koha.Preference( "OPACOverDrive" ) && Koha.Preference('OverDriveLibraryID') && Koha.Preference('OverDriveClientKey') && Koha.Preference('OverDriveClientSecret') ) %]
[% INCLUDE 'doc-head-open.inc' %]
<title
>[% FILTER collapse %]
[% IF ( searchdesc ) %]
[% IF ( ms_value ) %]
[% tx("Results of search for '{keyword}'", {keyword = ms_value}) | html %]
[% ELSE %]
[% t("Search results") | html %]
[% END %]
[% ELSE %]
[% t("You did not specify any search criteria") | html %]
[% END %]
&rsaquo; [% PROCESS 'library_name_title' %]
[% END %]</title
>
<meta name="robots" content="noindex" />
[% Asset.css("lib/Chocolat/css/chocolat.css") | $raw %]
[% INCLUDE 'doc-head-close.inc' %]
[% BLOCK cssinclude %]
[% END %]
<link
rel="alternate"
type="application/rss+xml"
title="[% LibraryName | html %] Search RSS feed"
href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | $raw %][% limit_cgi | $raw %]&amp;count=[% countrss |uri %]&amp;sort_by=acqdate_dsc&amp;format=rss"
/>
</head>
[% INCLUDE 'bodytag.inc' bodyid='results' bodyclass='scrollto' %]
[% INCLUDE 'masthead.inc' %]
<main class="main">
[% WRAPPER breadcrumbs %]
[% IF ( searchdesc ) %]
[% IF ( ReturnPath ) %]
[% WRAPPER breadcrumb_item %]
<a href="[% ReturnPath | url %]">Advanced search</a>
[% END %]
[% ELSE %]
[% WRAPPER breadcrumb_item %]
<a href="/cgi-bin/koha/opac-search.pl">Advanced search</a>
[% END %]
[% END %]
[% WRAPPER breadcrumb_item bc_active= 1 %]
[% IF ( ms_value ) %]
<span title="You searched [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %]with limit(s): '[% limit_desc | html %]'[% END %]"
>Results of search for '[% ms_value | html %]'[% IF ( pages && pages > 1) %], page [% current_page_number | html %] of [% pages | html %][% END %]</span
>
[% ELSE %]
<span title="You searched [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %]with limit(s): '[% limit_desc | html %]'[% END %]">Search results</span>
[% END %]
[% END %]
[% ELSE %]
[% WRAPPER breadcrumb_item bc_active= 1 %]
<span>You did not specify any search criteria</span>
[% END %]
[% END %]
[% END #/ WRAPPER breadcrumbs %]
[% UNLESS ( total ) %]
<div class="container-fluid">
<div class="row">
<div class="col">
<h1 id="numresults">No results found!</h1>
<p>
[% IF ( searchdesc ) %]
No results found for that in [% LibraryName | html %] catalog.
<a
href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | $raw %][% limit_cgi | $raw %]&amp;count=[% countrss |uri %]&amp;sort_by=acqdate_dsc&amp;format=rss"
aria-label="Subscribe to this search"
class="btn btn-link rsssearchlink noprint"
>
<i class="fa fa-rss rsssearchicon" aria-hidden="true" title="Subscribe to this search"></i>
</a>
[% ELSE %]
You did not specify any search criteria.
[% END %]
</p>
[% IF ( ReturnPath ) %]
<div class="returntosearch">
<p><a href="[% ReturnPath | url %]">Return to the last advanced search</a></p>
</div>
[% END %]
[% IF ( OPACNoResultsFound ) %]
<div id="noresultsfound"> [% OPACNoResultsFound | $raw %] </div>
[% END %]
</div>
<!-- / .col -->
</div>
<!-- / .row -->
</div>
<!-- / .container-fluid -->
[% END # / UNLESS searchdesc %]
<div class="container-fluid">
<div class="row">
[% IF ( opacfacets && total ) %]
<div class="col-lg-2">
<div id="facetcontainer">
<!-- FACETS START -->
[% INCLUDE 'opac-facets.inc' %]
<!-- FACETS END -->
</div>
</div>
[% END %]
[% SET column_class = "col maincontent" %]
[% IF ( opacfacets ) %]
[% column_class = "col-lg-10 maincontent" %]
[% END %]
<div class="[% column_class | html %]">
[% IF ( searchdesc ) %]
[% IF ( total ) %]
[% IF quoted_hits %]
<h4 class="info">
No result(s) found for your original query: [% og_query %]<br />
Your search was retried, quoted
</h4>
[% END %]
<h1 id="numresults">
Your search returned [% total | html %] results.
<a
href="[% OPACBaseURL | url %]/cgi-bin/koha/opac-search.pl?[% query_cgi | $raw %][% limit_cgi | $raw %]&amp;count=[% countrss |uri %]&amp;sort_by=acqdate_dsc&amp;format=rss"
class="btn btn-link rsssearchlink noprint"
aria-label="Subscribe to this search"
>
<i class="fa fa-rss rsssearchicon" aria-hidden="true" title="Subscribe to this search"></i>
</a>
</h1>
[% IF ( related ) %]
<p>(related searches:[% FOREACH relate IN related %][% relate.related_search | html %][% END %]).</p>
[% END %]
[% END # / IF total %]
[% END # / IF searchdesc %]
[% IF ( total && some_results_hidden ) %]
<p class="alert alert-info">Some results are hidden due to library policy.</p>
[% END %]
<div id="userresults">
[% IF ( DidYouMean ) %]
<div id="didyoumean">Not what you expected? Check for <a href="/cgi-bin/koha/svc/suggestion?render=standalone&amp;q=[% querystring | uri %]">suggestions</a></div>
[% END %]
[% IF ( total ) %]
[% IF ( ReturnPath ) %]
<div class="returntosearch">
<p><a href="[% ReturnPath | url %]">Return to the last advanced search</a></p>
</div>
[% END %]
[% END %]
[% IF ( query_error ) %]
<div class="alert alert-warning">
<h2>Error:</h2>
[% query_error | html %]
</div>
[% END %]
<!-- Search Results Table -->
[% IF ( total ) %]
<div class="searchresults">
<form action="/cgi-bin/koha/opac-search.pl" method="get" name="bookbag_form" id="bookbag_form">
<legend class="visually-hidden">Sort</legend>
[% IF ( searchdesc ) %]
[% FOREACH QUERY_INPUT IN QUERY_INPUTS %]
<input type="hidden" name="[% QUERY_INPUT.input_name | html %]" value="[% QUERY_INPUT.input_value | html %]" />
[% END %]
[% FOREACH LIMIT_INPUT IN LIMIT_INPUTS %]
<input type="hidden" name="[% LIMIT_INPUT.input_name | html %]" value="[% LIMIT_INPUT.input_value | html %]" />
[% END %]
[% END # IF /searchdesc %]
<div id="floating" class="sticky">
<div id="toolbar" class="toolbar row align-items-center">
<div id="top-pages" class="col"> [% INCLUDE 'page-numbers.inc' %] </div>
[% UNLESS no_page_results %]
[% UNLESS tag %]
<div class="sort_by col-sm-auto">
<label for="sort_by">Sort results by:</label>
<label for="sort_by" class="visually-hidden">Sort by:</label>
<select id="sort_by" class="resort form-select form-select-sm" name="sort_by">
[% INCLUDE 'resort_form.inc' %]
</select>
[% IF Koha.Preference('OPACnumSearchResultsDropdown') %]
<label for="results_per_page">Results per page: </label>
<select id="results_per_page" class="form-select" name="count">
[% IF Koha.Preference('OPACnumSearchResults') %]
[% IF results_per_page == Koha.Preference('OPACnumSearchResults') %]
<option value="[% Koha.Preference('OPACnumSearchResults') | html %]" selected="selected">[% Koha.Preference('OPACnumSearchResults') | html %] (default)</option>
[% ELSE %]
<option value="[% Koha.Preference('OPACnumSearchResults') | html %]">[% Koha.Preference('OPACnumSearchResults') | html %] (default)</option>
[% END %]
[% END %]
[% IF results_per_page == '20' %]<option value="20" selected="selected">20</option>[% ELSE %]<option value="20">20</option>[% END %]
[% IF results_per_page == '40' %]<option value="40" selected="selected">40</option>[% ELSE %]<option value="40">40</option>[% END %]
[% IF results_per_page == '60' %]<option value="60" selected="selected">60</option>[% ELSE %]<option value="60">60</option>[% END %]
[% IF results_per_page == '80' %]<option value="80" selected="selected">80</option>[% ELSE %]<option value="80">80</option>[% END %]
[% IF results_per_page == '100' %]<option value="100" selected="selected">100</option>[% ELSE %]<option value="100">100</option>[% END %]
</select>
[% END # IF Koha.Preference('OPACnumSearchResultsDropdown') %]
</div>
<!-- /.sort_by -->
<div id="sortsubmit" class="sort_by col-auto">
<input type="submit" class="btn btn-primary btn-sm clearfix" value="Go" />
</div>
<!-- /.sort_by -->
[% END # /UNLESS tag %]
[% END %]
</div>
<!-- / #toolbar -->
[% INCLUDE 'result-batch-controls.inc' results=1 %]
[% IF no_page_results %]
<p>Search results on this page are not available.</p>
[% END %]
</div>
<!-- /#floating -->
[% UNLESS no_page_results %]
<!-- TABLE RESULTS START -->
<table class="table table-striped" role="presentation">
<span class="visually-hidden">Results</span>
<!-- Actual Search Results -->
[% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
<tr>
[%# Cell 1: Checkbox %]
[% IF ( SEARCH_RESULT.title ) %]
[% check_title = SEARCH_RESULT.title %]
[% ELSE %]
[% check_title = SEARCH_RESULT.biblionumber %]
[% END %]
<td class="selectcol">
[% IF Koha.Preference( 'opacbookbag' ) == 1 %]
<input
type="checkbox"
class="cb"
id="bib[% SEARCH_RESULT.biblionumber | html %]"
name="biblionumber"
value="[% SEARCH_RESULT.biblionumber | html %]"
aria-label="Select search result: [% check_title | html %]"
/>
<label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label>
[% ELSE %]
[% IF Koha.Preference( 'virtualshelves' ) == 1 %]
<input
type="checkbox"
class="cb"
id="bib[% SEARCH_RESULT.biblionumber | html %]"
name="biblionumber"
value="[% SEARCH_RESULT.biblionumber | html %]"
aria-label="Select search result: [% check_title | html %]"
/>
<label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label>
[% ELSE %]
[% IF Koha.Preference( 'OPACHoldRequests' ) == 1 %]
[% UNLESS ( SEARCH_RESULT.norequests ) %]
[% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
<input
type="checkbox"
class="cb"
id="bib[% SEARCH_RESULT.biblionumber | html %]"
name="biblionumber"
value="[% SEARCH_RESULT.biblionumber | html %]"
aria-label="Select search result: [% check_title | html %]"
/>
<label for="bib[% SEARCH_RESULT.biblionumber | html %]"></label>
[% END %]
[% END %]
[% END # IF OPACHoldRequests %]
[% END # IF virtualshelves %]
[% END # IF opacbookbag %]
</td>
[%# Cell 2: Show result number if OpacHiddenItems is empty %]
<td class="numcol[%- IF suppress_result_number -%]hidden[%- END -%]">
[% UNLESS suppress_result_number %]
[% SEARCH_RESULT.result_number | html %].
[% END %]
</td>
[% IF ( !item_level_itypes || Koha.Preference('BiblioItemtypeInfo') ) && !Koha.Preference('OpacNoItemTypeImages') %]
[%# Cell 3: Show item type image %]
<td class="itypecol">
[% IF ( SEARCH_RESULT.imageurl ) %]
<img class="itemtype-image" src="[% SEARCH_RESULT.imageurl | html %]" title="[% SEARCH_RESULT.description | html %]" alt="[% SEARCH_RESULT.description | html %]" />
[% END %]
[% IF ( SEARCH_RESULT.score_avg ) %]
<img src="[% themelang | html %]/../images/bonus.png" title="bonus" style="max-height: 35px;" />
[% END %]
</td>
[% END %]
[% IF ( CoverImages) %]
<td class="covercol"> [% INCLUDE 'cover-images.inc' %] </td>
[% END %]
[%# Cell 4: Search result details and controls %]
<td class="bibliocol">
[% IF ( COinSinOPACResults && SEARCH_RESULT.coins ) %]
<!-- COinS / Openurl -->
<span class="Z3988" title="[% SEARCH_RESULT.coins | html %]"></span>
[% END %]
<div id="title_summary_[% SEARCH_RESULT.biblionumber | html %]" class="title_summary">
[% SEARCH_RESULT.XSLTResultsRecord | $raw %]
[% IF ( SEARCH_RESULT.score_avg ) %]
<div class="results_summary">
[% FOREACH i IN [ 1 2 3 4 5 ] %]
[% IF ( SEARCH_RESULT.score_int >= i ) %]
<div class="star-rating rater-[% i | html %] star star-rating-applied star-rating-readonly star-rating-on"><a title="[% i | html %]">[% i | html %]</a></div>
[% ELSE %]
<div class="star-rating rater-[% i | html %] star star-rating-applied star-rating-readonly"><a title="[% i | html %]">[% i | html %]</a></div>
[% END %]
[% END %]
<span id="babeltheque-rating_total_[% SEARCH_RESULT.biblionumber | html %]"
>&nbsp;&nbsp; [% SEARCH_RESULT.score_avg | html %] / 5 (on [% SEARCH_RESULT.num_scores | html %] rates)</span
>
[% IF ( SEARCH_RESULT.num_critics ) %]
<span class="social_data">[% SEARCH_RESULT.num_critics | html %] Internet user critics</span>
[% END %]
[% IF ( SEARCH_RESULT.num_critics_pro ) %]
<span class="social_data">[% SEARCH_RESULT.num_critics_pro | html %] Professional critics</span>
[% END %]
[% IF ( SEARCH_RESULT.num_videos ) %]
<span class="social_data">[% SEARCH_RESULT.num_videos | html %] Video extracts</span>
[% END %]
[% IF ( SEARCH_RESULT.num_quotations ) %]
<span class="social_data">[% SEARCH_RESULT.num_quotations | html %] Quotations</span>
[% END %]
</div>
<!-- / .results_summary -->
[% END # / IF SEARCH_RESULT.score_avg %]
[% IF ( LibraryThingForLibrariesID ) %]
<div class="ltfl_reviews"></div>
[% END %]
[% IF ( TagsShowEnabled && SEARCH_RESULT.TagLoop.size ) %]
<div class="results_summary tags">
<span class="label">Tags:</span>
<ul>
[% FOREACH TagLoo IN SEARCH_RESULT.TagLoop %]
<li>
<a href="/cgi-bin/koha/opac-search.pl?tag=[% TagLoo.term | uri %]&amp;q=[% TagLoo.term | uri %]">[% TagLoo.term | html %]</a>
<span class="weight">([% TagLoo.weight_total | html %])</span>
</li>
[% END %]
</ul>
</div>
[% END %]
[% IF Koha.Preference('virtualshelves') AND SEARCH_RESULT.shelves.count %]
<div class="results_summary shelves">
<span class="label">Lists:</span>
<ul>
[% FOREACH shelf IN SEARCH_RESULT.shelves %]
<li>
<a href="/cgi-bin/koha/opac-shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | uri %]">[% shelf.shelfname | html %]</a>
[%~ UNLESS loop.last %],[% ELSE %].[% END ~%]
</li>
[% END %]
</ul>
</div>
[% END %]
[% IF ( SEARCH_RESULT.searchhighlightblob ) %]
<span class="results_summary">
<span class="label">Match:</span>
[% SEARCH_RESULT.searchhighlightblob | html %]
</span>
[% END %]
[% INCLUDE "openlibrary-readapi.inc" bib = SEARCH_RESULT %]
[% IF ( OpacStarRatings == 'all' ) %]
<span class="visually-hidden"> star rating </span>
<div class="results_summary ratings">
[% SET rating_avg = SEARCH_RESULT.ratings.get_avg_rating() %]
[% rating_avg_int = BLOCK %][% rating_avg | format("%.0f") %][% END %]
<div class="br-wrapper br-theme-fontawesome-stars">
<div class="br-widget br-readonly">
[% FOREACH i IN [ 1 2 3 4 5 ] %]
[% IF rating_avg_int == i %]
<span class="br-selected br-current"></span>
[% ELSIF rating_avg_int > i %]
<span class="br-selected"></span>
[% ELSE %]
<span></span>
[% END %]
[% END %]
</div>
</div>
</div>
<span class="visually-hidden"> Average : [% rating_avg | html %] out of 5 stars</span>
[% IF SEARCH_RESULT.ratings.count > 0 %]
<span id="rating_total_[% SEARCH_RESULT.biblionumber | html %]">&nbsp;&nbsp;([% SEARCH_RESULT.ratings.count | html %] votes)</span>
[% ELSE %]
<br />
[% END %]
<!-- / .results_summary -->
[% END # / IF OpacStarRatings %]
[% INCLUDE 'title-actions-menu.inc' items=SEARCH_RESULT %]
</div>
</td>
</tr>
[% END # / FOREACH SEARCH_RESULT %]
</table>
[% END %]
</form>
<!-- / #bookbag_form -->
<form id="hold_form" name="hold_form" method="get" action="/cgi-bin/koha/opac-reserve.pl">
<!-- The value will be set by holdBiblioNums() in basket.js -->
<input id="hold_form_biblios" type="hidden" name="biblionumbers" value="" />
</form>
</div>
<!-- / .searchresults -->
<div id="bottom-pages">[% INCLUDE 'page-numbers.inc' %]</div>
[% END # / IF total %]
[%# Display "Not finding what you're looking for" for suggestion or ILL %]
[% IF Koha.Preference( 'suggestion' ) || Koha.Preference( 'ILLModule' ) %]
<div class="suggestion">
Not finding what you're looking for?
<ul>
[% IF Koha.Preference( 'suggestion' ) %]
<li>Make a <a href="/cgi-bin/koha/opac-suggestions.pl?op=add_form">purchase suggestion</a></li>
[% END %]
[% IF Koha.Preference( 'ILLModule' ) %]
[% IF Koha.Preference( 'AutoILLBackendPriority' ) %]
<li>Make an <a href="/cgi-bin/koha/opac-illrequests.pl?op=create&amp;backend=Standard">interlibrary loan request</a></li>
[% ELSE %]
<li>Make an <a href="/cgi-bin/koha/opac-illrequests.pl?op=create">interlibrary loan request</a></li>
[% END %]
[% END %]
</ul>
</div>
[% END %]
</div>
<!-- / #userresults -->
</div>
<!-- /.span10/12 -->
</div>
<!-- / .row -->
</div>
<!-- / .container-fluid --> </main
><!-- / .main -->
[% INCLUDE 'opac-bottom.inc' %]
[% BLOCK jsinclude %]
[% IF ( LibraryThingForLibrariesID ) %]
<script src="https://ltfl.librarything.com/forlibraries/widget.js?id=[% LibraryThingForLibrariesID | html %]&amp;systype=koha">
</script>
[% END %]
[% IF ( OverDriveEnabled ) %][% Asset.js("js/overdrive.js") | $raw %][% END %]
[% Asset.js("js/authtoresults.js") | $raw %]
[% IF ( OpacHighlightedWords ) %]
[% Asset.js("lib/jquery/plugins/jquery.highlight-5.js") | $raw %]
[% END %]
[% IF OpenLibraryCovers || OpenLibrarySearch %]
[% Asset.js("js/openlibrary.js") | $raw %]
[% END %]
[% Asset.js("lib/Chocolat/js/chocolat.js") | $raw %]
[% CoverImagePlugins | $raw %]
<script nonce="[% Koha.CSPNonce | $raw %]" data-tt-allowed="true">
const loggedinusername = [% ( loggedinusername ) ? 1 : 0 | html %];
const opacbookbag = [% ( opacbookbag ) ? 1 : 0 | html %];
const virtualshelves = [% ( virtualshelves ) ? 1 : 0 | html %];
var interface = "[% interface | html %]";
var theme = "[% theme | html %]";
const firstPage = [% firstPage ? 1 : 0 | html %];
Koha.addPrefs({
OpacHighlightedWords: [% Koha.Preference('OpacHighlightedWords') ? 1 : 0 | html %],
NotHighlightedWords: "[% Koha.Preference("NotHighlightedWords") | html %]",
GoogleJackets: [% Koha.Preference("GoogleJackets") ? 1 : 0 | html %],
OpenLibraryCovers: [% Koha.Preference("OpenLibraryCovers") ? 1 : 0 | html %],
OPACLocalCoverImages: [% Koha.Preference("OPACLocalCoverImages") ? 1 : 0 | html %],
OpacCoce: [% Koha.Preference('OpacCoce') ? 1 : 0 | html %],
CoceHost: "[% Koha.Preference('CoceHost') | html %]",
CoceProviders: "[% Koha.Preference('CoceProviders') | html %]",
OverDriveLibraryID: "[% Koha.Preference("OverDriveLibraryID") | html %]",
OpenLibrarySearch: [% Koha.Preference("OpenLibrarySearch") ? 1 : 0 | html %],
});
const OverDriveEnabled = [% OverDriveEnabled ? 1 : 0 | html %];
const DidYouMean = [% DidYouMean ? 1 : 0 | html %];
// query_desc and querystring are set in opac-bottom.inc
let query_desc_uri = "[% query_desc | uri %]";
let querystring_uri = "[% querystring | uri %]";
</script>
[% Asset.js("js/results-list.js") | $raw %]
[% Asset.js("js/cover_images.js") | $raw %]
<script nonce="[% Koha.CSPNonce | $raw %]">
if (Koha.prefs.OpacHighlightedWords) {
var q_array = new Array(); // holds search terms if available
function highlightOff() {
$("td").removeHighlight();
$(".highlight_toggle").toggle();
}
function highlightOn() {
var x;
for (x in q_array) {
q_array[x] = q_array[x].replace(/\w*:([\w])/, "$1");
q_array[x] = q_array[x].toLowerCase();
var myStopwords = Koha.prefs.NotHighlightedWords.toLowerCase().split("|");
if (q_array[x].length > 0 && $.inArray(q_array[x], myStopwords) == -1) {
$(".title").highlight(q_array[x]);
$(".author").highlight(q_array[x]);
$(".results_summary").highlight(q_array[x]);
}
}
$(".highlight_toggle").toggle();
}
}
let counter_wait = 0;
function wait_for_images(cb) {
var loaded = 1;
counter_wait++;
if (Koha.prefs.GoogleJackets) {
if (loaded) {
loaded = KOHA.Google.done;
}
}
if (Koha.prefs.OpenLibraryCovers) {
if (loaded) {
loaded = KOHA.OpenLibrary.done;
}
}
if (Koha.prefs.OpacCoce && Koha.prefs.CoceProviders) {
if (loaded) {
loaded = KOHA.coce.done;
}
}
if (!loaded && counter_wait < 50) {
// Do not wait more than 5 seconds
window.setTimeout(function () {
wait_for_images(cb);
}, 100);
} else {
if (counter_wait >= 50) {
}
cb();
}
}
$(window).load(function () {
wait_for_images(verify_cover_images);
});
$(document).ready(function () {
$(".moretoggle").click(function (e) {
e.preventDefault();
$(this).siblings(".collapsible-facet").toggle();
$(this).siblings(".moretoggle").toggle();
$(this).toggle();
});
if (Koha.prefs.OpacHighlightedWords) {
$("a.title").each(function () {
$(this).attr("href", $(this).attr("href") + "&query_desc=" + query_desc_uri);
});
}
$(".br-readonly a").on("click", function (e) {
e.preventDefault();
});
$(".resort").change(function () {
$("#bookbag_form").submit();
});
$("#results_per_page").change(function () {
$("#bookbag_form").submit();
});
if (query_desc) {
if (Koha.prefs.OpacHighlightedWords) {
q_array = query_desc.split(" ");
// ensure that we don't have "" at the end of the array, which can
// break the highlighter
while (q_array.length > 0 && q_array[q_array.length - 1] == "") {
q_array = q_array.splice(0, -1);
}
highlightOn();
$("#highlight_toggle_on")
.hide()
.click(function (e) {
e.preventDefault();
highlightOn();
});
$("#highlight_toggle_off")
.show()
.click(function (e) {
e.preventDefault();
highlightOff();
});
}
if (OverDriveEnabled && firstPage) {
var $overdrive_results = $('<div id="overdrive-results">' + _("Searching %s...").format("OverDrive") + ' <img class="throbber" src="' + interface + "/" + theme + '/images/spinner-small.gif" /></div>');
$("#numresults").after($overdrive_results);
//Clean querystring, first we remove CCL entities, then decode HTML entities, then swap double quotes for single quotes
//as the overdrive API treats double quotes as a search term and returns extra results
od_querystring = querystring.replace(/(?:^|\W)([\w-]+)(,[\w-]+)*([:=])/g, " ");
od_querystring = new DOMParser().parseFromString(od_querystring, "text/html").body.innerText;
od_querystring = od_querystring.replace(/\"/g, "'");
KOHA.OverDrive.Search(Koha.prefs.OverDriveLibraryID, od_querystring, 1, 0, function (data) {
if (data.error) {
$overdrive_results.html(_("Error searching %s collection").format("OverDrive"));
return;
}
if (data.totalItems) {
$overdrive_results.html(
'<a href="/cgi-bin/koha/opac-overdrive-search.pl?q=' + encodeURIComponent(od_querystring) + '">' + _("Found %s results in the library's %s collection").format(data.totalItems, "OverDrive") + "</a>"
);
} else {
$overdrive_results.remove();
}
});
}
if (Koha.prefs.OpenLibrarySearch) {
var $openlibrary_results = $('<div id="openlibrary-results">' + _("Searching %s...").format("OpenLibrary") + ' <img class="throbber" src="' + interface + "/" + theme + '/images/spinner-small.gif" /></div>');
$("#numresults").after($openlibrary_results);
KOHA.OpenLibrary.search(querystring, null, function (data) {
if (data.error) {
$openlibrary_results.html(_("Error searching %s collection").format("OpenLibrary"));
return;
}
if (data.numFound > 0) {
$openlibrary_results.html('<a href="' + KOHA.OpenLibrary.searchUrl(querystring) + '" target="openlibrary">' + _("Found %s results in the library's %s collection").format(data.numFound, "OpenLibrary") + "</a>");
} else {
$openlibrary_results.remove();
}
});
}
}
if (Koha.prefs.OpenLibraryCovers) {
KOHA.OpenLibrary.GetCoverFromIsbn();
}
if (Koha.prefs.OPACLocalCoverImages) {
KOHA.LocalCover.GetCoverFromBibnumber(false);
}
if (Koha.prefs.GoogleJackets) {
KOHA.Google.GetCoverFromIsbn();
}
if (Koha.prefs.OpacCoce && Koha.prefs.CoceProviders) {
KOHA.coce.getURL(Koha.prefs.CoceHost, Koha.prefs.CoceProviders);
}
if (DidYouMean) {
$("#didyoumean").load("/cgi-bin/koha/svc/suggestion?render=stub&q=" + querystring_uri, function () {
$(this).addClass("dym-loaded");
});
}
$("input.newtag").on("keydown", function (e) {
if (e.keyCode == 13) {
e.preventDefault();
}
});
});
</script>
[% END %]