The CreatorCon Call for Content is officially open! Get started here.

make checkbox visible to certain group

kunal16
Tera Expert

I have a requirement that on the incident form, show a checkbox field - Escalation to only members of the group 'Service Desk' or users having role 'admin'

Also, if the checkbox is set to 'true', make the work notes mandatory, otherwise if the checkbox is false, make work notes non-mandatory.

I have written a script include for group check -

var getSerDeskgroup = Class.create();

getSerDeskgroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {

  myServiceDesk : function()

  {

            if ((gs.getUser().isMemberOf('Service Desk')) || (gs.hasRole('admin')))

            {

                      return true;

            }

            else

            {

                      return false;

            }

  },

  type: 'getSerDeskgroup'

});

And the onChange (of Escalation) client script is

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

  if (isLoading || newValue === '') {

            return;

  }

  if (newValue != '')

  {

            alert('Escalation is checked ' + newValue);

            var ga = new GlideAjax('getSerDeskgroup');

            ga.addParam('sysparm_name', 'myServiceDesk');

            ga.getXML(parseMember);

  }

  function parseMember(response)

  {

            var answer = response.responseXML.documentElement.getAttribute("answer");

            if (answer == 'true')

            {

                      g_form.setMandatory('work_notes', true);

            }

  }

  if (newValue == false)

  {

            alert('Escalation is unchecked ' + newValue);

            g_form.setMandatory('work_notes', false);

  }

}

It seems the functionality is not working as expected

Any help on this will be appreciated.

Thanks in advance!!

1 ACCEPTED SOLUTION

nataraj_snow
Giga Contributor

Below 2 cusomizations should resolve your issue :



1. Wrie an UI policy on incident form as shown below :


find_real_file.png




2. Write 2 similar ACLs (1 for READ, other for WRITE) as shown below:


find_real_file.png



I tried this and this resolved the issue. You can try it, and if it works please mark it CORRECT answer.


View solution in original post

14 REPLIES 14

Deepa Srivastav
Kilo Sage

Put gs.log in Script include and alert 'answer' in client script to see what is being returned...


let me know what you get in log and alert .



Mark Correct if it solved your issue or hit Like and Helpful if you find my response worthy.



Thanks,
Deepa


srinivasthelu
Tera Guru

HI Kunal,



Steps:



1. Create a Display Business Rule on Incident table with the below line,


g_scratchpad.isValidUser= new getSerDeskgroup().myServiceDesk();



2. Modify the client script to something like below,



  1. function onChange(control, oldValue, newValue, isLoading, isTemplate) {  
  2.   if (isLoading) {  
  3. if(g_scratchpad.isValidUser=='true')
  4. {
  5. g_form.setDisplay('escalation', true)
  6. }
  7. else{
  8. g_form.setDisplay('escalation', false)
  9. }
  10.   }   else{
  11. if (newValue == true)  
  12.             {  
  13.                     g_form.setMandatory('work_notes', true);  
  14.             }  
  15.   if (newValue == false)  
  16.   {  
  17.             g_form.setMandatory('work_notes', false);  
  18.   }  
  19. }  
  20. }


Thanks


Srinivas


Mark this response as helpful/correct if it does so




Thanks for the reply Srinivas. Although after modifications, I encountered the following error on the incident form:



find_real_file.png


Deepa Srivastav
Kilo Sage

Hi Kunal,


You can use your earlier approach..


Just change the onChange CS as below:-



function onChange(control, oldValue, newValue, isLoading, isTemplate) {  
 
if (isLoading && newValue=='false' ) {      
return;

}  


if (newValue == 'true')  
{
            alert('Escalation is checked ' + newValue);  
            var ga = new GlideAjax('getSerDeskgroup');  
            ga.addParam('sysparm_name', 'myServiceDesk');  
          ga.getXML(parseMember);  
  }  
else
{ alert('Escalation is unchecked ' + newValue);
      g_form.setMandatory('work_notes', false);
}
 
function parseMember(response)  
  {  
      var answer = response.responseXML.documentElement.getAttribute("answer");  
      if (answer == 'true')  
                          g_form.setMandatory('work_notes', true);            
}  
}  



Mark Correct if it solved your issue or hit Like and Helpful if you find my response worthy.



Thanks,
Deepa