Adding support for html filters on comments

--HG--
branch : 1.x
extra : rebase_source : cb25657e65a761bab674e4f175ad38327c46a278
This commit is contained in:
Sebastien Ros
2012-11-02 16:12:59 -07:00
parent 2cd444ceb7
commit 171a163a8a
16 changed files with 126 additions and 41 deletions

View File

@@ -1,8 +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;
@@ -17,6 +20,7 @@ namespace Orchard.Comments.Drivers {
private readonly IWorkContextAccessor _workContextAccessor;
private readonly IClock _clock;
private readonly ICommentValidator _commentValidator;
private readonly IEnumerable<IHtmlFilter> _htmlFilters;
protected override string Prefix { get { return "Comments"; } }
@@ -27,19 +31,28 @@ namespace Orchard.Comments.Drivers {
IWorkContextAccessor workContextAccessor,
IClock clock,
ICommentService commentService,
ICommentValidator commentValidator) {
ICommentValidator commentValidator,
IEnumerable<IHtmlFilter> htmlFilters) {
_contentManager = contentManager;
_workContextAccessor = workContextAccessor;
_clock = clock;
_commentValidator = commentValidator;
_htmlFilters = htmlFilters;
T = NullLocalizer.Instance;
}
protected override DriverResult Display(CommentPart part, string displayType, dynamic shapeHelper) {
var formattedText = new Lazy<string>(() => {
var commentsPart = _contentManager.Get<CommentsPart>(part.CommentedOn);
var settings = commentsPart.TypePartDefinition.Settings.GetModel<CommentsPartSettings>();
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", () => shapeHelper.Parts_Comment()),
ContentShape("Parts_Comment_SummaryAdmin", () => shapeHelper.Parts_Comment_SummaryAdmin())
ContentShape("Parts_Comment", () => shapeHelper.Parts_Comment(FormattedText: formattedText.Value)),
ContentShape("Parts_Comment_SummaryAdmin", () => shapeHelper.Parts_Comment_SummaryAdmin(FormattedText: formattedText.Value))
);
}