Name
sn_sow_admin.SOWAdminUtils
Description
No description available
Script
var SOWAdminUtils = Class.create();
SOWAdminUtils.prototype = {
initialize: function() {
this.CONSTANTS = new SOWAdminConstants();
},
// Check if plugin is installed or not
pluginIsInstalled: function(pluginId) {
return new GlidePluginManager().isActive(pluginId);
},
// Generate plugin manager link
generatePluginInstallLink: function(pluginId) {
return "/nav_to.do?uri=$allappsmgmt.do?sysparm_search==" + pluginId;
},
// Add product documentation link for the given plugin
addProductDocLink: function(pluginId) {
var hrefAttributes = 'target="_blank" style="color: RGB(var(--now-text-link--primary--color,var(--now-color--secondary-1,1,119,142)));"';
if (pluginId == "sn_now_teams_it")
return '<a href="api/now/v1/context_doc_url/msteams-integ-sow" ' + hrefAttributes + '>' + gs.getMessage("Product Documentation") + '</a>';
else
return "";
},
// Get the installed store plugin version
getStorePluginVersion: function(pluginId) {
var pluginGR = new GlideRecord("sys_store_app");
pluginGR.addQuery("scope", pluginId);
pluginGR.query();
if (pluginGR.next())
return pluginGR.version.toString();
},
// Get the installed family plugin version
getFamilyPluginVersion: function(pluginId) {
var pluginGR = new GlideRecord("v_plugin");
pluginGR.addQuery("id", pluginId);
pluginGR.query();
if (pluginGR.next())
return pluginGR.version.toString();
},
// Compare version numbers and return true if verion1 >= version2
versionCompare: function(version1, version2) {
var vnum1 = 0,
vnum2 = 0;
for (var i = 0, j = 0;
(i < version1.length || j < version2.length);) {
while (i < version1.length && version1[i] != '.') {
vnum1 = vnum1 * 10 + (version1[i] - '0');
i++;
}
while (j < version2.length && version2[j] != '.') {
vnum2 = vnum2 * 10 + (version2[j] - '0');
j++;
}
if (vnum1 > vnum2)
return true;
if (vnum1 < vnum2)
return false;
vnum1 = 0, vnum2 = 0;
i++;
j++;
}
// Both version numbers are equal
return true;
},
// Set application card button label
setAppButtonLabel: function(pluginId, pluginStatus) {
if (pluginId == "sn_oe_sfs") {
if (pluginStatus) {
var version = this.getStorePluginVersion(pluginId);
if (!gs.nil(version) && this.versionCompare(version, "2.1.5"))
return gs.getMessage("Configure");
else
return gs.getMessage("Update");
} else
return gs.getMessage("Get App");
} else {
return (pluginStatus) ? gs.getMessage("Configure") : gs.getMessage("Get App");
}
},
// Set application card button payload
setAppButtonPayload: function(pluginId, pluginStatus, configRedirectLink) {
if (pluginId == "sn_oe_sfs") {
if (pluginStatus) {
var version = this.getStorePluginVersion(pluginId);
if (!gs.nil(version) && this.versionCompare(version, "2.1.5"))
return configRedirectLink;
}
return this.generatePluginInstallLink(pluginId);
} else {
return (pluginStatus) ? configRedirectLink : this.generatePluginInstallLink(pluginId);
}
},
// Retrieve list of additional related apps in interactive cards list format
getAdditionalSetupList: function() {
var cardsPayloadObj = {};
var cardsList = [];
// Iterate over all entries
var additional_apps_list = this.CONSTANTS.ADDITIONAL_APPS;
for (const app in additional_apps_list) {
if (additional_apps_list.hasOwnProperty(app)) {
var pluginId = additional_apps_list[app]["PLUGIN_ID"];
var pluginStatus = this.pluginIsInstalled(additional_apps_list[app]["PLUGIN_ID"]);
var label = this.setAppButtonLabel(pluginId, pluginStatus);
var obj = this.CONSTANTS.BASE_INTERACTIVE_CARD_OBJECT;
obj.title = additional_apps_list[app]["PLUGIN_NAME"];
obj.image = additional_apps_list[app]["IMAGE"];
obj.button_action_type = additional_apps_list[app]["BUTTON_ACTION_TYPE"];
obj.button_action_payload = this.setAppButtonPayload(pluginId, pluginStatus, additional_apps_list[app]["CONFIG_REDIRECTION_LINK"]);
obj.button_text = label;
obj.button_type = "tertiary";
obj.button_tooltip_label = label + ' ' + additional_apps_list[app]["PLUGIN_NAME"];
obj.highlighted_color = (pluginStatus) ? "info" : "critical";
obj.highlighted_icon = (pluginStatus) ? "circle-check-outline" : "presence-offline-outline";
obj.highlighted_label = (pluginStatus) ? gs.getMessage("Installed") : gs.getMessage("Not installed");
obj.highlighted_variant = "tertiary";
obj.interaction = "none_bordered";
obj.body = '<p>' + additional_apps_list[app]["DESCRIPTION"] + " " + this.addProductDocLink(pluginId) + '</p>';
cardsList.push(JSON.parse(JSON.stringify(obj)));
}
}
cardsPayloadObj.cards_list = cardsList;
return cardsPayloadObj;
},
// Retrieve list of setup elements section in interactive cards list format
getSetupUIElementList: function() {
var cardsPayloadObj = {};
var cardsList = [];
// Iterate over all entries
var setupElements = this.CONSTANTS.SETUP_UI_ELEMENTS;
for (const element in setupElements) {
if (setupElements.hasOwnProperty(element)) {
var name = setupElements[element]["CARD_NAME"];
var obj = this.CONSTANTS.BASE_INTERACTIVE_CARD_OBJECT;
obj.title = name;
obj.interaction = setupElements[element]["INTERACTION"];
obj.interaction_payload = setupElements[element]["INTERACTION_PAYLOAD"];
obj.image = setupElements[element]["IMAGE"];
cardsList.push(JSON.parse(JSON.stringify(obj)));
}
}
cardsPayloadObj.cards_list = cardsList;
return cardsPayloadObj;
},
type: 'SOWAdminUtils'
};
Sys ID
45eb8578eb472110f51bddde23522862