From 7d19c8de7a1e92512eaeace4554620cf90c7d0a3 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Wed, 10 Jul 2013 17:07:46 -0700 Subject: [PATCH] Reverting comments filters changes --HG-- branch : 1.x --- .../Common/BbcodeFilterTests.cs | 8 ++--- .../Core/Common/Drivers/BodyPartDriver.cs | 8 ++--- .../Core/Common/Drivers/TextFieldDriver.cs | 2 +- .../Core/Common/Services/BbcodeFilter.cs | 2 +- .../Feeds/StandardBuilders/ItemInspector.cs | 2 +- .../Markdown/Services/MarkdownFilter.cs | 8 ++--- .../Drivers/CommentPartDriver.cs | 17 ++-------- .../Drivers/CommentsPartDriver.cs | 12 ++----- .../Orchard.Comments/Orchard.Comments.csproj | 7 ++-- .../Services/HtmlEncodeFilter.cs | 12 ------- .../Settings/CommentsPartSettings.cs | 9 +----- .../Settings/CommentsPartSettingsEvents.cs | 26 ++++----------- .../CommentsPartSettingsViewModel.cs | 15 --------- .../Orchard.Comments/Views/CommentText.cshtml | 6 ++++ .../CommentsPartSettings.cshtml | 13 ++++++++ .../CommentsPartSettingsViewModel.cshtml | 32 ------------------- .../Views/Parts.Comment.cshtml | 8 ++--- src/Orchard/Services/IHtmlFilter.cs | 2 +- 18 files changed, 54 insertions(+), 135 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Services/HtmlEncodeFilter.cs delete mode 100644 src/Orchard.Web/Modules/Orchard.Comments/ViewModels/CommentsPartSettingsViewModel.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Views/CommentText.cshtml create mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettings.cshtml delete mode 100644 src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettingsViewModel.cshtml diff --git a/src/Orchard.Core.Tests/Common/BbcodeFilterTests.cs b/src/Orchard.Core.Tests/Common/BbcodeFilterTests.cs index c7ebfa305..0172995b1 100644 --- a/src/Orchard.Core.Tests/Common/BbcodeFilterTests.cs +++ b/src/Orchard.Core.Tests/Common/BbcodeFilterTests.cs @@ -10,28 +10,28 @@ namespace Orchard.Core.Tests.Common { [Test] public void ShouldIgnoreText() { const string text = "foo bar baz"; - var processed = _filter.ProcessContent(text); + var processed = _filter.ProcessContent(text, null); Assert.That(processed, Is.EqualTo(text)); } [Test] public void ShouldReplaceUrl() { const string text = "foo [url]bar[/url] baz"; - var processed = _filter.ProcessContent(text); + var processed = _filter.ProcessContent(text, null); Assert.That(processed, Is.EqualTo("foo bar baz")); } [Test] public void ShouldReplaceImg() { const string text = "foo [img]bar[/img] baz"; - var processed = _filter.ProcessContent(text); + var processed = _filter.ProcessContent(text, null); Assert.That(processed, Is.EqualTo("foo baz")); } [Test] public void ShouldReplaceUrlWithTitle() { const string text = "foo [url=alink]bar[/url] baz"; - var processed = _filter.ProcessContent(text); + var processed = _filter.ProcessContent(text, null); Assert.That(processed, Is.EqualTo("foo bar baz")); } } diff --git a/src/Orchard.Web/Core/Common/Drivers/BodyPartDriver.cs b/src/Orchard.Web/Core/Common/Drivers/BodyPartDriver.cs index d8351b754..b88ad139d 100644 --- a/src/Orchard.Web/Core/Common/Drivers/BodyPartDriver.cs +++ b/src/Orchard.Web/Core/Common/Drivers/BodyPartDriver.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Web; using JetBrains.Annotations; @@ -38,13 +37,12 @@ namespace Orchard.Core.Common.Drivers { return Combined( ContentShape("Parts_Common_Body", () => { - var flavor = GetFlavor(part); - var bodyText = _htmlFilters.Where(x => x.GetType().Name.Equals(flavor + "filter", StringComparison.OrdinalIgnoreCase)).Aggregate(part.Text, (text, filter) => filter.ProcessContent(text)); + var bodyText = _htmlFilters.Aggregate(part.Text, (text, filter) => filter.ProcessContent(text, GetFlavor(part))); return shapeHelper.Parts_Common_Body(Html: new HtmlString(bodyText)); }), ContentShape("Parts_Common_Body_Summary", () => { - var bodyText = _htmlFilters.Where(x => x.GetType().Name.Equals(GetFlavor(part) + "filter", StringComparison.OrdinalIgnoreCase)).Aggregate(part.Text, (text, filter) => filter.ProcessContent(text)); + var bodyText = _htmlFilters.Aggregate(part.Text, (text, filter) => filter.ProcessContent(text, GetFlavor(part))); return shapeHelper.Parts_Common_Body_Summary(Html: new HtmlString(bodyText)); }) ); diff --git a/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs b/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs index 7e0ee6281..2a994f238 100644 --- a/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs +++ b/src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs @@ -39,7 +39,7 @@ namespace Orchard.Core.Common.Drivers { () => { var settings = field.PartFieldDefinition.Settings.GetModel(); - object fieldValue = new HtmlString(_htmlFilters.Where(x => x.GetType().Name.Equals(settings.Flavor + "filter", StringComparison.OrdinalIgnoreCase)).Aggregate(field.Value, (text, filter) => filter.ProcessContent(text))); + object fieldValue = new HtmlString(_htmlFilters.Aggregate(field.Value, (text, filter) => filter.ProcessContent(text, settings.Flavor))); return shapeHelper.Fields_Common_Text(Name: field.Name, Value: fieldValue); }); } diff --git a/src/Orchard.Web/Core/Common/Services/BbcodeFilter.cs b/src/Orchard.Web/Core/Common/Services/BbcodeFilter.cs index 5875f146b..4ec096980 100644 --- a/src/Orchard.Web/Core/Common/Services/BbcodeFilter.cs +++ b/src/Orchard.Web/Core/Common/Services/BbcodeFilter.cs @@ -6,7 +6,7 @@ using Orchard.Services; namespace Orchard.Core.Common.Services { public class BbcodeFilter : IHtmlFilter { - public string ProcessContent(string text) { + public string ProcessContent(string text, string flavor) { return BbcodeReplace(text); } diff --git a/src/Orchard.Web/Core/Feeds/StandardBuilders/ItemInspector.cs b/src/Orchard.Web/Core/Feeds/StandardBuilders/ItemInspector.cs index a53e91d06..71a6bc7d4 100644 --- a/src/Orchard.Web/Core/Feeds/StandardBuilders/ItemInspector.cs +++ b/src/Orchard.Web/Core/Feeds/StandardBuilders/ItemInspector.cs @@ -50,7 +50,7 @@ namespace Orchard.Core.Feeds.StandardBuilders { public string Description { get { if (_body != null && !string.IsNullOrEmpty(_body.Text)) { - return _htmlFilters.Where(x => x.GetType().Name.Equals(GetFlavor(_body) + "filter", StringComparison.OrdinalIgnoreCase)).Aggregate(_body.Text, (text, filter) => filter.ProcessContent(text)); + return _htmlFilters.Aggregate(_body.Text, (text, filter) => filter.ProcessContent(text, GetFlavor(_body))); } return Title; } diff --git a/src/Orchard.Web/Modules/Markdown/Services/MarkdownFilter.cs b/src/Orchard.Web/Modules/Markdown/Services/MarkdownFilter.cs index d06bb1b7e..40cc9cb98 100644 --- a/src/Orchard.Web/Modules/Markdown/Services/MarkdownFilter.cs +++ b/src/Orchard.Web/Modules/Markdown/Services/MarkdownFilter.cs @@ -1,17 +1,17 @@ -using MarkdownSharp; +using System; using Orchard.Services; namespace Markdown.Services { public class MarkdownFilter : IHtmlFilter { - public string ProcessContent(string text) { - return MarkdownReplace(text); + public string ProcessContent(string text, string flavor) { + return flavor.Equals("markdown", StringComparison.OrdinalIgnoreCase) ? MarkdownReplace(text) : text; } private static string MarkdownReplace(string text) { if (string.IsNullOrEmpty(text)) return string.Empty; - var markdown = new MarkdownSharp.Markdown(new MarkdownOptions { AutoNewLines = false }); + var markdown = new MarkdownSharp.Markdown(); return markdown.Transform(text); } } diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs index 07efc73bb..32b61d237 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs @@ -1,15 +1,11 @@ using System; -using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Xml; using JetBrains.Annotations; using Orchard.Comments.Models; -using Orchard.Comments.Settings; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; using Orchard.ContentManagement.Aspects; -using Orchard.Security; using Orchard.Services; using Orchard.Localization; using Orchard.Comments.Services; @@ -22,7 +18,6 @@ namespace Orchard.Comments.Drivers { private readonly IWorkContextAccessor _workContextAccessor; private readonly IClock _clock; private readonly ICommentService _commentService; - private readonly IEnumerable _htmlFilters; private readonly IOrchardServices _orchardServices; protected override string Prefix { get { return "Comments"; } } @@ -34,28 +29,20 @@ namespace Orchard.Comments.Drivers { IWorkContextAccessor workContextAccessor, IClock clock, ICommentService commentService, - IEnumerable htmlFilters, IOrchardServices orchardServices) { _contentManager = contentManager; _workContextAccessor = workContextAccessor; _clock = clock; _commentService = commentService; - _htmlFilters = htmlFilters; _orchardServices = orchardServices; T = NullLocalizer.Instance; } protected override DriverResult Display(CommentPart part, string displayType, dynamic shapeHelper) { - var formattedText = new Lazy(() => { - var commentsPart = _contentManager.Get(part.CommentedOn); - var settings = commentsPart.TypePartDefinition.Settings.GetModel(); - var formatted = _htmlFilters.Where(x => x.GetType().Name.Equals(settings.HtmlFilter, StringComparison.OrdinalIgnoreCase)).Aggregate(part.CommentText, (text, filter) => filter.ProcessContent(text)); - return formatted; - }); - return Combined( - ContentShape("Parts_Comment_SummaryAdmin", () => shapeHelper.Parts_Comment_SummaryAdmin(FormattedText: formattedText.Value)) + ContentShape("Parts_Comment", () => shapeHelper.Parts_Comment()), + ContentShape("Parts_Comment_SummaryAdmin", () => shapeHelper.Parts_Comment_SummaryAdmin()) ); } diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs index a96b6364f..7c9999643 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs @@ -7,22 +7,18 @@ using Orchard.Comments.Settings; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; using System.Collections.Generic; -using Orchard.Services; namespace Orchard.Comments.Drivers { [UsedImplicitly] public class CommentsPartDriver : ContentPartDriver { private readonly ICommentService _commentService; private readonly IContentManager _contentManager; - private readonly IEnumerable _htmlFilters; public CommentsPartDriver( ICommentService commentService, - IContentManager contentManager, - IEnumerable htmlFilters) { + IContentManager contentManager) { _commentService = commentService; _contentManager = contentManager; - _htmlFilters = htmlFilters; } protected override DriverResult Display(CommentsPart part, string displayType, dynamic shapeHelper) { @@ -36,17 +32,13 @@ namespace Orchard.Comments.Drivers { return Combined( ContentShape("Parts_ListOfComments", () => { - var settings = part.TypePartDefinition.Settings.GetModel(); - // create a hierarchy of shapes var firstLevelShapes = new List(); var allShapes = new Dictionary(); var comments = commentsForCommentedContent.Where(x => x.Status == CommentStatus.Approved).OrderBy(x => x.Position).List().ToList(); foreach (var item in comments) { - var formatted = _htmlFilters.Where(x => x.GetType().Name.Equals(settings.HtmlFilter, StringComparison.OrdinalIgnoreCase)).Aggregate(item.CommentText, (text, filter) => filter.ProcessContent(text)); - var shape = shapeHelper.Parts_Comment(FormattedText: formatted, ContentPart: item, ContentItem: item.ContentItem); - + var shape = shapeHelper.Parts_Comment(ContentPart: item, ContentItem: item.ContentItem); allShapes.Add(item.Id, shape); } diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj index 564599631..e962ff292 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj +++ b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj @@ -72,7 +72,6 @@ - @@ -99,7 +98,6 @@ - @@ -159,12 +157,15 @@ - + + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Services/HtmlEncodeFilter.cs b/src/Orchard.Web/Modules/Orchard.Comments/Services/HtmlEncodeFilter.cs deleted file mode 100644 index 4d39ef872..000000000 --- a/src/Orchard.Web/Modules/Orchard.Comments/Services/HtmlEncodeFilter.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Web; -using Orchard.Services; - -namespace Orchard.Comments.Services { - public class HtmlEncodeFilter : IHtmlFilter { - public string ProcessContent(string text) { - - return HttpUtility.HtmlEncode(Convert.ToString(text)).Replace("\r\n", "
\r\n"); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs index d89d66041..007543bb2 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettings.cs @@ -1,13 +1,6 @@ -using Orchard.Comments.Services; - -namespace Orchard.Comments.Settings { +namespace Orchard.Comments.Settings { public class CommentsPartSettings { - public CommentsPartSettings() { - HtmlFilter = typeof (HtmlEncodeFilter).Name; - } - public bool DefaultThreadedComments { get; set; } public bool MustBeAuthenticated { get; set; } - public string HtmlFilter { 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 index adc1fc8ea..cf977f30d 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettingsEvents.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Settings/CommentsPartSettingsEvents.cs @@ -1,21 +1,14 @@ using System.Collections.Generic; using System.Globalization; -using Orchard.Comments.ViewModels; using Orchard.ContentManagement; using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.MetaData.Builders; using Orchard.ContentManagement.MetaData.Models; using Orchard.ContentManagement.ViewModels; using Orchard.Localization; -using Orchard.Services; namespace Orchard.Comments.Settings { public class CommentsPartSettingsEvents : ContentDefinitionEditorEventsBase { - private readonly IEnumerable _htmlFilters; - - public CommentsPartSettingsEvents(IEnumerable htmlFilters) { - _htmlFilters = htmlFilters; - } public Localizer T { get; set; } @@ -23,29 +16,24 @@ namespace Orchard.Comments.Settings { if (definition.PartDefinition.Name != "CommentsPart") yield break; - var model = new CommentsPartSettingsViewModel { - Settings = definition.Settings.GetModel(), - HtmlFilters = _htmlFilters - }; + var settings = definition.Settings.GetModel(); - yield return DefinitionTemplate(model); + yield return DefinitionTemplate(settings); } public override IEnumerable TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel) { if (builder.Name != "CommentsPart") yield break; - var model = new CommentsPartSettingsViewModel { - Settings = new CommentsPartSettings() + var settings = new CommentsPartSettings { }; - if (updateModel.TryUpdateModel(model, "CommentsPartSettingsViewModel", null, null)) { - builder.WithSetting("CommentsPartSettings.DefaultThreadedComments", model.Settings.DefaultThreadedComments.ToString(CultureInfo.InvariantCulture)); - builder.WithSetting("CommentsPartSettings.MustBeAuthenticated", model.Settings.MustBeAuthenticated.ToString(CultureInfo.InvariantCulture)); - builder.WithSetting("CommentsPartSettings.HtmlFilter", model.Settings.HtmlFilter); + if (updateModel.TryUpdateModel(settings, "CommentsPartSettings", null, null)) { + builder.WithSetting("CommentsPartSettings.DefaultThreadedComments", settings.DefaultThreadedComments.ToString(CultureInfo.InvariantCulture)); + builder.WithSetting("CommentsPartSettings.MustBeAuthenticated", settings.MustBeAuthenticated.ToString(CultureInfo.InvariantCulture)); } - yield return DefinitionTemplate(model); + yield return DefinitionTemplate(settings); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Comments/ViewModels/CommentsPartSettingsViewModel.cs b/src/Orchard.Web/Modules/Orchard.Comments/ViewModels/CommentsPartSettingsViewModel.cs deleted file mode 100644 index 137ed20f9..000000000 --- a/src/Orchard.Web/Modules/Orchard.Comments/ViewModels/CommentsPartSettingsViewModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Orchard.Comments.Settings; -using Orchard.Services; - -namespace Orchard.Comments.ViewModels { - public class CommentsPartSettingsViewModel { - public CommentsPartSettingsViewModel() { - HtmlFilters = Enumerable.Empty(); - } - - public CommentsPartSettings Settings { get; set; } - public IEnumerable HtmlFilters { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/CommentText.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/CommentText.cshtml new file mode 100644 index 000000000..201a91e2e --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/CommentText.cshtml @@ -0,0 +1,6 @@ +@using Orchard.Comments.Models +@{ + CommentPart comment = Model.ContentPart; +} + +

@(new MvcHtmlString(Html.Encode(comment.Record.CommentText).Replace("\r\n", "
\r\n")))

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..a0d34a2aa --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettings.cshtml @@ -0,0 +1,13 @@ +@model Orchard.Comments.Settings.CommentsPartSettings + +
+
+ @Html.EditorFor(m => m.DefaultThreadedComments) + +
+
+ @Html.EditorFor(m => m.MustBeAuthenticated) + +
+
+ diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettingsViewModel.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettingsViewModel.cshtml deleted file mode 100644 index 92674bb1b..000000000 --- a/src/Orchard.Web/Modules/Orchard.Comments/Views/DefinitionTemplates/CommentsPartSettingsViewModel.cshtml +++ /dev/null @@ -1,32 +0,0 @@ -@using Orchard.Utility.Extensions -@model Orchard.Comments.ViewModels.CommentsPartSettingsViewModel - -
-
- - - - @Html.ValidationMessageFor(m => m.Settings.HtmlFilter) -
-
- -
-
- @Html.EditorFor(m => m.Settings.DefaultThreadedComments) - -
-
- -
-
- @Html.EditorFor(m => m.Settings.MustBeAuthenticated) - -
-
- diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts.Comment.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts.Comment.cshtml index 1ee397b8d..8e218f939 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts.Comment.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts.Comment.cshtml @@ -14,14 +14,14 @@ @Display.CommentAuthor(ContentPart: comment) @Display.CommentMetadata(ContentPart: comment) @if (comments.ThreadedComments) { - @Display.CommentReplyButton(ContentPart: comment) + @Display.CommentReplyButton(ContentPart: comment) } -

@Html.Raw(Convert.ToString(Model.FormattedText))

- - @Display(children) + @Display.CommentText(ContentPart: Model.ContentPart, ContentItem: Model.ContentItem) + + @Display(children) diff --git a/src/Orchard/Services/IHtmlFilter.cs b/src/Orchard/Services/IHtmlFilter.cs index 40ad26301..b60f2f868 100644 --- a/src/Orchard/Services/IHtmlFilter.cs +++ b/src/Orchard/Services/IHtmlFilter.cs @@ -1,5 +1,5 @@ namespace Orchard.Services { public interface IHtmlFilter : IDependency { - string ProcessContent(string text); + string ProcessContent(string text, string flavor); } } \ No newline at end of file