diff options
author | terry%mozilla.org <> | 2000-01-27 06:48:35 +0100 |
---|---|---|
committer | terry%mozilla.org <> | 2000-01-27 06:48:35 +0100 |
commit | c6c81144fc9c5976e3a747a27b469f7d9d991e67 (patch) | |
tree | ec3fcc95eb19bc3da8d5fd0f6f023ef07213d7af | |
parent | afdd0f2f0d165670329b1c63bbad2f5aebcf60cf (diff) | |
download | bugzilla-c6c81144fc9c5976e3a747a27b469f7d9d991e67.tar.gz bugzilla-c6c81144fc9c5976e3a747a27b469f7d9d991e67.tar.xz |
Allow searches for "all keywords" or "no keywords"; fixed some other
bugs around keyword queries.
-rwxr-xr-x | buglist.cgi | 20 | ||||
-rwxr-xr-x | query.cgi | 25 |
2 files changed, 31 insertions, 14 deletions
diff --git a/buglist.cgi b/buglist.cgi index 6427180e9..5cae83b87 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -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}; + my $type = $default{"keywords_type"}; + if ($type eq "or") { # Backward compatability hack. + $type = "anywords"; } - print qq{</SELECT></TD></TR>}; + 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 " |