diff options
author | lpsolit%gmail.com <> | 2008-01-24 04:49:31 +0100 |
---|---|---|
committer | lpsolit%gmail.com <> | 2008-01-24 04:49:31 +0100 |
commit | 92129e7250e8fd9af8330de686ad5f77b6b73932 (patch) | |
tree | a2a3629e4b0e4b7b7a64bb520ada23aed367f12d | |
parent | 4a3e07de812041539bd46df627a90adb96c189db (diff) | |
download | bugzilla-92129e7250e8fd9af8330de686ad5f77b6b73932.tar.gz bugzilla-92129e7250e8fd9af8330de686ad5f77b6b73932.tar.xz |
Bug 391669: Modifying a bug via email_in.pl fails because there are many fields that process_bug.cgi requires but aren't provided to it - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=LpSolit
-rw-r--r-- | email_in.pl | 17 | ||||
-rwxr-xr-x | process_bug.cgi | 6 |
2 files changed, 10 insertions, 13 deletions
diff --git a/email_in.pl b/email_in.pl index 13e81e77e..02d00a3e2 100644 --- a/email_in.pl +++ b/email_in.pl @@ -213,22 +213,17 @@ sub process_bug { ValidateBugID($bug_id); my $bug = new Bugzilla::Bug($bug_id); - if ($fields{'assigned_to'}) { - $fields{'knob'} = 'reassign'; + if ($fields{'bug_status'}) { + $fields{'knob'} = $fields{'bug_status'}; } - if (my $status = $fields{'bug_status'}) { - $fields{'knob'} = 'confirm' if $status =~ /NEW/i; - $fields{'knob'} = 'accept' if $status =~ /ASSIGNED/i; - $fields{'knob'} = 'clearresolution' if $status =~ /REOPENED/i; - $fields{'knob'} = 'verify' if $status =~ /VERIFIED/i; - $fields{'knob'} = 'close' if $status =~ /CLOSED/i; + # If no status is given, then we only want to change the resolution. + elsif ($fields{'resolution'}) { + $fields{'knob'} = 'change_resolution'; + $fields{'resolution_knob_change_resolution'} = $fields{'resolution'}; } if ($fields{'dup_id'}) { $fields{'knob'} = 'duplicate'; } - if ($fields{'resolution'}) { - $fields{'knob'} = 'resolve'; - } # Make sure we don't get prompted if we have to change the default # groups. diff --git a/process_bug.cgi b/process_bug.cgi index 3f2235422..912440ce2 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -488,12 +488,14 @@ if (!$cgi->param('id') && $cgi->param('dup_id')) { foreach my $b (@bug_objects) { if (should_set('knob')) { # First, get the correct resolution <select>, in case there is more - # than one open -> closed transition allowed. + # than one open -> closed transition allowed. Allow to fallback to + # 'resolution' (useful when called from email_in.pl). my $knob = $cgi->param('knob'); my $status = new Bugzilla::Status({name => $knob}); my $resolution; if ($status) { - $resolution = $cgi->param('resolution_knob_' . $status->id); + $resolution = $cgi->param('resolution_knob_' . $status->id) + || $cgi->param('resolution'); } else { $resolution = $cgi->param('resolution_knob_change_resolution'); |