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/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; }