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.
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');