diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs index 2cd23442e7..307704f193 100644 --- a/src/Umbraco.Web/Editors/ContentTypeController.cs +++ b/src/Umbraco.Web/Editors/ContentTypeController.cs @@ -252,10 +252,13 @@ namespace Umbraco.Web.Editors { template = new Template(contentType.Name, contentType.Alias); Services.FileService.SaveTemplate(template); + } - //after saving, make sure to set the id on the default template - contentType.DefaultTemplate.Id = template.Id; - } + //make sure the template id is set on the default and allowed template + contentType.DefaultTemplate.Id = template.Id; + var found = contentType.AllowedTemplates.FirstOrDefault(x => x.Alias == contentType.Alias); + if(found != null) + found.Id = template.Id; } //save as new diff --git a/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs index 4df94c27ce..3b55658343 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs @@ -54,6 +54,7 @@ namespace Umbraco.Web.Models.Mapping .ForMember(dto => dto.PropertyGroups, expression => expression.Ignore()) .AfterMap((source, dest) => { + var addedProperties = new List(); //get all properties from groups that are not generic properties or inhertied (-666 id) @@ -71,7 +72,7 @@ namespace Umbraco.Web.Models.Mapping { dest.AddPropertyType(Mapper.Map(propertyTypeDisplay), groupDisplay.Name); addedProperties.Add(propertyTypeDisplay.Alias); - } + } } //Groups to remove @@ -102,14 +103,13 @@ namespace Umbraco.Web.Models.Mapping //Sync allowed child types var allowedTypes = source.AllowedContentTypes.Select((t, i) => new ContentTypeSort(t, i)); - dest.AllowedContentTypes = allowedTypes.ToArray(); //sync compositions var current = dest.CompositionAliases().ToArray(); var proposed = source.CompositeContentTypes; - var remove = current.Where(x => proposed.Contains(x) == false); + var remove = current.Where(x => proposed.Contains(x) == false); var add = proposed.Where(x => current.Contains(x) == false); foreach (var rem in remove) @@ -117,16 +117,18 @@ namespace Umbraco.Web.Models.Mapping dest.RemoveContentType(rem); } - foreach(var a in add) + foreach (var a in add) { //TODO: Remove N+1 lookup var addCt = applicationContext.Services.ContentTypeService.GetContentType(a); - if(addCt != null) - dest.AddContentType(addCt); + if (addCt != null) + dest.AddContentType(addCt); } - + //sync templates dest.AllowedTemplates = source.AllowedTemplates.Select(x => Mapper.Map(x)); + if(source.DefaultTemplate != null) + dest.SetDefaultTemplate(Mapper.Map(source.DefaultTemplate)); });