Bugzilla->user->id, $delta_ts);
}
}
+
+ foreach my $comment_id (keys %{$self->{comment_isprivate} || {}}) {
+ $dbh->do("UPDATE longdescs SET isprivate = ? WHERE comment_id = ?",
+ undef, $self->{comment_isprivate}->{$comment_id}, $comment_id);
+ # XXX It'd be nice to track this in the bug activity.
+ }
# Insert the values into the multiselect value tables
my @multi_selects = Bugzilla->get_fields(
sub set_alias { $_[0]->set('alias', $_[1]); }
sub set_cclist_accessible { $_[0]->set('cclist_accessible', $_[1]); }
+sub set_comment_is_private {
+ my ($self, $comment_id, $isprivate) = @_;
+ return unless Bugzilla->user->is_insider;
+ my ($comment) = grep($comment_id eq $_->{id}, @{$self->longdescs});
+ ThrowUserError('comment_invalid_isprivate', { id => $comment_id })
+ if !$comment;
+
+ $isprivate = $isprivate ? 1 : 0;
+ if ($isprivate != $comment->{isprivate}) {
+ $self->{comment_isprivate} ||= {};
+ $self->{comment_isprivate}->{$comment_id} = $isprivate;
+ }
+}
sub set_component {
my ($self, $name) = @_;
my $old_comp = $self->component_obj;
$bug->set_reporter_accessible($cgi->param('reporter_accessible'))
if $bug->check_can_change_field('reporter_accessible', 0, 1);
}
-}
-
-if ( defined $cgi->param('id') &&
- (Bugzilla->params->{"insidergroup"}
- && Bugzilla->user->in_group(Bugzilla->params->{"insidergroup"})) )
-{
-
- my $sth = $dbh->prepare('UPDATE longdescs SET isprivate = ?
- WHERE bug_id = ? AND bug_when = ?');
-
- foreach my $field ($cgi->param()) {
- if ($field =~ /when-([0-9]+)/) {
- my $sequence = $1;
- my $private = $cgi->param("isprivate-$sequence") ? 1 : 0 ;
- if ($private != $cgi->param("oisprivate-$sequence")) {
- my $field_data = $cgi->param("$field");
- # Make sure a valid date is given.
- $field_data = format_time($field_data, '%Y-%m-%d %T');
- $sth->execute($private, $cgi->param('id'), $field_data);
- }
- }
-
+
+ # You can only mark/unmark comments as private on single bugs. If
+ # you're not in the insider group, this code won't do anything.
+ foreach my $field (grep(/^defined_isprivate/, $cgi->param())) {
+ $field =~ /(\d+)$/;
+ my $comment_id = $1;
+ $bug->set_comment_is_private($comment_id,
+ $cgi->param("isprivate_$comment_id"));
}
}
[% IF mode == "edit" && isinsider %]
<i>
- <input type="hidden" name="oisprivate-[% count %]"
- value="[% comment.isprivate %]">
- <input type="hidden" name="when-[% count %]" value="[% comment.time %]">
- <input type="checkbox" name="isprivate-[% count %]" value="1"
+ <input type="hidden" value="1"
+ name="defined_isprivate_[% comment.id %]">
+ <input type="checkbox"
+ name="isprivate_[% comment.id %]" value="1"
+ id="isprivate_[% comment.id %]"
onClick="updateCommentPrivacy(this, [% count %])"
- id="isprivate-[% count %]"
[% " checked=\"checked\"" IF comment.isprivate %]>
- <label for="isprivate-[% count %]">Private</label>
+ <label for="isprivate_[% comment.id %]">Private</label>
</i>
[% END %]
[% IF user.in_group(Param('timetrackinggroup')) &&
],
'bug/comments.html.tmpl' => [
- 'comment.isprivate',
- 'comment.time',
+ 'comment.id',
'bug.bug_id',
],
[% title = "Chart Too Large" %]
Sorry, but 2000 x 2000 is the maximum size for a chart.
+ [% ELSIF error == "comment_invalid_isprivate" %]
+ You tried to modify the privacy of comment id [% id FILTER html %],
+ but that is not a valid comment on this [% terms.bug %].
+
[% ELSIF error == "comment_required" %]
[% title = "Comment Required" %]
You have to specify a <b>comment</b>