Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

However, if the issue has no checklist set yet - it's possible to initiate initial rendering by pushing value to the custom field.

  1. Setup the "Checklists" custom field. Check instructions here "Checklists" Custom Field

ScriptRunner
Code Block
languagegroovy
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()

def issue = issueManager.getIssueObject("PROJ-7")
def changeHolder = new DefaultIssueChangeHolder()
def String myval = "- ToDo List\n+ Checked\nx Skipped\n~ In Progress\n# Another ToDo List\n- Unchecked\n> Quote line 1 https://rw.rw\\n> Quote line 2\n> Quote line 3\n"

// a text field
def textCf = customFieldManager.getCustomFieldObjectByName("Checklists")
textCf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(textCf), myval),changeHolder)

...

Result

...

Implementation flow:

  1. Go to Workflow Editor

    Image Modified
  2. Choose "Script Post Function" Script Runner

...

  1. Image Added
  2. Choose "Custom Script Post Function"

...

  1. Image Added
  2. Add inline Script
    Image Modified

  3. Variables checklistProd and checklistStage used for keeping the proper value of the checklist (in text format)

    ScriptRunner

    Code Block
    languagegroovy
    import com.atlassian.jira.component.ComponentAccessor
    import com.atlassian.jira.issue.ModifiedValue
    import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
    import org.apache.log4j.Level
    
    log.setLevel(Level.DEBUG)
    
    //Grab necessary Components
    def cfm = ComponentAccessor.getCustomFieldManager()
    def optionsManager = ComponentAccessor.getOptionsManager()
    
    def cfEnv = cfm.getCustomFieldObjectByName("Environment")
    def cfEnvtValue = issue.getCustomFieldValue(cfEnv)
    def cfEnvValueString = cfEnvtValue.toString()
    def changeHolder = new DefaultIssueChangeHolder()
    
    def checklistProd = "- ToDo List\n+ Checked\nx Skipped\n~ In Progress\n# Another ToDo List\n- Unchecked\n> Quote line 1 https://rw.rw\\n> Quote line 2\n> Quote line 3\n"
    def checklistStage = "- Uno\n+ Dos\nx Tres\n~ Quatro\n"
    
    
    log.info("checklistProd: " + checklistProd)
    log.info("checklistStage: " + checklistStage)
    log.info("Environment"+ cfEnvValueString)
    
    
    if (cfEnvValueString == "Production") {
    	//Set custom text field
    	def cfClient = cfm.getCustomFieldObjectByName("Checklists")
    	issue.setCustomFieldValue(cfClient,checklistProd)
    } else if (cfEnvValueString == "Staging") {
    	//Set custom text field
    	def cfClient = cfm.getCustomFieldObjectByName("Checklists")
    	issue.setCustomFieldValue(cfClient,checklistStage)
    }
    
    


  4. Save the script. IMPORTANT! Make the Post Function is placed as a #1 Step!

    Image Modified

Customize checklist visibility by user group/ user role/ ticket type

...

Code Block
import com.atlassian.jira.ComponentManager

import com.atlassian.jira.security.roles.ProjectRoleManager

import com.atlassian.jira.component.ComponentAccessor

ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class);

def usersRoles = projectRoleManager.getProjectRoles(ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(), issue.getProjectObject())*.name;

return usersRoles.contains("Administrators")

CHK:Support
Insert excerpt
CHK:Support
Get Started
Get Started
namesupport-email (checklist-server)
nopaneltrue