Comment Visibility Internal Comments

Jira_Gelan December 20, 2016

I've created a scripted field and create a groovy script (Script Runner). I've got an error on lane 10 (def event = event as IssueEvent). Error: The variable (event) is undeclared.

What schould I do?

 

import com.atlassian.jira.bc.issue.comment.property.CommentPropertyService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.issue.comments.Comment
import groovy.json.JsonSlurper
final SD_PUBLIC_COMMENT = "sd.public.comment"

def event = event as IssueEvent
def user = event.getUser()
def comment = event.getComment()
def commentPropertyService = ComponentAccessor.getComponent(CommentPropertyService)

def isInternal = { Comment c ->
    def commentProperty = commentPropertyService.getProperty(user, c.id, SD_PUBLIC_COMMENT)
        .getEntityProperty().getOrNull()

    if (commentProperty) {
        def props = new JsonSlurper().parseText(commentProperty.getValue())
        (props['internal'] as String).toBoolean()
    }
    else {
        null
    }
}

if (comment) {
    return isInternal(comment)
}
return false

2 answers

0 votes
Thanos Batagiannis _Adaptavist_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
December 20, 2016

Pascal, 

Try something like 

import com.atlassian.jira.bc.issue.comment.property.CommentPropertyService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.comments.Comment
import groovy.json.JsonSlurper

final SD_PUBLIC_COMMENT = "sd.public.comment"

Issue issue = issue

def commentManager = ComponentAccessor.getCommentManager()
def commentPropertyService = ComponentAccessor.getComponent(CommentPropertyService)

def lastComment = commentManager.getLastComment(issue)
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

def isInternal = { Comment comment ->
    def commentProperty = commentPropertyService.getProperty(user, comment.id, SD_PUBLIC_COMMENT).getEntityProperty().getOrNull()
    if (commentProperty) {
        def props = new JsonSlurper().parseText(commentProperty.getValue())
        props['internal']
    }
    else {
        null
    }
}

lastComment ? isInternal(lastComment) : null

PS. This is only for comments in a Service Desk issue. For JIRA issues the visibility of a comment depends on group or role levels. 

regards Thanos

0 votes
Jira_Gelan December 20, 2016

Hi Thanos

I'd like to create a scripted field that used the CommentService and CommentPropertyService to determine whether the most last comment was public or private.

Suggest an answer

Log in or Sign up to answer