Sitecore 8-如何通过代码+;ClientPage为空

Sitecore 8-如何通过代码+;ClientPage为空,sitecore,sitecore8,customdialog,Sitecore,Sitecore8,Customdialog,我试图在点击发布时在内容编辑器上显示一条弹出消息。我在“发布:开始”事件中调用了我的处理程序 然而,我看到在Sitecore 8中,Sitecore.Context.ClientPage.Start给出了一个空异常错误,“SheerResponse”也是如此。 大多数博客都有按钮点击触发器的代码,该触发器提供适当的命令上下文和Sitecore.context。在这种情况下如何操作(代码触发) 如果您建议发言,我将在哪里声明与此管道的.js关联?我看到sitecore DLL仍然使用上面的代码来显

我试图在点击发布时在内容编辑器上显示一条弹出消息。我在“发布:开始”事件中调用了我的处理程序

然而,我看到在Sitecore 8中,Sitecore.Context.ClientPage.Start给出了一个空异常错误,“SheerResponse”也是如此。 大多数博客都有按钮点击触发器的代码,该触发器提供适当的命令上下文和Sitecore.context。在这种情况下如何操作(代码触发)

如果您建议发言,我将在哪里声明与此管道的.js关联?我看到sitecore DLL仍然使用上面的代码来显示模式对话框,所以它不能完全被禁止。。。 我觉得在某个地方缺少了一个可以设置上下文的简单继承


我需要在单击发布向导对话框上的“发布”按钮时触发警报。它看起来像publishform.aspx上的“提交”操作


Sitecore事件处理程序在后台运行,因此它们无法访问UI

如果试图在“发布向导”对话框之前打开自定义对话框,则需要覆盖相应的命令。对于发布单个项目,您将继承
Sitecore.Shell.Framework.Commands.PublishItem
,并替换配置中的
item:publish
命令。对于发布“站点”,您将继承
itecore.Shell.Framework.Commands.System.Publish
,并替换配置中的
System:Publish
命令。在调用
base.execute(context)之前,您将重写命令的execute方法并运行代码


如果您想在Experience Editor模式下执行类似的操作,您可以向客户端发布管道添加一个处理器。您可以在核心数据库的
/sitecore/client/Applications/ExperienceEditor/Pipelines/Publish
下添加一个步骤。您应该能够复制和调整
OpenPublishDialog
步骤,该步骤使用位于
/sitecore/shell/client/sitecore/ExperienceEditor/Pipelines/Publish/Publish.OpenPublishDialog.js的javascript文件

由于用户单击“发布”按钮时需要显示弹出窗口,因此需要覆盖路径
网站/Sitecore/shell/Applications/Dialogs/publish
中的Sitecore发布XML UI

复制Publish.xml并将其粘贴到覆盖文件夹中。路径为
Website\sitecore\shell\Override
。请注意,文件夹可能为空。要保持标准,请创建相同的目录结构。示例:
Website\sitecore\shell\Override\Applications\Dialogs\publish

现在创建一个类,该类应继承
Sitecore.Shell.Applications.Dialogs.Publish.PublishForm

您的代码如下所示:

using Sitecore.Shell.Applications.Dialogs.Publish;

public class PublishWizardOverride : PublishForm
{
    protected override void OnNext(object sender, EventArgs formEventArgs)
    {
        // Your code to display your popup goes here

        base.OnNext(sender, formEventArgs);
    }
}
然后从Override文件夹中打开复制的xml文件,并使用名称空间和程序集更改CodeNext


注意:您可能需要检查用户所在的页面,以便在单击“下一步”按钮时不会出现弹出窗口。

Wow!感谢上面对Hishaam的详细描述,您要求我覆盖的代码是在发布对话框出现之前执行的,我需要的是在用户单击向导上的“发布按钮”后发出警报(上面添加的图像)。然后,您需要覆盖项和站点发布的Sitecore发布UI xml文件。站点发布需要覆盖的xml路径是Publish.xml。路径是Website/sitecore/shell/Applications/Dialogs/publish。项目发布使用相同的xml文件我已更新了答案以符合您的要求。谢谢Hishaam,我将尝试此项。谢谢Ben,我已更新了票证。我需要在单击向导上的“发布”按钮时显示弹出窗口。
using Sitecore.Shell.Applications.Dialogs.Publish;

public class PublishWizardOverride : PublishForm
{
    protected override void OnNext(object sender, EventArgs formEventArgs)
    {
        // Your code to display your popup goes here

        base.OnNext(sender, formEventArgs);
    }
}