]> git.donarmstrong.com Git - debbugs.git/blobdiff - cgi/search.cgi
Package member key is the fully-qualified name; fix error in get
[debbugs.git] / cgi / search.cgi
index cf89c5b5e891124b62a258ebd55a6bb646585caa..be152cb274bb2ae605ab45e013f8ffe1b263d151 100755 (executable)
@@ -11,27 +11,55 @@ BEGIN{
      }
 }
 
+# if we're running out of git, we want to use the git base directory as the
+# first INC directory. If you're not running out of git, don't do that.
+use File::Basename qw(dirname);
+use Cwd qw(abs_path);
+our $debbugs_dir;
+BEGIN {
+    $debbugs_dir =
+       abs_path(dirname(abs_path(__FILE__)) . '/../');
+    # clear the taint; we'll assume that the absolute path to __FILE__ is the
+    # right path if there's a .git directory there
+    ($debbugs_dir) = $debbugs_dir =~ /([[:print:]]+)/;
+    if (defined $debbugs_dir and
+       -d $debbugs_dir . '/.git/') {
+    } else {
+       undef $debbugs_dir;
+    }
+    # if the first directory in @INC is not an absolute directory, assume that
+    # someone has overridden us via -I.
+    if ($INC[0] !~ /^\//) {
+    }
+}
+use if defined $debbugs_dir, lib => $debbugs_dir;
+
 
 use CGI::Simple;
 
-use CGI::Alert 'don@donarmstrong.com';
+# use CGI::Alert 'nobody@example.com';
 
 use Search::Estraier;
 use Debbugs::Config qw(:config);
 use Debbugs::Estraier;
-use Debbugs::CGI qw(htmlize_packagelinks html_escape);
+use Debbugs::CGI qw(htmlize_packagelinks html_escape cgi_parameters);
 use HTML::Entities qw(encode_entities);
 
 my $q = new CGI::Simple;
 
 #my %var_defaults = (attr => 1,);
 
-my %cgi_var = cgi_parameters($q);
+my %cgi_var = cgi_parameters(query => $q,
+                            single => [qw(phrase max_results order_field order_operator),
+                                       qw(skip prev next),
+                                      ],
+                            default => {phrase      => '',
+                                        max_results => 10,
+                                        skip        => 0,
+                                       },
+                           );
 
-$cgi_var{phrase} = '' if not defined $cgi_var{phrase};
-$cgi_var{max_results} = 10 if not defined $cgi_var{max_results};
 $cgi_var{attribute} = parse_attribute(\%cgi_var) || [];
-$cgi_var{skip} = 0 if not defined $cgi_var{skip};
 
 my @results;
 
@@ -88,6 +116,7 @@ print <<END;
 Content-Type: text/html
 
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <HTML><HEAD><TITLE>BTS Search</TITLE>
 <link rel="stylesheet" href="http://bugs.debian.org/css/bugs.css" type="text/css">
 </HEAD>
@@ -154,7 +183,7 @@ my %attributes = ('@cdate'  => {name => 'Date',
                                type      => 'str',
                               },
                  subject   => {name => 'Bug Title',
-                               type      => 'num',
+                               type      => 'str',
                               },
                  date      => {name => 'Submission date',
                                type      => 'num',
@@ -192,11 +221,11 @@ for my $attribute (@{$cgi_var{attribute}}) {
      }
      print qq(</select>\n);
      $$attribute{value}='' if not defined $$attribute{value};
-     print qq(<input type="text" name="attribute_value" value="$$attribute{value}"><input type="submit" name="delete_attribute_$attr_num" value="Delete"><br/>\n);
+     print qq(<input type="text" name="attribute_value" value="$$attribute{value}"><input type="submit" name="delete_attribute_$attr_num" value="Delete"><br>\n);
      $attr_num++;
 
 }
-print qq(<input type="submit" name="add_attribute" value="Add Attribute"><br/>);
+print qq(<input type="submit" name="add_attribute" value="Add Attribute"><br>);
 
 # order
 
@@ -233,11 +262,11 @@ print qq(</select></p>\n);
 print qq(<p>Max results: <select name="max_results">\n);
 for my $max_results (qw(10 25 50 100 150 200)) {
      my $selected = (defined $cgi_var{max_results} and $cgi_var{max_results} eq $max_results) ? ' selected' : '';
-     print qq(<option value="$max_results"$selected>$max_results</optiion>\n);
+     print qq(<option value="$max_results"$selected>$max_results</option>\n);
 }
 print qq(</select></p>\n);
 
-print qq(</tr></td></table>\n);
+print qq(</tr></table>\n);
 
 
 
@@ -263,9 +292,9 @@ if (defined $nres) {
          my $showseverity;
          $showseverity = "Severity: <em>$attr{severity}</em>;\n";
          print <<END;
-<li><a href="$url${bugnum}#${msgnum}">#${bugnum}: $attr{'@title'}</a> @{[htmlize_packagelinks($attr{package})]}<br/>
-$showseverity<br/>
-Sent by: @{[encode_entities($attr{'@author'})]} at $attr{'@cdate'}<br/>
+<li><a href="$url${bugnum}#${msgnum}">#${bugnum}: $attr{'@title'}</a> @{[htmlize_packagelinks($attr{package})]}<br>
+$showseverity<br>
+Sent by: @{[encode_entities($attr{'@author'})]} at $attr{'@cdate'}<br>
 END
          # Deal with the snippet
          # make the things that match bits of the phrase bold, the rest normal.
@@ -314,15 +343,3 @@ sub parse_attribute {
      }
      return \@attributes;
 }
-
-
-sub cgi_parameters {
-     my ($q) = @_;
-
-     my %param;
-     foreach my $paramname ($q->param) {
-         my @value = $q->param($paramname);
-         $param{$paramname} = @value > 1 ? [@value] : $value[0];
-     }
-     return %param;
-}