Moving internal membership provider classes.
Adding missing alias to AllowedContentTypes on ContentType. Adding Package export test.
This commit is contained in:
@@ -20,5 +20,8 @@ namespace Umbraco.Core.Models.Rdbms
|
||||
[Column("SortOrder")]
|
||||
[Constraint(Name = "df_cmsContentTypeAllowedContentType_sortOrder", Default = "0")]
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
[ResultColumn]
|
||||
public ContentTypeDto ContentTypeDto { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -320,10 +320,12 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
var sql = new Sql();
|
||||
sql.Select("*")
|
||||
.From<ContentTypeAllowedContentTypeDto>()
|
||||
.LeftJoin<ContentTypeDto>()
|
||||
.On<ContentTypeAllowedContentTypeDto, ContentTypeDto>(left => left.Id, right => right.NodeId)
|
||||
.Where<ContentTypeAllowedContentTypeDto>(x => x.Id == id);
|
||||
|
||||
var allowedContentTypeDtos = Database.Fetch<ContentTypeAllowedContentTypeDto>(sql);
|
||||
return allowedContentTypeDtos.Select(x => new ContentTypeSort { Id = new Lazy<int>(() => x.AllowedId), SortOrder = x.SortOrder }).ToList();
|
||||
var allowedContentTypeDtos = Database.Fetch<ContentTypeAllowedContentTypeDto, ContentTypeDto>(sql);
|
||||
return allowedContentTypeDtos.Select(x => new ContentTypeSort { Id = new Lazy<int>(() => x.AllowedId), Alias = x.ContentTypeDto.Alias, SortOrder = x.SortOrder }).ToList();
|
||||
}
|
||||
|
||||
protected PropertyGroupCollection GetPropertyGroupCollection(int id, DateTime createDate, DateTime updateDate)
|
||||
|
||||
@@ -192,6 +192,71 @@ namespace Umbraco.Core.Services
|
||||
|
||||
#region ContentTypes
|
||||
|
||||
public XElement Export(IContentType contentType)
|
||||
{
|
||||
var info = new XElement("Info",
|
||||
new XElement("Name", contentType.Name),
|
||||
new XElement("Alias", contentType.Alias),
|
||||
new XElement("Icon", contentType.Icon),
|
||||
new XElement("Thumbnail", contentType.Thumbnail),
|
||||
new XElement("Description", contentType.Description),
|
||||
new XElement("AllowAtRoot", contentType.AllowedAsRoot.ToString()));
|
||||
|
||||
var masterContentType = contentType.CompositionAliases().FirstOrDefault();
|
||||
if(masterContentType != null)
|
||||
info.Add(new XElement("Master", masterContentType));
|
||||
|
||||
var allowedTemplates = new XElement("AllowedTemplates");
|
||||
foreach (var template in contentType.AllowedTemplates)
|
||||
{
|
||||
allowedTemplates.Add(new XElement("Template", template.Alias));
|
||||
}
|
||||
info.Add(allowedTemplates);
|
||||
if(contentType.DefaultTemplate != null && contentType.DefaultTemplate.Id != 0)
|
||||
info.Add(new XElement("DefaultTemplate", contentType.DefaultTemplate.Alias));
|
||||
else
|
||||
info.Add(new XElement("DefaultTemplate", ""));
|
||||
|
||||
var structure = new XElement("Structure");
|
||||
foreach (var allowedType in contentType.AllowedContentTypes)
|
||||
{
|
||||
structure.Add(new XElement("DocumentType", allowedType.Alias));
|
||||
}
|
||||
|
||||
var genericProperties = new XElement("GenericProperties");
|
||||
foreach (var propertyType in contentType.PropertyTypes)
|
||||
{
|
||||
var definition = _dataTypeService.GetDataTypeDefinitionById(propertyType.DataTypeDefinitionId);
|
||||
var propertyGroup = contentType.PropertyGroups.FirstOrDefault(x => x.Id == propertyType.PropertyGroupId.Value);
|
||||
var genericProperty = new XElement("GenericProperty",
|
||||
new XElement("Name", propertyType.Name),
|
||||
new XElement("Alias", propertyType.Alias),
|
||||
new XElement("Type", propertyType.DataTypeId.ToString()),
|
||||
new XElement("Definition", definition.Key),
|
||||
new XElement("Tab", propertyGroup == null ? "" : propertyGroup.Name),
|
||||
new XElement("Mandatory", propertyType.Mandatory.ToString()),
|
||||
new XElement("Validation", propertyType.ValidationRegExp),
|
||||
new XElement("Description", new XCData(propertyType.Description)));
|
||||
genericProperties.Add(genericProperty);
|
||||
}
|
||||
|
||||
var tabs = new XElement("Tabs");
|
||||
foreach (var propertyGroup in contentType.PropertyGroups)
|
||||
{
|
||||
var tab = new XElement("Tab",
|
||||
new XElement("Id", propertyGroup.Id.ToString()),
|
||||
new XElement("Caption", propertyGroup.Name));
|
||||
tabs.Add(tab);
|
||||
}
|
||||
|
||||
var xml = new XElement("DocumentType",
|
||||
info,
|
||||
structure,
|
||||
genericProperties,
|
||||
tabs);
|
||||
return xml;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Imports and saves package xml as <see cref="IContentType"/>
|
||||
/// </summary>
|
||||
|
||||
@@ -196,8 +196,6 @@
|
||||
<Compile Include="Models\IDictionaryTranslation.cs" />
|
||||
<Compile Include="Models\IFile.cs" />
|
||||
<Compile Include="Models\ILanguage.cs" />
|
||||
<Compile Include="Models\Membership\Providers\MembersMembershipProvider.cs" />
|
||||
<Compile Include="Models\Membership\Providers\UsersMembershipProvider.cs" />
|
||||
<Compile Include="Models\Membership\UmbracoMembershipUser.cs" />
|
||||
<Compile Include="Models\ServerRegistration.cs" />
|
||||
<Compile Include="Models\ITemplate.cs" />
|
||||
|
||||
@@ -224,6 +224,29 @@ namespace Umbraco.Tests.Services.Importing
|
||||
Assert.That(contentTypes.Count(), Is.EqualTo(1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PackagingService_Can_Export_Single_DocType()
|
||||
{
|
||||
// Arrange
|
||||
string strXml = ImportResources.SingleDocType;
|
||||
var docTypeElement = XElement.Parse(strXml);
|
||||
var packagingService = ServiceContext.PackagingService;
|
||||
|
||||
// Act
|
||||
var contentTypes = packagingService.ImportContentTypes(docTypeElement);
|
||||
var contentType = contentTypes.FirstOrDefault();
|
||||
var element = packagingService.Export(contentType);
|
||||
|
||||
// Assert
|
||||
Assert.That(element, Is.Not.Null);
|
||||
Assert.That(element.Element("Info"), Is.Not.Null);
|
||||
Assert.That(element.Element("Structure"), Is.Not.Null);
|
||||
Assert.That(element.Element("GenericProperties"), Is.Not.Null);
|
||||
Assert.That(element.Element("Tabs"), Is.Not.Null);
|
||||
//Can't compare this XElement because the templates are not imported (they don't exist)
|
||||
//Assert.That(XNode.DeepEquals(docTypeElement, element), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PackagingService_Can_ReImport_Single_DocType()
|
||||
{
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
using System.Web.Security;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Services;
|
||||
|
||||
namespace Umbraco.Core.Models.Membership.Providers
|
||||
namespace Umbraco.Web.Security.Providers
|
||||
{
|
||||
/// <summary>
|
||||
/// Custom Membership Provider for Umbraco Members (User authentication for Umbraco based Websites)
|
||||
@@ -2,9 +2,10 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Web.Security;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Services;
|
||||
|
||||
namespace Umbraco.Core.Models.Membership.Providers
|
||||
namespace Umbraco.Web.Security.Providers
|
||||
{
|
||||
/// <summary>
|
||||
/// Custom Membership Provider for Umbraco Users (User authentication for Umbraco Backend CMS)
|
||||
@@ -288,6 +288,8 @@
|
||||
<Compile Include="Cache\UserCacheRefresher.cs" />
|
||||
<Compile Include="Cache\UserTypeCacheRefresher.cs" />
|
||||
<Compile Include="Configuration\WebRouting.cs" />
|
||||
<Compile Include="Security\Providers\MembersMembershipProvider.cs" />
|
||||
<Compile Include="Security\Providers\UsersMembershipProvider.cs" />
|
||||
<Compile Include="Standalone\ServiceContextManager.cs" />
|
||||
<Compile Include="Standalone\StandaloneApplication.cs" />
|
||||
<Compile Include="Standalone\StandaloneBootManager.cs" />
|
||||
|
||||
Reference in New Issue
Block a user