From 840eaae09a5f1118e290db7c6a38441eabb953dc Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Sat, 30 Dec 2006 04:55:08 +0000 Subject: Bug 365300: [mod_perl] Editing a saved search does not re-populate the search page - Patch by Frédéric Buclin r/a=justdave MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- query.cgi | 39 +++++++++++---------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) (limited to 'query.cgi') 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") { -- cgit v1.2.3-24-g4f1b