diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs index e91996e32a..9a90e5ac47 100644 --- a/src/Umbraco.Core/Models/ContentExtensions.cs +++ b/src/Umbraco.Core/Models/ContentExtensions.cs @@ -404,8 +404,7 @@ namespace Umbraco.Core.Models return content.Properties .Where(property => propertyGroup.PropertyTypes .Select(propertyType => propertyType.Id) - .Contains(property.PropertyTypeId)) - .OrderBy(x => x.PropertyType.SortOrder); + .Contains(property.PropertyTypeId)); } /// diff --git a/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesResolver.cs b/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesResolver.cs index ff4176a944..0671f59273 100644 --- a/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesResolver.cs +++ b/src/Umbraco.Web/Models/Mapping/TabsAndPropertiesResolver.cs @@ -229,7 +229,7 @@ namespace Umbraco.Web.Models.Mapping var groupsGroupsByName = content.PropertyGroups.OrderBy(x => x.SortOrder).GroupBy(x => x.Name); foreach (var groupsByName in groupsGroupsByName) { - var properties = new List(); + var properties = new List(); // merge properties for groups with the same name foreach (var group in groupsByName) @@ -237,13 +237,16 @@ namespace Umbraco.Web.Models.Mapping var groupProperties = content.GetPropertiesForGroup(group) .Where(x => IgnoreProperties.Contains(x.Alias) == false); // skip ignored - properties.AddRange(Mapper.Map, IEnumerable>(groupProperties)); + properties.AddRange(groupProperties); } if (properties.Count == 0) continue; - TranslateProperties(properties); + // Sort properties so items from different compositions appear in correct order (see U4-9298). Map sorted properties. + var mappedProperties = Mapper.Map, IEnumerable>(properties.OrderBy(prop => prop.PropertyType.SortOrder)); + + TranslateProperties(mappedProperties); // add the tab // we need to pick an identifier... there is no "right" way... @@ -256,7 +259,7 @@ namespace Umbraco.Web.Models.Mapping Id = groupId, Alias = groupName, Label = _localizedTextService.UmbracoDictionaryTranslate(groupName), - Properties = properties, + Properties = mappedProperties, IsActive = false }); }