Sitecore发布:与用户的终端事件交互

时间:2012-12-19 01:11:41

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

我有一个发布:end事件处理程序,如果有任何错误,我想向用户显示它。有没有办法做到这一点?我可以在发布结束屏幕上(或在任何地方之前)挂钩以显示消息吗?

2 个答案:

答案 0 :(得分:4)

你的问题引起了我的兴趣,因为我希望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

结果textarea的结果是,您只看到点击“点击此处查看其他信息”链接。

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

但有一个缺点:你不知道你的出版工作是哪个工作......

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

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

希望这有帮助!

答案 1 :(得分:2)

我认为您不能直接通知用户,因为publish:end在另一个不知道Sitecore接口的线程上执行。您可以向用户发送电子邮件。

您还可以添加publishing status content editor warning,让编辑知道发布是否成功完成。

我已经在我使用的所有sitecore网站上安装了发布状态,用户发现它非常有用。