diff --git a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj index 6b43c6c..678f3dd 100644 --- a/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj +++ b/app/Umbraco/Umbraco.Archetype/Archetype.Umbraco.csproj @@ -42,6 +42,7 @@ ..\packages\UmbracoCms.Core.7.1.2\lib\businesslogic.dll + False ..\packages\ClientDependency.1.7.1.2\lib\ClientDependency.Core.dll @@ -53,9 +54,11 @@ ..\packages\UmbracoCms.Core.7.1.2\lib\cms.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\controls.dll + False ..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll @@ -63,6 +66,7 @@ ..\packages\UmbracoCms.Core.7.1.2\lib\Examine.dll + False ..\packages\HtmlAgilityPack.1.4.6\lib\Net45\HtmlAgilityPack.dll @@ -74,15 +78,19 @@ ..\packages\ImageProcessor.1.9.0.0\lib\ImageProcessor.dll + False ..\packages\ImageProcessor.Web.3.2.3.0\lib\net45\ImageProcessor.Web.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\interfaces.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\log4net.dll + False ..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll @@ -90,9 +98,11 @@ ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.ApplicationBlocks.Data.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\Microsoft.Web.Helpers.dll + False False @@ -116,15 +126,16 @@ ..\packages\UmbracoCms.Core.7.1.2\lib\SQLCE4Umbraco.dll + False - True + False ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.dll - True + False ..\packages\UmbracoCms.Core.7.1.2\lib\System.Data.SqlServerCe.Entity.dll @@ -173,36 +184,47 @@ ..\packages\UmbracoCms.Core.7.1.2\lib\TidyNet.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Core.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.DataLayer.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.editorControls.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.MacroEngines.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.providers.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\Umbraco.Web.UI.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\umbraco.XmlSerializers.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\UmbracoExamine.dll + False ..\packages\UmbracoCms.Core.7.1.2\lib\UrlRewritingNet.UrlRewriter.dll + False diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs index 0d03f92..a4cbcc8 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs @@ -10,9 +10,12 @@ namespace Archetype.Extensions { public class ArchetypeHelper { - protected JsonSerializerSettings _jsonSettings; - protected ApplicationContext _app; + protected ApplicationContext _app; + + private static readonly ArchetypeHelper _instance = new ArchetypeHelper(); + + internal static ArchetypeHelper Instance { get { return _instance; } } internal ArchetypeHelper() { @@ -44,7 +47,7 @@ namespace Archetype.Extensions catch { return new Models.ArchetypeModel(); - } + } } internal Models.ArchetypeModel DeserializeJsonToArchetype(string sourceJson, int dataTypeId, PublishedContentType hostContentType = null) @@ -71,8 +74,8 @@ namespace Archetype.Extensions } } - private ArchetypePreValue GetArchetypePreValueFromDataTypeId(int dataTypeId) - { + private ArchetypePreValue GetArchetypePreValueFromDataTypeId(int dataTypeId) + { return _app.ApplicationCache.RuntimeCache.GetCacheItem( Constants.CacheKey_PreValueFromDataTypeId + dataTypeId, () => @@ -89,7 +92,7 @@ namespace Archetype.Extensions return config; }) as ArchetypePreValue; - } + } private ArchetypePreValue GetArchetypePreValueFromPreValuesCollection(PreValueCollection dataTypePreValues) { @@ -98,10 +101,9 @@ namespace Archetype.Extensions return preValue; } - private IDataTypeDefinition GetDataTypeByGuid(Guid guid) { - return (IDataTypeDefinition) ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem( + return (IDataTypeDefinition)ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem( Constants.CacheKey_DataTypeByGuid + guid, () => _app.Services.DataTypeService.GetDataTypeDefinitionById(guid)); } @@ -121,7 +123,7 @@ namespace Archetype.Extensions foreach (var property in fieldset.Properties) { var propertyAlias = property.Alias; - foreach ( var propertyInst in fieldsetInst.Properties.Where(x => x.Alias == propertyAlias)) + foreach (var propertyInst in fieldsetInst.Properties.Where(x => x.Alias == propertyAlias)) { propertyInst.DataTypeGuid = property.DataTypeGuid.ToString(); propertyInst.DataTypeId = GetDataTypeByGuid(property.DataTypeGuid).Id; @@ -148,6 +150,5 @@ namespace Archetype.Extensions } } } - } -} +} \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs index 08dd923..98b6d39 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePreValue.cs @@ -44,6 +44,9 @@ namespace Archetype.Models [JsonProperty("customJsPath")] public string CustomJsPath { get; set; } + [JsonProperty("customViewPath")] + public string CustomViewPath { get; set; } + [JsonProperty("developerMode")] public bool DeveloperMode { get; set; } } diff --git a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs index b2449a1..9164a1f 100644 --- a/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs +++ b/app/Umbraco/Umbraco.Archetype/Properties/VersionInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("1.2")] -[assembly: AssemblyFileVersion("1.2-beta")] +[assembly: AssemblyVersion("1.2.1")] +[assembly: AssemblyFileVersion("1.2.1-beta")] diff --git a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs index 4f82c22..32f56cf 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs @@ -1,16 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Archetype.Extensions; +using Archetype.Extensions; using Archetype.Models; -using Newtonsoft.Json; using Umbraco.Core; -using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; - -namespace Archetype.PropertyConverters + +namespace Archetype.PropertyConverters { [PropertyValueType(typeof(Models.ArchetypeModel))] [PropertyValueCache(PropertyCacheValue.All, PropertyCacheLevel.Content)] @@ -29,7 +24,7 @@ namespace Archetype.PropertyConverters public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview) { - var defaultValue = new Models.ArchetypeModel(); + var defaultValue = new ArchetypeModel(); if (source == null) return defaultValue; @@ -39,11 +34,14 @@ namespace Archetype.PropertyConverters if (!sourceString.DetectIsJson()) return defaultValue; - var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(source.ToString(), - (propertyType != null ? propertyType.DataTypeId : -1), - (propertyType != null ? propertyType.ContentType : null)); + using (var timer = DisposableTimer.DebugDuration(string.Format("ConvertDataToSource ({0})", propertyType.PropertyTypeAlias))) + { + var archetype = ArchetypeHelper.Instance.DeserializeJsonToArchetype(sourceString, + (propertyType != null ? propertyType.DataTypeId : -1), + (propertyType != null ? propertyType.ContentType : null)); - return archetype; + return archetype; + } } } } \ No newline at end of file diff --git a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs index e847ce8..6c733b3 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyEditors/ArcheTypePropertyEditor.cs @@ -1,17 +1,15 @@ using System; using System.Collections.Generic; -using System.Linq; using Archetype.Extensions; using ClientDependency.Core; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Umbraco.Core; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Web.PropertyEditors; -using Umbraco.Core.Logging; namespace Archetype.PropertyEditors { @@ -58,7 +56,7 @@ namespace Archetype.PropertyEditors if (property.Value == null || property.Value.ToString() == "") return string.Empty; - var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(property.Value.ToString(), propertyType.DataTypeDefinitionId); + var archetype = ArchetypeHelper.Instance.DeserializeJsonToArchetype(property.Value.ToString(), propertyType.DataTypeDefinitionId); foreach (var fieldset in archetype.Fieldsets) { @@ -87,7 +85,7 @@ namespace Archetype.PropertyEditors if (property.Value == null || property.Value.ToString() == "") return string.Empty; - var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(property.Value.ToString(), propertyType.DataTypeDefinitionId); + var archetype = ArchetypeHelper.Instance.DeserializeJsonToArchetype(property.Value.ToString(), propertyType.DataTypeDefinitionId); foreach (var fieldset in archetype.Fieldsets) { @@ -115,7 +113,7 @@ namespace Archetype.PropertyEditors if (editorValue.Value == null || editorValue.Value.ToString() == "") return string.Empty; - var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(editorValue.Value.ToString(), editorValue.PreValues); + var archetype = ArchetypeHelper.Instance.DeserializeJsonToArchetype(editorValue.Value.ToString(), editorValue.PreValues); foreach (var fieldset in archetype.Fieldsets) { diff --git a/app/directives/archetypecustomview.js b/app/directives/archetypecustomview.js index 848a90d..d6636bd 100644 --- a/app/directives/archetypecustomview.js +++ b/app/directives/archetypecustomview.js @@ -14,6 +14,10 @@ angular.module("umbraco.directives").directive('archetypeCustomView', function ( scope.model.value = scope.archetype.value; scope.model.config = scope.archetype.config; + scope.$watch('model.value', function (newValue, oldValue) { + scope.archetype.value = newValue; + }); + element.html(data.data).show(); $compile(element.contents())(scope); diff --git a/config/meta.json b/config/meta.json index e963137..48ff610 100644 --- a/config/meta.json +++ b/config/meta.json @@ -1,6 +1,6 @@ { "name": "Archetype", - "version": "1.0-beta", + "version": "1.2.1-beta", "url": "http://github.com/imulus/archetype/", "author": "Imulus", "authorUrl": "http://imulus.com/",