- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-13-2023 05:37 AM
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);
}
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-15-2023 12:20 AM
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);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-13-2023 05:55 AM - edited 06-13-2023 05:58 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2023 10:14 PM
Hi @Sid_Takali
I tried the above above client script and script include however it is still not working.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2023 11:33 PM
hi @Gunashekar try this this is working
Please don't forget mark reply as Helpful/Correct, if applicable.
Thanks,
Siddharam
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-15-2023 12:03 AM
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);
}
}