Maintaining EmailField state after postback and adding default value field.

This commit is contained in:
Sipke Schoorstra
2014-12-01 23:04:52 -08:00
parent 804fef5e3d
commit acd4cdef08
3 changed files with 29 additions and 2 deletions

View File

@@ -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);
}
}
}

View File

@@ -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;
}

View File

@@ -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);