mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 03:25:23 +08:00

- updating part names to conform to a <name>Part convention --HG-- branch : dev rename : src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentDriver.cs => src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Drivers/HasCommentsContainerDriver.cs => src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Drivers/HasCommentsDriver.cs => src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentHandler.cs => src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentPartHandler.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentSettingsHandler.cs => src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentSettingsPartHandler.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Handlers/HasCommentsHandler.cs => src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainer.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/CommentRecord.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentPartRecord.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettings.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsRecord.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentSettingsPartRecord.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsContainer.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentsContainerPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasComments.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentsPart.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Models/HasCommentsRecord.cs => src/Orchard.Web/Modules/Orchard.Comments/Models/CommentsPartRecord.cs rename : src/Orchard.Web/Modules/Orchard.Comments/Views/DisplayTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Modules/Orchard.Comments/Views/DisplayTemplates/Parts/Comments.Comments.ascx rename : src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Modules/Orchard.Comments/Views/EditorTemplates/Parts/Comments.Comments.ascx rename : src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Themes/Contoso/Views/DisplayTemplates/Parts/Comments.Comments.ascx rename : src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Comments.HasComments.ascx => src/Orchard.Web/Themes/Corporate/Views/DisplayTemplates/Parts/Comments.Comments.ascx
36 lines
1.8 KiB
C#
36 lines
1.8 KiB
C#
using System.Linq;
|
|
using JetBrains.Annotations;
|
|
using Orchard.Comments.Models;
|
|
using Orchard.Comments.ViewModels;
|
|
using Orchard.ContentManagement;
|
|
using Orchard.ContentManagement.Drivers;
|
|
using Orchard.Core.Common.Models;
|
|
using Orchard.Core.ContentsLocation.Models;
|
|
|
|
namespace Orchard.Comments.Drivers {
|
|
[UsedImplicitly]
|
|
public class CommentsContainerPartDriver : ContentPartDriver<CommentsContainerPart> {
|
|
protected override DriverResult Display(CommentsContainerPart part, string displayType) {
|
|
if (displayType == "SummaryAdmin") {
|
|
return ContentPartTemplate(CreateViewModel(part.ContentItem), "Parts/Comments.CountAdmin").Location(part.GetLocation("SummaryAdmin"));
|
|
}
|
|
else if (displayType.Contains("Summary")) {
|
|
return ContentPartTemplate(CreateViewModel(part.ContentItem), "Parts/Comments.Count").Location(part.GetLocation("Summary"));
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
private static CommentCountViewModel CreateViewModel(ContentItem contentItem) {
|
|
// Find all contents item with this part as the container
|
|
var parts = contentItem.ContentManager.Query()
|
|
.Where<CommonPartRecord>(rec => rec.Container == contentItem.Record).List();
|
|
|
|
// Count comments and create template
|
|
int count = parts.Aggregate(0, (seed, item) => seed + (item.Has<CommentsPart>() ? item.As<CommentsPart>().Comments.Count : 0));
|
|
int pendingCount = parts.Aggregate(0, (seed, item) => seed + (item.Has<CommentsPart>() ? item.As<CommentsPart>().PendingComments.Count : 0));
|
|
|
|
return new CommentCountViewModel { Item = contentItem, CommentCount = count, PendingCount = pendingCount};
|
|
}
|
|
}
|
|
} |