From 6e50301da5a70f554e3b4aa12ed6c561f72ca07b Mon Sep 17 00:00:00 2001 From: kjac Date: Sun, 11 May 2014 10:39:12 +0200 Subject: [PATCH] Issue #116: Add RegEx validation support Add RegEx validation for the individual properties in a fieldset as proposed in issue #116 --- .../Models/ArchetypePreValueProperty.cs | 5 ++++- app/directives/archetypeproperty.js | 20 +++++++++++++++---- app/langs/da-dk.js | 1 + app/langs/de-de.js | 1 + app/langs/en-gb.js | 1 + app/langs/en-us.js | 1 + app/langs/es-es.js | 1 + app/langs/fr-fr.js | 1 + app/langs/he-il.js | 1 + app/langs/it-it.js | 1 + app/langs/ja-jp.js | 1 + app/langs/ko-kr.js | 1 + app/langs/nb-no.js | 1 + app/langs/nl-nl.js | 1 + app/langs/pl-pl.js | 1 + app/langs/pt-br.js | 1 + app/langs/ru-ru.js | 1 + app/langs/sv-se.js | 1 + app/langs/zh-cn.js | 1 + app/views/archetype.config.html | 4 ++++ 20 files changed, 41 insertions(+), 5 deletions(-) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs index e287187..9031e8b 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValueProperty.cs @@ -30,6 +30,9 @@ namespace Archetype.Models public string Value { get; set; } [JsonProperty("required")] - public bool Required { get; set; } + public bool Required { get; set; } + + [JsonProperty("regEx")] + public bool RegEx { get; set; } } } \ No newline at end of file diff --git a/app/directives/archetypeproperty.js b/app/directives/archetypeproperty.js index 43ff2e7..3e559aa 100644 --- a/app/directives/archetypeproperty.js +++ b/app/directives/archetypeproperty.js @@ -97,10 +97,22 @@ angular.module("umbraco.directives").directive('archetypeProperty', function ($c property.isValid = true; var propertyConfig = getPropertyByAlias(configFieldsetModel, property.alias); - if(propertyConfig && propertyConfig.required && (property.value == null || property.value === "")){ - fieldset.isValid = false; - property.isValid = false; - valid = false; + if (propertyConfig) { + if(propertyConfig.required && (property.value == null || property.value === "")) { + fieldset.isValid = false; + property.isValid = false; + valid = false; + } + // issue 116: RegEx validate property value + // Only validate the property value if anything has been entered - RegEx is considered a supplement to "required". + if (valid == true && propertyConfig.regEx && property.value) { + var regEx = new RegExp(propertyConfig.regEx); + if (regEx.test(property.value) == false) { + fieldset.isValid = false; + property.isValid = false; + valid = false; + } + } } }); }); diff --git a/app/langs/da-dk.js b/app/langs/da-dk.js index 923133f..2203673 100644 --- a/app/langs/da-dk.js +++ b/app/langs/da-dk.js @@ -27,6 +27,7 @@ "defaultValue": "Standard værdi", "dataType": "Datatype", "required": "Påkrævet", + "regEx": "RegEx validering", "properties": "Egenskaber", "labelTemplate": "Label skabelon", "select": "Vælg", diff --git a/app/langs/de-de.js b/app/langs/de-de.js index 7446d25..00aaaf6 100644 --- a/app/langs/de-de.js +++ b/app/langs/de-de.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/en-gb.js b/app/langs/en-gb.js index 7f0fe80..404398f 100644 --- a/app/langs/en-gb.js +++ b/app/langs/en-gb.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/en-us.js b/app/langs/en-us.js index 7446d25..00aaaf6 100644 --- a/app/langs/en-us.js +++ b/app/langs/en-us.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/es-es.js b/app/langs/es-es.js index 7446d25..00aaaf6 100644 --- a/app/langs/es-es.js +++ b/app/langs/es-es.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/fr-fr.js b/app/langs/fr-fr.js index 7446d25..00aaaf6 100644 --- a/app/langs/fr-fr.js +++ b/app/langs/fr-fr.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/he-il.js b/app/langs/he-il.js index 7446d25..00aaaf6 100644 --- a/app/langs/he-il.js +++ b/app/langs/he-il.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/it-it.js b/app/langs/it-it.js index 7446d25..00aaaf6 100644 --- a/app/langs/it-it.js +++ b/app/langs/it-it.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/ja-jp.js b/app/langs/ja-jp.js index 7446d25..00aaaf6 100644 --- a/app/langs/ja-jp.js +++ b/app/langs/ja-jp.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/ko-kr.js b/app/langs/ko-kr.js index 7446d25..00aaaf6 100644 --- a/app/langs/ko-kr.js +++ b/app/langs/ko-kr.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/nb-no.js b/app/langs/nb-no.js index 7446d25..00aaaf6 100644 --- a/app/langs/nb-no.js +++ b/app/langs/nb-no.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/nl-nl.js b/app/langs/nl-nl.js index 7446d25..00aaaf6 100644 --- a/app/langs/nl-nl.js +++ b/app/langs/nl-nl.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/pl-pl.js b/app/langs/pl-pl.js index 7446d25..00aaaf6 100644 --- a/app/langs/pl-pl.js +++ b/app/langs/pl-pl.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/pt-br.js b/app/langs/pt-br.js index 7446d25..00aaaf6 100644 --- a/app/langs/pt-br.js +++ b/app/langs/pt-br.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/ru-ru.js b/app/langs/ru-ru.js index 7446d25..00aaaf6 100644 --- a/app/langs/ru-ru.js +++ b/app/langs/ru-ru.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/sv-se.js b/app/langs/sv-se.js index 7446d25..00aaaf6 100644 --- a/app/langs/sv-se.js +++ b/app/langs/sv-se.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/langs/zh-cn.js b/app/langs/zh-cn.js index 7446d25..00aaaf6 100644 --- a/app/langs/zh-cn.js +++ b/app/langs/zh-cn.js @@ -27,6 +27,7 @@ "defaultValue": "Default Value", "dataType": "DataType", "required": "Required", + "regEx": "RegEx Validation", "properties": "Properties", "labelTemplate": "Label Template", "select": "Select", diff --git a/app/views/archetype.config.html b/app/views/archetype.config.html index 5f769b1..cebb76c 100644 --- a/app/views/archetype.config.html +++ b/app/views/archetype.config.html @@ -64,6 +64,10 @@ +
+ + +