Fix allowing modules to be set by callers
authorJamie Cameron <jcameron@webmin.com>
Fri, 12 Jun 2009 23:10:32 +0000 (23:10 +0000)
committerJamie Cameron <jcameron@webmin.com>
Fri, 12 Jun 2009 23:10:32 +0000 (23:10 +0000)
webmin-search-lib.pl
webmin_search.cgi

index 9d1b219..aff55e3 100644 (file)
@@ -34,14 +34,14 @@ my $pn = &get_product_name();
 my @mods;
 if ($onlymods) {
        # Modules specified by caller
-       @mods = @$onlymods;
+       @mods = grep { &foreign_available($_->{'dir'}) } @$onlymods;
        }
 else {
-       # All reasonabel modules
-       @mods = grep { !$_->{'clone'} }
-                 grep { !$_->{'noui'} && !$_->{$pn.'_noui'} }
-                   &get_available_module_infos();
+       # All reasonable modules
+       @mods = &get_available_module_infos();
        }
+@mods = grep { !$_->{'clone'} }
+         grep { !$_->{'noui'} && !$_->{$pn.'_noui'} } @mods;
 @mods = sort { $b->{'longdesc'} cmp $a->{'longdesc'} } @mods;
 foreach my $m (@mods) {
        if ($m->{'desc'} =~ /\Q$re\E/i) {
index 9f01239..456b42e 100644 (file)
@@ -11,8 +11,8 @@ do 'webmin-search-lib.pl';
 
 $prod = &get_product_name();
 $ucprod = ucfirst($prod);
-&ui_print_unbuffered_header(
-       undef, &text('wsearch_title', $ucprod), "", undef, 0, 1);
+&ui_print_unbuffered_header(undef,
+       $in{'title'} || &text('wsearch_title', $ucprod), "", undef, 0, 1);
 
 # Validate search text
 $re = $in{'search'};
@@ -22,10 +22,20 @@ if ($re !~ /\S/) {
 $re =~ s/^\s+//;
 $re =~ s/\s+$//;
 
+# Find modules to search
+$mods = undef;
+if ($in{'mod'}) {
+       $mods = [ ];
+       my %infos = map { $_->{'dir'}, $_ } &get_all_module_infos();
+       foreach my $mn (split(/\0/, $in{'mod'})) {
+               my $minfo = $infos{$mn};
+               push(@$mods, $minfo) if ($minfo);
+               }
+       }
+
 # Do the search
 print &text('wsearch_searching', "<i>".&html_escape($re)."</i>"),"\n";
-@rv = &search_webmin($re, \&print_search_dot,
-                    $in{'mod'} ? [ split(/\0/, $in{'mod'}) ] : undef);
+@rv = &search_webmin($re, \&print_search_dot, $mods);
 print &text('wsearch_found', scalar(@rv)),"<p>\n";
 
 # Show in table