From 20cf8502c14d1abec25058e9e0ddf8e94c9993be Mon Sep 17 00:00:00 2001 From: Marc Veron Date: Sun, 7 Oct 2012 19:54:44 +0200 Subject: [PATCH] Bug 8887: only display desired result when doing exact syspref search This patch fixes an issue where entering the complete name of a system preference when doing a syspref search in the staff interface resulted in the display of *all* preferences belonging to the desired one's module. Since providing a more specific search string should result in getting back more specific results, the previous behavior was not intuitive. Test scenario: a) In sysprefs, do a search with partial match (e.g. intranetcolor) -> Result shows one entry: intranetcolorstylesheet b) Do an exact search. e.g. intranetcolorstylesheet -> Result shows all Staff Client preferences Apply patch, test again. Now b) behaves like a). Signed-off-by: Mirko Tietgen Signed-off-by: Galen Charlton --- admin/preferences.pl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/admin/preferences.pl b/admin/preferences.pl index db91e76..09d648f 100755 --- a/admin/preferences.pl +++ b/admin/preferences.pl @@ -216,12 +216,10 @@ sub SearchPrefs { foreach my $piece ( @$line ) { if ( ref( $piece ) eq 'HASH' ) { - if ( !$piece->{'pref'} ){ next; } - if ( $piece->{'pref'} =~ /^$searchfield$/i ) { - my ( undef, $LINES ) = TransformPrefsToHTML( $data, $searchfield ); - - return { search_jumped => 1, tab => $tab_name, tab_title => $title, LINES => $LINES }; - } elsif ( matches( $piece->{'pref'}, \@terms) ) { + if ( !$piece->{'pref'} ){ + next; + } + if ( matches( $piece->{'pref'}, \@terms) ) { $matched = 1; } elsif ( ref( $piece->{'choices'} ) eq 'HASH' && grep( { $_ && matches( $_, \@terms ) } values( %{ $piece->{'choices'} } ) ) ) { $matched = 1; -- 1.7.10.4