From 509dbf6bf75ba2bf07fa2d83fe30cddc01be18d6 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 30 Oct 2014 13:59:00 -0700 Subject: [PATCH] Adding token support custom validation messages. --- .../Orchard.DynamicForms/Services/ValidationRule.cs | 7 +++++++ .../Services/ValidationRuleFactory.cs | 9 ++++++++- .../Orchard.DynamicForms/ValidationRules/Compare.cs | 2 +- .../Orchard.DynamicForms/ValidationRules/EmailAddress.cs | 5 +++-- .../Orchard.DynamicForms/ValidationRules/Mandatory.cs | 2 +- .../ValidationRules/RegularExpression.cs | 5 +++-- .../Orchard.DynamicForms/ValidationRules/Required.cs | 2 +- .../Orchard.DynamicForms/ValidationRules/StringLength.cs | 2 +- 8 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRule.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRule.cs index 19b2bb869..699059c3b 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRule.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRule.cs @@ -1,9 +1,16 @@ using Orchard.DynamicForms.Services.Models; +using Orchard.Localization; +using Orchard.Tokens; namespace Orchard.DynamicForms.Services { public abstract class ValidationRule : Component, IValidationRule { public string ErrorMessage { get; set; } public abstract void Validate(ValidateInputContext context); public virtual void RegisterClientAttributes(RegisterClientValidationAttributesContext context) { } + public ITokenizer Tokenizer { get; set; } + + protected string Tokenize(string errorMessage, ValidationContext context) { + return Tokenizer.Replace(errorMessage, null); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRuleFactory.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRuleFactory.cs index ed84cdefa..06f323b3d 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRuleFactory.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Services/ValidationRuleFactory.cs @@ -1,7 +1,13 @@ using System; +using Orchard.Tokens; namespace Orchard.DynamicForms.Services { public class ValidationRuleFactory : Component, IValidationRuleFactory { + private readonly ITokenizer _tokenizer; + public ValidationRuleFactory(ITokenizer tokenizer) { + _tokenizer = tokenizer; + } + public TRule Create(Action setup = null) where TRule : ValidationRule, new() { return Create(errorMessage: null, setup: setup); } @@ -10,7 +16,8 @@ namespace Orchard.DynamicForms.Services { var rule = new TRule { T = T, Logger = Logger, - ErrorMessage = errorMessage + ErrorMessage = errorMessage, + Tokenizer = _tokenizer }; if (setup != null) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Compare.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Compare.cs index 6ddd2c2c6..b9a195df1 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Compare.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Compare.cs @@ -22,7 +22,7 @@ namespace Orchard.DynamicForms.ValidationRules { } private LocalizedString GetValidationMessage(ValidationContext context) { - return T(ErrorMessage.WithDefault("{0} must match the value of {1}."), context.FieldName, TargetName); + return T(Tokenize(ErrorMessage.WithDefault(String.Format("{0} must match the value of {1}.", context.FieldName, TargetName)), context)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/EmailAddress.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/EmailAddress.cs index 8a4fdc542..68744f43e 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/EmailAddress.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/EmailAddress.cs @@ -1,4 +1,5 @@ -using System.Text.RegularExpressions; +using System; +using System.Text.RegularExpressions; using Orchard.DynamicForms.Helpers; using Orchard.DynamicForms.Services; using Orchard.DynamicForms.Services.Models; @@ -27,7 +28,7 @@ namespace Orchard.DynamicForms.ValidationRules { } private LocalizedString GetValidationMessage(ValidationContext context) { - return T(ErrorMessage.WithDefault("{0} is not a valid email address."), context.FieldName, Pattern); + return T(Tokenize(ErrorMessage.WithDefault(String.Format("{0} is not a valid email address.", context.FieldName)), context)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Mandatory.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Mandatory.cs index 3e8bcee6c..94c6c35bc 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Mandatory.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Mandatory.cs @@ -18,7 +18,7 @@ namespace Orchard.DynamicForms.ValidationRules { } private LocalizedString GetValidationMessage(ValidationContext context) { - return T(ErrorMessage.WithDefault("{0} is a mandatory field."), context.FieldName); + return T(Tokenize(ErrorMessage.WithDefault(String.Format("{0} is a mandatory field.", context.FieldName)), context)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/RegularExpression.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/RegularExpression.cs index a0b265d2a..72c3f6100 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/RegularExpression.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/RegularExpression.cs @@ -1,4 +1,5 @@ -using System.Text.RegularExpressions; +using System; +using System.Text.RegularExpressions; using Orchard.DynamicForms.Helpers; using Orchard.DynamicForms.Services; using Orchard.DynamicForms.Services.Models; @@ -26,7 +27,7 @@ namespace Orchard.DynamicForms.ValidationRules { } private LocalizedString GetValidationMessage(ValidationContext context) { - return T(ErrorMessage.WithDefault("{0} must match the following pattern: {1}."), context.FieldName, Pattern); + return T(Tokenize(ErrorMessage.WithDefault(String.Format("{0} must match the following pattern: {1}.", context.FieldName, Pattern)), context)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Required.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Required.cs index aedba382e..fee4900d0 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Required.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/Required.cs @@ -18,7 +18,7 @@ namespace Orchard.DynamicForms.ValidationRules { } private LocalizedString GetValidationMessage(ValidationContext context) { - return T(ErrorMessage.WithDefault("{0} is a required field."), context.FieldName); + return T(Tokenize(ErrorMessage.WithDefault(String.Format("{0} is a required field.", context.FieldName)), context)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/StringLength.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/StringLength.cs index 5af12effd..fd1dcd40d 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/StringLength.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/ValidationRules/StringLength.cs @@ -41,7 +41,7 @@ namespace Orchard.DynamicForms.ValidationRules { private LocalizedString GetValidationMessage(ValidationContext context) { if (!String.IsNullOrWhiteSpace(ErrorMessage)) - return T(ErrorMessage, context.FieldName, Minimum, Maximum); + return T(Tokenize(String.Format(ErrorMessage, context.FieldName, Minimum, Maximum), context)); if(Minimum != null && Maximum != null) return T("{0} must be between {1} and {2} characters long.", context.FieldName, Minimum, Maximum);