diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs
index a27a4eb42..77007d0fa 100644
--- a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs
@@ -3,9 +3,6 @@ using System.Linq;
using System.Web;
using Orchard.Comments.Models;
using Orchard.ContentManagement;
-using Orchard.ContentManagement.MetaData.Models;
-using Orchard.ContentManagement.MetaData.Records;
-using Orchard.ContentManagement.Records;
using Orchard.Core.Common.Models;
using Orchard.Core.Navigation.Models;
using Orchard.Core.Settings.Models;
diff --git a/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs b/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs
index 70ece4268..91b12f342 100644
--- a/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs
+++ b/src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs
@@ -56,7 +56,7 @@ namespace Orchard.ContentManagement.Drivers {
{
var contentPartInfo = new List() {
new ContentPartInfo()
- {partName = typeof(TContent).Name,Factory = () => new TContent()}
+ {PartName = typeof(TContent).Name,Factory = () => new TContent()}
};
return contentPartInfo;
diff --git a/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs b/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs
index 9ecb104f5..598ce88bd 100644
--- a/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs
+++ b/src/Orchard/ContentManagement/MetaData/ContentPartHandler.cs
@@ -25,10 +25,12 @@ namespace Orchard.ContentManagement.MetaData
protected override void Activating(ActivatingContentContext context) {
var contentTypeRecord = _contentTypeService.GetContentTypeRecord(context.ContentType) ?? new ContentTypeRecord();
+
if (contentTypeRecord.ContentParts != null){
foreach (var contentTypePartRecord in contentTypeRecord.ContentParts){
- var record = contentTypePartRecord;
- var contentPart = _contentPartInfos.Single(x => x.partName == record.PartName).Factory();
+ //var record = contentTypePartRecord;
+
+ var contentPart = _contentPartInfos.Single(x => x.PartName == contentTypePartRecord.PartName.PartName).Factory();
context.Builder.Weld(contentPart);
}
}
diff --git a/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs b/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs
index 8122efbd7..23a731cbf 100644
--- a/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs
+++ b/src/Orchard/ContentManagement/MetaData/ContentPartInfo.cs
@@ -4,7 +4,7 @@ namespace Orchard.ContentManagement.MetaData
{
public class ContentPartInfo
{
- public string partName;
- public Func Factory;
+ public string PartName { get; set; }
+ public Func Factory { get; set; }
}
}
diff --git a/src/Orchard/ContentManagement/MetaData/Models/ContentTypePart.cs b/src/Orchard/ContentManagement/MetaData/Models/ContentTypePart.cs
deleted file mode 100644
index f4def626f..000000000
--- a/src/Orchard/ContentManagement/MetaData/Models/ContentTypePart.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Web.Mvc;
-using Orchard.ContentManagement;
-using Orchard.ContentManagement.MetaData.Records;
-
-namespace Orchard.ContentManagement.MetaData.Models
-{
- public class ContentTypePart : ContentPart
- {
-
- }
-}
diff --git a/src/Orchard/ContentManagement/MetaData/Records/ContentTypePartRecord.cs b/src/Orchard/ContentManagement/MetaData/Records/ContentTypePartRecord.cs
index 93de671dc..e723d18e7 100644
--- a/src/Orchard/ContentManagement/MetaData/Records/ContentTypePartRecord.cs
+++ b/src/Orchard/ContentManagement/MetaData/Records/ContentTypePartRecord.cs
@@ -1,6 +1,6 @@
namespace Orchard.ContentManagement.MetaData.Records {
public class ContentTypePartRecord {
public virtual int Id { get; set; }
- public virtual string PartName { get; set; }
+ public virtual ContentTypePartNameRecord PartName { get; set; }
}
}
diff --git a/src/Orchard/ContentManagement/MetaData/Services/ContentTypeService.cs b/src/Orchard/ContentManagement/MetaData/Services/ContentTypeService.cs
index b51574664..a4f1d022b 100644
--- a/src/Orchard/ContentManagement/MetaData/Services/ContentTypeService.cs
+++ b/src/Orchard/ContentManagement/MetaData/Services/ContentTypeService.cs
@@ -11,22 +11,34 @@ namespace Orchard.ContentManagement.MetaData.Services
[UsedImplicitly]
public class ContentTypeService : IContentTypeService
{
- private readonly IRepository _contentTypeRecord;
- private readonly IRepository _contentTypePartNameRecord;
- private readonly IRepository _contentTypePartRecord;
+ private readonly IRepository _contentTypeRepository;
+ private readonly IRepository _contentTypePartNameRepository;
+ private readonly IRepository _contentTypePartRepository;
- public ContentTypeService(IRepository contentTypePartRecord, IRepository contentTypeRecord, IRepository contentTypePartNameRecord)
+ public ContentTypeService(IRepository contentTypePartRepository, IRepository contentTypeRepository, IRepository contentTypePartNameRepository)
{
- _contentTypeRecord = contentTypeRecord;
- _contentTypePartNameRecord = contentTypePartNameRecord;
- _contentTypePartRecord = contentTypePartRecord;
+ _contentTypeRepository = contentTypeRepository;
+ _contentTypePartNameRepository = contentTypePartNameRepository;
+ _contentTypePartRepository = contentTypePartRepository;
+ }
+
+ public ContentTypePartNameRecord GetContentPartNameRecord(string name) {
+ return _contentTypePartNameRepository.Fetch(x => x.PartName == name).Single();
}
public void MapContentTypeToContentPart(string contentType, string contentPart) {
var contentTypeRecord = GetContentTypeRecord(contentType) ?? new ContentTypeRecord();
contentTypeRecord.Name = contentType;
+ var contentTypePartNameRecord =
+ _contentTypePartNameRepository.Fetch(x => x.PartName == contentPart).SingleOrDefault();
+ if (contentTypePartNameRecord==null) {
+ contentTypePartNameRecord=new ContentTypePartNameRecord(){PartName = contentPart};
+ _contentTypePartNameRepository.Update(contentTypePartNameRecord);
+ contentTypePartNameRecord =
+ _contentTypePartNameRepository.Fetch(x => x.PartName == contentPart).SingleOrDefault();
+ }
var contentTypePartRecord = new ContentTypePartRecord() {
- PartName = contentPart
+ PartName = contentTypePartNameRecord
};
if (contentTypeRecord.ContentParts==null) {
contentTypeRecord.ContentParts = new List { contentTypePartRecord };
@@ -35,15 +47,17 @@ namespace Orchard.ContentManagement.MetaData.Services
contentTypeRecord.ContentParts.Add(contentTypePartRecord);
}
- _contentTypeRecord.Update(contentTypeRecord);
+ _contentTypeRepository.Update(contentTypeRecord);
}
public void UnMapContentTypeToContentPart(string contentType, string contentPart) {
var contentTypeRecord = GetContentTypeRecord(contentType) ?? new ContentTypeRecord();
- var contentTypePartRecord = contentTypeRecord.ContentParts.Single(x => x.PartName == contentPart);
+ var contentTypePartNameRecord = _contentTypePartNameRepository.Fetch(x => x.PartName == contentPart).Single();
+
+ var contentTypePartRecord = contentTypeRecord.ContentParts.SingleOrDefault(x => x.PartName == contentTypePartNameRecord);
if (contentTypePartRecord != null)
{
- _contentTypePartRecord.Delete(contentTypePartRecord);
+ _contentTypePartRepository.Delete(contentTypePartRecord);
contentTypeRecord.ContentParts.Remove(contentTypePartRecord);
}
}
@@ -52,7 +66,7 @@ namespace Orchard.ContentManagement.MetaData.Services
var contentTypeRecord = GetContentTypeRecord(contentType) ?? new ContentTypeRecord();
if (contentTypeRecord.ContentParts.Count==0)
return false;
- var contentTypePart = contentTypeRecord.ContentParts.Single(x => x.PartName == contentPart);
+ var contentTypePart = contentTypeRecord.ContentParts.Single(x => x.PartName.PartName == contentPart);
return contentTypePart != null;
}
@@ -62,27 +76,19 @@ namespace Orchard.ContentManagement.MetaData.Services
PartName = contentTypePartName
};
- _contentTypePartNameRecord.Update(contentTypePartNameRecord);
+ _contentTypePartNameRepository.Update(contentTypePartNameRecord);
}
public ContentTypeRecord GetContentTypeRecord(string contentTypeName) {
- var contentTypeCount = _contentTypeRecord.Table.Count(x => x.Name == contentTypeName);
- if (contentTypeCount > 0) {
- var contentTypeRecord = _contentTypeRecord.Table.Single(x => x.Name == contentTypeName);
- return contentTypeRecord;
- }
- else {
- return null;
- }
-
+ return _contentTypeRepository.Fetch(x => x.Name == contentTypeName).SingleOrDefault();
}
public IEnumerable GetContentTypes() {
- return _contentTypeRecord.Table.ToList();
+ return _contentTypeRepository.Table.ToList();
}
public IEnumerable GetContentTypePartNames() {
- return _contentTypePartNameRecord.Table.ToList();
+ return _contentTypePartNameRepository.Table.ToList();
}
}
diff --git a/src/Orchard/ContentManagement/MetaData/Services/IContentTypeService.cs b/src/Orchard/ContentManagement/MetaData/Services/IContentTypeService.cs
index 6b71fd20d..2ab533896 100644
--- a/src/Orchard/ContentManagement/MetaData/Services/IContentTypeService.cs
+++ b/src/Orchard/ContentManagement/MetaData/Services/IContentTypeService.cs
@@ -12,5 +12,6 @@ namespace Orchard.ContentManagement.MetaData.Services
bool ValidateContentTypeToContentPartMapping(string contentType, string contentPart);
IEnumerable GetContentTypes();
IEnumerable GetContentTypePartNames();
+ ContentTypePartNameRecord GetContentPartNameRecord(string name);
}
}
diff --git a/src/Orchard/ContentManagement/Records/ContentPartRecord.cs b/src/Orchard/ContentManagement/Records/ContentPartRecord.cs
index b51db5f85..df2c6f019 100644
--- a/src/Orchard/ContentManagement/Records/ContentPartRecord.cs
+++ b/src/Orchard/ContentManagement/Records/ContentPartRecord.cs
@@ -1,6 +1,9 @@
+using Orchard.Data.Conventions;
+
namespace Orchard.ContentManagement.Records {
public abstract class ContentPartRecord {
public virtual int Id { get; set; }
+ [CascadeAllDeleteOrphan]
public virtual ContentItemRecord ContentItemRecord { get; set; }
}
}
diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj
index 1b3d63aa9..17d230cb7 100644
--- a/src/Orchard/Orchard.Framework.csproj
+++ b/src/Orchard/Orchard.Framework.csproj
@@ -185,7 +185,6 @@
-
@@ -465,6 +464,9 @@
+
+
+
|