ACL Script Returns True but the field is still hidden

verdakosnett
Tera Expert

I have a script which I know returns true but the field remains hidden. Why?

Here is the script:

find_real_file.png

1 ACCEPTED SOLUTION

Abhinay Erra
Giga Sage

yes answer variable should be set to true or false.And comming to passing current parameter is not required. Did you copy my script as is and tested it?


View solution in original post

33 REPLIES 33

Can you post the code instead of the screenshot so that I can check the syntax errors


answer=getAnswer();




function getAnswer() {




if(gs.hasRole('admin'))


  return true;





  gs.info('assigned to'+current.getValue('assigned_to'));



  if (gs.hasRole('x_64719_letters.'+current.getValue('assigned_to')))


  return true;



  if (typeof current.getValue('choppers') !== "undefined" && current.getValue('choppers')!== null)




  {


  var ii, ss,llen,chopperrights;


  chopperrights=current.getValue('choppers').trim().split(',');


  llen =chopperrights.length;


  for (ii=0; ii<llen; ++ii) {


  if (ii in chopperrights)


  {


  //gs.info("chopperrights[ii]"+chopperrights[ii]);


  if (gs.hasRole('x_64719_letters.'+chopperrights[ii]))


  { gs.info('chopper role exists');


  return true;}



    } }


  }



  if (typeof current.getValue('initial_letter_reviewers') !== "undefined" && current.getValue('initial_letter_reviewers')!== null)


{


  var iii, sss, initial_letter_reviewers=current.getValue('initial_letter_reviewers').trim().split(','), lllen =initial_letter_reviewers.length;


  for (iii=0; iii<lllen; ++iii) {


    if (iii in initial_letter_reviewers) {




  if (gs.hasRole('x_64719_letters.'+initial_letter_reviewers[iii]))


  { gs.info('ir role exists');


  return true;}


    }


  }


}






  if (typeof current.getValue('reviewers') !== "undefined" && current.getValue('reviewers')!== null)


  {


  var iiii, ssss, reviewers=current.getValue('reviewers').trim().split(','), llllen =reviewers.length;


for (iiii=0; iiii<llllen; ++iiii) {


  if (iiii in reviewers) {






        if (gs.hasRole('x_64719_letters.'+reviewers[iiii]))


  { gs.info('r role exists');


  return true;} }


  }


  }




   




  if (typeof current.getValue('ntk_display_value') !== "undefined" && current.getValue('ntk_display_value')!== null)


  {


  var i, s, ntkroles= current.getValue('ntk_display_value').trim().split(','), len =ntkroles.length;


  for (i=0; i<len; ++i)


  {


    if (i in ntkroles) {


    if (gs.hasRole(ntkroles[i]))


    {gs.info('ntk role exists');


  return true;


    }




    }


  }


  }


  else


  return true;







}


Copy this script and one more question, you are not returning false anywhere. I only see return true even for the else condition.



answer=getAnswer();


function getAnswer() {


  if(gs.hasRole('admin'))


  return true;


  gs.info('assigned to'+current.getValue('assigned_to'));


  if (gs.hasRole('x_64719_letters.'+current.getValue('assigned_to')))


  return true;



  if (typeof current.getValue('choppers') != "undefined" && current.getValue('choppers')!= null)


  {


  var ii, ss,llen,chopperrights;


  chopperrights=current.getValue('choppers').toString().trim().split(',');


  llen =chopperrights.length;


  for (ii=0; ii<llen; ii++) {



  //gs.info("chopperrights[ii]"+chopperrights[ii]);


  if (gs.hasRole('x_64719_letters.'+chopperrights[ii].toString()))


  { gs.info('chopper role exists');


  return true;


  }


  }


}


if (typeof current.getValue('initial_letter_reviewers') != "undefined" && current.getValue('initial_letter_reviewers')!= null)


  {


  var iii, sss,lllen;


  var initial_letter_reviewers= current.getValue('initial_letter_reviewers').toString().trim().split(',');


  lllen =initial_letter_reviewers.length;


  for (iii=0; iii<lllen; iii++) {



  if (gs.hasRole('x_64719_letters.'+initial_letter_reviewers[iii].toString()))


  { gs.info('ir role exists');


  return true;


  }



}


}


if (typeof current.getValue('reviewers') != "undefined" && current.getValue('reviewers')!= null)


  {


  var iiii, ssss,llllen ;


  var reviewers=


  current.getValue('reviewers').toString().trim().split(',');


  llllen =reviewers.length;


  for (iiii=0; iiii<llllen; iiii++) {



  if (gs.hasRole('x_64719_letters.'+reviewers[iiii].toString()))


  { gs.info('r role exists');


  return true;} }


  }



  if (typeof current.getValue('ntk_display_value') != "undefined" && current.getValue('ntk_display_value')!= null)


  {


  var i, s,len;


  var ntkroles= current.getValue('ntk_display_value').toString().trim().split(',');


  len =ntkroles.length;


  for (i=0; i<len; ++i)


  {



  if (gs.hasRole(ntkroles[i]))


  {gs.info('ntk role exists');


  return true;


    }


  }


}


else


  return true;


}


Actually, yes you are right for returning false but I solved the first problem. It looks like the getAnswer function needs to pass a pointer to the current document although that still doesn't seem to fix the ACL:



answer=getAnswer(current);




function getAnswer(current) {




if(gs.hasRole('admin'))


  return true;





  gs.info('assigned to'+current.getValue('assigned_to'));



  if (gs.hasRole('x_64719_letters.'+current.getValue('assigned_to')))


  return true;



  if (typeof current.getValue('initial_letter_reviewers') !== "undefined" && current.getValue('initial_letter_reviewers')!== null)


{


  var iii, sss, initial_letter_reviewers=current.getValue('initial_letter_reviewers').trim().split(','), lllen =initial_letter_reviewers.length;


  for (iii=0; iii<lllen; ++iii) {


    if (iii in initial_letter_reviewers) {




  if (gs.hasRole('x_64719_letters.'+initial_letter_reviewers[iii]))


  { gs.info('ir role exists');


  return true;}


    }


  }


}





  if (typeof current.getValue('choppers') !== "undefined" && current.getValue('choppers')!== null)




  {


  var ii, ss,llen,chopperrights;


  chopperrights=current.getValue('choppers').trim().split(',');


  llen =chopperrights.length;


  for (ii=0; ii<llen; ++ii) {


  if (ii in chopperrights)


  {


  //gs.info("chopperrights[ii]"+chopperrights[ii]);


  if (gs.hasRole('x_64719_letters.'+chopperrights[ii]))


  { gs.info('chopper role exists');


  return true;}



    } }


  }





  if (typeof current.getValue('reviewers') !== "undefined" && current.getValue('reviewers')!== null)


  {


  var iiii, ssss, reviewers=current.getValue('reviewers').trim().split(','), llllen =reviewers.length;


for (iiii=0; iiii<llllen; ++iiii) {


  if (iiii in reviewers) {






        if (gs.hasRole('x_64719_letters.'+reviewers[iiii]))


  { gs.info('r role exists');


  return true;} }


  }


  }




   




  if (typeof current.getValue('ntk_display_value') !== "undefined" && current.getValue('ntk_display_value')!== null)


  {


  var i, s, ntkroles= current.getValue('ntk_display_value').trim().split(','), len =ntkroles.length;


  for (i=0; i<len; ++i)


  {


    if (i in ntkroles) {


    if (gs.hasRole(ntkroles[i]))


    {gs.info('ntk role exists');


  return true;


    }




    }


  }


  }


  else


  return false;







}


Really stupid question but do I return false or true to hide a field?