From 6d50dea2b612c12ee53cf5ccaa5c089000647a72 Mon Sep 17 00:00:00 2001 From: Jaswinder Singh Date: Tue, 10 Jul 2018 15:08:37 -0400 Subject: [PATCH] LP#1772680: Enhance the add to display wishlist on myopac page Signed-off-by: Jaswinder Singh Signed-off-by: Galen Charlton --- .../src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm | 1 + .../lib/OpenILS/WWW/EGCatLoader/RBDigitalRecord.pm | 2 +- .../lib/OpenILS/WWW/EGCatLoader/RBDigitalSearch.pm | 23 +++++++++- .../ebook_api/rbdigital/parts/record/summary.tt2 | 4 +- .../ebook_api/rbdigital/parts/result/table.tt2 | 4 +- Open-ILS/src/templates/opac/myopac/wishlist.tt2 | 49 ++++++++++++++++++++++ Open-ILS/src/templates/opac/parts/myopac/base.tt2 | 3 ++ .../web/js/ui/default/opac/ebook_api/rbdigital.js | 22 ++++++++++ 8 files changed, 101 insertions(+), 7 deletions(-) create mode 100755 Open-ILS/src/templates/opac/myopac/wishlist.tt2 mode change 100644 => 100755 Open-ILS/src/templates/opac/parts/myopac/base.tt2 diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm index 4a8b56ab97..a1ae607ce1 100755 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm @@ -454,6 +454,7 @@ sub load_rbdigital_common { # Call sub to get all the vendors to be displayed on the UI $self->ctx->{vendors} = _get_authorized_vendors($self->editor->authtoken, $session_id); + $self->ctx->{wishlist} = _get_patron_wishlist($self->editor->authtoken, $session_id); } else { $self->ctx->{rbdigital_patron_id} = 0; $self->ctx->{vendors} = []; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalRecord.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalRecord.pm index 9c6cbcfe03..2d906c17be 100755 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalRecord.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalRecord.pm @@ -52,7 +52,7 @@ sub load_rbdigital_record { #Get Patron Wishlist # Return hash reference of wishlist {isbn => true} - $ctx->{wishlist} = _get_patron_wishlist($self->editor->authtoken, $session_id); + $ctx->{wishlist_map} = _get_patron_wishlist_isbn_map($self->editor->authtoken, $session_id); $ctx->{checkouts} = _get_patron_checkouts($self->editor->authtoken, $session_id); diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalSearch.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalSearch.pm index 4a5abdd614..ad0fb65356 100755 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalSearch.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalSearch.pm @@ -237,7 +237,7 @@ sub load_rbdigital_results { #Get Patron Wishlist # Return hash reference of wishlist {isbn => true} - $ctx->{wishlist} = _get_patron_wishlist($self->editor->authtoken, $session_id); + $ctx->{wishlist_map} = _get_patron_wishlist_isbn_map($self->editor->authtoken, $session_id); $ctx->{holds} = _get_patron_holds($self->editor->authtoken, $session_id); @@ -259,7 +259,8 @@ sub load_rbdigital_results { return Apache2::Const::OK; } -sub _get_patron_wishlist { +# Return hash reference of wishlist {isbn => true} +sub _get_patron_wishlist_isbn_map { my ($authtoken, $session_id) = @_; my $ebookapi_session = OpenSRF::AppSession->create('open-ils.ebook_api'); @@ -282,6 +283,24 @@ sub _get_patron_wishlist { return \%wishlist_ref; } +sub _get_patron_wishlist { + my ($authtoken, $session_id) = @_; + + my $ebookapi_session = OpenSRF::AppSession->create('open-ils.ebook_api'); + my $wishlist_req = $ebookapi_session->request('open-ils.ebook_api.patron.wishlist',$authtoken, $session_id,'','get')->recv(); + + if (defined($wishlist_req->{content}->{content})) { + $logger->info('EbookAPI: RBDigitalSearch Patron Wishlist API call was successful'); + # Loop over the wishlist contents and build hash array for easier to use in the UI: { isbn => '1', ...} + return $wishlist_req->{content}->{content}; + + } else { + $logger->error('EbookAPI: RBDigitalSearch Patron Wishlist API call failed'); + } + + return undef; +} + sub _get_patron_holds { my ($authtoken, $session_id) = @_; diff --git a/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/record/summary.tt2 b/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/record/summary.tt2 index 64c94f1ca5..584419b873 100755 --- a/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/record/summary.tt2 +++ b/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/record/summary.tt2 @@ -88,10 +88,10 @@ diff --git a/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/result/table.tt2 b/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/result/table.tt2 index 894bf9b92f..2a6fd47980 100755 --- a/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/result/table.tt2 +++ b/Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/result/table.tt2 @@ -413,12 +413,12 @@ END; diff --git a/Open-ILS/src/templates/opac/myopac/wishlist.tt2 b/Open-ILS/src/templates/opac/myopac/wishlist.tt2 new file mode 100755 index 0000000000..0430bc7182 --- /dev/null +++ b/Open-ILS/src/templates/opac/myopac/wishlist.tt2 @@ -0,0 +1,49 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + PROCESS "opac/parts/hold_status.tt2"; + PROCESS "opac/parts/myopac/column_sort_support.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "wishlist"; +%] +

[% l('My Wishlist') %]

+
+ + +
+
+ [% l('E-Items on Wishlist') %] +
+ + [% IF !ctx.wishlist || ctx.wishlist.size == 0; %] +
[% l('You have no e-items on wishlist.') %]
+ [% ELSE; %] +
+ + + + + + + + + + [% FOR ewishlist IN ctx.wishlist; %] + + + + + + + + [% END;%] + + +
[% l("Title") %][% l("Authors") %][% l("ISBN") %][% l("Publishers") %][% l("Actions") %]
[% ewishlist.title; %][% ewishlist.authors; %][% ewishlist.isbn; %][% ewishlist.publisher; %] +  [% l("Remove from Wishlist") %] +
+
+ [% END; %] +
+[% END %] diff --git a/Open-ILS/src/templates/opac/parts/myopac/base.tt2 b/Open-ILS/src/templates/opac/parts/myopac/base.tt2 old mode 100644 new mode 100755 index 284fdabc48..93719dcb14 --- a/Open-ILS/src/templates/opac/parts/myopac/base.tt2 +++ b/Open-ILS/src/templates/opac/parts/myopac/base.tt2 @@ -5,6 +5,7 @@ {url => "messages", name => l("Messages")}, {url => "circs", name => l("Items Checked Out")}, {url => "holds", name => l("Holds")}, + {url => "wishlist", name => l("Wishlist")}, {url => "prefs", name => l("Account Preferences")}, {url => "lists", name => l("My Lists")} ]; @@ -34,6 +35,8 @@
[%- FOREACH page IN myopac_pages; + NEXT IF ebook_api.enabled != 'true' && page.url == 'wishlist'; + IF page.url == myopac_page; cls_which = "acct-tab-on"; ctx.page_title = l("My Account - [_1]", page.name); diff --git a/Open-ILS/web/js/ui/default/opac/ebook_api/rbdigital.js b/Open-ILS/web/js/ui/default/opac/ebook_api/rbdigital.js index 554cfca28c..71a66f9657 100755 --- a/Open-ILS/web/js/ui/default/opac/ebook_api/rbdigital.js +++ b/Open-ILS/web/js/ui/default/opac/ebook_api/rbdigital.js @@ -45,7 +45,16 @@ function setupEventHandlers() { ebook_rbdigital.wishlist(authtoken, 'add', wishlistAddCallback); return false; }); + //Handle wishlist link from Wishlist tab + $(document).on("click", ".ebook_wishlist_row_remove", function () { + showEbookSpinner($(this), true); + var isbn = $(this).data('isbn'); + ebook_rbdigital.id = isbn; + ebook_rbdigital.wishlist(authtoken, 'delete', wishlistRemoveRowCallback); + return false; + }); + //Handle wishlist link from record view and results page $(document).on("click", ".ebook_wishlist_link_remove", function () { showEbookSpinner($(this), true); var isbn = $(this).data('isbn'); @@ -328,6 +337,19 @@ function wishlistRemoveCallback(responseContents, isbn) { hideEbookSpinner(); } + +//Process post ajax call to remove wishlist to patron's account +function wishlistRemoveRowCallback(responseContents, isbn) { + if (responseContents.message == "success") { + showNotification('Success','Succesfully removed from your wishlist!','success'); + $("#"+isbn+"_ebook_wishlist_remove").remove(); + } else { + showNotification('Unknown Error','Unable to remove from your wishlist. Please try it again!','error'); + console.log(responseContents.message); + } + hideEbookSpinner(); +} + //Process post ajax call to register the patron function registerPatronCallback(response) { rbdigitalPatronId = parseInt(response); -- 2.11.0