Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Checking if URL contains certain text

codedude
Mega Expert

I am trying to determine if a URL contains incident.do, if it does contain that I want to send them to the URL in which they clicked on (which would be an incident), otherwise I would like to send them to our ESS portal.

This is only for users with NO roles.

This is what I have and is currently not working:

<g:evaluate>        

            var user = gs.getUser();            

            var gr = new GlideRecord('sys_user_has_role');          

            gr.addQuery('user', user.getID());          

            gr.query();    

</g:evaluate>

<j:if test="${gr.hasNext()}">            

          <script>                    

                      top.location.href = "${sysparm_uri}";        

          </script>

</j:if>

<script>

            var sysparmuri = "${sysparm_uri}";

                      <j:when test="${sysparmuri.indexOf('incident.do') > -1}">

                                  top.location.href = "${sysparm_uri}";

                      </j:when>

                      <j:otherwise>

                                  sysparmuri = decodeURIComponent(sysparmuri.replace("nav_to.do?uri=/", "ess/"));

                                  top.location = sysparmuri;

                      </j:otherwise>        

</script>  

Can anyone see what could be going wrong?

4 REPLIES 4

Mike Allen
Mega Sage

I used this: var table = '${RP.getParameterValue('jvar_ref_table')}'; to get the table (in your case, incident) and then:



if(table == 'incident'){


  name = current.name;


  ciType = 'Server';


  operator = 'contains';


}



That works for me.


Would this replace this portion?



var sysparmuri = "${sysparm_uri}";


<j:when test="${sysparmuri.indexOf('incident.do') > -1}">


          top.location.href = "${sysparm_uri}";


</j:when>


Yeah:



<g:evaluate>


var table = '${RP.getParameterValue('jvar_ref_table')}';


</g:evaluate>


<j:choose>


<j:when test="${table == 'incident'}>


top.location.href = "${sysparm_uri}";


</j:when>


<j:otherwise>


sysparmuri = decodeURIComponent(sysparmuri.replace("nav_to.do?uri=/", "ess/"));


                                  top.location = sysparmuri;


</j:otherwise>


</j:choose>


Hmm, that does not work...



This is what I have now:




<g:evaluate>      


            var user = gs.getUser();          


            var gr = new GlideRecord('sys_user_has_role');        


            gr.addQuery('user', user.getID());        


            gr.query();  


</g:evaluate>  



<j:if test="${gr.hasNext()}">          


            <script>                  


                        top.location.href = "${sysparm_uri}";  


            </script>          


</j:if>



<g:evaluate>


            var table = '${RP.getParameterValue('jvar_ref_table')}';


</g:evaluate>



<j:if test="${!gr.hasNext()}">        


            <j:choose>


                        <j:when test="${table == 'incident'}">


                                    top.location.href = "${sysparm_uri}";


                        </j:when>


                        <j:otherwise>


                                    sysparmuri = decodeURIComponent(sysparmuri.replace("nav_to.do?uri=/", "ess/"));


                                    top.location = sysparmuri;


                        </j:otherwise>


            </j:choose>    


</j:if>





I don't understand what is going wrong here? It looks like it should work....