Skip to main content

GlideModal with UI Page: add a worknote / escalate RITM (called via UI Action)

UI Action

var title = getMessage('Enter New Work Note'); var gm = new GlideModal('add_work_note'); // UI Page gm.setTitle(title); gm.setPreference("sysparm_target_table", "sc_req_item"); //--add whatever table gm.setPreference("sysparm_target_sys_id", g_form.getUniqueValue()); gm.render();





UI Page



HTML

<?xml version="1.0" encoding="utf-8" ?> <j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null"> <g:ui_form> <div class="form-group"> <input type="hidden" name="target_table" id="target_table" value="${RP.getWindowProperties().get('sysparm_target_table')}"/> <input type="hidden" name="target_sys_id" id="target_sys_id" value="${RP.getWindowProperties().get('sysparm_target_sys_id')}"/> <input type="hidden" id="cancelled" name="cancelled" value="false"/> <textarea id="new_work_note" name="new_work_note" class="form-control"></textarea> </div> <g:dialog_buttons_ok_cancel ok="return onSubmit();" cancel="return onCancel();" /> </g:ui_form> </j:jelly>








Client script

function onCancel() { var c = gel('cancelled'); c.value = "true"; GlideDialogWindow.get().destroy(); return false; } function onSubmit() { var work_note = gel("new_work_note").value; if (work_note != "") return true; }







Server Processing script

if (cancelled == "false") { var taskRecord = new GlideRecord(target_table); if (taskRecord.get(target_sys_id)) { taskRecord.work_notes = 'RITM escalated: ' + new_work_note; //--escalate tasks var grTasks = new GlideRecord('sc_task'); grTasks.addActiveQuery(); grTasks.addQuery('request_item', target_sys_id); grTasks.query(); if (grTasks.getRowCount() > 0) { taskRecord.u_escalation_count = taskRecord.u_escalation_count + 1; taskRecord.update(); while (grTasks.next()) { //--check if task assignment group has group email, or send to members gs.addInfoMessage('escalating task ' + grTasks.number + ' to group: ' + grTasks.assignment_group.getDisplayValue()); gs.eventQueue('ritm.escalate', grTasks, '', ''); } } } } var urlOnStack = target_table + ".do?sys_id=" + target_sys_id; response.sendRedirect(urlOnStack);

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 ); }