Map new properties from database to back-office models
This commit is contained in:
@@ -14,7 +14,10 @@ namespace Umbraco.Core.Models
|
||||
[DebuggerDisplay("Id: {Id}, Name: {Name}")]
|
||||
public class PropertyGroup : EntityBase, IEquatable<PropertyGroup>
|
||||
{
|
||||
private Guid? _parentKey;
|
||||
private short _level;
|
||||
private string _name;
|
||||
private string _icon;
|
||||
private int _sortOrder;
|
||||
private PropertyTypeCollection _propertyTypes;
|
||||
|
||||
@@ -32,6 +35,26 @@ namespace Umbraco.Core.Models
|
||||
OnPropertyChanged(nameof(PropertyTypes));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the parent key of the group.
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public Guid? ParentKey
|
||||
{
|
||||
get => _parentKey;
|
||||
set => SetPropertyValueAndDetectChanges(value, ref _parentKey, nameof(ParentKey));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Sort Order of the Group
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public short Level
|
||||
{
|
||||
get => _level;
|
||||
set => SetPropertyValueAndDetectChanges(value, ref _level, nameof(Level));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Name of the Group, which corresponds to the Tab-name in the UI
|
||||
/// </summary>
|
||||
@@ -42,6 +65,16 @@ namespace Umbraco.Core.Models
|
||||
set => SetPropertyValueAndDetectChanges(value, ref _name, nameof(Name));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the icon of the group.
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public string Icon
|
||||
{
|
||||
get => _icon;
|
||||
set => SetPropertyValueAndDetectChanges(value, ref _icon, nameof(Icon));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the Sort Order of the Group
|
||||
/// </summary>
|
||||
@@ -82,18 +115,9 @@ namespace Umbraco.Core.Models
|
||||
}
|
||||
}
|
||||
|
||||
public bool Equals(PropertyGroup other)
|
||||
{
|
||||
if (base.Equals(other)) return true;
|
||||
return other != null && Name.InvariantEquals(other.Name);
|
||||
}
|
||||
public bool Equals(PropertyGroup other) => other != null && base.Equals(other) && ParentKey == other.ParentKey && Level == other.Level && Icon == other.Icon && Name.InvariantEquals(other.Name);
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
var baseHash = base.GetHashCode();
|
||||
var nameHash = Name.ToLowerInvariant().GetHashCode();
|
||||
return baseHash ^ nameHash;
|
||||
}
|
||||
public override int GetHashCode() => (base.GetHashCode(), ParentKey, Level, Icon, Name.ToLowerInvariant()).GetHashCode();
|
||||
|
||||
protected override void PerformDeepClone(object clone)
|
||||
{
|
||||
|
||||
@@ -34,10 +34,14 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
if (groupDto.ContentTypeNodeId == contentTypeId)
|
||||
group.Id = groupDto.Id;
|
||||
|
||||
group.Key = groupDto.UniqueId;
|
||||
group.ParentKey = groupDto.ParentKey;
|
||||
group.Level = groupDto.Level;
|
||||
group.Icon = groupDto.Icon;
|
||||
group.Name = groupDto.Text;
|
||||
group.SortOrder = groupDto.SortOrder;
|
||||
|
||||
group.PropertyTypes = new PropertyTypeCollection(isPublishing);
|
||||
group.Key = groupDto.UniqueId;
|
||||
|
||||
//Because we are likely to have a group with no PropertyTypes we need to ensure that these are excluded
|
||||
var typeDtos = groupDto.PropertyTypeDtos.Where(x => x.Id > 0);
|
||||
@@ -103,10 +107,13 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
{
|
||||
var dto = new PropertyTypeGroupDto
|
||||
{
|
||||
UniqueId = propertyGroup.Key,
|
||||
ParentKey = propertyGroup.ParentKey,
|
||||
Level = propertyGroup.Level,
|
||||
ContentTypeNodeId = contentTypeId,
|
||||
SortOrder = propertyGroup.SortOrder,
|
||||
Icon = propertyGroup.Icon,
|
||||
Text = propertyGroup.Name,
|
||||
UniqueId = propertyGroup.Key
|
||||
SortOrder = propertyGroup.SortOrder
|
||||
};
|
||||
|
||||
if (propertyGroup.HasIdentity)
|
||||
|
||||
@@ -20,8 +20,11 @@ namespace Umbraco.Core.Persistence.Mappers
|
||||
{
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.Id), nameof(PropertyTypeGroupDto.Id));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.Key), nameof(PropertyTypeGroupDto.UniqueId));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.SortOrder), nameof(PropertyTypeGroupDto.SortOrder));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.ParentKey), nameof(PropertyTypeGroupDto.ParentKey));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.Level), nameof(PropertyTypeGroupDto.Level));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.Icon), nameof(PropertyTypeGroupDto.Icon));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.Name), nameof(PropertyTypeGroupDto.Text));
|
||||
DefineMap<PropertyGroup, PropertyTypeGroupDto>(nameof(PropertyGroup.SortOrder), nameof(PropertyTypeGroupDto.SortOrder));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,9 +272,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
return new PropertyGroup(new PropertyTypeCollection(isPublishing))
|
||||
{
|
||||
Id = dto.Id,
|
||||
Key = dto.UniqueId,
|
||||
ParentKey = dto.ParentKey,
|
||||
Level = dto.Level,
|
||||
Icon = dto.Icon,
|
||||
Name = dto.Text,
|
||||
SortOrder = dto.SortOrder,
|
||||
Key = dto.UniqueId
|
||||
SortOrder = dto.SortOrder
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
@@ -32,12 +33,24 @@ namespace Umbraco.Web.Models.ContentEditing
|
||||
[DataMember(Name = "id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[DataMember(Name = "sortOrder")]
|
||||
public int SortOrder { get; set; }
|
||||
[DataMember(Name = "key")]
|
||||
public Guid Key { get; set; }
|
||||
|
||||
[DataMember(Name = "parentKey")]
|
||||
public Guid? ParentKey { get; set; }
|
||||
|
||||
[DataMember(Name = "level")]
|
||||
public short Level { get; set; }
|
||||
|
||||
[DataMember(Name = "icon")]
|
||||
public string Icon { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember(Name = "name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[DataMember(Name = "sortOrder")]
|
||||
public int SortOrder { get; set; }
|
||||
}
|
||||
|
||||
[DataContract(Name = "propertyGroup", Namespace = "")]
|
||||
|
||||
@@ -300,6 +300,11 @@ namespace Umbraco.Web.Models.Mapping
|
||||
{
|
||||
if (source.Id > 0)
|
||||
target.Id = source.Id;
|
||||
|
||||
target.Key = source.Key;
|
||||
target.ParentKey = source.ParentKey;
|
||||
target.Level = source.Level;
|
||||
target.Icon = source.Icon;
|
||||
target.Name = source.Name;
|
||||
target.SortOrder = source.SortOrder;
|
||||
}
|
||||
@@ -309,6 +314,11 @@ namespace Umbraco.Web.Models.Mapping
|
||||
{
|
||||
if (source.Id > 0)
|
||||
target.Id = source.Id;
|
||||
|
||||
target.Key = source.Key;
|
||||
target.ParentKey = source.ParentKey;
|
||||
target.Level = source.Level;
|
||||
target.Icon = source.Icon;
|
||||
target.Name = source.Name;
|
||||
target.SortOrder = source.SortOrder;
|
||||
}
|
||||
@@ -319,10 +329,14 @@ namespace Umbraco.Web.Models.Mapping
|
||||
if (source.Id > 0)
|
||||
target.Id = source.Id;
|
||||
|
||||
target.Inherited = source.Inherited;
|
||||
target.Key = source.Key;
|
||||
target.ParentKey = source.ParentKey;
|
||||
target.Level = source.Level;
|
||||
target.Icon = source.Icon;
|
||||
target.Name = source.Name;
|
||||
target.SortOrder = source.SortOrder;
|
||||
|
||||
target.Inherited = source.Inherited;
|
||||
target.Properties = context.MapEnumerable<PropertyTypeBasic, PropertyTypeDisplay>(source.Properties);
|
||||
}
|
||||
|
||||
@@ -332,10 +346,14 @@ namespace Umbraco.Web.Models.Mapping
|
||||
if (source.Id > 0)
|
||||
target.Id = source.Id;
|
||||
|
||||
target.Inherited = source.Inherited;
|
||||
target.Key = source.Key;
|
||||
target.ParentKey = source.ParentKey;
|
||||
target.Level = source.Level;
|
||||
target.Icon = source.Icon;
|
||||
target.Name = source.Name;
|
||||
target.SortOrder = source.SortOrder;
|
||||
|
||||
target.Inherited = source.Inherited;
|
||||
target.Properties = context.MapEnumerable<MemberPropertyTypeBasic, MemberPropertyTypeDisplay>(source.Properties);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,9 +75,12 @@ namespace Umbraco.Web.Models.Mapping
|
||||
var group = new PropertyGroupDisplay<TPropertyType>
|
||||
{
|
||||
Id = tab.Id,
|
||||
Inherited = false,
|
||||
Key = tab.Key,
|
||||
ParentKey = tab.ParentKey,
|
||||
Level = tab.Level,
|
||||
Name = tab.Name,
|
||||
SortOrder = tab.SortOrder,
|
||||
Inherited = false,
|
||||
ContentTypeId = source.Id
|
||||
};
|
||||
|
||||
@@ -100,9 +103,12 @@ namespace Umbraco.Web.Models.Mapping
|
||||
var group = new PropertyGroupDisplay<TPropertyType>
|
||||
{
|
||||
Id = tab.Id,
|
||||
Inherited = true,
|
||||
Key = tab.Key,
|
||||
ParentKey = tab.ParentKey,
|
||||
Level = tab.Level,
|
||||
Name = tab.Name,
|
||||
SortOrder = tab.SortOrder,
|
||||
Inherited = true,
|
||||
ContentTypeId = definingContentType.Id,
|
||||
ParentTabContentTypes = new[] { definingContentType.Id },
|
||||
ParentTabContentTypeNames = new[] { definingContentType.Name }
|
||||
|
||||
Reference in New Issue
Block a user