c# - Sitecore 发布 :end event interaction with user

标签 c# asp.net content-management-system sitecore sitecore6

我有一个 publish:end 事件处理程序,如果它有任何错误,我想将它显示给用户。有什么办法吗?我可以 Hook 某些东西以在发布结束屏幕上(或之前的任何地方)显示消息吗?

最佳答案

您的问题引起了我的兴趣,因为这是我希望通过 Sitecore 实现的事情之一,但没有人真正花时间去了解如何做到这一点。 所以我投入其中,我很高兴地说这是可能的,达到某种目的!

在调用 publish:end 的事件处理程序中,您可以查找当前正在运行的发布作业。 获得作业后,您可以修改其状态消息:

var publishJobs = Sitecore.Jobs.JobManager
    .GetJobs().Where(x => x.Category.Equals("publish"))
    .ToList();

publishJobs.ForEach(x => x.Status.Messages.Add("This is a message inserted by the publish:end event"));

结果将显示在发布对话框的最后一页的“结果”文本框中。

enter image description here

结果文本区域的问题在于,您只有在单击“单击此处查看其他信息”链接时才会看到。

要更改该行为,您需要修改位于 /sitecore/shell/Applications/Dialogs/Publish/Publish.xml 中的对话框 XML。 在那里,您可以将结果文本区域设置为始终可见。

不过有一个缺点:您无法知道您的发布工作是哪份工作...

每个作业都有一个分配给它的句柄,它基本上是一个 Guid 和一些关于服务器和站点的信息,但是在你的事件处理程序中你没有这些信息(或者至少我找不到它)。

我认为在大多数情况下,将消息简单地添加到所有正在运行的发布作业中是没有问题的(在检查它是否已经存在之后),但这是需要考虑的事情。

希望这对您有所帮助!

关于c# - Sitecore 发布 :end event interaction with user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944113/

相关文章:

C# GetMethod 不返回父方法

c# - 如何使用 C# 将项目添加到 foreach 循环中的列表

c# - Parse 诉 TryParse

C# ASP.NET 自定义控件未显示

php - 将 ?id=__ 重写为存储在数据库行中的页面标题

php - 以编程方式在 Joomla 中创建菜单项

c# - 如何为 C# 项目定义环境变量

asp.net - Multi-Tenancy 成员资格提供程序 ASP.NET MVC

.net - 有关 Asp.Net 管道和内部请求处理架构的文章/链接

Drupal CCK 日期字段只有小时和分钟