Bug 8887: only display desired result when doing exact syspref search
authorMarc Veron <veron@veron.ch>
Sun, 7 Oct 2012 17:54:44 +0000 (19:54 +0200)
committerChris Hall <followingthepath@gmail.com>
Mon, 21 Oct 2013 19:30:03 +0000 (08:30 +1300)
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 <mirko@abunchofthings.net>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Passes koha-qa.pl, works as advertised.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 9bc53a0fccc3b673dca43791ebfcb53fd6e0a9ee)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
(cherry picked from commit a4dbe6821d167908792a7665c492d0e2976aaa0a)
Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
(cherry picked from commit a4dbe6821d167908792a7665c492d0e2976aaa0a)
Signed-off-by: Chris Hall <followingthepath@gmail.com>
(cherry picked from commit 17fefb868bddf997d90799de5f9190f330c20aac)

admin/preferences.pl

index 118fc93..d1ed5e9 100755 (executable)
@@ -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;