Call URL from ui macro

eashwar
Tera Contributor

Folks,

I am trying to generate a simple URL in UI macro and call. its failing sysparam needs a demiliter.

code:

<?xml version="1.0" encoding="utf-8" ?>

<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">

    <j:set var="jvar_n" value="add_me_${ref}"/>

    <span id="${jvar_n}" onclick="addMe('${ref}')" title="Add me" alt="Add me" tabindex="0" class="btn btn-default icon-default-knowledge-base">

          <span class="sr-only">Add me</span>

    </span>

  <script>

          function addMe() {

      var url = "https://"+window.location.hostname.toString()+"/kb_knowledge.do?sys_id=-1&amp;sysparam_query=short_descriptionLIKEMAJOR";

  window.open(url, "_blank");

      return false;

          }

    </script>

</j:jelly>

How to call a url with param value ?

Thank you,

Eashwar Elumalai

1 ACCEPTED SOLUTION

Joe McCarty1
ServiceNow Employee

Sorry the way I was doing it (i.e. based on the ui macro) required the form to be saved before it would work.   LIkely what was the issue.   This version does not:



<?xml version="1.0" encoding="utf-8" ?>


<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">


    <j:set var="jvar_n" value="add_me_${ref}"/>


    <span id="${jvar_n}" onclick="addMe('${ref}')" title="Add me" alt="Add me" tabindex="0" class="btn btn-default icon-default-knowledge-base">


          <span class="sr-only">Add me</span>


    </span>




  <script>


  function addMe(reference)


  {


      window.open('$knowledge.do#/search?query=' + encodeURI(g_form.getValue('short_description')) + '$[AMP]order=default');


  }


  </script>



</j:jelly>


View solution in original post

22 REPLIES 22

Joe McCarty1
ServiceNow Employee

Try this...I didn't notice the current references (it is not in scope in the ui macro, so I had to query the record).   I also replaced document.location with window.open as I figured we didn't want to overwrite the page:



<?xml version="1.0" encoding="utf-8" ?>


<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">


    <j:set var="jvar_n" value="add_me_${ref}"/>


    <span id="${jvar_n}" onclick="addMe('${ref}')" title="Add me" alt="Add me" tabindex="0" class="btn btn-default icon-default-knowledge-base">


          <span class="sr-only">Add me</span>


    </span>




<g:evaluate var="jvar_url" jelly="true" object="true" >


            var url = '';


  var inc = new GlideRecord('incident');


  if (inc.get(jelly.sys_id)) {


            if (inc.short_description != "") {


                      url = gs.getProperty('glide.servlet.uri') + "kb_find.do?sysparm_search=" + encodeURI(inc.short_description) + "$[AMP]sysparm_operator=IR_OR_QUERY$[AMP]sysparm_order=relevancy$[AMP]sysparm_stack=no$[AMP]sysparm_query=sys_id!=" + inc.sys_id;


            } else {


                url = gs.getProperty('glide.servlet.uri') + '$knowledge.do#/search?query=' + encodeURI(inc.short_description) + '$[AMP]order=default';


            }


  }


            url + '';


</g:evaluate>



  <script>


  function addMe(reference)


  {


      window.open("${jvar_url}");


  }


  </script>



</j:jelly>


BTW, my example was from the incident form...you probably want to replace GlideRecord('incident') with GlideRecord('kb_knowledge') for your purposes.


Or actually kb_submission based on your screenshot.


Thank you Joe


I modified the script to pull it from kb_submisson but on click its opening a blank page and stuck there .


Capture.PNG


Joe McCarty1
ServiceNow Employee

Is there any reason you don't use the dictionary attribute knowledge_search=true?   Give me a moment and I'll move my ui macro to the kb_submission table, but if you add that attribute to the short_description field, I think it provides much the same functionality.