3 # Display a list of packages where the name or description matches some string
5 require './software-lib.pl';
8 $in{'search'} || &error($text{'search_esearch'});
9 if (defined(&package_search)) {
10 # Use system-specific search function
11 $n = &package_search($in{'search'});
12 @match = ( 0 .. $n-1 ) if ($n);
15 # Search manually through entire list
16 $n = &list_packages();
18 for($i=0; $i<$n; $i++) {
19 if ($packages{$i,'name'} =~ /\Q$s\E/i ||
20 $packages{$i,'desc'} =~ /\Q$s\E/i) {
25 if (@match == 1 && $in{'goto'}) {
26 $p = $packages{$match[0],'name'};
27 $v = $packages{$match[0],'version'};
28 &redirect("edit_pack.cgi?package=".&urlize($p)."&version=".&urlize($v));
32 &ui_print_header(undef, $text{'search_title'}, "", "search");
35 @match = sort { lc($packages{$a,'name'}) cmp lc($packages{$b,'name'}) }
37 print "<b>",&text('search_match', "<tt>$s</tt>"),"</b><p>\n";
38 print &ui_form_start("delete_packs.cgi", "post");
39 print &ui_hidden("search", $in{'search'});
41 @links = ( &select_all_link("del", 0),
42 &select_invert_link("del", 0) );
43 print &ui_links_row(\@links);
44 print &ui_columns_start([ "",
46 $text{'search_class'},
47 $text{'search_desc'} ], 100, 0, \@tds);
50 local $v = $packages{$i,'shortversion'} ||
51 $packages{$i,'version'};
52 push(@cols, "<a href=\"edit_pack.cgi?search=$s&package=".
53 &urlize($packages{$i,'name'})."&version=".
54 &urlize($packages{$i,'version'})."\">".&html_escape(
55 $packages{$i,'name'}.($v ? " $v" : ""))."</a>");
56 $c = $packages{$i,'class'};
57 push(@cols, $c ? &html_escape($c)
58 : $text{'search_none'});
59 push(@cols, &html_escape($packages{$i,'desc'}));
60 if ($packages{$i,'nouninstall'}) {
61 print &ui_columns_row([ "", @cols ], \@tds);
64 print &ui_checked_columns_row(\@cols, \@tds, "del",
65 $packages{$i,'name'}." ".$packages{$i,'version'});
68 print &ui_columns_end();
69 print &ui_links_row(\@links);
70 print &ui_form_end([ [ undef, $text{'search_delete'} ] ]);
73 print "<b>",&text('search_nomatch', "<tt>$s</tt>"),"</b><p>\n";
76 &ui_print_footer("", $text{'index_return'});