diff options
author | lpsolit%gmail.com <> | 2006-12-30 05:55:08 +0100 |
---|---|---|
committer | lpsolit%gmail.com <> | 2006-12-30 05:55:08 +0100 |
commit | 840eaae09a5f1118e290db7c6a38441eabb953dc (patch) | |
tree | cb3dc01906fae874a27baee6dc0d4877a9c68b4d | |
parent | 43b17e5fc7f29f6d4f952ba6fc83902a497a6fc8 (diff) | |
download | bugzilla-840eaae09a5f1118e290db7c6a38441eabb953dc.tar.gz bugzilla-840eaae09a5f1118e290db7c6a38441eabb953dc.tar.xz |
Bug 365300: [mod_perl] Editing a saved search does not re-populate the search page - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
-rwxr-xr-x | query.cgi | 39 | ||||
-rw-r--r-- | template/en/default/search/knob.html.tmpl | 7 |
2 files changed, 16 insertions, 30 deletions
@@ -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> |