Orchard 1.7 - 为未发布的内容创建自定义工作流程活动

2024-05-02

我需要利用 Orchard CMS 中的活动列表;未发表的活动是要求之一。我查看并发现 Orchard 默认工作流程活动列表没有未发布的活动。

我构建了一个模块来添加我自己的自定义工作流程活动。我在创建活动并使它们工作方面没有问题,但我不知道如何将其中之一与事件绑定。即使我复制工作流模块的默认活动文件夹中找到的发布活动,复制的活动也不会绑定到任何事件。

我怎样才能做到这一点,以便每当有人取消发布或起草帖子时就调用我的活动类。

我也创建了一个线程here https://orchard.codeplex.com/discussions/536986但到目前为止还没有答案。


我在 Orchard CMS 上找不到太多帮助,最终自己找到了解决方案。不过,我花了很多时间才完成这件事。

我发现的第一件事是Orchard.Workflows.Activities有一个文件ContentActivity。在这个文件中还有其他类继承了ContentActivity class ContentCreatedActivity, ContentUpdatedActivity and ContentPublishedActivity。所有这些课程都是订阅的活动ContentActivity这是一个事件活动。他们订阅 Orchard 核心的创建、更新和发布事件。

如果你调查Orchard.ContentManagement.Handlers.ContentHandler您会看到 Orchard CMS 核心提供的默认事件列表。

我感兴趣的是OnUnpublished事件,因此在我的模块中我创建了一个处理程序来侦听该事件。

using System.Collections.Generic;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.Workflows.Services;

namespace MyModule.Handlers {
    public class WorkflowContentHandler : ContentHandler {
        public WorkflowContentHandler(IWorkflowManager workflowManager) {
            OnUnpublished<ContentPart>(
                (context, part) =>
                    workflowManager.TriggerEvent("ContentUnpublished",
                    context.ContentItem,
                    () => new Dictionary<string, object> { { 
                              "Content", context.ContentItem } }));
        }
    }
}

之后,我们为“未发布”创建自定义工作流程活动。这个类继承自ContentActivity像它的兄弟姐妹一样,因此它可以启动工作流程并且将成为一个事件。

using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.Localization;
using Orchard.Workflows.Models;
using Orchard.Workflows.Services;
using Orchard.Workflows.Activities;

namespace MyModule.WorkFlow
{
    public class ContentUnpublishedActivity : ContentActivity
    {
        public override string Name
        {
            get { return "ContentUnpublished"; }
        }

        public override LocalizedString Description
        {
            get { return T("Content is Unpublished."); }
        }
    }
}

就是这样。完成此操作后,新的Content Unpublished活动将显示在工作流活动列表中。您可以将其与其他活动结合使用,在任何内容取消发布后执行您自己的工作流程。

我不敢相信这这么容易。我花了三天时间才弄清楚,我一直在拉扯我的头发,而我一开始并没有太多的头发。 Orchard CMS 缺乏支持和资源有时确实让我很恼火。我希望这可以帮助遇到类似问题的人节省一些时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Orchard 1.7 - 为未发布的内容创建自定义工作流程活动 的相关文章

  • mvc 4下拉默认值选择

    我想在下拉列表中选择默认值 其中policyId 7 但它没有选择该值 我做错了什么 控制器 var pm new ManagerClass IEnumerable
  • MVC 4 使用 Ajax.BeginForm() 从另一个局部视图更新局部视图

    我在其中一个页面上设置了评论部分 父视图有一个部分视图 它显示该 ID 的评论 并提供显示另一个部分视图以发布评论的选项 当有人发表评论时 我希望父级中的第一个部分视图刷新以显示新评论 目前 当您单击发表评论时 将调用 AddComment
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • IDX21323 OpenIdConnectProtocolValidationContext.Nonce 为空,OpenIdConnectProtocolValidatedIdToken.Payload.Nonce 不为空

    我正在尝试对 Intranet 的 Azure AD 和 Graph 进行身份验证 基于 Orchard CMS 该功能在我的本地计算机上按预期运行 但是 当访问生产站点时 已在我们的内部 dns 上使用 ssl 设置 我有时会收到上述错误
  • MVC4 输入字段占位符

    Does MVC4默认支持placeholders对于生成的输入字段 我没有找到任何东西 所以我正在尝试实现我自己的 但不幸的是Prompt E Mail 没有传递到ViewData ModelMetadata Watermark同时产生控
  • $http post 未与 asp.net MVC 模型绑定

    为什么 angularjs http post 的有效负载没有绑定到输入模型 当调用该操作时 模型为空 并且 request params 和 request forms 不显示发送表单的任何迹象 但 fiddler 请求显示负载是通过 J
  • iTextSharp PdfPCell 中的多行一个接一个

    我正在使用 iTextSharp 在 PDF 文档中创建表格 我需要表格单元格内的几行显示在另一行下面 如下所示 First line text Second Line Text Third Line Text Fourth line te
  • MVC4 枚举和单选按钮列表

    我已经看到了一些关于此的线程 但似乎没有一个适用于 MVC4 因为 RadioButtonFor html 扩展方法 帮助程序不存在 假设我有一个枚举列表 即航空公司 public enum Airlines Unknown 0 Briti
  • GetAsync 请求返回空内容

    我想知道为什么当我在邮递员中尝试它有数据返回时它返回 null 这是我的代码 public async Task
  • 如何跟踪长时间运行的 IIS 调用?

    我们的用户焦躁不安 他们不断抱怨一些模糊的 无法衡量的东西 特别是缓慢 但没有给出具体细节 这当然使得追踪变得非常困难 尽管如此 他们很可能是对的 有些服务器调用需要很长时间才能返回 所以我想在网站上放置某种嗅探器 我们在 IIS7 上使用
  • 使用信号器时会话超时

    我有一个网络应用程序 主要用于监控系统 它使用信号器从服务器 服务器推送 更新来刷新显示 该页面还有一些按钮 它们也使用相同的信号器连接将数据发送到服务器 问题是 signalr 使用单独的连接 因此即使它定期从服务器发送和接收数据 会话也
  • 如何在单击 ASP.NET 中的浏览器后退按钮时使会话过期

    这是我的场景 我有以下页面 1 登录页面 1 个母版页作为 ABC Master 3 个子页面为 第 1 页 第 2 页 第 3 页 第1页 第2页和第3页是母版页 ABC Master 的子页面 页面流程 输入用户名和密码后 如果单击 登
  • MVC 4 IntelliSense 无法在 Visual Studio 2010 的 Razor 中工作

    我将 Visual Studio 2010 与 ASP NET MVC4 一起使用 并且 IntelliSense for Razor 语法在应用程序的视图中对我不起作用 我能做些什么 还引用自 http sebnilsson com 10
  • ASP.Net MVC 4 通用主要难点

    我正在开发一个ASP NET MVC 4Web应用程序 以前我的 MVC 应用程序是使用MVC 3和这个新的MVC 4我刚刚复制 重复使用了我的应用程序认证和授权码从以前的应用程序 当用户登录我的网站时 我会执行以下操作 账户控制器 pub
  • MVC 4 SimpleMembership HasLocalAccount 方法未找到

    当尝试访问时 account manage在生产服务器上我收到此错误 System MissingMethodException Method not found Boolean WebMatrix WebData ExtendedMemb
  • 在 IIS 6 虚拟目录中运行的 ASP.Net MVC 4 应用程序上目录列表被拒绝

    我试图让 ASP Net MVC 4 在 IIS6 上工作 但遇到了总是有趣的 目录列表被拒绝 错误 在您开始发布有关无扩展名网址以及我需要如何阅读 Haacked 博客文章之前 我已经 因此 这里的设置是 我创建了一个新网站并将其配置为使
  • 覆盖 jQuery 验证 MVC4 中的默认设置

    要覆盖查询验证插件 请在文件 http docs jquery com Plugins Validation validate toptions 推荐的方式是 selector validate invalidHandler functio
  • 缺少添加控制器/视图的上下文菜单

    我已将 ASP NET MVC 4 集成到现有的 asp net 网站中 两者都工作正常 但我没有看到任何菜单 快捷方式来在 Visual Studio IDE 中创建控制器 视图 这些仅适用于 ASP NET MVC 模板吗 这些仅适用于
  • 获取 SignalR hub 内的完整 URL

    我正在使用 SignalR 开发一个用户跟踪解决方案 作为学习 SignalR 的有趣项目 用于 ASP NET MVC 应用程序 目前我可以跟踪登录的用户以及他们在特定页面上停留的时间 如果他们移动到另一个页面 我也会跟踪该页面 并且 S

随机推荐

  • 确保 HttpConfiguration.EnsureInitialized()

    我已经安装了 Visual Studio 2013 当我运行我的应用程序时 出现以下错误 我不知道在哪里初始化这个对象 该怎么办 Server Error in Application The object has not yet been
  • PyQt MainWindow 在 Windows 上使用多处理

    我尝试创建一个PyQt应用 为了在后台运行进程并保持PyQt5应用程序可用于新指令 我想使用multiprocessing 在 Windows 操作系统上 当我从 Qt 调用函数时MainWindow与 一起上课multiprocessin
  • MongoDB 聚合管道 C#

    我有以下 Mongo 查询 db BusRatings aggregate match VId 2020 project vid VId sb SvcRating StaffBehavior bq SvcRating BusQuality
  • Discord.js:无效的位字段标志或数字:GUILDS

    我正在第一次尝试制作 Discord 机器人 该代码非常基本 只是一个在启动时将自己的标签记录到控制台的机器人 const Discord require discord js const TOKEN REDACTED const clie
  • 使用二级缓存时,nhibernate 查询缓存和实体缓存有什么区别?

    我正在尝试设置 nhibernate 二级缓存我在这篇文章中看到 http www gitshah com 2012 03 nhibernate and caching part 2 html我想了解查询缓存和实体缓存之间的区别 它说你需要
  • React:将组件作为 prop 传递,而不使用 this.props.children

    我有这个组件Foo js a svg component with a star svg icon import IconStar from react svg icons call a button with a custom icon
  • Javascript 访问浏览器上的拼写检查器

    是否可以从 Javascript 访问浏览器中合并的文本区域拼写检查器 我希望能够在我的代码中控制拼写检查 如今 大多数浏览器 IE 除外 似乎都内置了某种拼写检查器 据我所知 最常见的访问方式是禁用或启用字段上的拼写检查 内联禁用 Fir
  • 使用一条语句在 MySQL 中添加多列

    我试图将多个列添加到 phpMyAdmin 中的现有表中 但我不断收到相同的错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法 我在写信 ALTER TABLE WeatherCente
  • 我们已经让 MEF 与 MVC4 一起工作,那么基于约定的模型怎么样?

    经过深入研究 我发现可以在 MVC4 中使用 MEF 进行 DI 下面的 SO 链接给出了几个示例 如何将 MEF 与 ASP NET MVC 4 和 ASP NET Web API 集成 https stackoverflow com q
  • 检索 Python 脚本的返回值

    我有一个外部 C 程序 它使用以下命令执行 Python 脚本Process class 我的脚本返回一个数字代码 我想从我的 C 程序中检索它 这可能吗 问题是 我得到的返回码是python exe而不是从我的脚本返回的代码 例如 3 解
  • 如何在 Windows 上使用 Pyreverse

    我想使用pyreverse 创建图表类 我下载它 当我使用这个命令时 pyreverse bat c PyreverseCommand a1 s1 f ALL o png test py 我收到错误 名称 点 无法识别 什么是 点 如何创建
  • 是否有一种经济有效的方法来备份 Firebase Firestore?

    据我了解 备份 Firestore 数据库会导致读取每个文档 这看起来非常昂贵 例如 假设我有一个有 1000 个用户的笔记应用程序 每个用户每天创建 100 个文档并阅读 100 个文档 每月的费用为 reads 1000 100 30
  • 以编程方式安装 apk,无需定义 apk 名称

    我正在尝试以编程方式从 SD 卡安装 apk 而不提及 apk 的名称 我现在能做的就是安装我在代码中命名的 apk 但如果我想在我的设备上安装另一个 apk 那么它就不方便了 为此我必须进入我的代码并更改 apk 的名称 有没有办法在运行
  • 'InvalidOperationException',原因:'fbauth2 在 LSApplicationQueriesSchemes 下的 Info.plist 中丢失,并且是 iOS 9.0 所必需的'

    在将其标记为重复之前 请注意我已经尝试了相关问题中的所有解决方案 当我单击应用程序上的 Facebook 登录按钮时 应用程序崩溃并出现此错误 2015 10 28 18 31 05 277 retailcatalogue 96362 20
  • (Console.BufferHeight) 我无法使用 Console.WriteLine 查看/滚动查看所有控制台输出

    当我运行此代码时 输 出窗口顶部的数字是 99701 为什么我看不到一直到 1 的数字 我实际上看到所有数字都被输出 但在控制台窗口上 我只能滚动到足够高才能看到 99701 我猜 我在 Vista Home 上使用 Visual C Ex
  • 如何向 display:block 添加过渡/效果

    我有一个这样的div x 以及最初隐藏的一种 子菜单 x submenu display none 仅当用户位于 x div 上时子菜单才可见 div x hover x submenu display block 现在 我想通过事务或使可
  • 选择部分文本右对齐[重复]

    这个问题在这里已经有答案了 我想知道是否有任何方法可以将选项文本的一部分向右对齐 在下面 您可以看到我有一个选择 左侧有一些名称 右侧有 垂直 我需要将 垂直 向右拉 有什么办法可以做到这一点吗
  • 如何用其他树替换子树?

    在 Scala 宏中 我想做这样的事情 我有一个Tree 可能很大 现在我想找到这棵树的一个具有某种具体形式的子树 例如Apply 现在我想创建一棵新树 它是原始树的副本 但找到的子树被其他树替换 例如 通过类似的方法 我可以用调用某些其他
  • MySQL 5.0 索引 - 唯一索引与非唯一索引

    MySQL 唯一索引和非唯一索引在性能方面有什么区别 假设我想在 2 列的组合上创建索引 并且该组合是唯一的 但我创建了一个非唯一索引 这会对 MySQL 使用的性能或内存产生重大影响吗 同样的问题 有区别吗primary钥匙和unique
  • Orchard 1.7 - 为未发布的内容创建自定义工作流程活动

    我需要利用 Orchard CMS 中的活动列表 未发表的活动是要求之一 我查看并发现 Orchard 默认工作流程活动列表没有未发布的活动 我构建了一个模块来添加我自己的自定义工作流程活动 我在创建活动并使它们工作方面没有问题 但我不知道