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
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)
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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"
3 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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hey Arun, Can you share me the screen shot of full script with error you are getting. attached my script with console
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
humm, it's weird. Are you trying this code in Behavior plugin?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Glad you achieved it :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
can we have something similar based on Project role instead of Group member
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.