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 @@ +
+ + +