Created new field in cmsContentType and related models for storing the configuration for a container doc type; implemented configurable page size
This commit is contained in:
@@ -29,6 +29,7 @@ namespace Umbraco.Core.Models
|
||||
private int _creatorId;
|
||||
private bool _allowedAsRoot;
|
||||
private bool _isContainer;
|
||||
private string _containerConfig;
|
||||
private bool _trashed;
|
||||
private PropertyGroupCollection _propertyGroups;
|
||||
private PropertyTypeCollection _propertyTypes;
|
||||
@@ -72,6 +73,7 @@ namespace Umbraco.Core.Models
|
||||
private static readonly PropertyInfo CreatorIdSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, int>(x => x.CreatorId);
|
||||
private static readonly PropertyInfo AllowedAsRootSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.AllowedAsRoot);
|
||||
private static readonly PropertyInfo IsContainerSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.IsContainer);
|
||||
private static readonly PropertyInfo ContainerConfigSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, string>(x => x.ContainerConfig);
|
||||
private static readonly PropertyInfo TrashedSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.Trashed);
|
||||
private static readonly PropertyInfo AllowedContentTypesSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, IEnumerable<ContentTypeSort>>(x => x.AllowedContentTypes);
|
||||
private static readonly PropertyInfo PropertyGroupCollectionSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, PropertyGroupCollection>(x => x.PropertyGroups);
|
||||
@@ -303,6 +305,23 @@ namespace Umbraco.Core.Models
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets a JSON string defining the configuration for this ContentType if set as a container
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public virtual string ContainerConfig
|
||||
{
|
||||
get { return _containerConfig; }
|
||||
set
|
||||
{
|
||||
SetPropertyValueAndDetectChanges(o =>
|
||||
{
|
||||
_containerConfig = value;
|
||||
return _containerConfig;
|
||||
}, _containerConfig, ContainerConfigSelector);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Boolean indicating whether this ContentType is Trashed or not.
|
||||
/// If ContentType is Trashed it will be located in the Recyclebin.
|
||||
|
||||
@@ -43,6 +43,11 @@ namespace Umbraco.Core.Models
|
||||
/// </remarks>
|
||||
bool IsContainer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets a JSON string defining the configuration for this ContentType if set as a container
|
||||
/// </summary>
|
||||
string ContainerConfig { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets a list of integer Ids of the ContentTypes allowed under the ContentType
|
||||
/// </summary>
|
||||
|
||||
@@ -39,6 +39,10 @@ namespace Umbraco.Core.Models.Rdbms
|
||||
[Constraint(Default = "0")]
|
||||
public bool IsContainer { get; set; }
|
||||
|
||||
[Column("containerConfig")]
|
||||
[NullSetting(NullSetting = NullSettings.Null)]
|
||||
public string ContainerConfig { get; set; }
|
||||
|
||||
[Column("allowAtRoot")]
|
||||
[Constraint(Default = "0")]
|
||||
public bool AllowAtRoot { get; set; }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.DatabaseAnnotations;
|
||||
|
||||
namespace Umbraco.Core.Models.Rdbms
|
||||
{
|
||||
@@ -62,6 +63,10 @@ namespace Umbraco.Core.Models.Rdbms
|
||||
[Column("isContainer")]
|
||||
public bool IsContainer { get; set; }
|
||||
|
||||
[Column("containerConfig")]
|
||||
[NullSetting(NullSetting = NullSettings.Null)]
|
||||
public string ContainerConfig { get; set; }
|
||||
|
||||
[Column("allowAtRoot")]
|
||||
public bool AllowAtRoot { get; set; }
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
CreatorId = dto.ContentTypeDto.NodeDto.UserId.Value,
|
||||
AllowedAsRoot = dto.ContentTypeDto.AllowAtRoot,
|
||||
IsContainer = dto.ContentTypeDto.IsContainer,
|
||||
ContainerConfig = dto.ContentTypeDto.ContainerConfig,
|
||||
Trashed = dto.ContentTypeDto.NodeDto.Trashed,
|
||||
DefaultTemplateId = dto.TemplateNodeId
|
||||
};
|
||||
@@ -74,6 +75,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
NodeId = entity.Id,
|
||||
AllowAtRoot = entity.AllowedAsRoot,
|
||||
IsContainer = entity.IsContainer,
|
||||
ContainerConfig = entity.ContainerConfig,
|
||||
NodeDto = BuildNodeDto(entity)
|
||||
};
|
||||
return contentTypeDto;
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
CreatorId = dto.NodeDto.UserId.Value,
|
||||
AllowedAsRoot = dto.AllowAtRoot,
|
||||
IsContainer = dto.IsContainer,
|
||||
ContainerConfig = dto.ContainerConfig,
|
||||
Trashed = dto.NodeDto.Trashed
|
||||
};
|
||||
//on initial construction we don't want to have dirty properties tracked
|
||||
@@ -56,6 +57,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
NodeId = entity.Id,
|
||||
AllowAtRoot = entity.AllowedAsRoot,
|
||||
IsContainer = entity.IsContainer,
|
||||
ContainerConfig = entity.ContainerConfig,
|
||||
NodeDto = BuildNodeDto(entity)
|
||||
};
|
||||
return contentTypeDto;
|
||||
|
||||
@@ -32,6 +32,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
NodeId = entity.Id,
|
||||
AllowAtRoot = entity.AllowedAsRoot,
|
||||
IsContainer = entity.IsContainer,
|
||||
ContainerConfig = entity.ContainerConfig,
|
||||
NodeDto = BuildNodeDto(entity)
|
||||
};
|
||||
return contentTypeDto;
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
Icon = dto.Icon,
|
||||
Id = dto.NodeId,
|
||||
IsContainer = dto.IsContainer,
|
||||
ContainerConfig = dto.ContainerConfig,
|
||||
Key = dto.UniqueId.Value,
|
||||
Level = dto.Level,
|
||||
Name = dto.Text,
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace Umbraco.Core.Persistence.Mappers
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.Description, dto => dto.Description);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.Icon, dto => dto.Icon);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.IsContainer, dto => dto.IsContainer);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.ContainerConfig, dto => dto.ContainerConfig);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.Thumbnail, dto => dto.Thumbnail);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace Umbraco.Core.Persistence.Mappers
|
||||
CacheMap<MediaType, ContentTypeDto>(src => src.Description, dto => dto.Description);
|
||||
CacheMap<MediaType, ContentTypeDto>(src => src.Icon, dto => dto.Icon);
|
||||
CacheMap<MediaType, ContentTypeDto>(src => src.IsContainer, dto => dto.IsContainer);
|
||||
CacheMap<MediaType, ContentTypeDto>(src => src.ContainerConfig, dto => dto.ContainerConfig);
|
||||
CacheMap<MediaType, ContentTypeDto>(src => src.Thumbnail, dto => dto.Thumbnail);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace Umbraco.Core.Persistence.Mappers
|
||||
CacheMap<MemberType, ContentTypeDto>(src => src.Description, dto => dto.Description);
|
||||
CacheMap<MemberType, ContentTypeDto>(src => src.Icon, dto => dto.Icon);
|
||||
CacheMap<MemberType, ContentTypeDto>(src => src.IsContainer, dto => dto.IsContainer);
|
||||
CacheMap<MemberType, ContentTypeDto>(src => src.ContainerConfig, dto => dto.ContainerConfig);
|
||||
CacheMap<MemberType, ContentTypeDto>(src => src.Thumbnail, dto => dto.Thumbnail);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,7 +305,8 @@ namespace Umbraco.Core.Services
|
||||
new XElement("Thumbnail", contentType.Thumbnail),
|
||||
new XElement("Description", contentType.Description),
|
||||
new XElement("AllowAtRoot", contentType.AllowedAsRoot.ToString()),
|
||||
new XElement("IsListView", contentType.IsContainer.ToString()));
|
||||
new XElement("IsListView", contentType.IsContainer.ToString()),
|
||||
new XElement("ContainerConfig", contentType.ContainerConfig.ToString()));
|
||||
|
||||
var masterContentType = contentType.CompositionAliases().FirstOrDefault();
|
||||
if (masterContentType != null)
|
||||
|
||||
@@ -423,8 +423,17 @@ namespace Umbraco.Core.Services
|
||||
//NOTE IsListView is a new property in the package xml so we need to verify it exists before using it.
|
||||
var isListView = infoElement.Element("IsListView");
|
||||
if (isListView != null)
|
||||
{
|
||||
contentType.IsContainer = isListView.Value.InvariantEquals("true");
|
||||
|
||||
//NOTE ContainerConfig is a new property in the package xml so we need to verify it exists before using it.
|
||||
var containerConfig = infoElement.Element("ContainerConfig");
|
||||
if (containerConfig != null)
|
||||
{
|
||||
contentType.ContainerConfig = containerConfig.Value;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateContentTypesAllowedTemplates(contentType, infoElement.Element("AllowedTemplates"), defaultTemplateElement);
|
||||
UpdateContentTypesTabs(contentType, documentType.Element("Tabs"));
|
||||
UpdateContentTypesProperties(contentType, documentType.Element("GenericProperties"));
|
||||
|
||||
Reference in New Issue
Block a user