Name
global.SurveyUtilAjax
Description
Make this SI public, and include APIs which are ok for public
Script
var SurveyUtilAjax = Class.create();
SurveyUtilAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
isPublic: function(){
return true;
},
validateMultipleStringFieldsAjax: function() {
return this.validateMultipleStringFields(this.getParameter('stringQAnswerChangeMap'));
},
// stringQAnswerMap: {key:field id or name, {value: field value, validator: field validator})
validateMultipleStringFields: function(stringQAnswerMap) {
stringQAnswerMap = JSON.parse(stringQAnswerMap);
if (!stringQAnswerMap)
return "";
// build validator array
var validators = [];
Object.keys(stringQAnswerMap).forEach(function(key) {
var validator = stringQAnswerMap[key].validator;
if (validator)
validators.push(validator);
});
// build map of validator with funtion and error msg
var validatorMap = {};
var validatorGr = new GlideRecord("sys_cs_field_script_validator");
if (!validatorGr.isValid())
return "";
validatorGr.addQuery("sys_id", "IN", validators.join());
validatorGr.query();
while (validatorGr.next())
validatorMap[validatorGr.sys_id + ''] = {validateFunc:validatorGr.validator + '', error_message: validatorGr.error_message + ''};
// eval values and build response JSON map
var responseJSON = {};
Object.keys(stringQAnswerMap).forEach(function(key) {
var validatorId = stringQAnswerMap[key].validator;
if (validatorId) {
// DEF0108852: escape new lines introdued in multiline string
var value = stringQAnswerMap[key].value.replace(/\r?\n/g, "\\n");
var validateFunc;
eval("validateFunc=" + validatorMap[validatorId].validateFunc);
var isValidAnswer = (value && typeof validateFunc === 'function') ? validateFunc(value) : true;
responseJSON[key] = {
value: value,
isInvalidString: !isValidAnswer,
fieldValidatorErrorMsg: isValidAnswer ? undefined : validatorMap[validatorId].error_message + ''
};
}
});
return JSON.stringify(responseJSON);
},
type: 'SurveyUtilAjax'
});
Sys ID
ab85817353011010079fddeeff7b1231