Use case: The customer wants a number of fields set to read-only when issues have certain statuses.
My solution: I have created a Scriptrunner Behaviour with an Initialiser script as follows:
if (getAction()?.id == 1) { //Do not run script on Create action
log.warn('ACTION = CREATE')
return
}
def lockStatuses = ['status1','status2','status3'] //Statuses where fields should be read-only
def issueStatus = underlyingIssue.status.name.toLowerCase() //Status of the undelying issue
if (!lockStatuses.contains(issueStatus)) {
log.warn('STATUS WILL NOT MAKE FIELDS READ-ONLY')
return
}
else {
log.warn('SETTING FIELDS READ-ONLY!')
def lockFields = ['customField1','customField2','customField3'] //Fields that should be set to read-only
lockFields.each { lockField ->
getFieldByName(lockField).setReadOnly(true)
}
getFieldById("summary").setReadOnly(true)
}
This works fine on Edit- and Transition screens.
My problem: If I first view an issue that has one of the above statuses, and then press the "Create" button, the above fields is being set to read only on the Create screen, despite the first "if" in the script.
If I Cancel out of the Create screen and press the "Create" button once again, the fields are now writable. The issue seems to only occur directly after opening av issue, or after previewing it on boards.
Do anyone have suggestions on what I should try next?
Hi Martin,
Try switching out your first if statement for the following:
if (getActionName() in ["Create Issue", "Create"]) {
return
}
I've found when doing this you need to take into account "Create" and "Create Issue"
Hope this helps!
Steve
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.