my $res = $self->request($req, $session_id);
if (defined ($res)) {
if ($res->{is_success}) {
- return $res;
+ return $res->{content};
} else {
$logger->error("EbookAPI: checkin failed for RBDigital title $isbn");
- return { error_msg => $res->{content} };
+ return { message => 'failed', error_msg => $res->{content} };
}
} else {
$logger->error("EbookAPI: no response received from RBDigital server");
rel="nofollow" vocab=""
data-isbn="[% ebook_item.isbn %]">
<img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="" /> [% l("Download") %]</a>
-
+ <a data-isbn="[% ebook_item.isbn %]" class="lnk_ebook_checkin" href="#" ><span class="glyphicon glyphicon-circle-arrow-up"></span> [% l("Return") %]</a>
[% ELSE; %]
<a id="[%- ebook_item.isbn -%]_ebook_checkout"
href=""
class="no-dec ebook_checkout_download_link"
rel="nofollow" vocab=""
data-isbn="[% ebook_item.isbn %]">
- <img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="" /> [% l("Download") %]</a>
-
+ <img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="" /> [% l("Download") %]</a>
+ <a data-isbn="[% ebook_item.isbn %]" class="lnk_ebook_checkin" href="#" ><span class="glyphicon glyphicon-circle-arrow-up"></span> [% l("Return") %]</a>
[% ELSE; %]
<a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_checkout',
{title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'},
// translatable strings as JS variables
var l_strings = {};
l_strings.download = '[% l('Download') %]';
+l_strings.return = '[% l('Return') %]';
l_strings.ready_for_checkout = '[% l('Ready for Checkout') %]';
l_strings.suspended = '[% l('Suspended') %]';
l_strings.checkout = '[% l('Checkout') %]';
[%- IF ctx.user %]
<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/ebook_api/relation.js[% ctx.cache_key %]"></script>
-<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/ebook_api/loggedin.js[% ctx.cache_key %]"></script>
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/opac/ebook_api/loggedin.js?v=[% date.format; %]"></script>
<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/common/build/js/jquery.min.js[% ctx.cache_key %]"></script>
<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/bootstrap.min.js[% ctx.cache_key %]"></script>
<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/pnotify.custom.min.js?v=[% date.format; %]"></script>
}).send();
}
+//Checkout and E-item
Ebook.prototype.checkout = function(authtoken, patron_id, callback) {
var ebook = this;
//Reload new session (if any)
});
}
+//Checkin / Return an E-item
+Ebook.prototype.checkin = function(authtoken, patron_id, callback) {
+ var ebook = this;
+ //Reload new session (if any)
+ checkSession(this.vendor, function(vendor_cookie_name) {
+ var ses = ebook.ses || dojo.cookie(vendor_cookie_name);
+
+ var checkout_format = "";
+
+ // perform checkout
+ new OpenSRF.ClientSession('open-ils.ebook_api').request({
+ method: 'open-ils.ebook_api.checkin',
+ params: [ authtoken, ses, ebook.id, patron_id, checkout_format ],
+ async: true,
+ oncomplete: function(r) {
+ var resp = r.recv();
+ if (resp) {
+ console.log('checkout response: ' + resp.content());
+ return callback(resp.content());
+ }
+ }
+ }).send();
+ });
+}
+
+//Place hold on an ebook
Ebook.prototype.placeHold = function(authtoken, patron_id, callback) {
var ebook = this;
dojo.create("td", { innerHTML: x.author }, tr);
dojo.create("td", { innerHTML: x.due_date }, tr);
var dl_td = dojo.create("td", null, tr);
+ var actions_html = "";
if (x.download_url) {
- dl_td.innerHTML = '<a href="' + x.download_url + '">' + l_strings.download + '</a>';
+ actions_html = '<a class="btn btn-default " href="' + x.download_url + '">' + l_strings.download + '</a>';
}
+ actions_html += ' <a data-isbn="'+x.title_id + '" class="btn btn-default lnk_ebook_checkin" href="#" >'+l_strings.return+'</a>';
+
+ dl_td.innerHTML = actions_html;
+
if (x.formats) {
var select = dojo.create("select", { id: "download-format" }, dl_td);
for (f in x.formats) {
ebook_rbdigital.cancelHold(authtoken, rbdigitalPatronId, cancelHoldCallback);
});
+ //Return an e-item
+ $(document).on('click','.lnk_ebook_checkin', function () {
+ var isbn = $(this).data('isbn');
+ ebook_rbdigital.id = isbn;
+ showEbookSpinner($(this), true);
+ ebook_rbdigital.checkin(authtoken, rbdigitalPatronId, checkinCallback);
+ });
+
+ //Download an ebook/eaudio
$(document).on('click','#ebook_circs_main_table_body a', function () {
var that = $(this);
var api_url = that.attr('href');
hideEbookSpinner();
}
+//Checkout
function checkoutAddCallback(responseContents) {
if (responseContents.message == "success") {
showNotification('Success','Succesfully checked out item!','success');
} else {
showNotification('Unknown Error','Unable to checkout the item. Please try it again!','error');
console.log(responseContents.message);
+ hideEbookSpinner();
+ }
+}
+
+//Checkin/Return
+function checkinCallback(responseContents) {
+ if (responseContents.message == "success") {
+ showNotification('Success','Succesfully returned the item!','success');
+ location.reload();
+ } else {
+ showNotification('Unknown Error','Unable to return the item. Please try it again!','error');
+ console.log(responseContents.message);
+ hideEbookSpinner();
}
}