From: Jaswinder Singh Date: Tue, 10 Jul 2018 19:08:37 +0000 (-0400) Subject: LP#1772680: Enhance the add to display wishlist on myopac page X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=630fd6629b515e488b3a6e590b064b9cf19cd709;p=evergreen%2Fpines.git LP#1772680: Enhance the add to display wishlist on myopac page Signed-off-by: Jaswinder Singh Signed-off-by: Galen Charlton LP#1772680: Fixed search and other issues Signed-off-by: Jaswinder Singh Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm index d9977f52db..f851f7eed8 100755 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm @@ -247,7 +247,7 @@ sub do_basic_search { } # Call local method to get URI for a request - $basic_search_uri = _build_search_URI($media_format, $value_to_search, $facets, $search_inputs, $sort_by, $sort_order, $page_index, $page_size); + $basic_search_uri = _build_search_URI($search_type, $media_format, $value_to_search, $facets, $search_inputs, $sort_by, $sort_order, $page_index, $page_size); $logger->info('EbookAPI: Calling the search API: '.$uri); if (TEST_QA) { @@ -283,7 +283,7 @@ sub do_basic_search { } sub _build_search_URI { - my ($media_format, $value_to_search, $facets, $search_inputs, $sort_by, $sort_order, $page_index, $page_size) = @_; + my ($search_type, $media_format, $value_to_search, $facets, $search_inputs, $sort_by, $sort_order, $page_index, $page_size) = @_; my $uri = ''; my $sort_string = ''; @@ -299,8 +299,16 @@ sub _build_search_URI { } if ($media_format eq 'eaudio' || $media_format eq 'ebook' || $media_format eq '') { + my $search_term = ''; + if ($search_type eq 'author' || $search_type eq 'genre') { + $search_term = "&$search_type=$value_to_search"; + } else { + $search_term = "&all=$value_to_search"; + } + $uri = "search/$media_format?search-source=quick-all&page-size=$page_size". - "&page-index=$page_index&all=$value_to_search&mediatype=$media_format".$sort_string; + "&page-index=$page_index".$search_term."&mediatype=$media_format".$sort_string; + } elsif ($media_format eq '' && scalar (@$search_inputs) == 0) { $uri = "search?q=$value_to_search&page-size=$page_size". "&page-index=$page_index".$sort_string; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm index 63d118d5e6..8a914094ff 100755 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm @@ -458,6 +458,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/src/templates/opac/parts/vendor_tabs.tt2 b/Open-ILS/src/templates/opac/parts/vendor_tabs.tt2 index 64fedf77c9..4df5006a80 100755 --- a/Open-ILS/src/templates/opac/parts/vendor_tabs.tt2 +++ b/Open-ILS/src/templates/opac/parts/vendor_tabs.tt2 @@ -24,4 +24,11 @@ [% INCLUDE 'opac/ebook_api/rbdigital/register_modal.tt2'; %] [% END; %] +[% ELSE; %] +
+
+ Evergreen +
+
[% END; %] 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);