}
# 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) {
}
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 = '';
}
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;
# 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} = [];
#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);
#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);
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');
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) = @_;
<div class="rdetail_aux_utils">
<!-- Display Wishlist option -->
[% IF !ctx.is_staff %]
- <a id="[% ebook_item.isbn %]_ebook_wishlist_add" href="#" class="no-dec ebook_wishlist_link_add [% IF ctx.wishlist.$ebook_isbn == "1"; %] hidden [% END; %]" rel="nofollow" data-isbn="[% ebook_item.isbn %]">
+ <a id="[% ebook_item.isbn %]_ebook_wishlist_add" href="#" class="no-dec ebook_wishlist_link_add [% IF ctx.wishlist_map.$ebook_isbn == "1"; %] hidden [% END; %]" rel="nofollow" data-isbn="[% ebook_item.isbn %]">
<img src="[% ctx.media_prefix %]/images/clipboard.png[% ctx.cache_key %]" alt="" /> [% l("Add to Wishlist") %]</a>
- <a id="[% ebook_item.isbn %]_ebook_wishlist_remove" href="#" class="no-dec ebook_wishlist_link_remove [% IF ctx.wishlist.$ebook_isbn != "1"; %] hidden [% END; %]" rel="nofollow" vocab="" data-isbn="[% ebook_item.isbn %]">
+ <a id="[% ebook_item.isbn %]_ebook_wishlist_remove" href="#" class="no-dec ebook_wishlist_link_remove [% IF ctx.wishlist_map.$ebook_isbn != "1"; %] hidden [% END; %]" rel="nofollow" vocab="" data-isbn="[% ebook_item.isbn %]">
<img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="" /> [% l("Remove from Wishlist") %]</a>
[% END %]
</div>
<div class="results_aux_utils result_util ebook_action">
[% IF !ctx.is_staff; %]
<a id="[% ebook_item.isbn %]_ebook_wishlist_add" href="#"
- class="no-dec ebook_wishlist_link_add [% IF ctx.wishlist.$ebook_isbn == "1"; %] hidden [% END; %]"
+ class="no-dec ebook_wishlist_link_add [% IF ctx.wishlist_map.$ebook_isbn == "1"; %] hidden [% END; %]"
[% html_text_attr('title', title_label) %] rel="nofollow" data-isbn="[% ebook_item.isbn %]">
<img src="[% ctx.media_prefix %]/images/clipboard.png[% ctx.cache_key %]" alt="" /> [% l("Add to Wishlist") %]</a>
<a id="[% ebook_item.isbn %]_ebook_wishlist_remove" href="#"
- class="no-dec ebook_wishlist_link_remove [% IF ctx.wishlist.$ebook_isbn != "1"; %] hidden [% END; %]" rel="nofollow" vocab="" data-isbn="[% ebook_item.isbn %]">
+ class="no-dec ebook_wishlist_link_remove [% IF ctx.wishlist_map.$ebook_isbn != "1"; %] hidden [% END; %]" rel="nofollow" vocab="" data-isbn="[% ebook_item.isbn %]">
<img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="" /> [% l("Remove from Wishlist") %]</a>
[% END; %]
</div>
--- /dev/null
+[% 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";
+%]
+<h3 class="sr-only">[% l('My Wishlist') %]</h3>
+<div id='myopac_holds_div'>
+ <!-- Ebook Spinner -->
+ <span id="ebook_spinner" class="hidden"> Removing ... <img style="width:20px;height:auto" src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]" alt="[% l("Removing...") %]"/></span>
+ <div class="clear-both"></div>
+ <div class="header_middle">
+ <span class="float-left">[% l('E-Items on Wishlist') %]</span>
+ </div>
+
+ [% IF !ctx.wishlist || ctx.wishlist.size == 0; %]
+ <div id="no_ebook_holds" class="warning_box">[% l('You have no e-items on wishlist.') %]</div>
+ [% ELSE; %]
+ <div id='ebook_holds_main'>
+ <table id="ebook_holds_main_table"
+ title="[% l('E-Items on Wishlist') %]"
+ class="table_no_border_space table_no_cell_pad item_list_padding">
+ <thead>
+ <tr>
+ <th>[% l("Title") %]</th>
+ <th>[% l("Authors") %]</th>
+ <th>[% l("ISBN") %]</th>
+ <th>[% l("Publishers") %]</th>
+ <th>[% l("Actions") %]</th>
+ </tr>
+ [% FOR ewishlist IN ctx.wishlist; %]
+ <tr id="[% ewishlist.isbn %]_ebook_wishlist_remove">
+ <td>[% ewishlist.title; %]</td>
+ <td>[% ewishlist.authors; %]</td>
+ <td>[% ewishlist.isbn; %]</td>
+ <td>[% ewishlist.publisher; %]</td>
+ <td><a href="#" class="no-dec ebook_wishlist_row_remove" rel="nofollow" vocab="" data-isbn="[% ewishlist.isbn %]">
+ <img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]" alt="" /> [% l("Remove from Wishlist") %]</a>
+ </td>
+ </tr>
+ [% END;%]
+ </thead>
+ <tbody id="ebook_holds_main_table_body"></tbody>
+ </table>
+ </div>
+ [% END; %]
+</div>
+[% END %]
{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")}
];
<div id="myopac_tabs">
<div id="acct_tabs">
[%- 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);
<!-- Load Code for displaying the password prompt -->
[% INCLUDE 'opac/ebook_api/rbdigital/register_modal.tt2'; %]
[% END; %]
+[% ELSE; %]
+ <div id="vendor_tabs">
+ <div id="acct_tabs">
+ <a id="lnkSearchResults_default"
+ href="[% mkurl(ctx.opac_root _ "/results") %]" class="acct-tab-on">Evergreen</a>
+ </div>
+ </div>
[% END; %]
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');
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);