From b2ccd0f3a208f8920eda0552fb4f5fc773e23901 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 3 Nov 2014 09:31:27 -0500 Subject: [PATCH] Bug 13189 - Patron card creator patron search browse by last name broken by extended attributes The browse by last name letters on the patron search for the patron card creator doesn't work quite right. If extended patron attributes are disabled, it works fine, but if they are enabled, they are searched even when using the browse last name. Thus, if a searchable attribute has a "D" in it, and one clicks the "D" link for the last name browser, that patron will show even if he or she has no "D" in his or her hame! Test Plan: 1) Enable extended patron attributes 2) Add a new searchable patron attribute 3) Create a new patron with the last name "Ace" 4) Add the value "D" to the attribute for this patron 5) Browse to the patron card maker, start a new patron batch 6) Click "Add item(s)" to bring up the patron search 7) Click the letter "D" in the patron search box 8) Note that "Ace" shows in the results list 9) Apply this patch 10) Repeat step 7 11) Note that "Ace" no longer shows in the results list 12) Perform a regular search by putting the letter "D" in the "Name:" field, and hit the "Search" button 13) Note this time the results *do* have Ace in them Signed-off-by: Frederic Demians Well described for a tricky bug. Reproducible. Fixed with this patch. Signed-off-by: Katrin Fischer This works as described, no problems or regressions found. --- C4/Members.pm | 4 ++-- .../prog/en/modules/patroncards/members-search.tt | 2 +- patroncards/members-search.pl | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/C4/Members.pm b/C4/Members.pm index 6f95b94e3e..4fb845d8d9 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -203,7 +203,7 @@ sub _express_member_find { } sub Search { - my ( $filter, $orderby, $limit, $columns_out, $search_on_fields, $searchtype ) = @_; + my ( $filter, $orderby, $limit, $columns_out, $search_on_fields, $searchtype, $not_attributes ) = @_; my $search_string; my $found_borrower; @@ -237,7 +237,7 @@ sub Search { } } - if ( !$found_borrower && C4::Context->preference('ExtendedPatronAttributes') && $search_string ) { + if ( !$found_borrower && C4::Context->preference('ExtendedPatronAttributes') && $search_string && !$not_attributes ) { my $matching_records = C4::Members::Attributes::SearchIdMatchingAttribute($search_string); if(scalar(@$matching_records)>0) { if ( my $fr = ref $filter ) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/members-search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/members-search.tt index 50289c1bc3..b0e7702685 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/members-search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/members-search.tt @@ -50,7 +50,7 @@ function add_item(borrowernum,batch_id,type_id){
Browse by last name: [% FOREACH letter IN alphabet.split(' ') %] - [% letter %] + [% letter %] [% END %]
diff --git a/patroncards/members-search.pl b/patroncards/members-search.pl index 3492c7dd8b..0c680a04e0 100755 --- a/patroncards/members-search.pl +++ b/patroncards/members-search.pl @@ -35,6 +35,7 @@ my $resultsperpage = $cgi->param('resultsperpage')||C4::Context->preference("Pat my $category = $cgi->param('category') || undef; my $member = $cgi->param('member') || ''; my $orderby = $cgi->param('orderby') || undef; +my $not_attributes = $cgi->param('not_attributes') || undef; my @categories=C4::Category->all; my %categories_display; @@ -72,8 +73,8 @@ $member =~ s/,//g; #remove any commas from search string $member =~ s/\*/%/g; if ($member || $category) { - my $results = $category ? Search({''=>$member, categorycode=>$category}, $orderby) - : Search($member, $orderby); + my $results = $category ? Search({''=>$member, categorycode=>$category}, $orderby, undef, undef, undef, undef, $not_attributes ) + : Search($member, $orderby, undef, undef, undef, undef, $not_attributes); my $count = $results ? @$results : 0; my @resultsdata = (); -- 2.39.5