From f402a1b716878d5d8380bf1d8ec235e57579ec17 Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Fri, 15 Oct 2010 18:11:06 -0700 Subject: [PATCH] Updating Comments' drivers and views (and adding a publish later metadata summary) --HG-- branch : dev --- .../Drivers/PublishLaterPartDriver.cs | 2 +- .../PublishLater.Metadata.Summary.cshtml | 10 +++++ .../Items/Content-Blog.SummaryAdmin.cshtml | 1 + .../Items/Content-BlogPost.Summary.cshtml | 2 +- .../Content-BlogPost.SummaryAdmin.cshtml | 6 +-- .../Drivers/CommentSettingsPartDriver.cs | 3 +- .../Drivers/CommentsContainerPartDriver.cs | 37 ++++++++++++------- .../Drivers/CommentsPartDriver.cs | 27 ++++++-------- .../Orchard.Comments/Orchard.Comments.csproj | 9 ++++- .../Modules/Orchard.Comments/Placement.info | 20 ++++++++++ ...tml => Comments.Count.SummaryAdmin.cshtml} | 0 ...mments.Comments.cshtml => Comments.cshtml} | 0 12 files changed, 79 insertions(+), 38 deletions(-) create mode 100644 src/Orchard.Web/Core/PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml create mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Placement.info rename src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/{Comments.CountAdmin.cshtml => Comments.Count.SummaryAdmin.cshtml} (100%) rename src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/{Comments.Comments.cshtml => Comments.cshtml} (100%) diff --git a/src/Orchard.Web/Core/PublishLater/Drivers/PublishLaterPartDriver.cs b/src/Orchard.Web/Core/PublishLater/Drivers/PublishLaterPartDriver.cs index e0821d4c5..363bfab12 100644 --- a/src/Orchard.Web/Core/PublishLater/Drivers/PublishLaterPartDriver.cs +++ b/src/Orchard.Web/Core/PublishLater/Drivers/PublishLaterPartDriver.cs @@ -33,7 +33,7 @@ namespace Orchard.Core.PublishLater.Drivers { protected override DriverResult Display(PublishLaterPart part, string displayType, dynamic shapeHelper) { return Combined( ContentShape("Parts_PublishLater_Metadata", - () => shapeHelper.Parts_PublishLater_Metadata(ContentPart: part, ScheduledPublishUtc: part.ScheduledPublishUtc.Value)), + () => shapeHelper.Parts_PublishLater_Metadata(ContentPart: part, ScheduledPublishUtc: part.ScheduledPublishUtc.Value)), ContentShape("Parts_PublishLater_Metadata_Summary", () => shapeHelper.Parts_PublishLater_Metadata_Summary(ContentPart: part, ScheduledPublishUtc: part.ScheduledPublishUtc.Value)), ContentShape("Parts_PublishLater_Metadata_SummaryAdmin", diff --git a/src/Orchard.Web/Core/PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml b/src/Orchard.Web/Core/PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml new file mode 100644 index 000000000..6ce233351 --- /dev/null +++ b/src/Orchard.Web/Core/PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml @@ -0,0 +1,10 @@ +@using Orchard.ContentManagement; +@using Orchard.Core.Common.Models; +@using Orchard.Core.PublishLater.Models; +@{ + PublishLaterPart publishLaterPart = Model.ContentPart; + DateTime? versionPublishedUtc = publishLaterPart.As() == null ? null : publishLaterPart.As().VersionPublishedUtc; +} +@if (publishLaterPart.IsPublished() && versionPublishedUtc.HasValue) { + @T("Published: {0}", Html.DateTimeRelative(versionPublishedUtc.Value, T)) @T(" | ") +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-Blog.SummaryAdmin.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-Blog.SummaryAdmin.cshtml index 035cd10fc..25ccabfd3 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-Blog.SummaryAdmin.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-Blog.SummaryAdmin.cshtml @@ -21,6 +21,7 @@ @T("New Post")@T(" | ") @T("Edit")@T(" | ") @T("Remove") +
@Display(Model.Secondary) @if (Model.Content != null) {
@Display(Model.Content)
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.Summary.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.Summary.cshtml index 92f0079ae..54e1e52e6 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.Summary.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.Summary.cshtml @@ -4,5 +4,5 @@ @using Orchard.Core.Common.Models; @using Orchard.Core.Common.ViewModels;

@Html.Link((string)Model.Title, Url.BlogPost((BlogPostPart)Model.ContentItem.Get(typeof(BlogPostPart))))

-
@Html.PublishedState(new CommonMetadataViewModel((CommonPart)Model.ContentItem.Get(typeof(CommonPart))), T) | @Display(Model.meta)
+
@Html.PublishedState(new CommonMetadataViewModel((CommonPart)Model.ContentItem.Get(typeof(CommonPart))), T) | @Display(Model.Meta)
@Display(Model.Content)
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.SummaryAdmin.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.SummaryAdmin.cshtml index b4ca94497..42a17d9f6 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.SummaryAdmin.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/Items/Content-BlogPost.SummaryAdmin.cshtml @@ -10,12 +10,12 @@

@Html.Link((string)Model.Title, Url.BlogPostEdit((BlogPostPart)Model.ContentItem.Get(typeof(BlogPostPart))))

- +
- \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs index 0df3e8d4c..8236efaa4 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs @@ -14,7 +14,8 @@ namespace Orchard.Comments.Drivers { protected override string Prefix { get { return "CommentSettings"; } } protected override DriverResult Editor(CommentSettingsPart part, dynamic shapeHelper) { - return ContentPartTemplate(part.Record, "Parts/Comments.SiteSettings"); + return ContentShape("Parts_Comments_SiteSettings", + () => shapeHelper.EditorTemplate(TemplateName: "Parts/Comments.SiteSettings", Model: part, Prefix: Prefix)); } protected override DriverResult Editor(CommentSettingsPart part, IUpdateModel updater, dynamic shapeHelper) { diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs index 629097081..74c885e79 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs @@ -1,31 +1,40 @@ +using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; using Orchard.Comments.Models; 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 { protected override DriverResult Display(CommentsContainerPart part, string displayType, dynamic shapeHelper) { - if (displayType.Contains("Summary")) { - // Find all contents item with this part as the container - var parts = part.ContentItem.ContentManager.Query() - .Where(rec => rec.Container == part.ContentItem.Record).List(); + return Combined( + ContentShape("Parts_Comments_Count", + () => { + var childItems = GetChildItems(part); + return shapeHelper.Parts_Comments_Count(ContentPart: part, CommentCount: GetCount(childItems), PendingCount: GetPendingCount(childItems)); + }), + ContentShape("Parts_Comments_Count_SummaryAdmin", + () => { + var childItems = GetChildItems(part); + return shapeHelper.Parts_Comments_Count_SummaryAdmin(ContentPart: part, CommentCount: GetCount(childItems), PendingCount: GetPendingCount(childItems)); + }) + ); + } - // Count comments and create template - int count = parts.Aggregate(0, (seed, item) => seed + (item.Has() ? item.As().Comments.Count : 0)); - int pendingCount = parts.Aggregate(0, (seed, item) => seed + (item.Has() ? item.As().PendingComments.Count : 0)); + private static IEnumerable GetChildItems(CommentsContainerPart part) { + return part.ContentItem.ContentManager.Query() + .Where(rec => rec.Container == part.ContentItem.Record).List(); + } - if (displayType == "SummaryAdmin") - return ContentShape(shapeHelper.Parts_Comments_CountAdmin(ContentPart: part, CommentCount: count, PendingCount: pendingCount)).Location(part.GetLocation("SummaryAdmin")); + private static int GetPendingCount(IEnumerable parts) { + return parts.Aggregate(0, (seed, item) => seed + (item.Has() ? item.As().PendingComments.Count : 0)); + } - return ContentShape(shapeHelper.Parts_Comments_Count(ContentPart: part, CommentCount: count, PendingCount: pendingCount)).Location(part.GetLocation("Summary")); - } - - return null; + private static int GetCount(IEnumerable parts) { + return parts.Aggregate(0, (seed, item) => seed + (item.Has() ? item.As().Comments.Count : 0)); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs index 41b121c31..56861bdfb 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs @@ -2,7 +2,6 @@ using Orchard.Comments.Models; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; -using Orchard.Core.ContentsLocation.Models; namespace Orchard.Comments.Drivers { [UsedImplicitly] @@ -11,28 +10,24 @@ namespace Orchard.Comments.Drivers { if (part.CommentsShown == false) return null; - if (displayType.StartsWith("Detail")) - return ContentShape(shapeHelper.Parts_Comments_Comments(ContentPart: part)).Location("Content:10"); - - if (displayType == "SummaryAdmin") - return ContentShape(shapeHelper.Parts_Comments_CountAdmin(ContentPart: part, CommentCount: part.Comments.Count, PendingCount: part.PendingComments.Count)) - .Location(part.GetLocation("SummaryAdmin")); - - var location = displayType.Contains("Summary") - ? part.GetLocation("Summary") - : part.GetLocation(displayType); - - return ContentShape(shapeHelper.Parts_Comments_Count(ContentPart: part, CommentCount: part.Comments.Count, PendingCount: part.PendingComments.Count)) - .Location(location); + return Combined( + ContentShape("Parts_Comments", + () => shapeHelper.Parts_Comments(ContentPart: part)), + ContentShape("Parts_Comments_Count", + () => shapeHelper.Parts_Comments_Count(ContentPart: part, CommentCount: part.Comments.Count, PendingCount: part.PendingComments.Count)), + ContentShape("Parts_Comments_Count_SummaryAdmin", + () => shapeHelper.Parts_Comments_Count_SummaryAdmin(ContentPart: part, CommentCount: part.Comments.Count, PendingCount: part.PendingComments.Count)) + ); } protected override DriverResult Editor(CommentsPart part, dynamic shapeHelper) { - return ContentPartTemplate(part, "Parts/Comments.Comments").Location(part.GetLocation("Editor")); + return ContentShape("Parts_Comments_Enable", + () => shapeHelper.EditorTemplate(TemplateName: "Parts/Comments.Comments", Model: part, Prefix: Prefix)); } protected override DriverResult Editor(CommentsPart part, IUpdateModel updater, dynamic shapeHelper) { updater.TryUpdateModel(part, Prefix, null, null); - return ContentPartTemplate(part, "Parts/Comments.Comments").Location(part.GetLocation("Editor")); + return Editor(part, shapeHelper); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj index abb3c2360..a27600f6b 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj +++ b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj @@ -127,13 +127,18 @@ - + - + + + + Designer + + + + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.CountAdmin.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.Count.SummaryAdmin.cshtml similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.CountAdmin.cshtml rename to src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.Count.SummaryAdmin.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.Comments.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.cshtml similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.Comments.cshtml rename to src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.cshtml