How to edit 'Copy Change' UI Action
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-16-2016 04:25 AM
Hi Experts,
I am working on Change management and want to modify 'Copy Change' UI Action
As per the requirement I want to copy two custom fields which i added added in the form. But I am not getting where to add the code in the UI Action. I checked the script include ChangeUtils. But not getting it.
Please help where i can modify.
Below is the UI Action:
function OnCopyChangeClick() {
function addParam(form, name, val) {
var inp = cel('textarea', form);
inp.name = name;
inp.value = val;
}
var srcSysId = g_form.getUniqueValue();
var ga = new GlideAjax('ChangeUtils');
ga.addParam('sysparm_name', 'getChangeQueryParams');
ga.addParam('sysparm_src_sysid', srcSysId);
ga.setWantSessionMessages(true);
ga.getXMLAnswer(function (queryParam) {
if (queryParam) {
var gotoUrl = [];
gotoUrl.push('srcSysID=' + srcSysId);
gotoUrl.push('newSysID=$sys_id');
gotoUrl.push('sysparm_returned_action=$action');
gotoUrl = 'CopyChangeRelatedLists.do?' + gotoUrl.join('&');
var form = cel('form', document.body);
hide(form);
form.method = "POST";
form.action = g_form.getTableName() + ".do";
if (typeof g_ck != 'undefined' && g_ck != "")
addParam(form, 'sysparm_ck', g_ck);
addParam(form, 'sys_id', '-1');
addParam(form, 'sysparm_query', queryParam);
addParam(form, 'sysparm_goto_url', gotoUrl);
form.submit();
}
});
}
Below is the Script Includes:
var ChangeUtils = Class.create();
ChangeUtils.prototype = Object.extendsObject(ChangeUtilsSNC, {
initialize: function(request, responseXML, gc) {
ChangeUtilsSNC.prototype.initialize.call(this, request, responseXML, gc);
},
/***************************
*
*Add customer changes below
*
****************************/
type: 'ChangeUtils'
});
/********************************************************************
*The function below is written in this way to provide access via the
*signature ChangeUtils.isCopyChangeEnabled() from UI Action -
*'Copy Change' > Condition.
*
*Customers are suggested to override methods inside the body of
*ChangeUtils' object definition.
********************************************************************/
ChangeUtils.isCopyChangeEnabled = function(current) {
var changeUtils = new ChangeUtils();
if (changeUtils.isCopyFlagValid() && changeUtils.isCopyRulesValid(current)) {
return true;
} else {
return false;
}
};
Thanks & Regards,
Bhoomika Bisht
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-16-2016 04:50 AM
Hi Bhoomika,
In Client script side :
var ga = new GlideAjax('ChangeUtils'); // ChangeUtils is your script include name
ga.addParam('sysparm_name', 'getChangeQueryParams'); // getChangeQueryParams is function name
ga.addParam('sysparm_src_sysid', srcSysId);
---you can add your code here like this ---
ga.addParam('sysparm_newvalue', your field name);
ga.addParam(sysparm_newvalue1', your field name 1);
ga.setWantSessionMessages(true);
ga.getXMLAnswer(function (queryParam) {
if (queryParam) {
var gotoUrl = [];
gotoUrl.push('srcSysID=' + srcSysId);
gotoUrl.push('your field name=' + serversidevalue);
gotoUrl.push('your field name=' + serversidevalue 1);
gotoUrl.push('newSysID=$sys_id');
gotoUrl.push('sysparm_returned_action=$action');
gotoUrl = 'CopyChangeRelatedLists.do?' + gotoUrl.join('&');
var form = cel('form', document.body);
hide(form);
form.method = "POST";
form.action = g_form.getTableName() + ".do";
if (typeof g_ck != 'undefined' && g_ck != "")
addParam(form, 'sysparm_ck', g_ck);
addParam(form, 'sys_id', '-1');
addParam(form, 'sysparm_query', queryParam);
addParam(form, 'sysparm_goto_url', gotoUrl);
form.submit();
}
});
}
Thanks.
Hope this might be helpfull. Please correct me if I am wrong
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-16-2016 05:08 AM
Already checked that and have given the code above.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-20-2016 09:27 PM
Hi Bhoomika,
I needed to add a comment in 'work notes' to say where the copied change is originating from and setting a custom field to a specific value.
Below coding in bold did do it for me 🙂
---------------------------------------------------------------------------------------------------------------
function OnCopyChangeClick() {
var changeID = g_form.getValue('number');
var param1 = '^u_retrospective_change=no';
var param2 = '^work_notes=This Change duplicated from: '+ changeID;
function addParam(form, name, val) {
var inp = cel('textarea', form);
inp.name = name;
inp.value = val;
}
var srcSysId = g_form.getUniqueValue();
var ga = new GlideAjax('ChangeUtils');
ga.addParam('sysparm_name', 'getChangeQueryParams');
ga.addParam('sysparm_src_sysid', srcSysId);
ga.setWantSessionMessages(true);
ga.getXMLAnswer(function (queryParam) {
if (queryParam) {
var gotoUrl = [];
gotoUrl.push('srcSysID=' + srcSysId);
gotoUrl.push('newSysID=$sys_id');
gotoUrl.push('sysparm_returned_action=$action');
gotoUrl = 'CopyChangeRelatedLists.do?' + gotoUrl.join('&');
var form = cel('form', document.body);
hide(form);
form.method = "POST";
form.action = g_form.getTableName() + ".do";
if (typeof g_ck != 'undefined' && g_ck != "")
addParam(form, 'sysparm_ck', g_ck);
addParam(form, 'sys_id', '-1');
addParam(form, 'sysparm_query', queryParam + param1 + param2);
addParam(form, 'sysparm_goto_url', gotoUrl);
form.submit();
}
});
}
---------------------------------------------------------------------------------------------------------------
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-09-2021 01:35 PM
Absolutely brilliant. My brain was bleeding after spending hours on this. I was in the right area and had the right idea but could not implement it. Thank you so much for this.