Gets the variant names working in the editor

This commit is contained in:
Shannon
2018-04-20 00:59:23 +10:00
parent d4252a3dc8
commit c84087e96b
8 changed files with 59 additions and 29 deletions

View File

@@ -943,14 +943,26 @@ namespace Umbraco.Web.Editors
return content;
}
}
/// <summary>
/// Maps the dto property values to the persisted model
/// </summary>
/// <param name="contentItem"></param>
private void MapPropertyValues(ContentItemSave contentItem)
{
UpdateName(contentItem);
//Don't update the name if it is empty
if (contentItem.Name.IsNullOrWhiteSpace() == false)
{
//set the name according to the culture settings
if (contentItem.LanguageId.HasValue && contentItem.PersistedContent.ContentType.Variations.HasFlag(ContentVariation.CultureNeutral))
{
contentItem.PersistedContent.SetName(contentItem.LanguageId, contentItem.Name);
}
else
{
contentItem.PersistedContent.Name = contentItem.Name;
}
}
//TODO: We need to support 'send to publish'

View File

@@ -36,32 +36,6 @@ namespace Umbraco.Web.Editors
return errorResponse;
}
protected void UpdateName<TPersisted>(ContentBaseItemSave<TPersisted> contentItem)
where TPersisted : IContentBase
{
//Don't update the name if it is empty
if (contentItem.Name.IsNullOrWhiteSpace() == false)
{
contentItem.PersistedContent.Name = contentItem.Name;
}
}
protected HttpResponseMessage PerformSort(ContentSortOrder sorted)
{
if (sorted == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
//if there's nothing to sort just return ok
if (sorted.IdSortOrder.Length == 0)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return null;
}
/// <summary>
/// Maps the dto property values to the persisted model
/// </summary>

View File

@@ -470,7 +470,12 @@ namespace Umbraco.Web.Editors
// * we have a reference to the DTO object and the persisted object
// * Permissions are valid
UpdateName(contentItem);
//Don't update the name if it is empty
if (contentItem.Name.IsNullOrWhiteSpace() == false)
{
contentItem.PersistedContent.Name = contentItem.Name;
}
MapPropertyValues<IMedia, MediaItemSave>(
contentItem,
(save, property) => property.GetValue(), //get prop val

View File

@@ -591,6 +591,15 @@ namespace Umbraco.Web.Editors
contentItem.PersistedContent.Username = providedUserName;
}
private static void UpdateName(MemberSave memberSave)
{
//Don't update the name if it is empty
if (memberSave.Name.IsNullOrWhiteSpace() == false)
{
memberSave.PersistedContent.Name = memberSave.Name;
}
}
/// <summary>
/// This is going to create the user with the membership provider and check for validation
/// </summary>

View File

@@ -0,0 +1,25 @@
using AutoMapper;
using Umbraco.Core.Models;
using Umbraco.Web.Models.ContentEditing;
using ContentVariation = Umbraco.Core.Models.ContentVariation;
namespace Umbraco.Web.Models.Mapping
{
/// <summary>
/// Used to map the <see cref="ContentItemDisplay"/> name from an <see cref="IContent"/> depending on it's variation settings
/// </summary>
internal class ContentItemDisplayNameResolver : IValueResolver<IContent, ContentItemDisplay, string>
{
public string Resolve(IContent source, ContentItemDisplay destination, string destMember, ResolutionContext context)
{
var langId = context.GetLanguageId();
if (langId.HasValue && source.ContentType.Variations.HasFlag(ContentVariation.CultureNeutral))
{
//return the culture name being requested
return source.GetName(langId);
}
return source.Name;
}
}
}

View File

@@ -10,6 +10,9 @@ using Language = Umbraco.Web.Models.ContentEditing.Language;
namespace Umbraco.Web.Models.Mapping
{
/// <summary>
/// Used to map the <see cref="ContentItemDisplay"/> variations collection from an <see cref="IContent"/> instance
/// </summary>
internal class ContentItemDisplayVariationResolver : IValueResolver<IContent, ContentItemDisplay, IEnumerable<ContentVariation>>
{
private readonly ILocalizationService _localizationService;

View File

@@ -32,6 +32,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(dest => dest.Udi, opt => opt.MapFrom(src => Udi.Create(src.Blueprint ? Constants.UdiEntityType.DocumentBlueprint : Constants.UdiEntityType.Document, src.Key)))
.ForMember(dest => dest.Owner, opt => opt.ResolveUsing(src => contentOwnerResolver.Resolve(src)))
.ForMember(dest => dest.Updater, opt => opt.ResolveUsing(src => creatorResolver.Resolve(src)))
.ForMember(dest => dest.Name, opt => opt.ResolveUsing<ContentItemDisplayNameResolver>())
.ForMember(dest => dest.Variants, opt => opt.ResolveUsing(variantResolver))
.ForMember(dest => dest.Icon, opt => opt.MapFrom(src => src.ContentType.Icon))
.ForMember(dest => dest.ContentTypeAlias, opt => opt.MapFrom(src => src.ContentType.Alias))

View File

@@ -242,6 +242,7 @@
<Compile Include="Models\ContentEditing\Language.cs" />
<Compile Include="Models\Mapping\ActionButtonsResolver.cs" />
<Compile Include="Models\Mapping\AuditMapperProfile.cs" />
<Compile Include="Models\Mapping\ContentItemDisplayNameResolver.cs" />
<Compile Include="Models\Mapping\ContentTypeVariationsResolver.cs" />
<Compile Include="Models\Mapping\ContextMapper.cs" />
<Compile Include="Models\Mapping\ContentChildOfListViewResolver.cs" />