diff options
author | David Lawrence <dkl@mozilla.com> | 2015-05-11 16:36:15 +0200 |
---|---|---|
committer | David Lawrence <dkl@mozilla.com> | 2015-05-11 16:36:15 +0200 |
commit | f805627ee9fcffba9f5a509bba652bfd663c6ae7 (patch) | |
tree | 9d2b335d577c461fd815b6bf90c035b17a4df3aa | |
parent | e4362dad68b2b9180de14d7683d7645e17206f53 (diff) | |
download | bugzilla-f805627ee9fcffba9f5a509bba652bfd663c6ae7.tar.gz bugzilla-f805627ee9fcffba9f5a509bba652bfd663c6ae7.tar.xz |
Bug 1140575: Comment-creation WebService API should allow tags to be specified
r=glob,a=glob
-rw-r--r-- | Bugzilla/API/1_0/Resource/Bug.pm | 5 | ||||
-rw-r--r-- | Bugzilla/Bug.pm | 24 | ||||
-rw-r--r-- | docs/en/rst/api/core/v1/bug.rst | 4 | ||||
-rw-r--r-- | docs/en/rst/api/core/v1/comment.rst | 35 |
4 files changed, 50 insertions, 18 deletions
diff --git a/Bugzilla/API/1_0/Resource/Bug.pm b/Bugzilla/API/1_0/Resource/Bug.pm index c0be3c730..6a32a687f 100644 --- a/Bugzilla/API/1_0/Resource/Bug.pm +++ b/Bugzilla/API/1_0/Resource/Bug.pm @@ -1154,6 +1154,11 @@ sub add_comment { $bug->add_comment($comment, { isprivate => $params->{is_private}, is_markdown => $params->{is_markdown}, work_time => $params->{work_time} }); + + # Add comment tags + $bug->set_all({ comment_tags => $params->{comment_tags} }) + if defined $params->{comment_tags}; + $bug->update(); my $new_comment_id = $bug->{added_comments}[0]->id; diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 6fcf14c5a..f24f7a4d2 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -720,6 +720,7 @@ sub create { my $creation_comment = delete $params->{comment}; my $is_markdown = delete $params->{is_markdown}; my $see_also = delete $params->{see_also}; + my $comment_tags = delete $params->{comment_tags}; # We don't want the bug to appear in the system until it's correctly # protected by groups. @@ -810,7 +811,16 @@ sub create { # Insert the comment. We always insert a comment on bug creation, # but sometimes it's blank. - Bugzilla::Comment->insert_create_data($creation_comment); + my $comment = Bugzilla::Comment->insert_create_data($creation_comment); + + # Add comment tags + if (defined $comment_tags && Bugzilla->user->can_tag_comments) { + $comment_tags = ref $comment_tags ? $comment_tags : [ $comment_tags ]; + foreach my $tag (@{$comment_tags}) { + $comment->add_tag($tag) if defined $tag; + } + $comment->update(); + } # Set up aliases my $sth_aliases = $dbh->prepare('INSERT INTO bugs_aliases (alias, bug_id) VALUES (?, ?)'); @@ -1039,7 +1049,7 @@ sub update { join(', ', @added_names)]; } - # Comments + # Comments and comment tags foreach my $comment (@{$self->{added_comments} || []}) { # Override the Comment's timestamp to be identical to the update # timestamp. @@ -1049,6 +1059,10 @@ sub update { LogActivityEntry($self->id, "work_time", "", $comment->work_time, $user->id, $delta_ts); } + foreach my $tag (@{$self->{added_comment_tags} || []}) { + $comment->add_tag($tag) if defined $tag; + } + $comment->update() if @{$self->{added_comment_tags} || []}; } # Comment Privacy @@ -2459,6 +2473,12 @@ sub set_all { is_markdown => $params->{'comment'}->{'is_markdown'} }); } + if (defined $params->{comment_tags} && Bugzilla->user->can_tag_comments()) { + $self->{added_comment_tags} = ref $params->{comment_tags} + ? $params->{comment_tags} + : [ $params->{comment_tags} ]; + } + if (exists $params->{alias} && $params->{alias}{set}) { $params->{alias} = { add => $params->{alias}{set}, diff --git a/docs/en/rst/api/core/v1/bug.rst b/docs/en/rst/api/core/v1/bug.rst index 6b9be97cb..cdf6a80ac 100644 --- a/docs/en/rst/api/core/v1/bug.rst +++ b/docs/en/rst/api/core/v1/bug.rst @@ -593,6 +593,8 @@ assigned_to string A user to assign this bug to, if you don't want it cc array An array of usernames to CC on this bug. comment_is_private boolean If set to ``true``, the description is private, otherwise it is assumed to be public. +comment_tags array An array of strings to add as comment tags for the + description. is_markdown boolean If set to ``true``, the description has Markdown structures; otherwise it is normal text. groups array An array of group names to put this bug into. You @@ -780,6 +782,8 @@ comment_is_private object This is how you update the privacy of comments updated. Thus, it is not practical to use this while updating multiple bugs at once, as a single comment ID will never be valid on multiple bugs. +comment_tags array An array of strings to add as comment tags for + the new comment. component string The Component the bug is in. deadline date The Deadline field is a date specifying when the bug must be completed by, in the format diff --git a/docs/en/rst/api/core/v1/comment.rst b/docs/en/rst/api/core/v1/comment.rst index 54048122a..45c6fef25 100644 --- a/docs/en/rst/api/core/v1/comment.rst +++ b/docs/en/rst/api/core/v1/comment.rst @@ -105,6 +105,7 @@ is_private boolean ``true`` if this comment is private (only visible to a otherwise. is_markdown boolean ``true`` if this comment needs Markdown processing; ``false`` otherwise. +tags array An array of comment tags currently set for the comment. ============= ======== ======================================================== .. _rest_add_comment: @@ -134,22 +135,24 @@ To create a comment on a current bug. ``ids`` is optional in the data example above and can be used to specify adding a comment to more than one bug at the same time. -=========== ======= =========================================================== -name type description -=========== ======= =========================================================== -**id** int The ID or alias of the bug to append a comment to. -ids array List of integer bug IDs to add the comment to. -**comment** string The comment to append to the bug. If this is empty - or all whitespace, an error will be thrown saying that you - did not set the ``comment`` parameter. -is_private boolean If set to ``true``, the comment is private, otherwise it is - assumed to be public. -is_markdown boolean If set to ``true``, the comment has Markdown structures; - otherwise it is normal text. -work_time double Adds this many hours to the "Hours Worked" on the bug. - If you are not in the time tracking group, this value will - be ignored. -=========== ======= =========================================================== +============ ======= =========================================================== +name type description +============ ======= =========================================================== +**id** int The ID or alias of the bug to append a comment to. +ids array List of integer bug IDs to add the comment to. +**comment** string The comment to append to the bug. If this is empty + or all whitespace, an error will be thrown saying that you + did not set the ``comment`` parameter. +comment_tags array An array of strings to add as comment tags for the new + comment. +is_private boolean If set to ``true``, the comment is private, otherwise it is + assumed to be public. +is_markdown boolean If set to ``true``, the comment has Markdown structures; + otherwise it is normal text. +work_time double Adds this many hours to the "Hours Worked" on the bug. + If you are not in the time tracking group, this value will + be ignored. +============ ======= =========================================================== **Response** |