aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Bug.pm21
-rwxr-xr-xprocess_bug.cgi17
2 files changed, 30 insertions, 8 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index c0c2d97ff..b9c64da7f 100644
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -1848,6 +1848,27 @@ sub _set_global_validator {
# "Set" Methods #
#################
+sub set_all {
+ my $self = shift;
+ my ($params) = @_;
+
+ if (exists $params->{'comment'} or exists $params->{'work_time'}) {
+ # Add a comment as needed to each bug. This is done early because
+ # there are lots of things that want to check if we added a comment.
+ $self->add_comment($params->{'comment'}->{'body'},
+ { isprivate => $params->{'comment'}->{'is_private'},
+ work_time => $params->{'work_time'} });
+ }
+
+ my %normal_set_all;
+ foreach my $name (keys %$params) {
+ if ($self->can("set_$name")) {
+ $normal_set_all{$name} = $params->{$name};
+ }
+ }
+ $self->SUPER::set_all(\%normal_set_all);
+}
+
sub set_alias { $_[0]->set('alias', $_[1]); }
sub set_assigned_to {
my ($self, $value) = @_;
diff --git a/process_bug.cgi b/process_bug.cgi
index f41dc761d..956068370 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -322,7 +322,8 @@ if (defined $cgi->param('keywords')) {
my @set_fields = qw(op_sys rep_platform priority bug_severity
component target_milestone version
bug_file_loc status_whiteboard short_desc
- deadline remaining_time estimated_time);
+ deadline remaining_time estimated_time
+ work_time);
push(@set_fields, 'assigned_to') if !$cgi->param('set_default_assignee');
push(@set_fields, 'qa_contact') if !$cgi->param('set_default_qa_contact');
my %field_translation = (
@@ -340,16 +341,16 @@ foreach my $field_name (@set_fields) {
}
}
+if (should_set('comment')) {
+ $set_all_fields{comment} = {
+ body => scalar $cgi->param('comment'),
+ is_private => scalar $cgi->param('commentprivacy'),
+ };
+}
+
my @custom_fields = Bugzilla->active_custom_fields;
foreach my $b (@bug_objects) {
- if (should_set('comment') || $cgi->param('work_time')) {
- # Add a comment as needed to each bug. This is done early because
- # there are lots of things that want to check if we added a comment.
- $b->add_comment(scalar($cgi->param('comment')),
- { isprivate => scalar $cgi->param('commentprivacy'),
- work_time => scalar $cgi->param('work_time') });
- }
$b->set_all(\%set_all_fields);
$b->reset_assigned_to if $cgi->param('set_default_assignee');
$b->reset_qa_contact if $cgi->param('set_default_qa_contact');