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