mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Maintaining EmailField state after postback and adding default value field.
This commit is contained in:
@@ -1,20 +1,41 @@
|
||||
using Orchard.DynamicForms.Elements;
|
||||
using Orchard.Forms.Services;
|
||||
using Orchard.Layouts.Framework.Display;
|
||||
using Orchard.Layouts.Framework.Drivers;
|
||||
using Orchard.Tokens;
|
||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||
|
||||
namespace Orchard.DynamicForms.Drivers {
|
||||
public class EmailFieldDriver : FormsElementDriver<EmailField>{
|
||||
public EmailFieldDriver(IFormManager formManager) : base(formManager) {}
|
||||
private readonly ITokenizer _tokenizer;
|
||||
|
||||
public EmailFieldDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
||||
_tokenizer = tokenizer;
|
||||
}
|
||||
|
||||
protected override EditorResult OnBuildEditor(EmailField element, ElementEditorContext context) {
|
||||
var autoLabelEditor = BuildForm(context, "AutoLabel");
|
||||
var emailFieldEditor = BuildForm(context, "EmailField");
|
||||
var emailFieldValidation = BuildForm(context, "EmailFieldValidation", "Validation:10");
|
||||
|
||||
return Editor(context, autoLabelEditor, emailFieldValidation);
|
||||
return Editor(context, autoLabelEditor, emailFieldEditor, emailFieldValidation);
|
||||
}
|
||||
|
||||
protected override void DescribeForm(DescribeContext context) {
|
||||
context.Form("EmailField", factory => {
|
||||
var shape = (dynamic)factory;
|
||||
var form = shape.Fieldset(
|
||||
Id: "EmailField",
|
||||
_Value: shape.Textbox(
|
||||
Id: "Value",
|
||||
Name: "Value",
|
||||
Title: "Value",
|
||||
Classes: new[] { "text", "medium", "tokenized" },
|
||||
Description: T("The value of this email field.")));
|
||||
|
||||
return form;
|
||||
});
|
||||
|
||||
context.Form("EmailFieldValidation", factory => {
|
||||
var shape = (dynamic)factory;
|
||||
var form = shape.Fieldset(
|
||||
@@ -53,5 +74,9 @@ namespace Orchard.DynamicForms.Drivers {
|
||||
return form;
|
||||
});
|
||||
}
|
||||
|
||||
protected override void OnDisplaying(EmailField element, ElementDisplayContext context) {
|
||||
context.ElementShape.TokenizedValue = _tokenizer.Replace(element.RuntimeValue, null);
|
||||
}
|
||||
}
|
||||
}
|
@@ -8,6 +8,7 @@ using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||
namespace Orchard.DynamicForms.Drivers {
|
||||
public class TextFieldDriver : FormsElementDriver<TextField>{
|
||||
private readonly ITokenizer _tokenizer;
|
||||
|
||||
public TextFieldDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
||||
_tokenizer = tokenizer;
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@
|
||||
|
||||
tagBuilder.AddCssClass("text");
|
||||
tagBuilder.Attributes["type"] = "email";
|
||||
tagBuilder.Attributes["value"] = Model.TokenizedValue;
|
||||
tagBuilder.Attributes["name"] = element.Name;
|
||||
tagBuilder.AddClientValidationAttributes((IDictionary<string, string>)Model.ClientValidationAttributes);
|
||||
|
||||
|
Reference in New Issue
Block a user