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

URL link in addInfoMessage

var ga=new GlideAjax('gld_HR_ajax'); ga.addParam('sysparm_name', 'checkEmployeeNumber_hrProfile'); ga.addParam('sysparm_hrprofilenumber', g_form.getValue('number')); ga.addParam('sysparm_employeenumber', newValue); ga.getXMLAnswer(function(answer) { if (answer!='undefined' && answer!=''){ var navURL="<a style='text-decoration:underline;color:blue' href=hr_profile.do?sysparm_query=number=" + answer + ">" + answer + "</a><img width='3' src='images/s.gif'/>"; var sMsg='The employee number entered already exists on another HR Profile ' + navURL; //alert(sMsg); g_form.showErrorBox('employee_number', 'error - please check'); g_form.addInfoMessage(sMsg); } });

GlideRecord setValue

setValue(String name, Object value) Sets the specified field to the specified value. Normally a script would do a direct assignment, for example,  gr.category = value . However, if in a script the element name is a variable, then  gr.setValue(elementName, value)  can be used. When setting a value, ensure the data type of the field matches the data type of the value you enter. This method cannot be used on journal fields. If the value parameter is null, the record is not updated, and an error is not thrown https://developer.servicenow.com/app.do#!/api_doc?v=madrid&id=r_GlideRecord-setValue_String_Object