mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding content validation for SpamFilterPart, so that custom forms don't
send Submitted events if the form is flagged as spam, if the option to delete spam content is checked. --HG-- branch : 1.x
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
using System;
|
||||
using Orchard.AntiSpam.Models;
|
||||
using Orchard.AntiSpam.Services;
|
||||
using Orchard.AntiSpam.Settings;
|
||||
using Orchard.ContentManagement.Drivers;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Localization;
|
||||
|
||||
namespace Orchard.AntiSpam.Drivers {
|
||||
public class SpamFilterPartDriver : ContentPartDriver<SpamFilterPart> {
|
||||
private readonly ISpamService _spamService;
|
||||
private const string TemplateName = "Parts/SpamFilter";
|
||||
|
||||
public SpamFilterPartDriver(IOrchardServices services) {
|
||||
public SpamFilterPartDriver(IOrchardServices services, ISpamService spamService) {
|
||||
_spamService = spamService;
|
||||
T = NullLocalizer.Instance;
|
||||
Services = services;
|
||||
}
|
||||
@@ -20,6 +24,14 @@ namespace Orchard.AntiSpam.Drivers {
|
||||
get { return "SpamFilter"; }
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(SpamFilterPart part, ContentManagement.IUpdateModel updater, dynamic shapeHelper) {
|
||||
part.Status = _spamService.CheckForSpam(part);
|
||||
|
||||
if (part.Settings.GetModel<SpamFilterPartSettings>().DeleteSpam) {
|
||||
updater.AddModelError("Spam", T("Spam detected."));
|
||||
}
|
||||
}
|
||||
|
||||
protected override DriverResult Display(SpamFilterPart part, string displayType, dynamic shapeHelper) {
|
||||
return Combined(
|
||||
ContentShape("Parts_SpamFilter_Metadata_SummaryAdmin", () => shapeHelper.Parts_SpamFilter_Metadata_SummaryAdmin()),
|
||||
|
@@ -1,5 +1,5 @@
|
||||
using Orchard.AntiSpam.Models;
|
||||
using Orchard.AntiSpam.Services;
|
||||
|
||||
using Orchard.AntiSpam.Settings;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Data;
|
||||
@@ -9,17 +9,12 @@ namespace Orchard.AntiSpam.Handlers {
|
||||
private readonly ITransactionManager _transactionManager;
|
||||
|
||||
public SpamFilterPartHandler(
|
||||
ISpamService spamService,
|
||||
IRepository<SpamFilterPartRecord> repository,
|
||||
ITransactionManager transactionManager
|
||||
) {
|
||||
_transactionManager = transactionManager;
|
||||
Filters.Add(StorageFilter.For(repository));
|
||||
|
||||
OnUpdated<SpamFilterPart>( (context, part) => {
|
||||
part.Status = spamService.CheckForSpam(part);
|
||||
});
|
||||
|
||||
OnPublishing<SpamFilterPart>((context, part) => {
|
||||
if (part.Status == SpamStatus.Spam) {
|
||||
if (part.Settings.GetModel<SpamFilterPartSettings>().DeleteSpam) {
|
||||
|
Reference in New Issue
Block a user