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");
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;
dojo.removeClass('no_ebook_circs', "hidden");
} else {
dojo.forEach(xacts.checkouts, function(x) {
+ var dl_link = '';
+ if (x.download_url)
+ dl_link = '<a href="' + x.download_url + '" target="_blank">' + l_strings.download + '</a>';
dojo.empty('ebook_circs_main_table_body');
- var dl_link = '<a href="' + x.download_url + '">' + l_strings.download + '</a>';
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);
} 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 = '<a href="' + h.download_url + '" target="_blank">' + l_strings.download + '</a>';
} else if (h.is_frozen) {
hold_status = l_strings.suspended;
} else {
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");
dojo.removeClass('no_ebook_holds', "hidden");
} else {
dojo.forEach(holds, function(h) {
+ var dl_link = '';
+ if (h.is_ready && h.download_url)
+ dl_link = '<a href="' + h.download_url + '" target="_blank">' + l_strings.download + '</a>';
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");