Bug 2693: add ability to filter by reviewer name on tag review page
authorOwen Leonard <oleonard@myacpl.org>
Wed, 21 Aug 2013 14:53:20 +0000 (10:53 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Mon, 2 Dec 2013 15:58:04 +0000 (15:58 +0000)
If you want to filter results on the tags management page by the
reviewer you have to know their borrowernumber. It would be better to be
able to search by name, but in the meantime this patch adds an
autocomplete widget to the form field so that you can do a name search
and populate the field with the borrowernumber.

To test you must have approved or rejected tags. From the tags review
page (tags/review.pl), view all, approved, or rejected tags. Type a name
in the "reviewer" form field in the left sidebar filter. You should get
an autocomplete dropdown with names matching your search. When you
select one the form field should be populated by the borrowernumber.

Signed-off-by: David Cook <dcook@prosentient.com.au>
Patch works as described. I'm not sure whether or not it would be better
to be able to search by name, as that would involve either choosing
between names after applying the filter or showing any possible matches,
so this seems fine.

--

Owen and I did observe that we were able to cause AJAX errors while
using this autocomplete, but we are not 100% sure how we caused the error.
In my case, I was able to occasionally cause it by typing in a name
then backspacing rapidly. The ajaxError method is attached to every
element in the DOM (yikes) so it's tough to say what exactly is the
source of the error (which is signalled by a pop-up window that can be
cancelled).

The error is quite rare so I don't think it's necessarily a problem
for us.

One idea that Owen had was to remove the current error message, which
is very unhelpful and replace it with an error like "Something went
wrong. Try again."

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
circ/ysearch.pl
koha-tmpl/intranet-tmpl/prog/en/modules/tags/review.tt

index 4a3663e..7429c06 100755 (executable)
@@ -45,7 +45,7 @@ if ($auth_status ne "ok") {
 
 my $dbh = C4::Context->dbh;
 my $sql = q(
-    SELECT surname, firstname, cardnumber, address, city, zipcode, country
+    SELECT borrowernumber, surname, firstname, cardnumber, address, city, zipcode, country
     FROM borrowers
     WHERE ( surname LIKE ?
         OR firstname LIKE ?
@@ -68,7 +68,8 @@ print "[";
 my $i = 0;
 while ( my $rec = $sth->fetchrow_hashref ) {
     if($i > 0){ print ","; }
-    print "{\"surname\":\"" . $rec->{surname} . "\",\"" .
+    print "{\"borrowernumber\":\"" . $rec->{borrowernumber} . "\",\"" .
+          "surname\":\"".$rec->{surname} . "\",\"" .
           "firstname\":\"".$rec->{firstname} . "\",\"" .
           "cardnumber\":\"".$rec->{cardnumber} . "\",\"" .
           "address\":\"".$rec->{address} . "\",\"" .
index a950250..db74ee3 100644 (file)
@@ -140,6 +140,21 @@ tr > td input,td input[type="submit"] { font-size: 85%; padding: 1px; }
             "iDisplayLength": 20,
             "sPaginationType": "four_button"
         }));
+        var reviewerField = $("#approver");
+        reviewerField.autocomplete({
+            source: "/cgi-bin/koha/circ/ysearch.pl",
+            minLength: 3,
+            select: function( event, ui ) {
+                reviewerField.val( ui.item.borrowernumber );
+                return false;
+            }
+        })
+        .data( "autocomplete" )._renderItem = function( ul, item ) {
+            return $( "<li></li>" )
+            .data( "item.autocomplete", item )
+            .append( "<a>" + item.surname + ", " + item.firstname + " (" + item.cardnumber + ") <small>" + item.address + " " + item.city + " " + item.zipcode + " " + item.country + "</small></a>" )
+            .appendTo( ul );
+        };
        });
 //]]>
 </script>