Name
sn_openframe.OpenFrameAjaxUtility
Description
Ajax Helper for Open Frame
Script
var OpenFrameAjaxUtility = Class.create();
OpenFrameAjaxUtility.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
checkAccessOpenframe: function() {
var showFrame = GlidePluginManager.isActive('com.sn_openframe') && gs.hasRole('sn_openframe_user');
return showFrame ? {
showFrame: showFrame,
config: (new global.JSON()).decode(this.getOpenFrameConfiguration()).config
} : {};
},
getOpenFrameConfiguration: function() {
var ofSettings = {};
var flag = false;
var settings = new GlideRecord('sn_openframe_configuration');
var user = gs.getUser();
settings.addQuery('active', true);
settings.orderBy('order');
settings.query();
whileloop:
while (settings.next()) {
var groupIDs = settings.getValue('user_group');
if (groupIDs) {
var groupID = groupIDs.split(',');
for (var i = 0; i < groupID.length; i++) {
if (user.isMemberOf(groupID[i])) {
flag = true;
break whileloop;
}
}
} else {
flag = true;
break whileloop;
}
}
if (flag) {
var config = {
title: settings.getValue('title'),
subTitle: settings.getValue('subtitle'),
titleIcon: settings.getValue('title_icon'),
url: settings.getValue('url'),
height: settings.getValue('height'),
width: settings.getValue('width'),
configuration: settings.getValue('configuration'),
collapsedViewEnabled: settings.getDisplayValue('collapsed_view_enabled'),
allow: gs.getProperty('sn_openframe.cross.origin.access', ''),
navIconClass: settings.getValue('icon_class')
};
ofSettings["config"] = config;
}
return this.encodeJson(ofSettings);
},
setUserPreference: function(name, value) {
name = this.getParameter('name') || name;
value = this.getParameter('value') || value;
gs.getUser().savePreference(name, value);
return [];
},
getUserPreference: function(name) {
var result = {};
name = this.getParameter('name') || name;
result[name] = gs.getUser().getPreference(name) || "";
return this.encodeJson(result);
},
getUserGroup: function() {
var gr = new GlideRecord('sys_user_group');
gr.addActiveQuery();
gr.query();
while (gr.next()) {
answer.add(gr.getValue('sys_id'), gr.getValue('name'));
}
},
updateAgentPresence: function(state) {
state = this.getParameter('state') || state;
var agent = gs.getUserID();
var gr = new GlideRecord("sn_openframe_agent_presence");
gr.addQuery("agent", agent);
gr.query();
if (gr.next()) {
gr.setValue("presence", state);
gr.update();
} else {
var grNew = new GlideRecord("sn_openframe_agent_presence");
grNew.initialize();
grNew.setValue("agent", agent);
grNew.setValue("presence", state);
grNew.insert();
}
return [];
},
getGlideRecordData: function() {
var json = new global.JSON();
var table_name;
var items = [];
var result = this.newItem("result");
var input = JSON.parse(this.getParameter("input"));
var resultItems = [];
for (var i = 0; i < input.length; i++) {
table_name = input[i].sysparm_table_name;
var sys_id = input[i].sysparm_sys_id;
var fields = input[i].sysparm_fields ? input[i].sysparm_fields.split(",") : [];
var gr = new GlideRecordSecure(table_name);
if (!gr.get(sys_id)) {
result.setAttribute("error", "NOT_FOUND");
return;
}
for (var j = 0; j < fields.length; j++) {
var field = fields[j];
if (!field)
continue;
try {
var el = gr.getElement(field);
if (el) {
var item = {};
item.field = field;
item.sys_id = gr.getValue(field);
item.value = gr.getDisplayValue(field);
if (field == "account")
item.label = el.getRefRecord().getLabel();
items.push(item);
}
} catch (ex) {
gs.info("OpenFrameAjaxUtility.getGlideRecordData : " + ex.message);
}
}
resultItems.push({
"tableName": table_name,
"items": items
});
}
result.setAttribute("items", json.encode(resultItems));
},
createInteractionWithPropertyCheck: function() {
var context = JSON.parse(this.getParameter('context'));
var result = new sn_openframe.OpenframeInteractionUtility().createInteractionWithPropertyCheck(context);
var response = this.newItem("result");
response.setAttribute("data", JSON.stringify(result));
return result;
},
encodeJson: function(object) {
/*JSLint assumes you're client-side; however, JSON is a Script Include server-side and hence
throws the error "Do not use JSON as a constructor". To fix the error using the following*/
var SNJSON = global.JSON;
var jsonResponse = new SNJSON().encode(object);
return jsonResponse;
},
type: 'OpenFrameAjaxUtility'
});
Sys ID
6a988971c310020095ccd02422d3ae71