Koha/circ/ysearch.pl
Owen Leonard d536ed92fa Bug 2693: add ability to filter by reviewer name on tag review page
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>
2013-12-02 15:58:04 +00:00

82 lines
2.6 KiB
Perl
Executable file

#!/usr/bin/perl
# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
# Copyright 2007 Tamil s.a.r.l.
# Parts copyright 2010-2012 Athens County Public Libraries
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
=head1 ysearch.pl
=cut
use strict;
#use warnings; FIXME - Bug 2505
use CGI;
use C4::Context;
use C4::Members;
use C4::Auth qw/check_cookie_auth/;
my $input = new CGI;
my $query = $input->param('term');
binmode STDOUT, ":encoding(UTF-8)";
print $input->header(-type => 'text/plain', -charset => 'UTF-8');
my ($auth_status, $sessionID) = check_cookie_auth($input->cookie('CGISESSID'), { circulate => '*' });
if ($auth_status ne "ok") {
exit 0;
}
my $dbh = C4::Context->dbh;
my $sql = q(
SELECT borrowernumber, surname, firstname, cardnumber, address, city, zipcode, country
FROM borrowers
WHERE ( surname LIKE ?
OR firstname LIKE ?
OR cardnumber LIKE ? )
);
if (C4::Context->preference("IndependentBranches")){
if ( C4::Context->userenv
&& (C4::Context->userenv->{flags} % 2) !=1
&& C4::Context->userenv->{'branch'}
){
$sql .= " AND borrowers.branchcode =" . $dbh->quote(C4::Context->userenv->{'branch'});
}
}
$sql .= q( ORDER BY surname, firstname LIMIT 10);
my $sth = $dbh->prepare( $sql );
$sth->execute("$query%", "$query%", "$query%");
print "[";
my $i = 0;
while ( my $rec = $sth->fetchrow_hashref ) {
if($i > 0){ print ","; }
print "{\"borrowernumber\":\"" . $rec->{borrowernumber} . "\",\"" .
"surname\":\"".$rec->{surname} . "\",\"" .
"firstname\":\"".$rec->{firstname} . "\",\"" .
"cardnumber\":\"".$rec->{cardnumber} . "\",\"" .
"address\":\"".$rec->{address} . "\",\"" .
"city\":\"".$rec->{city} . "\",\"" .
"zipcode\":\"".$rec->{zipcode} . "\",\"" .
"country\":\"".$rec->{country} . "\"" .
"}";
$i++;
}
print "]";