Use JSON.parse in favor of eval()
This commit is contained in:
@@ -4,9 +4,9 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio
|
||||
//console.log($scope.model.value);
|
||||
|
||||
//define empty items
|
||||
var newPropertyModel = '{alias: "", remove: false, collapse: false, label: "", helpText: "", view: "", value: "", config: ""}';
|
||||
var newFieldsetModel = '{alias: "", remove: false, collapse: false, labelTemplate: "", tooltip: "", icon: "", label: "", headerText: "", footerText: "", properties:[' + newPropertyModel + ']}';
|
||||
var defaultFieldsetConfigModel = eval("({showAdvancedOptions: false, hideFieldsetToolbar: false, enableMultipleFieldsets: false, hideFieldsetControls: false, hideFieldsetLabels: false, hidePropertyLabel: false, maxFieldsets: null, fieldsets: [" + newFieldsetModel + "]})");
|
||||
var newPropertyModel = '{"alias": "", "remove": false, "collapse": false, "label": "", "helpText": "", "view": "", "value": "", "config": ""}';
|
||||
var newFieldsetModel = '{"alias": "", "remove": false, "collapse": false, "labelTemplate": "", "tooltip": "", "icon": "", "label": "", "headerText": "", "footerText": "", "properties": [' + newPropertyModel + ']}';
|
||||
var defaultFieldsetConfigModel = JSON.parse('{"showAdvancedOptions": false, "hideFieldsetToolbar": false, "enableMultipleFieldsets": false, "hideFieldsetControls": false, "hideFieldsetLabels": false, "hidePropertyLabel": false, "maxFieldsets": null, "fieldsets": [' + newFieldsetModel + ']}');
|
||||
|
||||
//ini the model
|
||||
$scope.model.value = $scope.model.value || defaultFieldsetConfigModel;
|
||||
@@ -164,7 +164,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio
|
||||
|
||||
//handles a fieldset add
|
||||
$scope.addFieldsetRow = function ($index, $event) {
|
||||
$scope.archetypeConfigRenderModel.fieldsets.splice($index + 1, 0, eval("(" + newFieldsetModel + ")"));
|
||||
$scope.archetypeConfigRenderModel.fieldsets.splice($index + 1, 0, JSON.parse(newFieldsetModel));
|
||||
$scope.focusFieldset();
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ angular.module("umbraco").controller("Imulus.ArchetypeConfigController", functio
|
||||
|
||||
//handles a property add
|
||||
$scope.addPropertyRow = function (fieldset, $index) {
|
||||
fieldset.properties.splice($index + 1, 0, eval("(" + newPropertyModel + ")"));
|
||||
fieldset.properties.splice($index + 1, 0, JSON.parse(newPropertyModel));
|
||||
}
|
||||
|
||||
//rather than splice the archetypeConfigRenderModel, we're hiding this and cleaning onFormSubmitting
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
//helper to add an empty fieldset to the render model
|
||||
function getEmptyRenderFieldset (fieldsetModel)
|
||||
{
|
||||
return eval("({ alias: '" + fieldsetModel.alias + "', remove: false, properties: []})");
|
||||
return JSON.parse('{"alias": "' + fieldsetModel.alias + '", "remove": false, "properties": []}');
|
||||
}
|
||||
|
||||
//helper for validation
|
||||
|
||||
@@ -17,6 +17,31 @@
|
||||
}
|
||||
}
|
||||
|
||||
//helper that returns a JS ojbect from 'value' string or the original string
|
||||
function jsonOrString(value, developerMode, debugLabel){
|
||||
if(value && typeof value == 'string'){
|
||||
try{
|
||||
if(developerMode == '1'){
|
||||
console.log("Trying to parse " + debugLabel + ": " + value);
|
||||
}
|
||||
value = JSON.parse(value);
|
||||
}
|
||||
catch(exception)
|
||||
{
|
||||
if(developerMode == '1'){
|
||||
console.log("Failed to parse " + debugLabel + ".");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(value && developerMode == '1'){
|
||||
console.log(debugLabel + " post-parsing: ");
|
||||
console.log(value);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
var linker = function (scope, element, attrs) {
|
||||
|
||||
var configFieldsetModel = getFieldsetByAlias(scope.archetypeConfig.fieldsets, scope.fieldset.alias);
|
||||
@@ -28,44 +53,10 @@
|
||||
var defaultValue = configFieldsetModel.properties[scope.propertyConfigIndex].value;
|
||||
|
||||
//try to convert the config to a JS object
|
||||
if(config && typeof config == 'string'){
|
||||
try{
|
||||
if(scope.archetypeConfig.developerMode == '1'){
|
||||
console.log("Trying to eval config: " + config);
|
||||
}
|
||||
config = eval("(" + config + ")");
|
||||
}
|
||||
catch(exception)
|
||||
{
|
||||
if(scope.archetypeConfig.developerMode == '1'){
|
||||
console.log("Failed to eval config.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(config && scope.archetypeConfig.developerMode == '1'){
|
||||
console.log("Config post-eval: " + config);
|
||||
}
|
||||
config = jsonOrString(config, scope.archetypeConfig.developerMode, "config");
|
||||
|
||||
//try to convert the defaultValue to a JS object
|
||||
if(defaultValue && typeof defaultValue == 'string'){
|
||||
try{
|
||||
if(scope.archetypeConfig.developerMode == '1'){
|
||||
console.log("Trying to eval default value: " + defaultValue);
|
||||
}
|
||||
defaultValue = eval("(" + defaultValue + ")");
|
||||
}
|
||||
catch(exception)
|
||||
{
|
||||
if(scope.archetypeConfig.developerMode == '1'){
|
||||
console.log("Failed to eval defaultValue.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(defaultValue && scope.archetypeConfig.developerMode == '1'){
|
||||
console.log("Default value post-eval: " + defaultValue);
|
||||
}
|
||||
defaultValue = jsonOrString(defaultValue, scope.archetypeConfig.developerMode, "defaultValue");
|
||||
|
||||
if (view)
|
||||
{
|
||||
@@ -87,7 +78,7 @@
|
||||
|
||||
if (!renderModelPropertyIndex)
|
||||
{
|
||||
scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties.push(eval("({alias: '" + alias + "', value:'" + defaultValue + "'})"));
|
||||
scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties.push(JSON.parse('{"alias": "' + alias + '", "value": "' + defaultValue + '"}'));
|
||||
renderModelPropertyIndex = getPropertyIndexByAlias(scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties, alias);
|
||||
}
|
||||
scope.model.value = scope.archetypeRenderModel.fieldsets[scope.fieldsetIndex].properties[renderModelPropertyIndex].value;
|
||||
|
||||
Reference in New Issue
Block a user