diff --git a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj
index df29425..a4f49a2 100644
--- a/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj
+++ b/app/Umbraco/Archetype.Tests/Archetype.Tests.csproj
@@ -31,22 +31,166 @@
4
+
+ ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll
+
+
+ ..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\businesslogic.dll
+
+
+ ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll
+
+
+ ..\packages\ClientDependency-Mvc.1.7.0.4\lib\ClientDependency.Core.Mvc.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\cms.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\controls.dll
+
+
+ ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\Examine.dll
+
+
+ ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll
+
+
+ ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
+
+
+ False
+ ..\packages\UmbracoCms.Core.7.0.1\lib\interfaces.dll
+
+
+ False
+ ..\packages\UmbracoCms.Core.7.0.1\lib\log4net.dll
+
+
+ ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\Microsoft.ApplicationBlocks.Data.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\Microsoft.Web.Helpers.dll
+
+
+ True
+ ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
+
+
+ ..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.1\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll
+
+
+ ..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll
+
..\packages\Moq.4.2.1312.1622\lib\net40\Moq.dll
+
+ ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll
+
+
+ ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
+
..\packages\NUnit.2.6.3\lib\nunit.framework.dll
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\SQLCE4Umbraco.dll
+
+
+ True
+ ..\packages\UmbracoCms.Core.7.0.1\lib\System.Data.SqlServerCe.dll
+
+
+ True
+ ..\packages\UmbracoCms.Core.7.0.1\lib\System.Data.SqlServerCe.Entity.dll
+
+
+
+ ..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll
+
+
+
+ True
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll
+
+
+ ..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll
+
+
+ ..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll
+
+
+ True
+ ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll
+
+
+ False
+ ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll
+ True
+
+
+ True
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll
+
+
+ True
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll
+
+
+ True
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll
+
-
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\TidyNet.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.dll
+
+
+ False
..\packages\UmbracoCms.Core.7.0.1\lib\Umbraco.Core.dll
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.DataLayer.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.editorControls.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.MacroEngines.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.providers.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\Umbraco.Web.UI.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.XmlSerializers.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\UmbracoExamine.dll
+
+
+ ..\packages\UmbracoCms.Core.7.0.1\lib\UrlRewritingNet.UrlRewriter.dll
+
diff --git a/app/Umbraco/Archetype.Tests/packages.config b/app/Umbraco/Archetype.Tests/packages.config
index c90677c..41531cd 100644
--- a/app/Umbraco/Archetype.Tests/packages.config
+++ b/app/Umbraco/Archetype.Tests/packages.config
@@ -1,5 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj
index 05ed8ed..5f6c903 100644
--- a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj
+++ b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj
@@ -136,6 +136,7 @@
False
+
False
..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll
diff --git a/app/Umbraco/Umbraco.Archetype/Models/Property.cs b/app/Umbraco/Umbraco.Archetype/Models/Property.cs
index 09605b7..a3c4522 100644
--- a/app/Umbraco/Umbraco.Archetype/Models/Property.cs
+++ b/app/Umbraco/Umbraco.Archetype/Models/Property.cs
@@ -1,9 +1,11 @@
-using System.Linq;
+using System.Collections.Generic;
+using System.Linq;
using Newtonsoft.Json;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.PropertyEditors;
+using Umbraco.Web;
namespace Archetype.Umbraco.Models
{
@@ -30,14 +32,26 @@ namespace Archetype.Umbraco.Models
if (Value is T)
return (T)Value;
- // Umbraco has the concept of a IPropertyEditorValueConverter which it
- // also queries for property resolvers. However I'm not sure what these
- // are for, nor can I find any implementations in core, so am currently
- // just ignoring these when looking up converters.
- // NB: IPropertyEditorValueConverter not to be confused with
- // IPropertyValueConverter which are the ones most people are creating
+ // Try Umbraco's PropertyValueConverters
+ var converters = UmbracoContext.Current != null ? PropertyValueConvertersResolver.Current.Converters : Enumerable.Empty();
+ if (converters.Any())
+ {
+ var convertedAttempt = TryConvertWithPropertyValueConverters(Value, converters);
+ if (convertedAttempt.Success)
+ return convertedAttempt.Result;
+ }
+
+ // No PropertyValueConverters matched, so try a regular type conversion
+ var convertAttempt2 = Value.TryConvertTo();
+ if (convertAttempt2.Success)
+ return convertAttempt2.Result;
+
+ return default(T);
+ }
+
+ private Attempt TryConvertWithPropertyValueConverters(object value, IEnumerable converters)
+ {
var properyType = CreateDummyPropertyType(DataTypeId, PropertyEditorAlias);
- var converters = PropertyValueConvertersResolver.Current.Converters.ToArray();
// In umbraco, there are default value converters that try to convert the
// value if all else fails. The problem is, they are also in the list of
@@ -49,24 +63,19 @@ namespace Archetype.Umbraco.Models
foreach (var converter in converters.Where(x => x.IsConverter(properyType)))
{
// Convert the type using a found value converter
- var value2 = converter.ConvertDataToSource(properyType, Value, false);
+ var value2 = converter.ConvertDataToSource(properyType, value, false);
// If the value is of type T, just return it
if (value2 is T)
- return (T)value2;
+ return Attempt.Succeed((T)value2);
// Value is not final value type, so try a regular type conversion aswell
var convertAttempt = value2.TryConvertTo();
if (convertAttempt.Success)
- return convertAttempt.Result;
+ return Attempt.Succeed(convertAttempt.Result);
}
- // Value is not final value type, so try a regular type conversion
- var convertAttempt2 = Value.TryConvertTo();
- if (convertAttempt2.Success)
- return convertAttempt2.Result;
-
- return default(T);
+ return Attempt.Fail();
}
private PublishedPropertyType CreateDummyPropertyType(int dataTypeId, string propertyEditorAlias)