Moving internal membership provider classes.

Adding missing alias to AllowedContentTypes on ContentType.
Adding Package export test.
This commit is contained in:
Morten Christensen
2013-05-24 08:13:24 -02:00
parent c7a4c782e3
commit 232581664b
8 changed files with 101 additions and 6 deletions

View File

@@ -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; }
}
}

View File

@@ -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)

View File

@@ -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>

View File

@@ -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" />

View File

@@ -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()
{

View File

@@ -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)

View File

@@ -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)

View File

@@ -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" />