Name
global.linkGenerator
Description
No description available
Script
var linkGenerator = Class.create();
linkGenerator.prototype = {
initialize: function() {},
/**
* Get generated links for a record
* @param links array List of link_generator_mapping sys_id's to get generated links for
* @param recordTable String table name of the record to generate links for
* @param recordSysId String sys_id of the record to generate links for
* @return Array List of generated links for a record
*/
getLinks: function(links, recordTable, recordSysId) {
var grToEvaluate = this._getCurrentRecord(recordTable, recordSysId);
var linksArray = [];
if (!links || !links.length)
return linksArray;
var linkMappingGr = new GlideRecord("link_generator_mapping");
linkMappingGr.addActiveQuery();
linkMappingGr.addQuery("sys_id", "IN", links.join(","));
linkMappingGr.query();
while (linkMappingGr.next()) {
var link = this._createJSONRecord(linkMappingGr, grToEvaluate);
if (link)
linksArray.push(link);
}
return linksArray;
},
getGeneratedURL:function(name){
var linkGeneratorService = new GlideRecord('link_generator_service');
if (linkGeneratorService.get('value', name)) {
var grToEvaluate = this._getCurrentRecord('sys_user', gs.getUserID());
var params = this._getScriptValue(linkGeneratorService.sys_id.toString(), grToEvaluate);
return this._getBaseURL(this._getSourceId(linkGeneratorService.sys_id)) + params;
}
return "";
},
getGeneratedFormURL:function(tableName, recordId, fieldName, fieldValue, name){
var grToEvaluate = this._getCurrentRecord(tableName, recordId, fieldName, fieldValue);
if (!grToEvaluate.canRead() || !grToEvaluate.getElement(fieldName).canRead())
return null;
var linkMapping = new GlideRecord('link_generator_mapping');
linkMapping.addActiveQuery();
linkMapping.addQuery('map_table', tableName);
linkMapping.addQuery('map_field_name', fieldName);
linkMapping.addQuery('link_generator.value', name);
linkMapping.query();
if (linkMapping.next())
return this._createJSONRecord(linkMapping, grToEvaluate).url;
return "";
},
getActiveFormLinks: function(mappedfield, tableRecordSysId, value) {
var tableName = mappedfield.substr(0, mappedfield.indexOf('.'));
var field = mappedfield.substr(mappedfield.indexOf('.') + 1);
var grToEvaluate = this._getCurrentRecord(tableName, tableRecordSysId, field, value);
if (!grToEvaluate.canRead() || !grToEvaluate.getElement(field).canRead())
return null;
var linkMapping = new GlideRecord('link_generator_mapping');
linkMapping.addActiveQuery();
linkMapping.addQuery('map_table', tableName);
linkMapping.addQuery('map_field_name', field);
linkMapping.addQuery('type', 'native_form');
linkMapping.query();
var listOfActivelinks = [];
while (linkMapping.next())
listOfActivelinks.push(this._createJSONRecord(linkMapping, grToEvaluate));
return listOfActivelinks;
},
addAttributesTofield: function(col, table) {
var tableHierarchy = SNC.TableEditor.getTableAncestors(table);
var tables = String(tableHierarchy);
tables = tables.replace(/[\[\]']+/g, '');
var parentTables = tables.split(',');
var baseTable = parentTables[parentTables.length - 1];
new global.updateAttributesLinkGenerator().addAttributesTofield(col, table, parentTables, baseTable);
},
addAttributes: function(col, table) {
new global.updateAttributesLinkGenerator().addAttributesinSysDictionary(col, table);
},
_createJSONRecord: function(linkMapping, grToEvaluate) {
var linkGenerator_sys_id = linkMapping.link_generator.toString();
var parameters = this._getScriptValue(linkGenerator_sys_id, grToEvaluate);
var baseUrl = this._getBaseURL(this._getSourceId(linkGenerator_sys_id));
return {url: baseUrl + parameters, btnName: linkMapping.btn_name.toString()};
},
_getScriptValue: function(linkGenerator_sys_id, grToEvaluate) {
var linkService = new GlideRecord('link_generator_service');
if (linkService.get(linkGenerator_sys_id)) {
var scriptInputs = { current: grToEvaluate};
try {
return String(new GlideScopedEvaluator().evaluateScript(linkService, 'script', scriptInputs));
} catch (err) {
gs.error("Error while evaluating the script " + err);
}
}
return "";
},
_getCurrentRecord: function(tableName, recordId, field, value) {
if (tableName) {
var currentRecord = new GlideRecord(tableName);
if (recordId != -1)
currentRecord.get(recordId);
else
currentRecord.initialize();
if (field && value)
currentRecord.setValue(field, value);
return currentRecord;
}
return "";
},
_getSourceId: function(linkGenerator_sys_id) {
var linkService = new GlideRecord('link_generator_service');
if (linkService.get(linkGenerator_sys_id))
return linkService.system_name.toString();
return "";
},
_getBaseURL: function(sourceId) {
var linkSource = new GlideRecord('link_generator_source');
if (linkSource.get(sourceId))
return linkSource.base_url.toString();
return "";
},
type: 'linkGenerator'
};
Sys ID
b220d4665b2003004bbf8379c0f91aa7