- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-17-2016 02:28 PM
Hello,
We have a requirement that once an approval record has been updated (approved/rejected/comments/etc), the window should close if it comes from 'somewhere'. The way that I have been trying to do it is by adding 'sysparm_close_window=true' to the link that sends to the approval (from an email/portal/etc). In a display Business Rule, I look for that parameter and set a g_scratchpad variable 'close_window' to true. Now I am attempting to write an onSubmit Client Script that looks to see if 'close_window' is true, and if so, close the window. The problem that I am running into is that, because the onSubmit client script runs before the UI actions for Approve/Reject, the UI Action scripts never get triggered. I'm also having an issue that basic 'Save' loops the onSubmit script, and asks me if I want to leave the page without saving.
Business Rule:
g_scratchpad.close_window = gs.action.getGlideURI().toString().indexOf('sysparm_close_window=true') != -1;
OnSubmit Client Script:
if(g_scratchpad.close_window){
g_form.submit();
window.top.close();
}
Anyone able to help out with this one?
Thanks,
Brian
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-25-2016 07:44 AM
Hi Berny, the getGlideURI() will not get the parameter because the page has already been navigated away from. I solved the issue by using AJAX in an onSubmit client script to have the form submit, then close. Didn't even need the UI Page . Thanks for the help though!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-25-2016 07:44 AM
Hi Berny, the getGlideURI() will not get the parameter because the page has already been navigated away from. I solved the issue by using AJAX in an onSubmit client script to have the form submit, then close. Didn't even need the UI Page . Thanks for the help though!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-22-2017 09:58 AM
Could you share your script? I am curious on how you achieved that.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-27-2017 08:07 AM
Hey MG - Just saw your comment. Here is the client script
function onSubmit() {
var location = window.location.href;
// we are coming from the portal...lets handle the action here
if(location.indexOf('sysparm_portal=true') > -1){
var ga = new GlideAjax('portalApprovalUtil');
ga.addParam('sysparm_name','approvalAction');
ga.addParam('sysparm_sys_id',g_form.getUniqueValue());
ga.addParam('sysparm_comments',g_form.getValue('comments'));
ga.addParam('sysparm_action', g_form.getActionName());
ga.getXML(parseResponse);
return false; // This will stop the processiong
}
function parseResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer == 'success'){
g_form.modified = false;
window.close();
}else{
g_form.addErrorMessage('An error occured, please contact your administrator');
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-15-2017 03:08 AM
on onSubmit client script just use this : setTimeout(function() { window.open(window.location, '_self').close(); }, 3000);
Hope this will help sombody else if your problem is solved