Commit c6c81144 authored by terry%mozilla.org's avatar terry%mozilla.org

Allow searches for "all keywords" or "no keywords"; fixed some other

bugs around keyword queries.
parent afdd0f2f
......@@ -395,8 +395,24 @@ if ($::FORM{'keywords'}) {
}
if (@list) {
$query =~ s/where/, keywords where/;
$query .= "and keywords.bug_id = bugs.bug_id and (" .
join(" $::FORM{'keywords_type'} ", @list) . ")\n";
my $type = $::FORM{'keywords_type'};
my $notopt = "";
if ($type eq "nowords") {
# Ought to take advantage of keyword table somehow! ###
my $extra = GetByWordList("bugs.keywords", $::FORM{'keywords'},
"or");
$extra =~ s/AND/AND NOT/i;
$query .= $extra;
} else {
$query .= "and keywords.bug_id = bugs.bug_id and $notopt (" .
join(" or ", @list) . ")\n";
if ($type eq "allwords") {
# This needs to be tuned to take better advantage of the
# keyword table!
$query .= GetByWordList("bugs.keywords", $::FORM{'keywords'},
"and");
}
}
}
}
......
......@@ -136,8 +136,8 @@ sub ProcessFormStuff {
"changedin", "votes", "short_desc", "short_desc_type",
"long_desc", "long_desc_type", "bug_file_loc",
"bug_file_loc_type", "status_whiteboard",
"status_whiteboard_type", "keywords", "bug_id",
"bugidtype") {
"status_whiteboard_type", "bug_id",
"bugidtype", "keywords", "keywords_type") {
$default{$name} = "";
$type{$name} = 0;
}
......@@ -643,18 +643,19 @@ if (@::legal_keywords) {
print qq{
<TR>
<TD ALIGN="right"><A HREF="describekeywords.cgi">Keywords</A>:</TD>
<TD><INPUT NAME="keywords" SIZE=30 VALUE=$def></TD>
<TD><SELECT NAME=keywords_type>
<TD><INPUT NAME="keywords" SIZE=30 VALUE="$def"></TD>
<TD>
};
foreach my $i (["or", "Any of the listed keywords set"]) {
my ($n, $d) = (@$i);
my $sel = "";
if ($default{"keywords"} eq $n) {
$sel = " SELECTED";
}
print qq{<OPTION VALUE="$n"$sel>$d\n};
}
print qq{</SELECT></TD></TR>};
my $type = $default{"keywords_type"};
if ($type eq "or") { # Backward compatability hack.
$type = "anywords";
}
print BuildPulldown("keywords_type",
[["anywords", "Any of the listed keywords set"],
["allwords", "All of the listed keywords set"],
["nowords", "None of the listed keywords set"]],
$type);
print qq{</TD></TR>};
}
print "
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment