Refactoring ContentTypeControlNew and ContentControl

This commit is contained in:
Morten Christensen
2013-02-22 16:25:45 -01:00
parent c0fa011cc3
commit 520a7f238d
8 changed files with 283 additions and 259 deletions

View File

@@ -336,33 +336,7 @@ namespace Umbraco.Core.Models
/// <param name="propertyType"><see cref="PropertyType"/> to add</param>
/// <param name="propertyGroupName">Name of the PropertyGroup to add the PropertyType to</param>
/// <returns>Returns <c>True</c> if PropertyType was added, otherwise <c>False</c></returns>
public bool AddPropertyType(PropertyType propertyType, string propertyGroupName)
{
if (PropertyTypeExists(propertyType.Alias) == false)
{
if (PropertyGroups.Contains(propertyGroupName))
{
propertyType.PropertyGroupId = PropertyGroups[propertyGroupName].Id;
PropertyGroups[propertyGroupName].PropertyTypes.Add(propertyType);
}
else
{
int sortOrder = 0;
if (PropertyGroups.Any())
{
var firstPropertyGroup = PropertyGroups.OrderByDescending(x => x.SortOrder).First();
if (firstPropertyGroup != null)
sortOrder = firstPropertyGroup.SortOrder + 1;
}
var propertyTypes = new List<PropertyType>{ propertyType };
var propertyGroup = new PropertyGroup(new PropertyTypeCollection(propertyTypes)) { Name = propertyGroupName, SortOrder = sortOrder};
PropertyGroups.Add(propertyGroup);
}
}
return false;
}
public abstract bool AddPropertyType(PropertyType propertyType, string propertyGroupName);
/// <summary>
/// Adds a PropertyType, which does not belong to a PropertyGroup.

View File

@@ -125,6 +125,41 @@ namespace Umbraco.Core.Models
return CompositionPropertyTypes.Any(x => x.Alias == propertyTypeAlias);
}
/// <summary>
/// Adds a PropertyType to a specific PropertyGroup
/// </summary>
/// <param name="propertyType"><see cref="PropertyType"/> to add</param>
/// <param name="propertyGroupName">Name of the PropertyGroup to add the PropertyType to</param>
/// <returns>Returns <c>True</c> if PropertyType was added, otherwise <c>False</c></returns>
public override bool AddPropertyType(PropertyType propertyType, string propertyGroupName)
{
if (PropertyTypeExists(propertyType.Alias) == false)
{
if (PropertyGroups.Contains(propertyGroupName))
{
propertyType.PropertyGroupId = PropertyGroups[propertyGroupName].Id;
PropertyGroups[propertyGroupName].PropertyTypes.Add(propertyType);
}
else
{
//If the PropertyGroup doesn't already exist we create a new one
var propertyTypes = new List<PropertyType> { propertyType };
var propertyGroup = new PropertyGroup(new PropertyTypeCollection(propertyTypes)) { Name = propertyGroupName, SortOrder = 1 };
//and check if its an inherited PropertyGroup, which exists in the composition
if (CompositionPropertyGroups.Any(x => x.Name == propertyGroupName))
{
var parentPropertyGroup = CompositionPropertyGroups.First(x => x.Name == propertyGroupName && x.ParentId.HasValue == false);
propertyGroup.SortOrder = parentPropertyGroup.SortOrder + 1;
propertyGroup.ParentId = parentPropertyGroup.Id;
}
PropertyGroups.Add(propertyGroup);
}
}
return false;
}
/// <summary>
/// Gets a list of ContentType aliases from the current composition
/// </summary>

View File

@@ -51,8 +51,12 @@ namespace Umbraco.Core.Models
}
/// <summary>
/// Gets or sets the Name of the Group, which corresponds to the Tab-name in the UI
/// Gets or sets the Id of the Parent PropertyGroup.
/// </summary>
/// <remarks>
/// A Parent PropertyGroup corresponds to an inherited PropertyGroup from a composition.
/// If a PropertyType is inserted into an inherited group then a new group will be created with an Id reference to the parent.
/// </remarks>
[DataMember]
public int? ParentId
{