diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextAreaDriver.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextAreaDriver.cs index 1ac44aefb..87e5d3939 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextAreaDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextAreaDriver.cs @@ -13,11 +13,12 @@ namespace Orchard.DynamicForms.Drivers { _tokenizer = tokenizer; } - protected override IEnumerable FormNames { - get { - yield return "AutoLabel"; - yield return "TextArea"; - } + protected override EditorResult OnBuildEditor(TextArea element, ElementEditorContext context) { + var autoLabelEditor = BuildForm(context, "AutoLabel"); + var textAreaEditor = BuildForm(context, "TextArea"); + var textAreaValidation = BuildForm(context, "TextAreaValidation", "Validation:10"); + + return Editor(context, autoLabelEditor, textAreaEditor, textAreaValidation); } protected override void DescribeForm(DescribeContext context) { @@ -46,6 +47,44 @@ namespace Orchard.DynamicForms.Drivers { return form; }); + + context.Form("TextAreaValidation", factory => { + var shape = (dynamic)factory; + var form = shape.Fieldset( + Id: "TextAreaValidation", + _IsRequired: shape.Checkbox( + Id: "IsRequired", + Name: "IsRequired", + Title: "Required", + Value: "true", + Description: T("Check to make this text area a required field.")), + _MinimumLength: shape.Textbox( + Id: "MinimumLength", + Name: "MinimumLength", + Title: "Minimum Length", + Classes: new[] { "text", "medium", "tokenized" }, + Description: T("The minimum length required.")), + _MaximumLength: shape.Textbox( + Id: "MaximumLength", + Name: "MaximumLength", + Title: "Maximum Length", + Classes: new[] { "text", "medium", "tokenized" }, + Description: T("The maximum length allowed.")), + _CustomValidationMessage: shape.Textbox( + Id: "CustomValidationMessage", + Name: "CustomValidationMessage", + Title: "Custom Validation Message", + Classes: new[] { "text", "large", "tokenized" }, + Description: T("Optionally provide a custom validation message.")), + _ShowValidationMessage: shape.Checkbox( + Id: "ShowValidationMessage", + Name: "ShowValidationMessage", + Title: "Show Validation Message", + Value: "true", + Description: T("Autogenerate a validation message when a validation error occurs for the current field. Alternatively, to control the placement of the validation message you can use the ValidationMessage element instead."))); + + return form; + }); } protected override void OnDisplaying(TextArea element, ElementDisplayContext context) { diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextFieldDriver.cs index fc4e2a3e6..ac2536182 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextFieldDriver.cs @@ -44,7 +44,7 @@ namespace Orchard.DynamicForms.Drivers { Name: "IsRequired", Title: "Required", Value: "true", - Description: T("Tick this checkbox to make this text field a required field.")), + Description: T("Check to make this text field a required field.")), _MinimumLength: shape.Textbox( Id: "MinimumLength", Name: "MinimumLength", diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/TextArea.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/TextArea.cs index 4fbe2c8b1..5ff0c9683 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/TextArea.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/TextArea.cs @@ -1,4 +1,5 @@ -using Orchard.Layouts.Helpers; +using Orchard.DynamicForms.Validators.Settings; +using Orchard.Layouts.Helpers; namespace Orchard.DynamicForms.Elements { public class TextArea : LabeledFormElement { @@ -11,5 +12,9 @@ namespace Orchard.DynamicForms.Elements { get { return State.Get("Columns").ToInt32(); } set { State["Columns"] = value.ToString(); } } + + public TextAreaValidationSettings ValidationSettings { + get { return State.GetModel(""); } + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj b/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj index 1bbe70750..1da2dec0b 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Orchard.DynamicForms.csproj @@ -187,6 +187,7 @@ + @@ -226,6 +227,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/Settings/TextAreaValidationSettings.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/Settings/TextAreaValidationSettings.cs new file mode 100644 index 000000000..57623e520 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/Settings/TextAreaValidationSettings.cs @@ -0,0 +1,9 @@ +using Orchard.DynamicForms.Services.Models; + +namespace Orchard.DynamicForms.Validators.Settings { + public class TextAreaValidationSettings : ValidationSettingsBase { + public bool? IsRequired { get; set; } + public int? MinimumLength { get; set; } + public int? MaximumLength { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/TextAreaValidator.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/TextAreaValidator.cs new file mode 100644 index 000000000..8d2c7d566 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Validators/TextAreaValidator.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using Orchard.DynamicForms.Elements; +using Orchard.DynamicForms.Services; +using Orchard.DynamicForms.ValidationRules; + +namespace Orchard.DynamicForms.Validators { + public class TextAreaValidator : ElementValidator