Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Celebration

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,459,871
Community Members
 
Community Events
176
Community Groups

Display only selective from dropdown

I have a case where I need to make couple of field values from the drop down visible to  only 1 group and these should be hidden for other groups.

The first group can view all values but 2 should not be visible to rest of them

 

Please suggest 

 

 

2 answers

1 accepted

0 votes
Answer accepted
Leo Community Leader Sep 12, 2019

Hi @Arun,

 

You can achieve this through ScripRunner Behavior plugin, and below code will help you on the same

import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.component.ComponentAccessor

//Get Relevant field and options manager
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def groupManager = ComponentAccessor.getGroupManager()

//Get select list field and it's options
def selectList = getFieldByName("Field Nmae") //Field name which you want to restrict values
def customField = customFieldManager.getCustomFieldObject(selectList.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
String groupName = "YourGroup" //place the group here to validate

if (groupManager.getUsersInGroup(groupName).contains(user)) {
def optionsMap = options.findAll {
it.value in ["Value 1", "Value 2", "Value 3"] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}
else{
def optionsMap = options.findAll {
it.value in ["Value 1"] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}

 

BR,

Leo

Please see below and correct me

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script69.groovy: 21: unexpected token: Review @ line 21, column 53.
, Iteration Test, State Code Review, UA
^

1 error

 

My inputs:

import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.component.ComponentAccessor

//Get Relevant field and options manager
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
def groupManager = ComponentAccessor.getGroupManager()

//Get select list field and it's options
def selectList = getFieldByName(Phase) //Field name which you want to restrict values
def customField = customFieldManager.getCustomFieldObject(selectList.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
String groupName = VRIN //place the group here to validate

if (groupManager.getUsersInGroup(groupName).contains(user)) {
def optionsMap = options.findAll {
it.value in [ Unit Test , Iteration Test, State Code Review, UAT ] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}
else{
def optionsMap = options.findAll {
it.value in [Unit Test, Iteration Test] // list of options you want to show
}.collectEntries {
[
(it.optionId.toString()): it.value
]
}
selectList.setFieldOptions(optionsMap)
}

Leo Community Leader Sep 12, 2019

Hey @Arun,

If this is your exact code, then you should try with "" in below places

1. def selectList = getFieldByName(Phase)

  >>def selectList = getFieldByName("Phase")

2. String groupName = VRIN

  >> String groupName = "VRIN"

it.value in [ Unit Test , Iteration Test, State Code Review, UAT ]

  >>it.value in [ "Unit Test" , "Iteration Test", "State Code Review", "UAT" ]

4. it.value in [Unit Test, Iteration Test]

  >> it.value in ["Unit Test", "Iteration Test"]

 

BR,

Leo

Thanks Leo, I tired the quotes and got this below

No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getFieldByName() is applicable for argument types: (java.lang.String) values: [Phase]

Please advise.

Arun

Leo Community Leader Sep 13, 2019 • edited

Hey Arun, Can you share me the screen shot of full script with error you are getting. attached my script with console

behavior-selectlist.png

Leo Community Leader Sep 13, 2019

humm, it's weird. Are you trying this code in Behavior plugin? 

I do not have Behavior plugin, ran it in Script console and also in Script Fragments where I was able to see the issue. Please advise.

Adaptavist ScriptRunner for JIRA - Installed version: 5.5.7.1-jira8 

Leo Community Leader Sep 13, 2019

This explains the issue, the given code is written with behaviours module

And if I'm not wrong, Behaviours is one of the extensions of ScriptRunner, you'll find it under manage apps, attaching screenshot of the behaviour location

 

Create new Behaviour --> Add your Field --> Add given script in server side script(you'll find this option once you added field) --> Add mapping(map your project and issue types/ leave with all issue types if it's not for particular issue types)

 

behaviours-jira.png

Great, this worked. Thank you Kindly!

Leo Community Leader Sep 13, 2019

Glad you achieved it :) 

Like Srikanth Ganipisetty likes this

Hi Leo,

 

On JIRA cloud we do not have behaviours available, any idea you can give on how the same thing can be achieved in JIRA cloud.

can we have something similar based on Project role instead of Group member

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events