diff --git a/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs b/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs index b0dec0d20..24b455019 100644 --- a/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs +++ b/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs @@ -58,28 +58,19 @@ namespace Orchard.Core.Common.Drivers { protected override DriverResult Editor(ContentPart part, TextField field, IUpdateModel updater, dynamic shapeHelper) { - var viewModel = new TextFieldDriverViewModel { - Field = field, - Text = field.Value, - Settings = field.PartFieldDefinition.Settings.GetModel(), - ContentItem = part.ContentItem - }; + var viewModel = new TextFieldDriverViewModel(); if (updater.TryUpdateModel(viewModel, GetPrefix(field, part), null, null)) { - if (viewModel.Settings.Required && string.IsNullOrWhiteSpace(viewModel.Text)) { - updater.AddModelError("Text", T("The field {0} is mandatory", T(field.DisplayName))); - return ContentShape("Fields_Common_Text_Edit", GetDifferentiator(field, part), - () => shapeHelper.EditorTemplate(TemplateName: "Fields.Common.Text.Edit", Model: viewModel, Prefix: GetPrefix(field, part))); - } - - field.Value = viewModel.Text; var settings = field.PartFieldDefinition.Settings.GetModel(); - if (String.IsNullOrEmpty(field.Value) && !String.IsNullOrEmpty(settings.DefaultValue)) { + field.Value = viewModel.Text; + + if (String.IsNullOrWhiteSpace(field.Value) && !String.IsNullOrWhiteSpace(settings.DefaultValue)) { field.Value = settings.DefaultValue; } - else { - field.Value = viewModel.Text; + + if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) { + updater.AddModelError("Text", T("The field {0} is mandatory", T(field.DisplayName))); } } diff --git a/src/Orchard.Web/Core/Common/Views/EditorTemplates/Fields.Common.Text.Edit.cshtml b/src/Orchard.Web/Core/Common/Views/EditorTemplates/Fields.Common.Text.Edit.cshtml index de76c21bb..ad7b3ea1f 100644 --- a/src/Orchard.Web/Core/Common/Views/EditorTemplates/Fields.Common.Text.Edit.cshtml +++ b/src/Orchard.Web/Core/Common/Views/EditorTemplates/Fields.Common.Text.Edit.cshtml @@ -1,13 +1,15 @@ @model Orchard.Core.Common.ViewModels.TextFieldDriverViewModel - +@{ + var isRequired = Model.Settings.Required && String.IsNullOrWhiteSpace(Model.Settings.DefaultValue); +}
@if (String.IsNullOrWhiteSpace(Model.Settings.Flavor)) { - @(Model.Settings.Required ? Html.TextBoxFor(m => m.Text, new {@class = "text", required = "required"}) : Html.TextBoxFor(m => m.Text, new {@class = "text"})) + @(isRequired ? Html.TextBoxFor(m => m.Text, new {@class = "text", required = "required"}) : Html.TextBoxFor(m => m.Text, new {@class = "text"})) @Html.ValidationMessageFor(m => m.Text) } else { - @Display.Body_Editor(Text: Model.Text, EditorFlavor: Model.Settings.Flavor, Required: Model.Settings.Required, ContentItem: Model.ContentItem) + @Display.Body_Editor(Text: Model.Text, EditorFlavor: Model.Settings.Flavor, Required: isRequired, ContentItem: Model.ContentItem) } @if (HasText(Model.Settings.Hint)) { @Model.Settings.Hint diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/TextFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/TextFieldDriver.cs index 6cbe67a56..dfb816aa4 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/TextFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/TextFieldDriver.cs @@ -2,6 +2,7 @@ using Orchard.ContentManagement.Drivers; using Orchard.Core.Common.Fields; using Orchard.Core.Common.Settings; +using Orchard.Localization; using Orchard.Tokens; using System; using System.Collections.Generic; @@ -14,13 +15,20 @@ namespace Orchard.Fields.Drivers { public TextFieldDriver(ITokenizer tokenizer) { _tokenizer = tokenizer; + T = NullLocalizer.Instance; } + public Localizer T { get; set; } + protected override DriverResult Editor(ContentPart part, TextField field, IUpdateModel updater, dynamic shapeHelper) { var settings = field.PartFieldDefinition.Settings.GetModel(); - if (!String.IsNullOrEmpty(settings.DefaultValue) && (String.IsNullOrEmpty(field.Value) || field.Value.Equals(settings.DefaultValue))) { + if (!String.IsNullOrWhiteSpace(settings.DefaultValue) && (String.IsNullOrWhiteSpace(field.Value) || field.Value.Equals(settings.DefaultValue))) { field.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary { { "Content", part.ContentItem } }); + + if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) { + updater.AddModelError("Text", T("The field {0} is mandatory", T(field.DisplayName))); + } } return null;