Skip to main content

Add an add/edit user UI Macro to a form

 based on ref: http://www.servicenowguru.com/system-ui/ui-macros/adding-referenced-records-leaving-form/

(note this is a very old article so there may be better ways of doing this!)


this adds a little + icon next to the caller field:




notes:

Show add/edit user macro icon on a reference field

Activate by:

– Setting the active field in this macro to true

– Adding the attribute to a dictionary field: ref_contributions=_add_edit_user_modified


sys property:



the UI Macro:



condition to hide/show the + icon

<j:if test="${(gs.getUser().getDepartmentID() == (gs.getProperty('hmcts.department')))&amp;&amp; gs.hasRole('itil_edit')}">


Full XML - view to set highlighted in green (view can be specified under system UI> views):

<?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:if test="${(gs.getUser().getDepartmentID() == (gs.getProperty('xxx.department')))&amp;&amp; gs.hasRole('itil_edit')}"> <g:evaluate var="jvar_guid" expression="gs.generateGUID(this);" /> <j:set var="jvar_n" value="add_edit_user_${jvar_guid}:${ref}"/> <a> <span id="${jvar_n}" onclick="addEditUserPop('${ref}')" class="btn btn-default icon-add-circle" title="${gs.getMessage('Add/Edit User')}" alt="${gs.getMessage('Add/Edit User')}"> </span> </a> <script> //OnClick function for UI macro function addEditUserPop(reference){ var s = reference.split('.'); var referenceField = s[1]; var v = g_form.getValue(referenceField); //If user field is empty then pop open an 'Add User' dialog if(v == ''){ var dialog = new GlideDialogForm('Add User', 'sys_user', setUserField); dialog.setSysID('-1'); //Pass in -1 to create a new record } //Else pop open an 'Edit User' dialog for the populated user record else{ var dialog = new GlideDialogForm('Edit User', 'sys_user', setUserField); dialog.setSysID(v); //Pass in reference sys_id to edit record } // dialog.addParm('sysparm_view', 'default'); //Specify a form view dialog.addParm('sysparm_view', 'user_add_edit'); //Specify a form view dialog.addParm('sysparm_form_only', 'true'); //Remove related lists dialog.render(); //Open the dialog //Callback function executed from dialog submit function setUserField(action, sys_id, table, displayValue){ //Set the user field with the popup user g_form.setValue(referenceField, sys_id); } } </script> </j:if> </j:jelly>

Comments

Popular posts from this blog

ServiceNow timeout settings for virtual agent chat

  After connecting to live agent User is connected to live agent and not responding to live agent chat or distracted. The below properties controls the timeout settings, the OOB settings for reminder is [180 sec] and for cancelling the chat is [360 sec]. The job is default configured to 2 min so I believe no tweaking is required here.  Property -   com.glide.cs.idle_chat_reminder_timeout                  com.glide.cs.idle_chat_cancel_timeout Scheduled job   - Idle Chat Timer Task   https://community.servicenow.com/community?id=community_article&sys_id=1453b03bdbaad0109e691ea668961929   (ServiceNow ) 

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 )){...