Overwriting OOB delete form button (scoped application)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-15-2019 12:46 AM
Hi Community,
I have tried to overwrite the default global delete form button without luck. In a scoped application I'm using 'sysverb_delete' on a UI Action to change the button, and that part works fine (see screenshot).
In terms of functionality, I have simply just copied the script from the Global Delete UI Action, but whenever I click the button nothing happens. I can't seem to find out what is missing in the script...
Global Delete script below:
var ajaxHelper;
var objSysId;
var tblName;
var dlg;
var returnUrl;
var fromRelList;
var module;
var listQuery;
var stackName = null;
var gotoUrl = null;
function confirmAndDeleteFromForm() {
objSysId = g_form.getUniqueValue();
tblName = g_form.getTableName();
fromRelList = g_form.getParameter('sysparm_from_related_list');
module = g_form.getParameter('sysparm_userpref_module');
listQuery = g_form.getParameter('sysparm_record_list');
stackName = g_form.getParameter('sysparm_nameofstack');
gotoUrl = g_form.getParameter('sysparm_goto_url');
ajaxHelper = new GlideAjax('DeleteRecordAjax');
ajaxHelper.addParam('sysparm_name', 'getCascadeDeleteTables');
ajaxHelper.addParam('sysparm_obj_id', objSysId);
ajaxHelper.addParam('sysparm_table_name', tblName);
ajaxHelper.addParam('sysparm_nameofstack', stackName);
ajaxHelper.setWantSessionMessages(false);
if (gotoUrl && gotoUrl != "")
ajaxHelper.addParam('sysparm_goto_url', setRedirectFields(gotoUrl));
ajaxHelper.getXMLAnswer(getCascadeDelTablesDoneForm.bind(this), null, null);
}
function getCascadeDelTablesDoneForm(answer, s) {
var ansrArray = answer.split(';');
returnUrl = ansrArray[0];
var objList = ansrArray[2];
var dialogClass = window.GlideModal ? GlideModal : GlideDialogWindow;
dlg = new dialogClass('delete_confirm_form');
dlg.setTitle(new GwtMessage().getMessage('Confirmation'));
if(objList == null) {
dlg.setWidth(275);
} else {
dlg.setWidth(450);
}
dlg.setPreference('sysparm_obj_id', objSysId);
dlg.setPreference('sysparm_table_name', tblName);
dlg.setPreference('sysparm_delobj_list', objList);
dlg.setPreference('sysparm_parent_form', this);
switch (tblName) {
case 'cmn_notif_device':
dlg.setPreference('sysparm_msg_override', 'Delete this channel?');
dlg.setPreference('sysparm_cascade_msg_override', 'Deleting this channel will result in the automatic deletion of the following related records:');
break;
case 'cmn_notif_message':
dlg.setPreference('sysparm_msg_override', 'Delete these conditions?');
dlg.setPreference('sysparm_cascade_msg_override', 'Deleting these conditions will result in the automatic deletion of the following related records:');
break;
case 'sys_notif_subscription':
dlg.setPreference('sysparm_msg_override', 'Delete this notification?');
dlg.setPreference('sysparm_cascade_msg_override', 'Deleting this notification will result in the automatic deletion of the following related records:');
break;
}
dlg.render();
}
function deleteCompleted() {
dlg.destroy();
var w = getTopWindow();
cbField = w.document.getElementById('glide_dialog_form_target_' + tblName);
if(cbField != null) {
// this is a dialog form, make sure the completion callback is called
cbField.value = 'sysverb_delete:' + objSysId;
cbField.onchange();
// dismiss the dialog form
var elem = window.parent.document.getElementById('body_FormDialog');
if (elem)
new GlideWindow().locate(elem).destroy();
} else {
// this is a regular form, use the return URL to back to the correct view, where possible
if (returnUrl != 'null') {
window.location.href = returnUrl;
} else {
// this is just the default case, in case everything else blows up, should never happen!
window.location.href = window.location.protocol + '//' + window.location.host + '/' + tblName + '_list.do?sysparm_userpref_module=' + module + '&sysparm_query=' + listQuery + '&sysparm_cancelable=true';
}
}
}
// this logic is similar to that in RedirectTransaction.setRedirectURL
function setRedirectFields(gotoURL) {
if (gotoURL.indexOf('$sys_id') > -1)
gotoURL = gotoURL.replace(/\$sys_id/g, g_form.getUniqueValue());
if (gotoURL.indexOf('$action') > -1)
gotoURL = gotoURL.replace(/\$action/g, 'sysverb_delete');
if (gotoURL.indexOf('$display_value') > -1)
gotoURL = gotoURL.replace(/\$display_value/g, g_form.getDisplayValue());
return gotoURL;
}
Any help would be much appreciated.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-15-2019 02:09 AM
Hi fredjo,
Can you please comment out the Switch section in the function 'getCascadeDelTablesDoneForm' and try again? I believe it is not even executing till the line dlg.render().
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-15-2019 02:21 AM
I have now tried to comment out the switch section, but the result is the same. Nothing happens or renders when push the delete button.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-15-2019 01:15 AM
yes
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-05-2019 12:58 PM
Did you ever figure this out? We are seeing the same issue within the Task Communication Management, allowing our non-admins to be able to delete part of a plan definition. It feels like a scope issue, but haven't found the specific issue yet.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2025 03:20 AM
I am seeing the same issue, did anyone ever figure this out?
I hope this helps.Please mark correct/helpful based on impact