Merge pull request #5783 from mjy78/issue/20377

[Fixes #4206] Ensure comment tokens available to anti-spam module.
This commit is contained in:
Sébastien Ros
2015-09-11 15:03:45 -07:00
4 changed files with 14 additions and 10 deletions

View File

@@ -144,7 +144,7 @@ namespace Orchard.AntiSpam.Controllers {
if (spam != null) { if (spam != null) {
spam.As<SpamFilterPart>().Status = SpamStatus.Spam; spam.As<SpamFilterPart>().Status = SpamStatus.Spam;
_spamService.ReportSpam(spam.As<SpamFilterPart>()); _spamService.ReportSpam(spam.As<SpamFilterPart>());
Services.ContentManager.Publish(spam); Services.ContentManager.Unpublish(spam);
} }
return this.RedirectLocal(returnUrl, "~/"); return this.RedirectLocal(returnUrl, "~/");
@@ -158,7 +158,7 @@ namespace Orchard.AntiSpam.Controllers {
var spam = Services.ContentManager.Get(id, VersionOptions.Latest); var spam = Services.ContentManager.Get(id, VersionOptions.Latest);
if (spam != null) { if (spam != null) {
spam.As<SpamFilterPart>().Status = SpamStatus.Ham; spam.As<SpamFilterPart>().Status = SpamStatus.Ham;
_spamService.ReportSpam(spam.As<SpamFilterPart>()); _spamService.ReportHam(spam.As<SpamFilterPart>());
Services.ContentManager.Publish(spam); Services.ContentManager.Publish(spam);
} }

View File

@@ -1,6 +1,5 @@
using System; using System;
using Orchard.AntiSpam.Models; using Orchard.AntiSpam.Models;
using Orchard.AntiSpam.Services;
using Orchard.AntiSpam.Settings; using Orchard.AntiSpam.Settings;
using Orchard.ContentManagement.Drivers; using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers; using Orchard.ContentManagement.Handlers;
@@ -8,11 +7,9 @@ using Orchard.Localization;
namespace Orchard.AntiSpam.Drivers { namespace Orchard.AntiSpam.Drivers {
public class SpamFilterPartDriver : ContentPartDriver<SpamFilterPart> { public class SpamFilterPartDriver : ContentPartDriver<SpamFilterPart> {
private readonly ISpamService _spamService;
private const string TemplateName = "Parts/SpamFilter"; private const string TemplateName = "Parts/SpamFilter";
public SpamFilterPartDriver(IOrchardServices services, ISpamService spamService) { public SpamFilterPartDriver(IOrchardServices services) {
_spamService = spamService;
T = NullLocalizer.Instance; T = NullLocalizer.Instance;
Services = services; Services = services;
} }
@@ -25,8 +22,6 @@ namespace Orchard.AntiSpam.Drivers {
} }
protected override DriverResult Editor(SpamFilterPart part, ContentManagement.IUpdateModel updater, dynamic shapeHelper) { protected override DriverResult Editor(SpamFilterPart part, ContentManagement.IUpdateModel updater, dynamic shapeHelper) {
part.Status = _spamService.CheckForSpam(part);
if (part.Settings.GetModel<SpamFilterPartSettings>().DeleteSpam) { if (part.Settings.GetModel<SpamFilterPartSettings>().DeleteSpam) {
updater.AddModelError("Spam", T("Spam detected.")); updater.AddModelError("Spam", T("Spam detected."));
} }

View File

@@ -1,5 +1,5 @@
using Orchard.AntiSpam.Models; using Orchard.AntiSpam.Models;
using Orchard.AntiSpam.Services;
using Orchard.AntiSpam.Settings; using Orchard.AntiSpam.Settings;
using Orchard.ContentManagement.Handlers; using Orchard.ContentManagement.Handlers;
using Orchard.Data; using Orchard.Data;
@@ -7,14 +7,22 @@ using Orchard.Data;
namespace Orchard.AntiSpam.Handlers { namespace Orchard.AntiSpam.Handlers {
public class SpamFilterPartHandler : ContentHandler { public class SpamFilterPartHandler : ContentHandler {
private readonly ITransactionManager _transactionManager; private readonly ITransactionManager _transactionManager;
private readonly ISpamService _spamService;
public SpamFilterPartHandler( public SpamFilterPartHandler(
IRepository<SpamFilterPartRecord> repository, IRepository<SpamFilterPartRecord> repository,
ITransactionManager transactionManager ITransactionManager transactionManager,
ISpamService spamService
) { ) {
_transactionManager = transactionManager; _transactionManager = transactionManager;
_spamService = spamService;
Filters.Add(StorageFilter.For(repository)); Filters.Add(StorageFilter.For(repository));
OnCreating<SpamFilterPart>((context, part) => {
part.Status = _spamService.CheckForSpam(part);
});
OnPublishing<SpamFilterPart>((context, part) => { OnPublishing<SpamFilterPart>((context, part) => {
if (part.Status == SpamStatus.Spam) { if (part.Status == SpamStatus.Spam) {
if (part.Settings.GetModel<SpamFilterPartSettings>().DeleteSpam) { if (part.Settings.GetModel<SpamFilterPartSettings>().DeleteSpam) {

View File

@@ -126,6 +126,7 @@ namespace Orchard.AntiSpam.Services {
CommentAuthorEmail = _tokenizer.Replace(settings.CommentAuthorEmailPattern, data), CommentAuthorEmail = _tokenizer.Replace(settings.CommentAuthorEmailPattern, data),
CommentAuthorUrl = _tokenizer.Replace(settings.CommentAuthorUrlPattern, data), CommentAuthorUrl = _tokenizer.Replace(settings.CommentAuthorUrlPattern, data),
CommentContent = _tokenizer.Replace(settings.CommentContentPattern, data), CommentContent = _tokenizer.Replace(settings.CommentContentPattern, data),
CommentType = part.ContentItem.ContentType.ToLower()
}; };
if(workContext.HttpContext != null) { if(workContext.HttpContext != null) {