@@ -, +, @@ interface --- .../bootstrap/en/includes/overdrive-checkout.inc | 19 ++ .../bootstrap/en/modules/opac-overdrive-search.tt | 17 +- .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 23 ++ koha-tmpl/opac-tmpl/bootstrap/js/overdrive.js | 359 +++++++++++++++++++++ opac/opac-overdrive-search.pl | 1 + opac/opac-user.pl | 6 + opac/svc/overdrive | 139 ++++++++ 7 files changed, 562 insertions(+), 2 deletions(-) create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/includes/overdrive-checkout.inc create mode 100755 opac/svc/overdrive --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/overdrive-checkout.inc +++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/overdrive-checkout.inc @@ -0,0 +1,19 @@ + --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-overdrive-search.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-overdrive-search.tt @@ -55,6 +55,8 @@ +[% INCLUDE 'overdrive-checkout.inc' %] + [% INCLUDE 'opac-bottom.inc' %] [% BLOCK jsinclude %] @@ -80,7 +82,9 @@ function fetch_availability( prod, $tr ) { $availability_summary.find( '.available' ).append( ', ' + _("waiting holds:") + ' ' + data.numberOfHolds + '' ); } - $tr.find( '.info' ).append( '
' + _("Check out") ) : ( ' class="hold">' + _("Place hold") ) ) + '
' ); + $tr.find( '.info' ).each(function() { + KOHA.OverDriveCirculation.add_actions(this, data.id, data.copiesAvailable); + }); } ); } @@ -179,7 +183,16 @@ $( document ).ready( function() { return false; }); - search( 0 ); + [% IF ( overdrive_error ) %] + KOHA.OverDriveCirculation.display_error("#breadcrumbs", "[% overdrive_error.dquote %]"); + [% END %] + [% IF ( loggedinusername ) %] + KOHA.OverDriveCirculation.with_account_details("#breadcrumbs", function() { + search( 0 ); + }); + [% ELSE %] + search( 0 ); + [% END %] } ); [% END %] --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt @@ -119,8 +119,13 @@ [% IF ( BORROWER_INFO.amountlessthanzero ) %]
  • Credits ([% BORROWER_INFO.amountoutstanding %])
  • [% END %] [% END %] [% IF ( RESERVES.count ) %]
  • Holds ([% RESERVES.count %])
  • [% END %] + [% IF ( OverDriveCirculation ) %] +
  • OverDrive Account
  • + [% END %] +
    +
    [% IF ( issues_count ) %]
    @@ -701,6 +706,10 @@
    +[% IF ( OverDriveCirculation ) %] +[% INCLUDE 'overdrive-checkout.inc' %] +[% END %] + [% INCLUDE 'opac-bottom.inc' %] @@ -764,4 +773,18 @@ }); //]]> + + [% END %] --- a/koha-tmpl/opac-tmpl/bootstrap/js/overdrive.js +++ a/koha-tmpl/opac-tmpl/bootstrap/js/overdrive.js @@ -59,3 +59,362 @@ KOHA.OverDrive = ( function() { } }; } )(); + +KOHA.OverDriveCirculation = new function() { + var svc_url = '/cgi-bin/koha/svc/overdrive'; + + var error_div = $('
    '); + function display_error ( error ) { + error_div.text(error); + } + + var login_link = $('') + .click(function(e) { + e.preventDefault(); + login(); + }) + .text(_("Login to OverDrive account")); + var login_div = $('
    ').append(login_link); + + var details = null; + + function is_logged_in() { + return details ? details.is_logged_in : false; + } + + var checkout_popup = null; + $( document ).ready(function() { + checkout_popup = $("#overdrive-checkout"); + }); + + function display_account (container, data) { + if (!data.is_logged_in) { + $(container).append(login_div); + return; + } + + var logout_link = $('') + .click(function(e) { + e.preventDefault(); + $(container).empty().append(error_div); + logout(function(data) { + display_account(container, data); + }); + }).text(_("Logout from OverDrive account")); + $(container).append(logout_link); + + if (data.checkouts) { + var checkouts_div = $('
    ').html('

    ' + _("Checkouts") + '

    '); + var checkouts_list = $('