Skip to main content

UI Macro and Widget for service catalog: load external url using both UI macro and widget

(much neater ways of doing this with generic UI macro/widget but this was pulled together at very short notice)
UI MESSAGE:
store the url, remember to prefix with https:// !!
ritm.hardwarereq.url

UI MACRO:

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<a href='' onclick='ext_loadURL()'>Click here</a>

<script>
function ext_loadURL(){
var ext_url=getMessage('ritm.hardwarereq.url');
 
window.open(ext_url, "_blank");
//or in popup: window.open(ext_url, "s", "resizable=yes, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, copyhistory=no").blur();
      
}
</script>
</j:jelly>

SERVICE PORTAL WIDGET:

HTML:
<div>
<!-- your widget template -->
  <a href='' ng-click='load_ext_url()'>Click here</a>
  
</div>

Client Script:
function($scope, i18n, $window) {
  /* widget controller */
  var c = this;


$scope.load_ext_url = function() {
   //console.log("message", 'run the op');
  //var ext_url=i18n.getMessage('ritm.hardwarereq.url');
  // alert('URL: ' + r.data.exturl);
   
c.server.get().then(function(r){
             
            var ext_url=r.data.exturl;
alert(ext_url);
            window.open(ext_url);   
        });              
  };
}
Server Script:
(function() {
  /* populate the 'data' object */
  /* e.g., data.table = $sp.getValue('table'); */
  data.exturl=gs.getMessage('ritm.hardwarereq.url');
//gs.addInfoMessage(data.exturl)
})();

SERVICE CATALOG VARIABLE:

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }