Files
Orchard/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs
Nathan Heskew aa269fd49f Comment -> CommentPart; HasComments -> CommentsPart; HasCommentsContainer -> CommentsContainerPart
- 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
2010-07-22 14:08:31 -07:00

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};
}
}
}