diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs index 78ad16c890..22d4877869 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs @@ -267,7 +267,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement // ensure that the default template is assigned if (entity.TemplateId == 0) - entity.TemplateId = entity.ContentType.DefaultTemplate.Id; + entity.TemplateId = entity.ContentType.DefaultTemplate?.Id ?? 0; // sanitize names SanitizeNames(content, publishing); @@ -405,6 +405,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement else if (content.PublishedState == PublishedState.Unpublishing) { content.Published = false; + content.PublishTemplateId = 0; content.PublisherId = null; content.PublishName = null; content.PublishDate = null; @@ -604,6 +605,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement else if (content.PublishedState == PublishedState.Unpublishing) { content.Published = false; + content.PublishTemplateId = 0; content.PublisherId = null; content.PublishName = null; content.PublishDate = null; @@ -990,9 +992,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement foreach (var temp in temps) { // complete the item - if (temp.Template1Id.HasValue && templates.TryGetValue(temp.Template1Id.Value, out var template)) + if (temp.Template1Id.HasValue && templates.ContainsKey(temp.Template1Id.Value)) temp.Content.TemplateId = temp.Template1Id.Value; - if (temp.Template2Id.HasValue && templates.TryGetValue(temp.Template2Id.Value, out template)) + if (temp.Template2Id.HasValue && templates.ContainsKey(temp.Template2Id.Value)) temp.Content.PublishTemplateId = temp.Template2Id.Value; if (properties.ContainsKey(temp.VersionId)) diff --git a/src/Umbraco.Core/Services/EntityXmlSerializer.cs b/src/Umbraco.Core/Services/EntityXmlSerializer.cs index 8db4a238f5..a652776c95 100644 --- a/src/Umbraco.Core/Services/EntityXmlSerializer.cs +++ b/src/Umbraco.Core/Services/EntityXmlSerializer.cs @@ -52,7 +52,7 @@ namespace Umbraco.Core.Services xml.Add(new XAttribute("writerName", content.GetWriterProfile(userService)?.Name ?? "??")); xml.Add(new XAttribute("writerID", content.WriterId)); - xml.Add(new XAttribute("template", content.TemplateId.ToString(CultureInfo.InvariantCulture) ?? "0")); + xml.Add(new XAttribute("template", content.TemplateId.ToString(CultureInfo.InvariantCulture))); xml.Add(new XAttribute("isPublished", content.Published)); diff --git a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs index 37dd1b6919..f48445fae0 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs @@ -432,7 +432,7 @@ namespace Umbraco.Tests.Persistence.Repositories var fetched = repository.Get(textpage.Id); - Assert.Zero(textpage.TemplateId); + Assert.NotZero(textpage.TemplateId); Assert.AreEqual(textpage.TemplateId, contentType.DefaultTemplate.Id); scope.Complete(); diff --git a/src/Umbraco.Web/Models/Mapping/DefaultTemplateResolver.cs b/src/Umbraco.Web/Models/Mapping/DefaultTemplateResolver.cs index a84de9257b..32fc0c7ea0 100644 --- a/src/Umbraco.Web/Models/Mapping/DefaultTemplateResolver.cs +++ b/src/Umbraco.Web/Models/Mapping/DefaultTemplateResolver.cs @@ -1,5 +1,4 @@ using AutoMapper; -using LightInject; using System.Web.Mvc; using Umbraco.Core.Models; using Umbraco.Core.Services; @@ -11,17 +10,21 @@ namespace Umbraco.Web.Models.Mapping { public string Resolve(IContent source, ContentItemDisplay destination, string destMember, ResolutionContext context) { - var fileService = DependencyResolver.Current.GetService(); if (source == null) return null; - // If no template id was set return default template. - if (source.TemplateId == 0 && !string.IsNullOrWhiteSpace(source.ContentType.DefaultTemplate?.Alias)) + // If no template id was set... + if (source.TemplateId == 0) { - var defaultTemplate = fileService.GetTemplate(source.ContentType.DefaultTemplate.Alias); - return defaultTemplate.Alias; - } + // ... and no default template is set, return null... + if (string.IsNullOrWhiteSpace(source.ContentType.DefaultTemplate?.Alias)) + return null; + // ... otherwise return the content type default template alias. + return source.ContentType.DefaultTemplate?.Alias; + } + + var fileService = DependencyResolver.Current.GetService(); var template = fileService.GetTemplate(source.TemplateId); return template.Alias;