- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-13-2019 05:01 AM
Hello Everyone,
I've a requirement. In the change task form, i've to make state field as read-only, when the logged in user is not a member of the assignment group of the change task.
I've tried with the below script include,
var CheckNilfiskAdminGroupMember = Class.create(); //(auto generated)
CheckNilfiskAdminGroupMember.prototype = Object.extendsObject(AbstractAjaxProcessor, { //(auto generated)
validateUser: function() {
var result;
var obj = gs.getUserID();
var gname = this.getParameter('sysparm_group_name');
gs.log("@@@@@@@@@"+gname);
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery('group',gname);
gr.addQuery('user',obj);
gr.query();
if(gr.next())
{
result = true;
}
else{
result = false;
}
return result;
},
Client script:
function onSubmit() {
var name = g_form.getValue('assignment_group');
var obj = new GlideAjax('CheckNilfiskAdminGroupMember');
obj.addParam('sysparm_name','validateUser');
obj.addParam('sysparm_group_name',name);
obj.getXML(getData);
function getData(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
if(answer == true)
g_form.setReadOnly('state',false);
else{
g_form.setReadOnly('state',true);
}
}}
It's not working as expected. Can someone someone help me.
Regards,
Arun
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-13-2019 05:19 AM
Hi Arun,
I have modified your script a bit. Please give it a try and let me know. You are calling the server side AJAX call in your onSubmit() client script. So basically you need to wait for the server side execution. Hence you need to call synchronous GlideAjax.
Client Script:
function onSubmit() {
var name = g_form.getValue('assignment_group');
var obj = new GlideAjax('CheckNilfiskAdminGroupMember');
obj.addParam('sysparm_name','validateUser');
obj.addParam('sysparm_group_name',name);
obj.getXMLWait();
var answer = obj.getAnswer();
if(answer == true)
g_form.setReadOnly('state',false);
else
g_form.setReadOnly('state',true);
}
Script Include Function:
validateUser: function() {
var result;
var obj = gs.getUserID();
var gname = this.getParameter('sysparm_group_name');
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery('group',gname);
gr.addQuery('user',obj);
gr.query();
if(gr.hasNext())
return true;
else
return false;
},
Hope this helps. Please mark the answer Correct/Helpful based on the impact.
Regards,
Amlan

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-13-2019 05:08 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-13-2019 05:14 AM
Hi Arun,
You have to use a combination of Display Business Rule and Client Script to achieve this.
Follow the steps:
Step 1: Create a display Business rule with script as. Place the below script between function templates in script body.
g_scratchpad.grp = gs.getUser().isMemberOf('PASS GROUP NAME HERE');
Now update the client script as
function onLoad() {
var usr = g_user.getUserID();
var gate = g_form.getValue('u_field');
if (gate == 'true' && !g_scratchpad.grp){
//Logic
}
}
Mark Correct/Helpful, if applicable.
Thanks

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-13-2019 05:16 AM
You may want to take a look at this post.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-13-2019 05:19 AM
Hi Arun,
I have modified your script a bit. Please give it a try and let me know. You are calling the server side AJAX call in your onSubmit() client script. So basically you need to wait for the server side execution. Hence you need to call synchronous GlideAjax.
Client Script:
function onSubmit() {
var name = g_form.getValue('assignment_group');
var obj = new GlideAjax('CheckNilfiskAdminGroupMember');
obj.addParam('sysparm_name','validateUser');
obj.addParam('sysparm_group_name',name);
obj.getXMLWait();
var answer = obj.getAnswer();
if(answer == true)
g_form.setReadOnly('state',false);
else
g_form.setReadOnly('state',true);
}
Script Include Function:
validateUser: function() {
var result;
var obj = gs.getUserID();
var gname = this.getParameter('sysparm_group_name');
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery('group',gname);
gr.addQuery('user',obj);
gr.query();
if(gr.hasNext())
return true;
else
return false;
},
Hope this helps. Please mark the answer Correct/Helpful based on the impact.
Regards,
Amlan