LP#1772680: Fixed issues dealing with search feature and new User
authorJaswinder Singh <jaswinder.singh0011@gmail.com>
Fri, 22 Jun 2018 20:24:38 +0000 (16:24 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Mon, 16 Mar 2020 19:08:50 +0000 (15:08 -0400)
Signed-off-by: Jaswinder Singh <jaswinder.singh0011@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1772680: Resolved multiple issues

Signed-off-by: Jaswinder Singh <jaswinder.singh0011@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1772680: Fixed the search issue

Signed-off-by: Jaswinder Singh <jaswinder.singh0011@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/EbookAPI/RBDigital.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/RBDigitalSearch.pm
Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/filtersort.tt2
Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/item_parser.tt2
Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/record/summary.tt2
Open-ILS/src/templates/opac/ebook_api/rbdigital/parts/result/table.tt2
Open-ILS/src/templates/opac/ebook_api/rbdigital/register_modal.tt2
Open-ILS/src/templates/opac/parts/vendor_tabs.tt2
Open-ILS/web/js/ui/default/opac/ebook_api/rbdigital.js

index a3e582e..d9977f5 100755 (executable)
@@ -182,11 +182,9 @@ sub do_patron_auth {
         # try to authenticate the user with a username
         $patron_id = $self-> _get_patron_id($username);
         
-        if ($patron_id < 1) {
-            # TODO: Remove/Replace the below line
-            $patron_id = 99999;
-        }
+        $logger->error("EbookAPI: Unable to get RBDigital Patron ID found for $username/$email");
     }
+
     return $patron_id;
 }
 
@@ -291,14 +289,16 @@ sub _build_search_URI {
     
     if ($sort_by ne '') {
         $sort_string = "&sort-by=$sort_by&sort-order=$sort_order";
+    } else {
+        $sort_string = '&sort-by=title'; #Default to Title sort
     }
 
     # convert book to ebook
     if ($media_format eq 'book') {
-        $media_format = 'ebook';
+        $media_format = '';
     }
 
-    if ($media_format eq 'eaudio' || $media_format eq 'ebook') {
+    if ($media_format eq 'eaudio' || $media_format eq 'ebook' || $media_format eq '') {
         $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;
     } elsif ($media_format eq '' && scalar (@$search_inputs) == 0) {
@@ -810,6 +810,11 @@ sub get_patron_checkouts {
     my $session_id = $self->{session_id};
     my $req;
     
+    if ($patron_id == 0) {
+        $logger->info("EbookAPI: Patron ID is 0. Returning with an API call");
+        return;
+    }
+
     $logger->info("EbookAPI: Getting checkout list for Patron: $patron_id from RBDigital.");
     $req = {
         method => 'GET',
@@ -853,6 +858,12 @@ sub get_patron_holds {
     my $base_uri = $self->{base_uri};
     my $library_id = $self->{library_id};
     my $session_id = $self->{session_id};
+
+    if ($patron_id == 0) {
+        $logger->info("EbookAPI: Patron ID is 0. Returning with an API call");
+        return;
+    }
+
     my $req = {
         method => 'GET',
         uri    => "$base_uri/libraries/$library_id/patrons/$patron_id/holds",
index 9011b33..4a5abdd 100755 (executable)
@@ -145,12 +145,6 @@ sub load_rbdigital_results {
 
     # filters
     my $filters = [];
-    # my $query;
-    # foreach (grep /^fi:/, $cgi->param) {
-    #     /:(-?\w+)$/ or next;
-    #     my $term = join(",", $cgi->param($_));
-    #     $query .= " $1($term)" if length $term;
-    # }
 
     # Build array with Search Inputs
     # Title (if any)
@@ -229,7 +223,7 @@ sub load_rbdigital_results {
 
     $logger->info('EbookAPI: RBDigitalSearch Checking media type');
     # Check if RBDigital can perform requested query
-    if ($media_format eq 'eaudio' || $media_format eq 'ebook' || $media_format eq 'book' || $media_format eq 'music' || $media_format eq '') {
+    if ($media_format eq 'eaudio' || $media_format eq 'ebook' || $media_format eq 'book' || $media_format eq 'music' || $media_format eq '' ) {
         $logger->info('EbookAPI: RBDigitalSearch Invoking search method');
 
         $results = _search ($self->editor->authtoken, $session_id,
@@ -245,6 +239,8 @@ sub load_rbdigital_results {
         # Return hash reference of wishlist {isbn => true}
         $ctx->{wishlist} = _get_patron_wishlist($self->editor->authtoken, $session_id);
 
+        $ctx->{holds} = _get_patron_holds($self->editor->authtoken, $session_id);
+        
         $ctx->{checkouts} = _get_patron_checkouts($self->editor->authtoken, $session_id);
 
         # Add values to returned query structure for GUI to process
@@ -360,7 +356,7 @@ sub _get_patron_id {
         return $api_request->recv->content;
     }
     
-    return 1;
+    return 0;
 }
 
 sub _get_ebook_session_id {
index 596c82d..577d09c 100755 (executable)
@@ -18,7 +18,4 @@
         <option value='pubdate.descending'[% value == 'pubdate.descending' ? ' selected="selected"' : '' %]>[% l("Date: Newest to Oldest") %]</option>
         <option value='pubdate'[% value == 'pubdate' ? ' selected="selected"' : '' %]>[% l("Date: Oldest to Newest") %]</option>
     </optgroup>
-    <optgroup label='[% l("Sort by Popularity") %]'>
-        <option value='popularity'[% value == 'popularity' ? ' selected="selected"' : '' %]>[% l("Most Popular") %]</option>
-    </optgroup>
 </select>
index b497753..be741bc 100755 (executable)
     ebook_item.authors_detail = '';
 
     # Check title is available for Checkout Service
-    ebook_item.isTitleAvailable = false;
-    IF item.interest.isAvailable == 'true';
-        ebook_item.isTitleAvailable = true;
-    END;
+    ebook_item.isAvailable = ebook_record_item.interest.isAvailable;
 
     # Loop over AUTHORS array
     FOREACH item IN ebook_record_item.authors;
index 6ae9404..64c94f1 100755 (executable)
@@ -6,12 +6,14 @@
 
     #Set the ebook_record_item before processing the item_parser
     ebook_record_item = ctx.title_info.item;
+    ebook_record_item.interest = ctx.title_info.interest;
     ebook_record_item.summary = ctx.title_summary.summary;
     ebook_record_item.recommended_books = ctx.recommended_books;
     ebook_isbn = ebook_record_item.isbn;
     
     PROCESS "opac/ebook_api/rbdigital/parts/item_parser.tt2";
 %]
+
 <!-- ****************** rdetail_summary.xml ***************************** -->
 <!-- Ebook Spinner -->
 <span id="ebook_spinner" class="hidden">&nbsp;Processing ...&nbsp;&nbsp;<img style="width:20px;height:auto" src="[% ctx.media_prefix %]/opac/images/progressbar_green.gif[% ctx.cache_key %]" alt="[% l("Processing...") %]"/></span>
@@ -44,7 +46,7 @@
         [% END %]
 
         <div id="rdetail_actions_div">
-            [% IF ebook_item.isTitleAvailable == true; %]
+            [% IF ebook_item.isAvailable == 1; %]
                 <div class="rdetail_aux_utils ebook_action">
                 [% IF ctx.checkouts.$ebook_isbn != ""; %]
                     <a id="[% ebook_item.isbn %]_ebook_checkout_download_link" 
                     
                  [% END; %]
                  </div>
-            [% END; %]
-
-            [% IF ctx.checkouts.$ebook_isbn == ""; %]
-                
+            [% ELSE; %]
                 <div id="[% ebook_item.isbn %]_ebook_hold" class="rdetail_aux_utils ebook_action">
                     <a id="[% ebook_item.isbn %]_ebook_place_hold" 
                         href="#" data-isbn="[% ebook_item.isbn %]"
index 0d75804..894bf9b 100755 (executable)
@@ -7,6 +7,7 @@
     IF ctx.result_stop > ctx.hit_count; ctx.result_stop = ctx.hit_count; END;
 
     result_count = ctx.result_start;
+    USE Dumper;
 %]
 [% PROCESS "opac/parts/result/paginate.tt2" %]
 [% ctx.results_count_header = PROCESS results_count_header; 
@@ -44,6 +45,7 @@
                     [% 
                         FOR rec IN ctx.records;
                             ebook_record_item = rec.item;
+                            ebook_record_item.interest = rec.interest;
                             PROCESS "opac/ebook_api/rbdigital/parts/item_parser.tt2";
                             #ebook_item variable is populated inside the item_parser file
                             ebook_isbn = ebook_item.isbn;
@@ -368,31 +370,47 @@ END;
                                                 </div>
                                                 <div class="result_table_utils_cont">
                                                     <div class="result_table_utils">
-                                                        [% IF ebook_item.isTitleAvailable == true; %]
-                                                        <div id="[%- rec.item.isbn -%]_ebook_checkout" class="results_aux_utils result_util ebook_action">
-                                                            [% IF ctx.checkouts.$ebook_isbn != ""; %]
-                                                                <a id="[% ebook_item.isbn %]_ebook_checkout_download_link" 
-                                                                    href="#"
-                                                                    data-downloadurl="[% ctx.checkouts.$ebook_isbn; %]"
-                                                                    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="" />&nbsp;[% l("Download") %]</a>
+                                                        [% IF ebook_item.isAvailable == 1; %]
+                                                            <div id="[%- rec.item.isbn -%]_ebook_checkout" class="results_aux_utils result_util ebook_action">
+                                                                [% IF ctx.checkouts.$ebook_isbn != ""; %]
+                                                                    <a id="[% ebook_item.isbn %]_ebook_checkout_download_link" 
+                                                                        href="#"
+                                                                        data-downloadurl="[% ctx.checkouts.$ebook_isbn; %]"
+                                                                        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="" />&nbsp;[% l("Download") %]</a>
 
-                                                            [% ELSE; %]
-                                                                <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_checkout',
-                                                                    {title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'},
-                                                                    ['query','tag','subfield','term','_special','sort','page']) %]"
-                                                                    [% html_text_attr('title', l('Check Out [_1]', ebook_item.title)) %]
-                                                                    data-isbn="[% ebook_item.isbn %]" 
-                                                                    class="no-dec ebook_checkout_link" rel="nofollow" vocab="">
-                                                                <img src="[% ctx.media_prefix %]/images/green_check.png[% ctx.cache_key %]"
-                                                                    alt=""/><span class="result_place_hold">[% l('Check Out E-Item') %]</span></a>                                                            
-                                                            [% END; %]
-                                                        </div>
+                                                                [% ELSE; %]
+                                                                    <a href="[% mkurl(ctx.opac_root _ '/myopac/ebook_checkout',
+                                                                        {title => args.ebook.ebook_id, vendor => args.ebook.vendor, action => 'checkout'},
+                                                                        ['query','tag','subfield','term','_special','sort','page']) %]"
+                                                                        [% html_text_attr('title', l('Check Out [_1]', ebook_item.title)) %]
+                                                                        data-isbn="[% ebook_item.isbn %]" 
+                                                                        class="no-dec ebook_checkout_link" rel="nofollow" vocab="">
+                                                                    <img src="[% ctx.media_prefix %]/images/green_check.png[% ctx.cache_key %]"
+                                                                        alt=""/><span class="result_place_hold">[% l('Check Out E-Item') %]</span></a>                                                            
+                                                                [% END; %]
+                                                            </div>
+                                                        [% ELSE; %]
+                                                            <div id="[% ebook_item.isbn %]_ebook_hold" class="rdetail_aux_utils result_util ebook_action">
+                                                                <a id="[% ebook_item.isbn %]_ebook_place_hold" 
+                                                                    href="#" data-isbn="[% ebook_item.isbn %]"
+                                                                    class="no-dec ebook_place_hold [% IF ctx.holds.$ebook_isbn == "1"; %] hidden [% END; %]" rel="nofollow" vocab="">
+                                                                    <img src="[% ctx.media_prefix %]/images/green_check.png[% ctx.cache_key %]"
+                                                                    [% img_alt(l('Place Hold on [_1]', ebook_item.title)) %]/>
+                                                                <span class="result_place_hold">[% l('Place Hold on E-Item') %]</span></a>
+
+                                                                <a id="[% ebook_item.isbn %]_ebook_cancel_hold"
+                                                                    href="#" data-isbn="[% ebook_item.isbn %]"
+                                                                    class="no-dec ebook_cancel_hold [% IF ctx.holds.$ebook_isbn != "1"; %] hidden [% END; %]" rel="nofollow" vocab="">
+                                                                    <img src="[% ctx.media_prefix %]/images/minus_sign.png[% ctx.cache_key %]"
+                                                                    [% img_alt(l('Cancel Hold on [_1]', ebook_item.title)) %]/>
+                                                                <span class="result_place_hold">[% l('Cancel Hold on E-Item') %]</span></a>
+                                                            </div>
                                                         [% END; %]
                                                     [% IF !ctx.is_meta %]
-                                                        <div class="results_aux_utils result_util">
+                                                        <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; %]" 
index e932ef8..ce74ae8 100755 (executable)
@@ -2,7 +2,6 @@
   <!-- Modal -->
   <div id="rbdigitalRegisterModal" class="modal fade" role="dialog">
     <div class="modal-dialog">
-    
       <!-- Modal content-->
       <div class="modal-content">
         <div class="modal-header">
@@ -13,7 +12,7 @@
           <form id="frmRegisterRBDigital" role="form">
             <div class="form-group">
               <label for="usrname"><span class="glyphicon glyphicon-user"></span> Username</label>
-              <input type="text" class="form-control" id="userrname" placeholder="Enter email" value="[% ctx.user.usrname | html %]" disabled>
+              <input type="text" class="form-control" id="userrname" placeholder="Enter email" value="[% ctx.user.usrname | html; %]" disabled>
             </div>
             <div id="divPassword" class="form-group">
               <label for="psw"><span class="glyphicon glyphicon-eye-open"></span> New Password</label>
@@ -58,4 +57,6 @@
           <button id="btnCloseRegisterSuccess" type="submit" class="btn btn-danger btn-default pull-right" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Close</button>
         </div>
       </div>
+    </div>
+  </div>
 </div>
\ No newline at end of file
index a0693ac..64fedf7 100755 (executable)
@@ -20,9 +20,8 @@
         </div>
     </div>
     <input type="hidden" id="rbdigitalPatronId" value="[% ctx.rbdigital_patron_id %]">
-    [% IF ctx.rbdigital_patron_id == 0 %]
+    [% IF ctx.rbdigital_patron_id == 0; %]
         <!-- Load Code for displaying the password prompt -->
-        [%- INCLUDE 'opac/ebook_api/rbdigital/register_modal.tt2' %]
-    [% END;%]
-    
+        [% INCLUDE 'opac/ebook_api/rbdigital/register_modal.tt2'; %]
+    [% END; %]
 [% END; %]
index 337eeaa..554cfca 100755 (executable)
@@ -271,7 +271,7 @@ function placeHoldCallback(responseContents, isbn) {
 
 function cancelHoldCallback(responseContents, isbn) {
     if (responseContents.message == "success") {
-        showNotification('Success','Item is no loger on hold!','success');
+        showNotification('Success','Item is no longer on hold!','success');
         $("#"+isbn+"_ebook_place_hold").removeClass('hidden');
         $("#"+isbn+"_ebook_cancel_hold").addClass('hidden');
     } else if (responseContents.message.indexOf("already exists") > 1) {