diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs
index dce9ca531d..6b1601fac2 100644
--- a/src/Umbraco.Web/Editors/ContentController.cs
+++ b/src/Umbraco.Web/Editors/ContentController.cs
@@ -943,14 +943,26 @@ namespace Umbraco.Web.Editors
return content;
}
}
-
+
///
/// Maps the dto property values to the persisted model
///
///
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'
diff --git a/src/Umbraco.Web/Editors/ContentControllerBase.cs b/src/Umbraco.Web/Editors/ContentControllerBase.cs
index 70baabecf5..fdfefa6133 100644
--- a/src/Umbraco.Web/Editors/ContentControllerBase.cs
+++ b/src/Umbraco.Web/Editors/ContentControllerBase.cs
@@ -36,32 +36,6 @@ namespace Umbraco.Web.Editors
return errorResponse;
}
- protected void UpdateName(ContentBaseItemSave 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;
- }
-
///
/// Maps the dto property values to the persisted model
///
diff --git a/src/Umbraco.Web/Editors/MediaController.cs b/src/Umbraco.Web/Editors/MediaController.cs
index 2c7a5f30c6..fb09cefd03 100644
--- a/src/Umbraco.Web/Editors/MediaController.cs
+++ b/src/Umbraco.Web/Editors/MediaController.cs
@@ -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(
contentItem,
(save, property) => property.GetValue(), //get prop val
diff --git a/src/Umbraco.Web/Editors/MemberController.cs b/src/Umbraco.Web/Editors/MemberController.cs
index bf60560574..bb99030804 100644
--- a/src/Umbraco.Web/Editors/MemberController.cs
+++ b/src/Umbraco.Web/Editors/MemberController.cs
@@ -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;
+ }
+ }
+
///
/// This is going to create the user with the membership provider and check for validation
///
diff --git a/src/Umbraco.Web/Models/Mapping/ContentItemDisplayNameResolver.cs b/src/Umbraco.Web/Models/Mapping/ContentItemDisplayNameResolver.cs
new file mode 100644
index 0000000000..125db912be
--- /dev/null
+++ b/src/Umbraco.Web/Models/Mapping/ContentItemDisplayNameResolver.cs
@@ -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
+{
+ ///
+ /// Used to map the name from an depending on it's variation settings
+ ///
+ internal class ContentItemDisplayNameResolver : IValueResolver
+ {
+ 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;
+ }
+ }
+}
diff --git a/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs b/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs
index 3d7890a152..41146d7a8e 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs
@@ -10,6 +10,9 @@ using Language = Umbraco.Web.Models.ContentEditing.Language;
namespace Umbraco.Web.Models.Mapping
{
+ ///
+ /// Used to map the variations collection from an instance
+ ///
internal class ContentItemDisplayVariationResolver : IValueResolver>
{
private readonly ILocalizationService _localizationService;
diff --git a/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs b/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs
index 9aa6495492..627f508906 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs
@@ -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())
.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))
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 7691f294db..56c04deca1 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -242,6 +242,7 @@
+