();
case DataTypeDatabaseType.Integer:
+ case DataTypeDatabaseType.Decimal:
return property.Value.ToXmlString(property.Value.GetType());
case DataTypeDatabaseType.Date:
//treat dates differently, output the format as xml format
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
new file mode 100644
index 0000000000..32fe356764
--- /dev/null
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
@@ -0,0 +1,31 @@
+using Umbraco.Core.Models.PublishedContent;
+
+namespace Umbraco.Core.PropertyEditors.ValueConverters
+{
+ [PropertyValueType(typeof(decimal))]
+ [PropertyValueCache(PropertyCacheValue.All, PropertyCacheLevel.Content)]
+ public class DecimalValueConverter : PropertyValueConverterBase
+ {
+ public override bool IsConverter(PublishedPropertyType propertyType)
+ {
+ return Constants.PropertyEditors.DecimalAlias.Equals(propertyType.PropertyEditorAlias);
+ }
+
+ public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview)
+ {
+ if (source == null) return 0M;
+
+ // in XML a decimal is a string
+ var sourceString = source as string;
+ if (sourceString != null)
+ {
+ decimal d;
+ return (decimal.TryParse(sourceString, out d)) ? d : 0M;
+ }
+
+ // in the database an a decimal is an a decimal
+ // default value is zero
+ return (source is decimal) ? source : 0M;
+ }
+ }
+}
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 15e00bcb8f..ae3ca88db1 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -456,7 +456,9 @@
+
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/decimal.html b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/decimal.html
new file mode 100644
index 0000000000..c4e4c95e39
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/decimal.html
@@ -0,0 +1,11 @@
+
+
+
+ Not a number
+ {{propertyForm.requiredField.errorMsg}}
+
+
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/number.html b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/number.html
index 6d7b8c4c78..e7490e2703 100644
--- a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/number.html
+++ b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/number.html
@@ -3,7 +3,7 @@
type="number"
ng-model="model.value"
val-server="value"
- fix-number />
+ fix-number />
Not a number
{{propertyForm.requiredField.errorMsg}}
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/decimal/decimal.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/decimal/decimal.html
new file mode 100644
index 0000000000..823a7b40ad
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/decimal/decimal.html
@@ -0,0 +1,9 @@
+
+
+
+ Not a number
+ {{propertyForm.requiredField.errorMsg}}
+
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/integer/integer.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/integer/integer.html
index 251a6066d8..28a81b035f 100644
--- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/integer/integer.html
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/integer/integer.html
@@ -6,5 +6,4 @@
Not a number
{{propertyForm.requiredField.errorMsg}}
-
\ No newline at end of file
diff --git a/src/Umbraco.Web/PropertyEditors/DecimalPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/DecimalPropertyEditor.cs
new file mode 100644
index 0000000000..f636e8cdb2
--- /dev/null
+++ b/src/Umbraco.Web/PropertyEditors/DecimalPropertyEditor.cs
@@ -0,0 +1,57 @@
+using Umbraco.Core;
+using Umbraco.Core.PropertyEditors;
+
+namespace Umbraco.Web.PropertyEditors
+{
+ [PropertyEditor(Constants.PropertyEditors.DecimalAlias, "Decimal", "decimal", "decimal", IsParameterEditor = true)]
+ public class DecimalPropertyEditor : PropertyEditor
+ {
+ ///
+ /// Overridden to ensure that the value is validated
+ ///
+ ///
+ protected override PropertyValueEditor CreateValueEditor()
+ {
+ var editor = base.CreateValueEditor();
+ editor.Validators.Add(new DecimalValidator());
+ return editor;
+ }
+
+ protected override PreValueEditor CreatePreValueEditor()
+ {
+ return new DecimalPreValueEditor();
+ }
+
+ ///
+ /// A custom pre-value editor class to deal with the legacy way that the pre-value data is stored.
+ ///
+ internal class DecimalPreValueEditor : PreValueEditor
+ {
+ public DecimalPreValueEditor()
+ {
+ //create the fields
+ Fields.Add(new PreValueField(new DecimalValidator())
+ {
+ Description = "Enter the minimum amount of number to be entered",
+ Key = "min",
+ View = "decimal",
+ Name = "Minimum"
+ });
+ Fields.Add(new PreValueField(new DecimalValidator())
+ {
+ Description = "Enter the intervals amount between each step of number to be entered",
+ Key = "step",
+ View = "decimal",
+ Name = "Step Size"
+ });
+ Fields.Add(new PreValueField(new DecimalValidator())
+ {
+ Description = "Enter the maximum amount of number to be entered",
+ Key = "max",
+ View = "decimal",
+ Name = "Maximum"
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index f8744e58c2..07c378714b 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -307,6 +307,7 @@
+