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

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);
      }

Hi @Sid_Takali 

 

Thank you for your help. It is working as expected.

 

However if i want to add more than one groups in the script include then how can i do it?

Manmohan K
Tera Sage

@Gunashekar 

 

The line below will not work . You can use GlideAjax as pointed by @Sid_Takali  

g_user.isMemberOf('TAM Cat and Sub Cat');