How to make field visible by using client script in Private Task form?

Gunashekar
Tera Contributor

I have created 3 new fields in Private Task form (tam category, tam sub category and effort in hours) and want them to be visible only to users in a group I have created (TAM Cat and Sub Cat). 

 

I want to achieve this using either UI policy or Client script, don't want to use ACL's.

 

I have created the below client script however it is not working as expected. Please help me if I am missing something.

 

 

function onLoad() {


//if(g_user.isMemberOf('TAM Cat and Sub Cat'))

 

//return;

 

g_form.addInfoMessage('Scratchpad : ' + g_scratchpad.isMember);

 

//if(g_user.isMemberOf('TAM Cat and Sub Cat') && answer < -60 )

 

if (g_scratchpad.isMember == true)

 

{

 

g_form.setVisible('u_tam_category',true);

 

g_form.setValue('u_tam_category','');

 

g_form.setMandatory('u_tam_category',true);

 

g_form.setVisible('u_tam_sub_category',true);

 

g_form.setValue('u_tam_sub_category','');

 

g_form.setMandatory('u_tam_sub_category',true);

 

g_form.setVisible('u_effort_in_hours',true);

 

g_form.setValue('u_effort_in_hours','');

 

g_form.setMandatory('u_effort_in_hours',true);

 

}

 

else

 

{


g_form.setVisible('u_tam_category',false);

 

g_form.setMandatory('u_tam_category',false);


g_form.setVisible('u_tam_sub_category',false);

 

g_form.setMandatory('u_tam_sub_category',false);

 

g_form.setVisible('u_effort_in_hours',false);

 

g_form.setMandatory('u_effort_in_hours',false);

 

}

 

}

1 ACCEPTED SOLUTION

Hi @Gunashekar use below code 

var getUser = Class.create();
getUser.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
    getGroupMember: function() {
        var User = gs.getUserID();
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery('group.name', 'TAM Cat and Sub Cat');
        gr.addQuery('user', User);
        gr.query();
        return gr.hasNext();
    },
    type: 'getUser'
});
var ga = new GlideAjax('getUser');
    ga.addParam('sysparm_name', "getGroupMember");
    ga.getXML(DatParse);
    function DatParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        if (answer == 'true') {
           g_form.setVisible('u_tam_category', true);
           g_form.setVisible('u_tam_sub_category', true);
           g_form.setVisible('u_effort_in_hours', true);
       } else
           g_form.setVisible('u_tam_category',false);
           g_form.setVisible('u_tam_sub_category', false);
            g_form.setVisible('u_effort_in_hours', false);
      }

View solution in original post

7 REPLIES 7

Sid_Takali
Kilo Patron
Kilo Patron

Hi @Gunashekar use client callable script include. script include should look like this

 

 

var getUser= Class.create();
getUser.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	getGroupMembership: function(){
		var user = gs.getUserID();
		var gr = new GlideRecord("sys_user_grmember");
		gr.addQuery('group.name', 'group name');
                gr.addQuery('user', user);
                gr.query();
                return gr.hasNext();	
	},
	type: 'User'
});

 

 

Client Script :

 

 

function onLoad(){

var ga = new GlideAjax('getUser');
ga.addParam('sysparm_name', "getGroupMember");
ga.getXMLAnswer(function(answer){

if(answer.toString() == 'true'){
g_form.setVisible('u_tam_category', true);
}
else{
g_form.setVisible('u_tam_category',false);
}
});
}

 

 

Please mark reply as Helpful/Correct, if applicable.

Thanks,

Siddharam

Hi @Sid_Takali 

 

I tried the above above client script and script include however it is still not working.

 

Gunashekar_0-1686806008619.pngGunashekar_1-1686806038959.png

 

hi @Gunashekar try this this is working

SiddharamTakal_0-1686810540714.png

 

SiddharamTakal_2-1686810630142.png

Please don't forget mark reply as Helpful/Correct, if applicable.

Thanks,

Siddharam

Hi @Sid_Takali 

 

I tried the above code, it is hiding the fields however it is not making the fields visible to the users in group 'TAM Cat and Subcat.

 

var getUser= Class.create();
getUser.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
	getGroupMembership: function(){
		var user = gs.getUserID();
		var gr = new GlideRecord("sys_user_grmember");
		gr.addQuery('group.name', 'TAM Cat and Sub Cat');
                gr.addQuery('user', user);
                gr.query();
                return gr.hasNext();	
	},
	type: 'getUser'
});
function onLoad(){
var ga = new GlideAjax('getUser');
ga.addParam('sysparm_name', "getGroupMember");
ga.getXML(DatParse);
function DatParse(response){
	var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer == 'true'){
g_form.setVisible('u_tam_category', true);
g_form.setVisible('u_tam_sub_category', true);
g_form.setVisible('u_effort_in_hours', true);
} else
g_form.setVisible('u_tam_category',false);
g_form.setVisible('u_tam_sub_category', false);
g_form.setVisible('u_effort_in_hours', false);
}
}