Lock an issue - a better variant (Live Fields)
Table of Contents |
---|
Info | ||||
---|---|---|---|---|
| You will need the following JIRA plugins:
| |||
Level: INTERMEDIATE |
Problem
The The problem of this recipe appears when two or more different users try to edit the same issue page. The mechanism explained bellow try to avoid this problem by locking the issue during the edit process and unlocking it at the end of the editing.
...
To solve this problem we propose offer a solution that use two of our plugins: JJUPIN and Blitz-Actionsapps: Power Scripts™ for Jira and Power Actions™ for Jira.
The Solution is exemplified on a JIRA Jira 5.2.1 environment. In order to resolve it you have to have administrator rights.
Step 1
Create a new Blitz-Action Power Actions™ custom field:
- Go to Administration >> Issues >> -> Issues -> Custom Fields and press click the link
- Click the "Add Custom Field" button button
- Select the Blitz Actions Power Actions™ Custom Field and click next Next
- Name it "Disable" and set the desired project you want to lock during the edit process, as shown in the picture:
- Set your Blitz-Action Power Actions™ Custom Field to be visible on all the screens:
...
- Configure the "Disable" Custom Field by choosing the cog icon and and selecting the "Configure" option.
- Add two new buttons by clicking on the "Edit Buttons" link. Name those two buttons: "Lock" and "Unlock":
Step 2
Create a new Custom Field that keeps the username of the user that locked the issue editing.
- Go back to Administration >> Issues >> -> Issues -> Custom Fields and press the link
- Click the "Add Custom Field" button on the right top of the screen
- Select the Text Field (< 255 characters) option and click next
- Name it "Is Locked" and configure it on the desired projects:
...
- Go to Edit Buttons link on the Configure Blitz (Power) Action Custom Field page. As in the previous the step.
- Press the Edit Screen Script in on the Lock button.
...
Type the following code:
Code Block customfield_10304 = currentUser(); return;
Where "customfield_10304" is the ID of your "Is Locked" Custom Field. For doing this you have to:
- Enter Administration section of
JIRA- Jira
- Go to Issues Tab >> Custom Fields
- View Field Configurations
- Hover the mouse over "Edit" link
- URL preview at bottom of browser will include fieldID=....
- The number that is shown is the number you are looking for
- Go back and press the Edit Screen Script in on the Unlock button. Add the following code:
...
On this step we have connected the buttons we've created to toggle the Is Locked Custom Field when pressing them.
Step 3
Now we have to make the SIL SIL™ script that will do the disable operation during the edit.
- Go to Administration >> Plugins >> Kepler General ParametersAdd-ons >> cPrime Tools
- Go to SIL SIL™ Manager tab
- Create a new SIL SIL™ script named "Lock.sil" by clicking on the Show Unused button.
- Select the folder you prefer and click New. Choose File and enter the "Lock.sil" name.
- Enter the following code in the ""Lock.sil":
Code Block |
---|
if (length(customfield_10304) != 0 && customfield_10304 != currentUser()) { lfDialogMessage("Somebody else is editing this issue.", "WARNING"); lfDisable("issueType"); lfDisable("priority"); lfDisable("affectedVersions"); lfDisable("status"); lfDisable("resolution"); lfDisable("summary"); lfDisable("fixVersions"); lfDisable("assignee"); lfDisable("reporter"); lfDisable("created"); lfDisable("updated"); lfDisable("labels"); lfDisable("editSubmit"); lfDisable("transitionSubmit"); lfExecuteJS("ScriptHide.js"); } lfWatch("customfield_10304", {"customfield_10304"}, "disable.sil"); lfWatch("edit-issue", {}, "disable.sil","click"); |
...
- Create a new SIL script named "disable.sil" and enter the following code:
...
- Add a new file named "ScriptShow.js" and enter the following code:
Code Block |
---|
AJS.$('#rowForcustomfield_10300').show(); |
...
- Add a new file named "ScriptHide.js" and enter the following code:
...
The rowForcustomfield_10300 element represents the custom field ID for the Blitz -(Power) Action Custom Field you have created in the First Step. In fact you only have to replace the number with the ID you have.
- Add the first SIL SIL™ script as a hook on the project you desire.
- Go to Live Fields tab.
- Add a new configuration by clicking the "Add configuration" button.
- Name it whatever you like.
- Add the Lock.sil script you have just created on the SIL SIL™ File box.
- Press Add button.
- Associate this configuration by pressing the Associate link.
- Select your desired project and click the Associate button.
...
This is all. You can now test it by opening two different sessions with two different users and try the lock and unlock buttons.
See also
- Disabling inline edits in Jira
- Forbidding users to create some issue types
- Hide fields from users not in a project role
- Limit Number of Characters in Text Field
- Locking Issues
- Making an issue read-only
- Require an issue to have attachments
- Require User to Log Work Before Transitioning Issue
- Restrict issue type availability by user
- Restrict workflow based on status of dependencies
- Validator for component lead