diff --git a/README.md b/README.md index e15a4e1..efb7919 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Archetype ========= ![alt tag](http://imulus.github.io/Archetype/images/logo.png) +![alt tag](http://imulus.github.io/Archetype/images/example1.png) + ## Installation Install the selected release through the Umbraco package installer or via NuGet. diff --git a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs index 1db4ea6..0d03f92 100644 --- a/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs +++ b/app/Umbraco/Umbraco.Archetype/Extensions/ArchetypeHelper.cs @@ -4,6 +4,7 @@ using Archetype.Models; using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Models; +using Umbraco.Core.Models.PublishedContent; namespace Archetype.Extensions { @@ -46,7 +47,7 @@ namespace Archetype.Extensions } } - internal Models.ArchetypeModel DeserializeJsonToArchetype(string sourceJson, int dataTypeId) + internal Models.ArchetypeModel DeserializeJsonToArchetype(string sourceJson, int dataTypeId, PublishedContentType hostContentType = null) { try { @@ -56,7 +57,7 @@ namespace Archetype.Extensions { // Get list of configured properties and their types and map them to the deserialized archetype model var preValue = GetArchetypePreValueFromDataTypeId(dataTypeId); - RetrieveAdditionalProperties(ref archetype, preValue); + RetrieveAdditionalProperties(ref archetype, preValue, hostContentType); } catch (Exception ex) { @@ -110,7 +111,7 @@ namespace Archetype.Extensions /// /// The Archetype to add the additional metadata to /// The configuration of the Archetype - private void RetrieveAdditionalProperties(ref Models.ArchetypeModel archetype, ArchetypePreValue preValue) + private void RetrieveAdditionalProperties(ref Models.ArchetypeModel archetype, ArchetypePreValue preValue, PublishedContentType hostContentType = null) { foreach (var fieldset in preValue.Fieldsets) { @@ -125,6 +126,7 @@ namespace Archetype.Extensions propertyInst.DataTypeGuid = property.DataTypeGuid.ToString(); propertyInst.DataTypeId = GetDataTypeByGuid(property.DataTypeGuid).Id; propertyInst.PropertyEditorAlias = property.PropertyEditorAlias; + propertyInst.HostContentType = hostContentType; } } } diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs index 1587050..b057aee 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypeModel.cs @@ -31,7 +31,7 @@ namespace Archetype.Models internal string SerializeForPersistence() { var json = JObject.Parse(JsonConvert.SerializeObject(this)); - var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid" }; + var propertiesToRemove = new String[] { "propertyEditorAlias", "dataTypeId", "dataTypeGuid", "hostContentType" }; json.Descendants().OfType() .Where(p => propertiesToRemove.Contains(p.Name)) diff --git a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs index cd3b1ff..66773df 100644 --- a/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs +++ b/app/Umbraco/Umbraco.Archetype/Models/ArchetypePropertyModel.cs @@ -25,6 +25,9 @@ namespace Archetype.Models [JsonProperty("dataTypeGuid")] internal string DataTypeGuid { get; set; } + [JsonProperty("hostContentType")] + internal PublishedContentType HostContentType { get; set; } + public T GetValue() { @@ -80,7 +83,7 @@ namespace Archetype.Models private PublishedPropertyType CreateDummyPropertyType(int dataTypeId, string propertyEditorAlias) { - return new PublishedPropertyType(null, + return new PublishedPropertyType(this.HostContentType, new PropertyType(new DataTypeDefinition(-1, propertyEditorAlias) { Id = dataTypeId diff --git a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs index 96b59c3..4f82c22 100644 --- a/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs +++ b/app/Umbraco/Umbraco.Archetype/PropertyConverters/ArchetypeValueConverter.cs @@ -40,7 +40,8 @@ namespace Archetype.PropertyConverters return defaultValue; var archetype = new ArchetypeHelper().DeserializeJsonToArchetype(source.ToString(), - (propertyType != null ? propertyType.DataTypeId : -1)); + (propertyType != null ? propertyType.DataTypeId : -1), + (propertyType != null ? propertyType.ContentType : null)); return archetype; }