From f81bdfe4534481710840b8006b5c7ed51b9cf1b4 Mon Sep 17 00:00:00 2001 From: Jeff Davis Date: Thu, 30 Mar 2017 14:40:19 -0700 Subject: [PATCH] LP#1677813: fix Download link for OverDrive ebook circs in OPAC With OverDrive ebook API integration enabled, a user's current OverDrive checkouts are displayed under the "E-Items Checked Out" tab in My Account, but the Download link does not work. Additionally, holds that are ready for checkout don't have a Download link. This commit puts a correct Download link in both places. Signed-off-by: Jeff Davis --- .../perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm | 9 ++++++--- Open-ILS/web/js/ui/default/opac/ebook_api/loggedin.js | 14 +++++++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm index 97a301a9b2..7e5c2c4741 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/OverDrive.pm @@ -377,7 +377,9 @@ sub get_title_info { if ($res->{content}->{title}) { return { title => $res->{content}->{title}, - author => $res->{content}->{creators}[0]{name} + author => $res->{content}->{creators}[0]{name}, + # Link to OverDrive title details page (NOT a direct download link). + download_url => "https://link.overdrive.com/?websiteID=" . $self->{websiteid} . "&titleID=" . $res->content->{crossRefId} }; } else { $logger->error("EbookAPI: OverDrive metadata lookup failed for $title_id"); @@ -493,12 +495,13 @@ sub get_patron_checkouts { foreach my $checkout (@{$res->{content}->{checkouts}}) { my $title_id = $checkout->{reserveId}; my $title_info = $self->get_title_info($title_id); - # TODO get download URL - need to "lock in" a format first, see OD Checkouts API docs push @$checkouts, { title_id => $title_id, due_date => $checkout->{expires}, title => $title_info->{title}, - author => $title_info->{author} + author => $title_info->{author}, + # Link to OverDrive title details page (NOT a direct download link). + download_url => $title_info->{download_url} } }; $self->{checkouts} = $checkouts; diff --git a/Open-ILS/web/js/ui/default/opac/ebook_api/loggedin.js b/Open-ILS/web/js/ui/default/opac/ebook_api/loggedin.js index 0ba182743a..971be45a82 100644 --- a/Open-ILS/web/js/ui/default/opac/ebook_api/loggedin.js +++ b/Open-ILS/web/js/ui/default/opac/ebook_api/loggedin.js @@ -102,8 +102,10 @@ function updateCheckoutView() { dojo.removeClass('no_ebook_circs', "hidden"); } else { dojo.forEach(xacts.checkouts, function(x) { + var dl_link = ''; + if (x.download_url) + dl_link = '' + l_strings.download + ''; dojo.empty('ebook_circs_main_table_body'); - var dl_link = '' + l_strings.download + ''; var tr = dojo.create("tr", null, dojo.byId('ebook_circs_main_table_body')); dojo.create("td", { innerHTML: x.title }, tr); dojo.create("td", { innerHTML: x.author }, tr); @@ -128,8 +130,11 @@ function updateHoldView() { } else { dojo.forEach(holds, function(h) { var hold_status; + var dl_link = ''; if (h.is_ready) { hold_status = l_strings.ready_for_checkout; + if (h.download_url) + dl_link = '' + l_strings.download + ''; } else if (h.is_frozen) { hold_status = l_strings.suspended; } else { @@ -141,7 +146,7 @@ function updateHoldView() { dojo.create("td", { innerHTML: h.author }, tr); dojo.create("td", { innerHTML: h.expire_date }, tr); dojo.create("td", { innerHTML: hold_status }, tr); - dojo.create("td", null, tr); // TODO actions + dojo.create("td", { innerHTML: dl_link }, tr); // TODO actions }); dojo.addClass('no_ebook_holds', "hidden"); dojo.removeClass('ebook_holds_main', "hidden"); @@ -154,12 +159,15 @@ function updateHoldReadyView() { dojo.removeClass('no_ebook_holds', "hidden"); } else { dojo.forEach(holds, function(h) { + var dl_link = ''; + if (h.is_ready && h.download_url) + dl_link = '' + l_strings.download + ''; dojo.empty('ebook_holds_main_table_body'); var tr = dojo.create("tr", null, dojo.byId('ebook_holds_main_table_body')); dojo.create("td", { innerHTML: h.title }, tr); dojo.create("td", { innerHTML: h.author }, tr); dojo.create("td", { innerHTML: h.expire_date }, tr); - dojo.create("td", null, tr); // TODO actions + dojo.create("td", { innerHTML: dl_link }, tr); // TODO actions }); dojo.addClass('no_ebook_holds', "hidden"); dojo.removeClass('ebook_holds_main', "hidden"); -- 2.11.0