how to make field read-only except certain project role and certain step at the same time?

Kate July 31, 2013

For example, I have project roles: Developers, Users.
I want to make my field read-only except on step "In Progress" for Developers, and except on step "Open" for Users.
As a result: ("In Progress" AND Developers) OR ("Open" AND Users).
Help, please :)

8 answers

0 votes
sbhutada January 14, 2019

Rambanam Prasad

I am trying to make a text field read only on edit screen, but looks like the code is not working. can you please help with this -

jQuery(document).ready(function($) {

JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e,context) {

var projectName = AJS.$("#project-name-val").text();
console.log("RFC projectName "+projectName);

if (projectName == "RFC")
{
callReadonlyFunction();
}
}
});

function callReadonlyFunction(){
$('#edit-issue').click(function() {
           console.log("Edit Button Clicked Start");
           AJS.$("#customfield_13911").attr("readonly", true); //text field
           console.log("Edit Button Clicked End");
      });
}

 

In the console log, I do see messages but for some reason, the field is not becoming read-only.

0 votes
Joe Pitt
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
November 3, 2013

the behavior plug-in may offer that, but I don't know if you can have it installed.

0 votes
Ian Bantilan November 3, 2013

Jira on demand?

0 votes
RambanamP
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 1, 2013

the following script will run on edit screen

<script type="text/javascript">  
jQuery(document).ready(function($) {
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e,context) {
		makeReadonly();
	});
		makeReadonly();
function makeReadonly(){
		var editFunction=$('#edit-issue-submit').val();
	if(editFunction === 'Update'){
        var user=getCurrentUserName();		
		var statusText=$('#status-val').text();	
		var status=$.trim(statusText);
		var devlopersRoleID='10010';//changr the project role id here
		var usersRoleID='10011';//changr the project role id here
		$("#customfield_10571").attr("readonly", '');
		$("#customfield_10572").attr("readonly", '');	
		if(isUserInGroup(user,devlopersRoleID) && status=='In Progress'){
			//to make text field read only
			$("#customfield_10571").attr("readonly", true);	
		}else if(isUserInGroup(user,usersRoleID) && status=='Open'){
			//to make text field read only
			$("#customfield_10572").attr("readonly", true);	
		}
		
	}

}
function getCurrentUserName()
{
var user;
     AJS.$.ajax({
        url: "/rest/gadget/1.0/currentUser",
        type: 'get',
        dataType: 'json',
        async: false,
        success: function(data) {
            user = data.username;
        }
     });
     return user;
}
  
  
function getUsers(roleID)
{
var users;
     AJS.$.ajax({
        url: "/rest/api/2/project/TEST/role/"+roleID,//change project Key here(need to replace TEST with your project key)
        type: 'get',
        dataType: 'json',
        async: false,
        success: function(data) {
            users = data.actors.name;
        }
     });
     return users;
}
function isUserInGroup(user, roleID){
    var users = getUsers(roleID);
    for (i = 0; i < users.length; i++){
         if (users[i].name == user){
              return true;
         }
    }
    return false;
}
    
 
});
</script>

Kate August 1, 2013

wow, it looks nice! :)

And how can I get system fields? Duedate, assignee..

RambanamP
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 1, 2013

try with following code

//for dute field
$("#duedate").attr("readonly", true); 
//to hide date picker icon
$("#duedate-trigger").hide(); 
/to show date picker icon
$("#duedate-trigger").show(); 

try with this for assignee field
$("#assignee-field").attr("readonly", true);

Kate August 14, 2013

I guess function isUserInGroup(user, roleID) doesn't work.

Without this function all is ok..

RambanamP
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 14, 2013

check the REST API in isUserInGroup(user, roleID) function

0 votes
Kate August 1, 2013
only on Edit Screen..
0 votes
RambanamP
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 31, 2013

small clarification!

do you want field read only on transition screen or view screen?

0 votes
Kate July 31, 2013

I'm not sure that it will work excellent. But I'm ready to try.
How can I get projectrole and step using javascript?..

0 votes
RambanamP
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 31, 2013

you can do it by using javascript? let me know if you want do it using JS so i can help you!!

Suggest an answer

Log in or Sign up to answer