summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lawrence <dkl@mozilla.com>2015-05-11 16:36:15 +0200
committerDavid Lawrence <dkl@mozilla.com>2015-05-11 16:36:15 +0200
commitf805627ee9fcffba9f5a509bba652bfd663c6ae7 (patch)
tree9d2b335d577c461fd815b6bf90c035b17a4df3aa
parente4362dad68b2b9180de14d7683d7645e17206f53 (diff)
downloadbugzilla-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.pm5
-rw-r--r--Bugzilla/Bug.pm24
-rw-r--r--docs/en/rst/api/core/v1/bug.rst4
-rw-r--r--docs/en/rst/api/core/v1/comment.rst35
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**