#3544: Fix IFileService resolution (now it runs and seem functional)

This commit is contained in:
Stefano Chiodino
2018-11-08 13:57:59 +00:00
parent 993972fa62
commit 2e3cf979d3
2 changed files with 19 additions and 19 deletions

View File

@@ -1426,19 +1426,23 @@ namespace Umbraco.Web.Editors
contentSave.PersistedContent.ExpireDate = contentSave.ExpireDate;
contentSave.PersistedContent.ReleaseDate = contentSave.ReleaseDate;
//only set the template if it didn't change
var template = Services.FileService.GetTemplate(contentSave.TemplateAlias);
if (contentSave.PersistedContent.TemplateId != template.Id)
// If the template was set.
if (contentSave.TemplateAlias != null)
{
if (template == null && contentSave.TemplateAlias.IsNullOrWhiteSpace() == false)
//only set the template if it didn't change
var template = Services.FileService.GetTemplate(contentSave.TemplateAlias);
if (contentSave.PersistedContent.TemplateId != template.Id)
{
//ModelState.AddModelError("Template", "No template exists with the specified alias: " + contentItem.TemplateAlias);
Logger.Warn<ContentController>("No template exists with the specified alias: {TemplateAlias}", contentSave.TemplateAlias);
}
else
{
//NOTE: this could be null if there was a template and the posted template is null, this should remove the assigned template
contentSave.PersistedContent.TemplateId = template.Id;
if (template == null && contentSave.TemplateAlias.IsNullOrWhiteSpace() == false)
{
//ModelState.AddModelError("Template", "No template exists with the specified alias: " + contentItem.TemplateAlias);
Logger.Warn<ContentController>("No template exists with the specified alias: {TemplateAlias}", contentSave.TemplateAlias);
}
else
{
//NOTE: this could be null if there was a template and the posted template is null, this should remove the assigned template
contentSave.PersistedContent.TemplateId = template.Id;
}
}
}
}

View File

@@ -1,5 +1,6 @@
using AutoMapper;
using LightInject;
using System.Web.Mvc;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
using Umbraco.Web.Models.ContentEditing;
@@ -8,25 +9,20 @@ namespace Umbraco.Web.Models.Mapping
{
internal class DefaultTemplateResolver : IValueResolver<IContent, ContentItemDisplay, string>
{
/// <summary>
/// Gets or sets the services context.
/// </summary>
[Inject]
public ServiceContext Services { get; set; }
public string Resolve(IContent source, ContentItemDisplay destination, string destMember, ResolutionContext context)
{
var fileService = DependencyResolver.Current.GetService<IFileService>();
if (source == null)
return null;
// If no template id was set return default template.
if (source.TemplateId == 0 && !string.IsNullOrWhiteSpace(source.ContentType.DefaultTemplate?.Alias))
{
var defaultTemplate = Services.FileService.GetTemplate(source.ContentType.DefaultTemplate.Alias);
var defaultTemplate = fileService.GetTemplate(source.ContentType.DefaultTemplate.Alias);
return defaultTemplate.Alias;
}
var template = Services.FileService.GetTemplate(source.TemplateId);
var template = fileService.GetTemplate(source.TemplateId);
return template.Alias;
}