Reassign Approval After Requested

Kerry10
Giga Expert

I have a request to allow users to reassign an approval after it has been requested.

I couldn't find any OOB functionality that is like this, so I figured I have to make my own UI action.

I am trying to think of the best way to do this. Ideally, when the button is clicked I would like a pop up to appear with a reference field for the user table, and then when they submit, the approval will be reassigned to this value.

I have made a UI action with a client side pop up window before, but it only had plain text. How can I make a "mini form" appear as a pop up? 

I'm looking for any help with this, or im open to any alternate suggestions!

thanks.

1 ACCEPTED SOLUTION

I created a basic UI page, and script include to make the change to the approval record.

Here are the details. the items in BOLD will change based on what you name the records.

UI ACTION:

function popupWindow() {

var dialog = new GlideDialogWindow('x_25054_reassign_a_Reassign approval');
dialog.setTitle("Approval Re-assign");
dialog.setSize(500,225);
dialog.adjustBodySize();
dialog.render();

return false;
}

 

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">
<h2 >Re-assign this approval</h2>

<g:ui_form>

<tr><td>Re-assign to: </td><td><g:ui_reference name="newUser" table="sys_user" completer="AJAXTableCompleter" columns="first_name" /></td></tr>
<tr><td></td></tr>

<g:dialog_buttons_ok_cancel ok="validateChanges();" cancel="processCancel();" ok_type="button" cancel_type="button" />


</g:ui_form>

</j:jelly>

 

CLIENT SCRIPT - 

function validateChanges(){

var user = gel("newUser").value;
var id = gel('sys_uniqueValue').value;
GlideDialogWindow.get().destroy();
var ga = new GlideAjax('reAssignApprover');
ga.addParam('sysparm_name', 'reAssign');
ga.addParam('sysparm_user', user);
ga.addParam('sysparm_id', id);
ga.getXML();
}

function processCancel(){
GlideDialogWindow.get().destroy();
}

 

SCRIPT INCLUDE: 

var reAssignApprover = Class.create();
reAssignApprover.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

reAssign: function(){
var user = this.getParameter('sysparm_user');
var id = this.getParameter('sysparm_id');
var gr = new GlideRecord('sysapproval_approver');
gr.get(id);
gr.query();
while(gr.next()){
gr.setValue('approver',user);
gr.update();
}
gs.addInfoMessage('This approval record has been re-assigned');
},

type: 'reAssignApprover'
});

 

Hope this helps. let me know if you still need some help. 

 

View solution in original post

25 REPLIES 25

Shivi4
Tera Contributor

 

Inactive_User
 
I have tried (accepted solution script) this source code and complete solution but  both the button (ok and cancel) is not working nothing happened.
I have attached the pop-up reassign dialog box.
please let me know if anyone have the solution on this.