mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-03 03:58:13 +08:00
ContainablePart filters the container list to those allowed to contain its content item's content type.
--HG-- branch : dev
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Web.Mvc;
|
|||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
using Orchard.ContentManagement.Aspects;
|
using Orchard.ContentManagement.Aspects;
|
||||||
using Orchard.ContentManagement.Drivers;
|
using Orchard.ContentManagement.Drivers;
|
||||||
|
using Orchard.Core.Common.Models;
|
||||||
using Orchard.Core.Containers.Models;
|
using Orchard.Core.Containers.Models;
|
||||||
using Orchard.Core.Containers.ViewModels;
|
using Orchard.Core.Containers.ViewModels;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
@@ -41,7 +42,14 @@ namespace Orchard.Core.Containers.Drivers {
|
|||||||
commonPart.Container = _contentManager.Get(model.ContainerId, VersionOptions.Latest);
|
commonPart.Container = _contentManager.Get(model.ContainerId, VersionOptions.Latest);
|
||||||
}
|
}
|
||||||
|
|
||||||
var containers = _contentManager.Query<ContainerPart, ContainerPartRecord>(VersionOptions.Latest).List();
|
// these containers are allowed to contain any content type
|
||||||
|
var freeContainers = _contentManager.Query<ContainerPart, ContainerPartRecord>(VersionOptions.Latest).Where(ctr => ctr.ItemContentType == null).List();
|
||||||
|
// these containers are allowed to contain any content type (workaround: string.IsNullOrEmpty not functioning)
|
||||||
|
var freeContainers2 = _contentManager.Query<ContainerPart, ContainerPartRecord>(VersionOptions.Latest).Where(ctr => ctr.ItemContentType == "").List();
|
||||||
|
// these containers are restricted to contain the content type of this content item
|
||||||
|
var restrictedContainers = _contentManager.Query<ContainerPart, ContainerPartRecord>(VersionOptions.Latest).Where(ctr => ctr.ItemContentType == part.ContentItem.ContentType).List();
|
||||||
|
var containers = restrictedContainers.Concat(freeContainers).Concat(freeContainers2).OrderByDescending(ctr => ctr.As<CommonPart>().PublishedUtc);
|
||||||
|
|
||||||
var listItems = new[] { new SelectListItem { Text = T("(None)").Text, Value = "0" } }
|
var listItems = new[] { new SelectListItem { Text = T("(None)").Text, Value = "0" } }
|
||||||
.Concat(containers.Select(x => new SelectListItem {
|
.Concat(containers.Select(x => new SelectListItem {
|
||||||
Value = Convert.ToString(x.Id),
|
Value = Convert.ToString(x.Id),
|
||||||
|
|||||||
Reference in New Issue
Block a user