Handle hostnames with upper-case letters
[webmin.git] / software / find.cgi
1 #!/usr/local/bin/perl
2 # Show a form in a popup window for selecting a package from the update system
3
4 $trust_unknown_referers = 1;
5 require './software-lib.pl';
6 &ReadParse();
7
8 &popup_header($text{'find_title'});
9 print <<EOF;
10 <script>
11 function sel(m)
12 {
13 window.opener.ifield.value = m;
14 window.close();
15 return false;
16 }
17 </script>
18 EOF
19
20 # Show form for searching
21 print &ui_form_start("find.cgi");
22 print &ui_submit($text{'find_search'}),"\n";
23 print &ui_textbox("search", $in{'search'}, 20),"\n";
24 print &ui_form_end();
25
26 # Show results, if any
27 $search = $in{'search'};
28 if (defined($search)) {
29         if (!$search) {
30                 # List them all
31                 @avail = &update_system_available();
32                 }
33         elsif (defined(&update_system_search)) {
34                 # Call the search function
35                 @avail = &update_system_search($search);
36                 }
37         else {
38                 # Scan through list manually
39                 @avail = &update_system_available();
40                 @avail = grep { $_->{'name'} =~ /\Q$search\E/i ||
41                                 $_->{'desc'} =~ /\Q$search\E/i } @avail;
42                 }
43         @avail = sort { lc($a->{'name'}) cmp lc($b->{'name'}) } @avail;
44
45         if (@avail) {
46                 foreach $a (@avail) {
47                         $hasdesc++ if ($a->{'desc'});
48                         $hasver++ if ($a->{'version'});
49                         }
50                 print &ui_columns_start(
51                         [ $text{'find_name'},
52                           $hasver ? ($text{'find_version'}) : ( ),
53                           $hasdesc ? ($text{'find_desc'}) : ( ) ], "100%");
54                 foreach $a (@avail) {
55                         $sel = $a->{'select'} || $a->{'name'};
56                         $epoch = $a->{'epoch'} ? "$a->{'epoch'}:" : "";
57                         print &ui_columns_row(
58                                 [ "<a href='' onClick='sel(\"$sel\")'>$a->{'name'}</a>",
59                                   $hasver ? ($epoch.$a->{'version'}) : ( ),
60                                   $hasdesc ? ($a->{'desc'}) : ( ) ]);
61                         }
62                 print &ui_columns_end();
63                 }
64         else {
65                 print "<b>$text{'find_none'}</b><p>\n";
66                 }
67         }
68
69 &popup_footer();
70