mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-22 20:13:50 +08:00
Separate driver for lists
--HG-- branch : 1.x extra : rebase_source : 11fd73323325581ec561f1043de916e8c4737b49
This commit is contained in:
@@ -46,43 +46,39 @@ namespace Orchard.Core.Containers.Drivers {
|
||||
if (!part.ItemsShown)
|
||||
return null;
|
||||
|
||||
return Combined(
|
||||
ContentShape("Parts_Container_Contained",
|
||||
() => {
|
||||
var container = part.ContentItem;
|
||||
return ContentShape("Parts_Container_Contained",
|
||||
() => {
|
||||
var container = part.ContentItem;
|
||||
|
||||
IContentQuery<ContentItem> query = _contentManager
|
||||
.Query(VersionOptions.Published)
|
||||
.Join<CommonPartRecord>().Where(cr => cr.Container.Id == container.Id);
|
||||
IContentQuery<ContentItem> query = _contentManager
|
||||
.Query(VersionOptions.Published)
|
||||
.Join<CommonPartRecord>().Where(cr => cr.Container.Id == container.Id);
|
||||
|
||||
var descendingOrder = part.OrderByDirection == (int)OrderByDirection.Descending;
|
||||
query = query.OrderBy(part.OrderByProperty, descendingOrder);
|
||||
var descendingOrder = part.OrderByDirection == (int)OrderByDirection.Descending;
|
||||
query = query.OrderBy(part.OrderByProperty, descendingOrder);
|
||||
|
||||
_feedManager.Register(container.As<RoutePart>().Title, "rss", new RouteValueDictionary { { "containerid", container.Id } });
|
||||
_feedManager.Register(container.As<RoutePart>().Title, "rss", new RouteValueDictionary { { "containerid", container.Id } });
|
||||
|
||||
var pager = new Pager(_siteService.GetSiteSettings(), part.PagerParameters);
|
||||
pager.PageSize = part.PagerParameters.PageSize != null && part.Paginated
|
||||
? pager.PageSize
|
||||
: part.PageSize;
|
||||
var pager = new Pager(_siteService.GetSiteSettings(), part.PagerParameters);
|
||||
pager.PageSize = part.PagerParameters.PageSize != null && part.Paginated
|
||||
? pager.PageSize
|
||||
: part.PageSize;
|
||||
|
||||
var pagerShape = shapeHelper.Pager(pager).TotalItemCount(query.Count());
|
||||
var pagerShape = shapeHelper.Pager(pager).TotalItemCount(query.Count());
|
||||
|
||||
var startIndex = part.Paginated ? pager.GetStartIndex() : 0;
|
||||
var pageOfItems = query.Slice(startIndex, pager.PageSize).ToList();
|
||||
var startIndex = part.Paginated ? pager.GetStartIndex() : 0;
|
||||
var pageOfItems = query.Slice(startIndex, pager.PageSize).ToList();
|
||||
|
||||
var listShape = shapeHelper.List();
|
||||
listShape.AddRange(pageOfItems.Select(item => _contentManager.BuildDisplay(item, "Summary")));
|
||||
listShape.Classes.Add("content-items");
|
||||
listShape.Classes.Add("list-items");
|
||||
var listShape = shapeHelper.List();
|
||||
listShape.AddRange(pageOfItems.Select(item => _contentManager.BuildDisplay(item, "Summary")));
|
||||
listShape.Classes.Add("content-items");
|
||||
listShape.Classes.Add("list-items");
|
||||
|
||||
return shapeHelper.Parts_Container_Contained(
|
||||
List: listShape,
|
||||
Pager: pagerShape
|
||||
);
|
||||
}),
|
||||
ContentShape("Parts_Container_Contained_SummaryAdmin",
|
||||
() => shapeHelper.Parts_Container_Contained_SummaryAdmin(ContentPart: part))
|
||||
);
|
||||
return shapeHelper.Parts_Container_Contained(
|
||||
List: listShape,
|
||||
Pager: pagerShape
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(ContainerPart part, dynamic shapeHelper) {
|
||||
|
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using Orchard.ContentManagement.Drivers;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.ContentManagement.MetaData;
|
||||
using Orchard.Settings;
|
||||
using Orchard.Core.Feeds;
|
||||
|
||||
namespace Orchard.Lists.Drivers {
|
||||
public class ContainerPartDriver : Orchard.Core.Containers.Drivers.ContainerPartDriver {
|
||||
public ContainerPartDriver(
|
||||
IContentDefinitionManager contentDefinitionManager,
|
||||
IOrchardServices orchardServices,
|
||||
ISiteService siteService,
|
||||
IFeedManager feedManager)
|
||||
: base(contentDefinitionManager, orchardServices, siteService, feedManager)
|
||||
{
|
||||
}
|
||||
|
||||
protected override DriverResult Display(ContainerPart part, string displayType, dynamic shapeHelper) {
|
||||
var shape = base.Display(part, displayType, (object)shapeHelper); // shapeHelper casting to avoid compiler error
|
||||
|
||||
if (shape == null) return null;
|
||||
|
||||
return Combined(
|
||||
shape,
|
||||
ContentShape("Parts_Container_Contained_SummaryAdmin",
|
||||
() => shapeHelper.Parts_Container_Contained_SummaryAdmin(ContentPart: part))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
@@ -49,6 +49,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AdminMenu.cs" />
|
||||
<Compile Include="Drivers\ContainerPartDriver.cs" />
|
||||
<Compile Include="Handlers\ContainerPartHandler.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Routes.cs" />
|
||||
@@ -105,6 +106,7 @@
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\Choose.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
Reference in New Issue
Block a user