summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xquery.cgi39
-rw-r--r--template/en/default/search/knob.html.tmpl7
2 files changed, 16 insertions, 30 deletions
diff --git a/query.cgi b/query.cgi
index cc2e04903..656fb1f65 100755
--- a/query.cgi
+++ b/query.cgi
@@ -111,6 +111,7 @@ local our %default;
# and ignore any multiple values.
sub PrefillForm {
my ($buf) = (@_);
+ $buf = new Bugzilla::CGI($buf);
my $foundone = 0;
# Nothing must be undef, otherwise the template complains.
@@ -132,26 +133,14 @@ sub PrefillForm {
"category", "subcategory", "name", "newcategory",
"newsubcategory", "public", "frequency")
{
- # This is a bit of a hack. The default, empty list has
- # three entries to accommodate the needs of the email fields -
- # we use each position to denote the relevant field. Array
- # position 0 is unused for email fields because the form
- # parameters historically started at 1.
- $default{$name} = ["", "", ""];
+ $default{$name} = [];
}
# Iterate over the URL parameters
- foreach my $item (split(/\&/, $buf)) {
- my @el = split(/=/, $item);
- my $name = $el[0];
- my $value;
- if ($#el > 0) {
- $value = Bugzilla::Util::url_decode($el[1]);
- } else {
- $value = "";
- }
-
+ foreach my $name ($buf->param()) {
+ my @values = $buf->param($name);
+
# If the name begins with field, type, or value, then it is part of
# the boolean charts. Because these are built different than the rest
# of the form, we don't need to save a default value. We do, however,
@@ -165,22 +154,16 @@ sub PrefillForm {
# positions to show the defaults for that number field.
elsif ($name =~ m/^(.+)(\d)$/ && defined($default{$1})) {
$foundone = 1;
- $default{$1}->[$2] = $value;
+ $default{$1}->[$2] = $values[0];
}
- # If there's no default yet, we replace the blank string.
- elsif (defined($default{$name}) && $default{$name}->[0] eq "") {
+ elsif (exists $default{$name}) {
$foundone = 1;
- $default{$name} = [$value];
- }
- # If there's already a default, we push on the new value.
- elsif (defined($default{$name})) {
- push (@{$default{$name}}, $value);
- }
- }
+ push (@{$default{$name}}, @values);
+ }
+ }
return $foundone;
}
-
if (!PrefillForm($buffer)) {
# Ah-hah, there was no form stuff specified. Do it again with the
# default query.
@@ -335,7 +318,7 @@ if ($cgi->param('order')) { $deforder = $cgi->param('order') }
$vars->{'userdefaultquery'} = $userdefaultquery;
$vars->{'orders'} = \@orders;
-$default{'querytype'} = $deforder || 'Importance';
+$default{'order'} = [$deforder || 'Importance'];
if (($cgi->param('query_format') || $cgi->param('format') || "")
eq "create-series") {
diff --git a/template/en/default/search/knob.html.tmpl b/template/en/default/search/knob.html.tmpl
index 407683747..58c83fdef 100644
--- a/template/en/default/search/knob.html.tmpl
+++ b/template/en/default/search/knob.html.tmpl
@@ -57,8 +57,11 @@
<input type="submit" id="[% button_name FILTER html %]"
value="[% button_name FILTER html %]">
[% IF known_name %]
- <input type="hidden" name="query_based_on"
- value="[% known_name FILTER html %]">
+ [%# We store known_name in case the user add a boolean chart. %]
+ <input type="hidden" name="known_name" value="[% known_name FILTER html %]">
+
+ [%# The name of the existing query will be passed to buglist.cgi. %]
+ <input type="hidden" name="query_based_on" value="[% known_name FILTER html %]">
[% END %]
</p>