From 2d294fe42161a322bba5fe31840edb264e678912 Mon Sep 17 00:00:00 2001 From: jtkech Date: Fri, 25 Mar 2016 04:13:41 +0100 Subject: [PATCH] Squash --- .../Drivers/NumericFieldDriver.cs | 56 +++++++++---------- .../Fields/Numeric.Edit.cshtml | 29 ++++++++-- 2 files changed, 48 insertions(+), 37 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs index 1fe633346..22d1dbeef 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs @@ -64,47 +64,41 @@ namespace Orchard.Fields.Drivers { var settings = field.PartFieldDefinition.Settings.GetModel(); - if (settings.Required && String.IsNullOrWhiteSpace(viewModel.Value)) { - updater.AddModelError(GetPrefix(field, part), T("The field {0} is mandatory.", T(field.DisplayName))); + if (String.IsNullOrWhiteSpace(viewModel.Value) && !String.IsNullOrWhiteSpace(settings.DefaultValue)) { + viewModel.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary { { "Content", part.ContentItem } }); } - if (!settings.Required && String.IsNullOrWhiteSpace(viewModel.Value)) { - if (settings.DefaultValue != null) { - if (Decimal.TryParse(_tokenizer.Replace(settings.DefaultValue, new Dictionary { { "Content", part.ContentItem } }), NumberStyles.Any, _cultureInfo.Value, out value) - && Math.Round(value, settings.Scale) == value - && !String.IsNullOrEmpty(settings.DefaultValue)) { - field.Value = value; - } - } - else { - field.Value = null; + field.Value = null; + + if (String.IsNullOrWhiteSpace(viewModel.Value)) { + if (settings.Required) { + updater.AddModelError(GetPrefix(field, part), T("The field {0} is mandatory.", T(field.DisplayName))); } } - else if (Decimal.TryParse(viewModel.Value, NumberStyles.Any, _cultureInfo.Value, out value)) { - field.Value = value; + else if (!Decimal.TryParse(viewModel.Value, NumberStyles.Any, _cultureInfo.Value, out value)) { + updater.AddModelError(GetPrefix(field, part), T("{0} or its default value is an invalid number", field.DisplayName)); } else { - updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid number", field.DisplayName)); - field.Value = null; - } - if (settings.Minimum.HasValue && field.Value.HasValue && field.Value.Value < settings.Minimum.Value) { - updater.AddModelError(GetPrefix(field, part), T("The value must be greater than {0}", settings.Minimum.Value)); - } + field.Value = value; - if (settings.Maximum.HasValue && field.Value.HasValue && field.Value.Value > settings.Maximum.Value) { - updater.AddModelError(GetPrefix(field, part), T("The value must be less than {0}", settings.Maximum.Value)); - } - - // checking the number of decimals - if(field.Value.HasValue && Math.Round(field.Value.Value, settings.Scale) != field.Value.Value) { - if(settings.Scale == 0) { - updater.AddModelError(GetPrefix(field, part), T("The field {0} must be an integer", field.DisplayName)); + if (settings.Minimum.HasValue && value < settings.Minimum.Value) { + updater.AddModelError(GetPrefix(field, part), T("The value must be greater than {0}", settings.Minimum.Value)); } - else { - updater.AddModelError(GetPrefix(field, part), T("Invalid number of digits for {0}, max allowed: {1}", field.DisplayName, settings.Scale)); + + if (settings.Maximum.HasValue && value > settings.Maximum.Value) { + updater.AddModelError(GetPrefix(field, part), T("The value must be less than {0}", settings.Maximum.Value)); + } + + // checking the number of decimals + if (Math.Round(value, settings.Scale) != value) { + if (settings.Scale == 0) { + updater.AddModelError(GetPrefix(field, part), T("The field {0} must be an integer", field.DisplayName)); + } + else { + updater.AddModelError(GetPrefix(field, part), T("Invalid number of digits for {0}, max allowed: {1}", field.DisplayName, settings.Scale)); + } } - } } diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Numeric.Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Numeric.Edit.cshtml index baae80d67..00106d60c 100644 --- a/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Numeric.Edit.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Numeric.Edit.cshtml @@ -2,16 +2,33 @@ @using System.Globalization @using Orchard.Fields.Settings; +@{ + var isRequired = Model.Settings.Required && String.IsNullOrWhiteSpace(Model.Settings.DefaultValue); + var hasValue = !String.IsNullOrWhiteSpace(Model.Value); + + var attributes = new Dictionary(); + attributes.Add("class", "text-small"); attributes.Add("type", "text"); + attributes.Add("min", Model.Settings.Minimum.HasValue ? Model.Settings.Minimum.Value : 0); + attributes.Add("max", Model.Settings.Maximum.HasValue ? Model.Settings.Maximum.Value : 1000000); + attributes.Add("step", Math.Pow(10, 0 - Model.Settings.Scale).ToString(CultureInfo.InvariantCulture)); + + if (isRequired) { + attributes.Add("required", "required"); + } + + if (hasValue) { + attributes.Add("Value", Model.Value); + } +} +
- - @(Model.Settings.Required - ? Html.TextBoxFor(m => m.Value, new {@class = "text-small", type = "text", min = (Model.Settings.Minimum.HasValue) ? Model.Settings.Minimum.Value : 0, max = (Model.Settings.Maximum.HasValue) ? Model.Settings.Maximum.Value : 1000000, step = Math.Pow(10, 0 - Model.Settings.Scale).ToString(CultureInfo.InvariantCulture), required = "required"}) - : Html.TextBoxFor(m => m.Value, new {@class = "text-small", type = "text", min = (Model.Settings.Minimum.HasValue) ? Model.Settings.Minimum.Value : 0, max = (Model.Settings.Maximum.HasValue) ? Model.Settings.Maximum.Value : 1000000, step = Math.Pow(10, 0 - Model.Settings.Scale).ToString(CultureInfo.InvariantCulture)})) + + @Html.TextBoxFor(m => m.Value, attributes) @Html.ValidationMessageFor(m => m.Value) @if (HasText(Model.Settings.Hint)) { - @Model.Settings.Hint + @Model.Settings.Hint } @if (!String.IsNullOrWhiteSpace(Model.Settings.DefaultValue)) { @T("If the field is left empty then the default value will be used.") } -
+ \ No newline at end of file