mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Getting at available parts (to hook on to content types) differently to include appropriate code- and user-defined parts
--HG-- branch : dev
This commit is contained in:
@@ -12,16 +12,20 @@ using Orchard.Localization;
|
|||||||
namespace Orchard.ContentTypes.Services {
|
namespace Orchard.ContentTypes.Services {
|
||||||
public class ContentDefinitionService : IContentDefinitionService {
|
public class ContentDefinitionService : IContentDefinitionService {
|
||||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||||
|
private readonly IEnumerable<IContentPartDriver> _contentPartDrivers;
|
||||||
private readonly IEnumerable<IContentFieldDriver> _contentFieldDrivers;
|
private readonly IEnumerable<IContentFieldDriver> _contentFieldDrivers;
|
||||||
private readonly IContentDefinitionEditorEvents _contentDefinitionEditorEvents;
|
private readonly IContentDefinitionEditorEvents _contentDefinitionEditorEvents;
|
||||||
|
|
||||||
public ContentDefinitionService(
|
public ContentDefinitionService(
|
||||||
IOrchardServices services,
|
IOrchardServices services,
|
||||||
IContentDefinitionManager contentDefinitionManager,
|
IContentDefinitionManager contentDefinitionManager,
|
||||||
|
IEnumerable<IContentPartDriver> contentPartDrivers,
|
||||||
IEnumerable<IContentFieldDriver> contentFieldDrivers,
|
IEnumerable<IContentFieldDriver> contentFieldDrivers,
|
||||||
IContentDefinitionEditorEvents contentDefinitionEditorEvents) {
|
IContentDefinitionEditorEvents contentDefinitionEditorEvents)
|
||||||
|
{
|
||||||
Services = services;
|
Services = services;
|
||||||
_contentDefinitionManager = contentDefinitionManager;
|
_contentDefinitionManager = contentDefinitionManager;
|
||||||
|
_contentPartDrivers = contentPartDrivers;
|
||||||
_contentFieldDrivers = contentFieldDrivers;
|
_contentFieldDrivers = contentFieldDrivers;
|
||||||
_contentDefinitionEditorEvents = contentDefinitionEditorEvents;
|
_contentDefinitionEditorEvents = contentDefinitionEditorEvents;
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
@@ -141,7 +145,12 @@ namespace Orchard.ContentTypes.Services {
|
|||||||
|
|
||||||
public IEnumerable<EditPartViewModel> GetParts() {
|
public IEnumerable<EditPartViewModel> GetParts() {
|
||||||
var typeNames = GetTypes().Select(ctd => ctd.Name);
|
var typeNames = GetTypes().Select(ctd => ctd.Name);
|
||||||
return _contentDefinitionManager.ListPartDefinitions().Where(cpd => !typeNames.Contains(cpd.Name)).Select(cpd => new EditPartViewModel(cpd));
|
// code-defined parts
|
||||||
|
var codeDefinedParts = _contentPartDrivers.SelectMany(d => d.GetPartInfo().Select(cpi => new EditPartViewModel {Name = cpi.PartName}));
|
||||||
|
// user-defined parts
|
||||||
|
var contentParts = _contentDefinitionManager.ListPartDefinitions().Where(cpd => !codeDefinedParts.Any(m => m.Name == cpd.Name)).Select(cpd => new EditPartViewModel(cpd));
|
||||||
|
// all together now, except for those parts with the same name as a type (implicit type's part or a mistake)
|
||||||
|
return contentParts.Where(m => !typeNames.Contains(m.Name)).Union(codeDefinedParts).OrderBy(m => m.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditPartViewModel GetPart(string name) {
|
public EditPartViewModel GetPart(string name) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using (Html.BeginFormAntiForgeryPost()) { %>
|
|||||||
string.Format(
|
string.Format(
|
||||||
"{0} <label for=\"{1}\" class=\"forcheckbox\">{2}</label>{3}",
|
"{0} <label for=\"{1}\" class=\"forcheckbox\">{2}</label>{3}",
|
||||||
Html.CheckBox(fieldNameStart + "IsSelected"),
|
Html.CheckBox(fieldNameStart + "IsSelected"),
|
||||||
fieldNameStart + "IsSelected",
|
ViewData.TemplateInfo.GetFullHtmlFieldId(fieldNameStart + "IsSelected"),
|
||||||
partSelection.PartName,
|
partSelection.PartName,
|
||||||
Html.Hidden(fieldNameStart + "PartName", partSelection.PartName)));
|
Html.Hidden(fieldNameStart + "PartName", partSelection.PartName)));
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user