Bug 31379: Change results per page text for default
[koha.git] / koha-tmpl / opac-tmpl / bootstrap / en / modules / opac-overdrive-search.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% USE AdditionalContents %]
5 [% SET OpacNav = AdditionalContents.get( location => "OpacNav", lang => lang, library => logged_in_user.branchcode || default_branch, blocktitle => 0 ) %]
6 [% SET OpacNavBottom = AdditionalContents.get( location => "OpacNavBottom", lang => lang, library => logged_in_user.branchcode || default_branch, blocktitle => 0 ) %]
7 [% INCLUDE 'doc-head-open.inc' %]
8 <title>OverDrive search for '[% q | html %]' &rsaquo; [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title>
9 [% INCLUDE 'doc-head-close.inc' %]
10 [% Asset.css("css/overdrive.css") | $raw %]
11 [% BLOCK cssinclude %]
12 [% END %]
13 </head>
14 [% INCLUDE 'bodytag.inc' bodyid='overdrive-results-page' bodyclass='scrollto' %]
15 [% INCLUDE 'masthead.inc' %]
16
17     <div class="main">
18         <nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumbs">
19             <ol class="breadcrumb">
20                 <li class="breadcrumb-item">
21                     <a href="/cgi-bin/koha/opac-main.pl">Home</a>
22                 </li>
23                 <li class="breadcrumb-item active">
24                     <a href="#" aria-current="page">OverDrive search for '[% q | html %]'</a>
25                 </li>
26             </ol>
27         </nav> <!-- /#breadcrumbs -->
28
29         <div class="container-fluid">
30             <div class="row">
31                 <div class="col-lg-2">
32                     [% IF ( OpacNav || OpacNavBottom ) %]
33                         [% INCLUDE 'navigation.inc' %]
34                     [% END %]
35                 </div>
36                 <div class="col-lg-10 order-first order-md-first order-lg-2">
37                     <div id="overdrive-results-content" class="maincontent searchresults">
38                         <h1>OverDrive search for '[% q | html %]'</h1>
39                             <div id="breadcrumbs">
40                                 <p></p>
41                             </div>
42
43                             <div id="top-pages">
44                                 <nav class="pagination pagination-sm noprint" aria-label="Search results pagination">
45                                 </nav>
46                             </div>
47
48                             <table id="overdrive-results-list" class="table table-striped">
49                                 <tbody>
50                                 </tbody>
51                             </table>
52
53                             <div id="bottom-pages">
54                                 <nav class="pagination pagination-sm noprint" aria-label="Search results pagination">
55                                 </nav>
56                             </div>
57
58                     </div> <!-- / #overdrive-results-content -->
59                 </div> <!-- / .span10 -->
60             </div> <!-- / .row -->
61         </div> <!-- / .container-fluid -->
62     </div> <!-- / .main -->
63
64 [% IF ( Koha.Preference('OverDriveCirculation') ) %]
65     [% INCLUDE 'overdrive-checkout.inc' %]
66     [% IF ( Koha.Preference('OverDrivePasswordRequired') ) %]
67         [% INCLUDE 'overdrive-login.inc' %]
68     [% END %]
69 [% END %]
70
71 [% INCLUDE 'opac-bottom.inc' %]
72 [% BLOCK jsinclude %]
73     [% Asset.js("js/overdrive.js") | $raw %]
74     <script>
75         [%- IF Koha.Preference('OverDrivePasswordRequired') -%]
76             var OD_password_required = 1;
77         [%- ELSE -%]
78             var OD_password_required = 0;
79         [%- END -%]
80         var querystring = "[% q |replace( "'", "\'" ) |replace( '\n', '\\n' ) |replace( '\r', '\\r' ) | html %]";
81         var results_per_page = [% OPACnumSearchResults | html %];
82
83         function fetch_availability( prod, $tr ) {
84             var $availability_summary = $( '<span class="results_summary availability"></span>' );
85             $tr.find( '.mediatype' ).after( $availability_summary );
86             $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + _("Loading...") );
87
88             KOHA.OverDrive.Get(
89                 prod.links.availabilityV2.href,
90                 { version: 2},
91                 function ( data ) {
92                     if ( data.error ) return;
93
94                     if( data.availabilityType == 'AlwaysAvailable' ){
95                         $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Always available") + '</b></span>' );
96                      } else if ( data.availabilityType == 'LimitedAvailability' && data.available ) {
97                         $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Currently available") + '</b></span>' );
98                      } else if ( !data.available ) {
99                         $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="unavailable"><b>' + _("Currently unavailable") + '</b></span>' );
100                      } else {
101                         $availability_summary.html( '<span class="label">' + _("Availability:") + ' </span> ' + '<span class="available"><b>' + _("Items available:") + ' </b>' +  data.copiesAvailable + " " + _("out of") + ' ' + data.copiesOwned + '</span>' );
102                     }
103
104                     if ( data.numberOfHolds ) {
105                         $availability_summary.find( '.available' ).append( ', ' + _("waiting holds:") + ' <strong>' + data.numberOfHolds + '</strong>' );
106                     }
107
108                     $tr.find( '.info' ).each(function() {
109                         KOHA.OverDriveCirculation.add_actions(this, data.reserveId, data.copiesAvailable);
110                     });
111                 }
112             );
113         }
114
115         function search( offset ) {
116             $( '#overdrive-status' ).html( _("Searching OverDrive...") + ' <img class="throbber" src="[% interface | html %]/[% theme | html %]/images/spinner-small.gif" /></span>' );
117
118             KOHA.OverDrive.Search( "[% Koha.Preference('OverDriveLibraryID') | html %]", querystring, results_per_page, offset, function( data ) {
119                 if ( data.error ) {
120                     $( '#overdrive-status' ).html( '<strong class="unavailable">' + _("Error searching OverDrive collection.") + '</strong>' );
121                     return;
122                 }
123
124                 if ( !data.totalItems ) {
125                     $( '#overdrive-status' ).html( '<strong>' + _("No results found in the library's OverDrive collection.") + '</strong>' );
126                     return;
127                 }
128
129                 $( '#overdrive-results-list tbody' ).empty();
130
131                 $( '#overdrive-status' ).html( '<strong>' + _("Found") + ' ' + data.totalItems + ' ' + _("results in the library's OverDrive collection.") + '</strong>' );
132
133                 for ( var i = 0; data.products[i]; i++ ) {
134                     var prod = data.products[i];
135                     var results = [];
136
137                     results.push( '<tr>' );
138
139                     results.push( '<td class="info"><a class="title" href="', prod.contentDetails[0].href, '">' );
140                     results.push( prod.title );
141                     if ( prod.subtitle ) results.push( ', ', prod.subtitle );
142                     results.push( '</a>' );
143                     if ( prod.primaryCreator ) results.push( '<p>' + _("by") + ' ', prod.primaryCreator.name, '</p>' );
144                     results.push( '<span class="results_summary mediatype"><span class="label">' + _("Type:") + ' </span>', prod.mediaType, '</span>' );
145
146                     if ( prod.starRating ) {
147                         var rating_value = Math.round( prod.starRating );
148                         results.push( '<div class="results_summary ratings">' );
149                         results.push( '<div class="br-wrapper br-theme-fontawesome-stars">');
150                         results.push( '<div class="br-widget br-readonly">');
151                         for ( var rating = 1; rating <= 5; rating++ ) {
152
153                             results.push( '<a href="#"' );
154                             if( rating == rating_value ){
155                                 results.push( ' class="br-selected br-current"></a>' );
156                             } else if( rating_value > rating ){
157                                 results.push( ' class="br-selected"></a>' );
158                             } else {
159                                 results.push( '></a>');
160                             }
161                         }
162                         results.push( '</div>' );
163                         results.push( '</div>' );
164                         results.push( '</div>' );
165                     }
166
167                     results.push( '</td>' );
168
169                     results.push( '<td>' );
170                     if ( prod.images.thumbnail ) {
171                         results.push( '<a href="', prod.contentDetails[0].href, '">' );
172                         results.push( '<img class="overdrive-thumbnail thumbnail" src="', prod.images.thumbnail.href, '" />' );
173                         results.push( '</a>' );
174                     }
175                     results.push( '</td>' );
176
177                     results.push( '</tr>' );
178                     var $tr = $( results.join( '' ));
179                     $( '#overdrive-results-list tbody' ).append( $tr );
180
181                     fetch_availability( prod, $tr );
182                 }
183
184                 $( '#overdrive-results-list tr:odd' ).addClass( 'highlight' );
185
186                 var pages = [];
187                 var cur_page = offset / results_per_page;
188                 var max_page = Math.floor( data.totalItems / results_per_page );
189
190                 if ( cur_page != 0 ) {
191                     pages.push( '<li class="page-item"><a class="page-link od-nav" href="#" data-offset="' + (offset - results_per_page) + '">&laquo; ' + _("Previous") + '</a></li>' );
192                 }
193
194                 for ( var page = Math.max( 0, cur_page - 9 ); page <= Math.min( max_page, cur_page + 9 ); page++ ) {
195                     if ( page == cur_page ) {
196                         pages.push( ' <li class="page-item disabled"><a class="page-link" href="#">' + ( page + 1 ) + '</a></li>' );
197                     } else {
198                         pages.push( ' <li class="page-item"><a class="page-link od-nav" href="#" data-offset="' + ( page * results_per_page ) + '">' + ( page + 1 ) + '</a></li>' );
199                     }
200                 }
201
202                 if ( cur_page < max_page ) {
203                     pages.push( ' <li class="page-item"><a class="page-link od-nav" href="#" data-offset="' + (offset + results_per_page) + '">' + _("Next") + ' &raquo;</a></li>' );
204                 }
205
206                 if ( pages.length > 1 ) $( '#top-pages, #bottom-pages' ).find( '.pagination' ).html( '<ul class="pagination">' + pages.join( '' ) + '</ul>');
207
208             } );
209         }
210
211         $( document ).ready( function() {
212             $( '#breadcrumbs p' )
213                 .append( ' ' )
214                 .append( '<span id="overdrive-status"></span>' );
215
216             $( document ).on( 'click', 'a.od-nav', function() {
217                 search( $( this ).data( 'offset' ) );
218                 return false;
219             });
220
221             [% IF ( overdrive_error ) %]
222                 KOHA.OverDriveCirculation.display_error("#breadcrumbs", "[% overdrive_error.dquote | html %]");
223             [% END %]
224             [% IF ( loggedinusername and Koha.Preference('OverDriveCirculation') ) %]
225                 KOHA.OverDriveCirculation.with_account_details("#breadcrumbs", function() {
226                     search( 0 );
227                 });
228             [% ELSE %]
229                 search( 0 );
230             [% END %]
231         });
232     </script>
233 [% END %]