]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 365300: [mod_perl] Editing a saved search does not re-populate the search page...
authorlpsolit%gmail.com <>
Sat, 30 Dec 2006 04:55:08 +0000 (04:55 +0000)
committerlpsolit%gmail.com <>
Sat, 30 Dec 2006 04:55:08 +0000 (04:55 +0000)
query.cgi
template/en/default/search/knob.html.tmpl

index cc2e0490363d6524822921058e4ec41789c09a98..656fb1f657c11e7bcf4b1116ad9f809e619478b0 100755 (executable)
--- 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") {
index 407683747415479a2653bc6c8c9fb93894349167..58c83fdef3c7ee71e1a0700c197423c7015b9cba 100644 (file)
   <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>