Hi,
I am attempting to use a Scripted Field to list all of the Attachments from all Linked issues.
I'm not sure how to get the information from the Linked Issues.
Here is the Code:
import com.atlassian.jira.issue.attachment.Attachment;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.bc.project.ProjectService;
def commentManager = ComponentAccessor.commentManager
def projectService = ComponentAccessor.getComponent(ProjectService)
def attachmentManager = ComponentAccessor.getAttachmentManager()
def numberAttachments = attachmentManager.getAttachments(issue).size()
String s = "";
if(null != attachmentManager.getAttachments(issue))
{
for(Attachment att : issue.attachments)
{
s = s +"<a href=\"" + "/secure/attachment/"+att.id+"/"+att.filename+"\">"+att.filename+"</a>" + "<br>";
}
}
return s;Here is a Mock up Of what I would like to show in the Main Ticket. The field will show Clickable URL links to all attachments from the linked issues
Scripted Fields Attachments on Linked Issues.png
Thanks!
Something like this:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def issues = [issue] as List<Issue>
issues.addAll(issueLinkManager.getOutwardLinks(issue.id).collect {it.destinationObject})
issues.addAll(issueLinkManager.getInwardLinks(issue.id).collect {it.sourceObject})
issues.collect { issue ->
issue.getAttachments().collect { att ->
"<a href=\"" + "/secure/attachment/" + att.id + "/" + att.filename + "\">" + att.filename + "</a>" + "<br>"
}
}.flatten().join("")
I think there is a bit more to do though... permissions checking, also attachments can have chars in their filename that are not valid in URLs, etc.
Thank you,
Is there a way to restrict the Link Display Name? We have created a custom link name SD-Blocking-Link for both ways Outward and InWard.
It will only show links with the custom name SD-Blocking-Link
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I changed the script to the following -
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueFieldConstants
import com.atlassian.jira.issue.fields.IssueLinksSystemField
import com.opensymphony.workflow.InvalidInputException
import webwork.action.ActionContext
def request = ActionContext.getRequest()
def params = request.getParameterMap()
def fieldManager = ComponentAccessor.getFieldManager()
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def linksSystemField = fieldManager.getField("issuelinks") as IssueLinksSystemField
def issueLinkingValue = linksSystemField.getRelevantParams(params) as IssueLinksSystemField.IssueLinkingValue
def issues = [issue] as List<Issue>
issues.addAll(issueLinkManager.getOutwardLinks(issue.id).collect {it.destinationObject})
issues.addAll(issueLinkManager.getInwardLinks(issue.id).collect {it.sourceObject})
if (! (issueLinkingValue.linkDescription == "SD-Blocking-Link" && issueLinkingValue.linkedIssues.size() > 0))
{issues.collect { issue ->
issue.getAttachments().collect { att ->
"<a href=\"" + "/secure/attachment/" + att.id + "/" + att.filename + "\">" + att.filename + "</a>" + "<br>"
}
}.flatten().join("")}
The issue is, when it runs I am getting the following error:
java.lang.NullPointerException: Cannot invoke method getParameterMap() on null object
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def issues = [issue] as List<Issue>
issues.addAll(issueLinkManager.getOutwardLinks(issue.id).findResults {
if (it.issueLinkType.name == "SD-Blocking-Link") {
return it.destinationObject
}
null
})
issues.addAll(issueLinkManager.getInwardLinks(issue.id).findResults {
if (it.issueLinkType.name == "SD-Blocking-Link") {
return it.sourceObject
}
null
})
issues.collect { issue ->
issue.getAttachments().collect { att ->
"<a href=\"" + "/secure/attachment/" + att.id + "/" + att.filename + "\">" + att.filename + "</a>" + "<br>"
}
}.flatten().join("")
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
When I try using the above code to test something out I get an error shown on the issues.collect line which says:
expecting '>', found '-' @line 17, column 24.
Any ideas why?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @JamieA
The last script you posted here also looks at the attachments of the current issue and displays them. Is it possible to show just the attachments of the linked issues?
Thank you!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.