diff --git a/src/Our.Umbraco.NullableTypes/Converters/NullableIntegerPropertyValueConverter.cs b/src/Our.Umbraco.NullableTypes/Converters/NullableIntegerPropertyValueConverter.cs index 2bddfea..2f3f717 100644 --- a/src/Our.Umbraco.NullableTypes/Converters/NullableIntegerPropertyValueConverter.cs +++ b/src/Our.Umbraco.NullableTypes/Converters/NullableIntegerPropertyValueConverter.cs @@ -1,4 +1,5 @@ -using Our.Umbraco.NullableTypes.PropertyEditors; +using Newtonsoft.Json.Linq; +using Our.Umbraco.NullableTypes.PropertyEditors; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; @@ -31,6 +32,43 @@ public override object ConvertSourceToObject(PublishedPropertyType publishedProp if (source != null) { + if (source is int) + { + nullableInteger = (int)source; + } + else if (source is string) + { + var sourceString = source.ToString(); + + if (int.TryParse(sourceString, out int sourceStringParsed)) + { + nullableInteger = sourceStringParsed; + } + else + { + try + { + var value = JObject.Parse(sourceString); + + if (value.Type == JTokenType.Object) + { + var checkbox = (bool)value["checkbox"]; + var number = (string)value["number"]; + + if (checkbox) + { + if (int.TryParse(number, out int numberParsed)) + { + nullableInteger = numberParsed; + } + } + } + } + catch + { + } + } + } } return nullableInteger; diff --git a/src/Our.Umbraco.NullableTypes/Resources/NullableInteger.html b/src/Our.Umbraco.NullableTypes/Resources/NullableInteger.html index 13e4199..5ec64aa 100644 --- a/src/Our.Umbraco.NullableTypes/Resources/NullableInteger.html +++ b/src/Our.Umbraco.NullableTypes/Resources/NullableInteger.html @@ -5,13 +5,13 @@ ng-change="checkboxChange()"/> + ng-required="model.value.checkbox"/> \ No newline at end of file