From cc4e654538615f682aabade409089cccfd34c1e8 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 2 Nov 2012 14:50:15 -0700 Subject: [PATCH] Saving ThreadedComments defaul value in CommentsPart settings --HG-- branch : 1.x extra : rebase_source : a0d016c2ee5b9420a95dfe24f5a07870ed78b68e --- .../Drivers/CommentsPartDriver.cs | 10 ++++- .../Handlers/CommentsPartHandler.cs | 1 - .../Orchard.Comments/Orchard.Comments.csproj | 3 ++ .../Settings/CommentsPartSettings.cs | 5 +++ .../Settings/CommentsPartSettingsEvents.cs | 38 +++++++++++++++++++ .../CommentsPartSettings.cshtml | 9 +++++ 6 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettingsEvents.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettings.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs index 912b07075..731556082 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs @@ -2,6 +2,7 @@ using JetBrains.Annotations; using Orchard.Comments.Models; using Orchard.Comments.Services; +using Orchard.Comments.Settings; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; using System.Collections.Generic; @@ -72,7 +73,14 @@ namespace Orchard.Comments.Drivers { protected override DriverResult Editor(CommentsPart part, dynamic shapeHelper) { return ContentShape("Parts_Comments_Enable", - () => shapeHelper.EditorTemplate(TemplateName: "Parts.Comments.Comments", Model: part, Prefix: Prefix)); + () => { + // if the part is new, then apply threaded comments defaults + if(!part.ContentItem.HasDraft() && !part.ContentItem.HasPublished()) { + var settings = part.TypePartDefinition.Settings.GetModel(); + part.ThreadedComments = settings.DefaultThreadedComments; + } + return shapeHelper.EditorTemplate(TemplateName: "Parts.Comments.Comments", Model: part, Prefix: Prefix); + }); } protected override DriverResult Editor(CommentsPart part, IUpdateModel updater, dynamic shapeHelper) { diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs index 4a189f9b6..d6879d6f5 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs @@ -20,7 +20,6 @@ namespace Orchard.Comments.Handlers { OnInitializing((ctx, part) => { part.CommentsActive = true; part.CommentsShown = true; - part.ThreadedComments = true; part.Comments = new List(); }); diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj index 0b269084f..74ac0d03c 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj +++ b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj @@ -75,6 +75,8 @@ + + @@ -160,6 +162,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs new file mode 100644 index 000000000..6e35a08bb --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs @@ -0,0 +1,5 @@ +namespace Orchard.Comments.Settings { + public class CommentsPartSettings { + public bool DefaultThreadedComments { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettingsEvents.cs b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettingsEvents.cs new file mode 100644 index 000000000..4701ea614 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettingsEvents.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using System.Globalization; +using Orchard.ContentManagement; +using Orchard.ContentManagement.MetaData; +using Orchard.ContentManagement.MetaData.Builders; +using Orchard.ContentManagement.MetaData.Models; +using Orchard.ContentManagement.ViewModels; +using Orchard.Localization; + +namespace Orchard.Comments.Settings { + public class CommentsPartSettingsEvents : ContentDefinitionEditorEventsBase { + + public Localizer T { get; set; } + + public override IEnumerable TypePartEditor(ContentTypePartDefinition definition) { + if (definition.PartDefinition.Name != "CommentsPart") + yield break; + + var settings = definition.Settings.GetModel(); + + yield return DefinitionTemplate(settings); + } + + public override IEnumerable TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel) { + if (builder.Name != "CommentsPart") + yield break; + + var settings = new CommentsPartSettings { + }; + + if (updateModel.TryUpdateModel(settings, "CommentsPartSettings", null, null)) { + builder.WithSetting("CommentsPartSettings.DefaultThreadedComments", settings.DefaultThreadedComments.ToString(CultureInfo.InvariantCulture)); + } + + yield return DefinitionTemplate(settings); + } + } +} diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettings.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettings.cshtml new file mode 100644 index 000000000..e5c115ed9 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettings.cshtml @@ -0,0 +1,9 @@ +@model Orchard.Comments.Settings.CommentsPartSettings + +
+
+ @Html.EditorFor(m => m.DefaultThreadedComments) + +
+
+