Sitecore 8 - 如何 - 通过代码自定义弹出窗口 + ClientPage 为空

Sitecore 8 - How to - Custom Pop up via code + ClientPage is null

我试图在点击发布时在内容编辑器上显示弹出消息。我在 "publish:begin" 事件中调用了我的处理程序。

    public void PublishCatcherDialog(object sender, EventArgs args)
    {
        //Some custom code here including "id" declaration
        ClientPipelineArgs args = new ClientPipelineArgs();
        args.Parameters.Add("id", id);
        Sitecore.Context.ClientPage.Start(this, "DialogProcessor", args);
    }

但是我看到在 Sitecore 8 中,Sitecore.Context.ClientPage.Start 给出了空异常错误,"SheerResponse" 也是如此。 大多数博客都有按钮单击触发器的代码,它提供适当的命令上下文和 Sitecore.Context 。这种情况怎么办(代码触发)?

如果您建议 Speak ,我应该在哪里声明 .js 与此管道的关联?我看到 sitecore dll 仍然使用上面的代码来显示模态对话框,所以它不能完全过时...... 我觉得缺少可以设置上下文的简单继承。


我需要在单击发布向导对话框中的 "Publish" 按钮时触发警报。它看起来像是对 publishform.aspx

的 "submit" 操作

Image here

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

如果您尝试在发布向导对话框之前打开自定义对话框,则需要重写相应的命令。要发布单个项目,您将继承 Sitecore.Shell.Framework.Commands.PublishItem 并替换配置中的 item:publish 命令。要发布 "site",您将继承 itecore.Shell.Framework.Commands.System.Publish 并替换配置中的 system:publish 命令。在调用 base.Execute(context);.

之前,您将覆盖命令的执行方法和 运行 您的代码

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

中的 javascript 文件

编辑 1

由于您需要在用户单击发布按钮时显示弹出窗口,因此您需要覆盖路径 Website/sitecore/shell/Applications/Dialogs/publish 中的 Sitecore Publish XML UI。

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

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

的 class

您的代码如下:

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 文件,并使用您的命名空间和程序集更改 CodeBeside

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