UI action is not working

Renukas3
Tera Contributor

UI action : Delete

Table : CMDB

 

Condition : current.isValidRecord() && current.canDelete() && JSUtil.nil(RP.getParameterValue("sysparm_changeset")) && gs.hasRole("sita_cmdb_asset_admins")

 

Code : 

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


Please advise on above code which is not working as expected.

3 REPLIES 3

Ankur Bawiskar
Tera Patron

@Renukas3 

is this an OOB code?

Renukas3
Tera Contributor

@Renukas3 

was this working fine earlier?

Did you recently upgrade?

Did someone customized it and it broke the UI action?

From where are you testing this native or workspace?