Orchard CMS:如何取消删除事件

时间:2014-12-02 02:00:44

标签: orchardcms

如果该项目具有任何本地化的依赖项,我已创建了一些禁止删除内容项的代码。为此,我创建了一个新的"扩展"接口和Orchard.Framework.ContentManagement中的(默认)类,然后使用SuppressDependency属性在Orchard.Localization模块中创建一个新类。它返回一个基于查询的简单布尔值,以查看是否有任何ContentItems将当前项列为MasterContentItem

这是从Orchard.Core.Contents中的AdminController调用的,如果它返回true,那么我添加一条消息并重定向到returnUrl,否则删除将继续正常进行。

所有这一切都很完美。

但是,我想重构一下,以便利用IContentManager的现有基础设施,并向LocalizationPartHandler添加一个Removing()方法。

我的问题是 - 是否有可能取消"基于之前调用的ContentHandler输出的删除操作...

1 个答案:

答案 0 :(得分:0)

正如我在评论中所提到的,我并不完全确定你想要完成什么,但我的猜测是你要创建自己的模块,并在该模块中创建一个Handler实现,其中你做你的事......

据我所知,您想要挂钩Remove事件生命周期。处理程序提供OnRemoving,在删除项目之前执行。我不是处理程序及其扩展点的专家以及您如何取消该事件,但我的猜测是您要实现以下内容:

public class YourCustomHandler : ContentHandler {

    public YourCustomHandler(IYourCancelService yourCancelService) {
        OnRemoving<LocalizationPart>((context, part) => 
            yourCancelService.CancelRemoveEvent(context));
    }
}

阅读本文以获取有关处理程序的更多信息:http://docs.orchardproject.net/Documentation/Understanding-content-handlers