]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1140575: Comment-creation WebService API should allow tags to be specified
authorDavid Lawrence <dkl@mozilla.com>
Mon, 11 May 2015 14:36:15 +0000 (15:36 +0100)
committerDavid Lawrence <dkl@mozilla.com>
Mon, 11 May 2015 14:36:15 +0000 (15:36 +0100)
r=glob,a=glob

Bugzilla/API/1_0/Resource/Bug.pm
Bugzilla/Bug.pm
docs/en/rst/api/core/v1/bug.rst
docs/en/rst/api/core/v1/comment.rst

index c0be3c730ba221e3ddcfe866feeed0d8bd24e23a..6a32a687fb5bb2395da04713e62661b586a2fc9f 100644 (file)
@@ -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;
index 6fcf14c5a15fb337b124c3546c4c1b542e585008..f24f7a4d2a272791f8a33c833a2f4ef125a8f8be 100644 (file)
@@ -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},
index 6b9be97cb101937d7f442f6e0cb59cc4a9a5bc91..cdf6a80acdf8639e703a9643d449957640962be2 100644 (file)
@@ -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
index 54048122af5cbda2f31633f41e3d0dec4d252d09..45c6fef25c9522594480d3dc94356e35103d8a2d 100644 (file)
@@ -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**