【问题标题】:Extending the current publishing/unpublishing screen扩展当前发布/取消发布屏幕
【发布时间】:2012-06-28 08:34:50
【问题描述】:

我有一个要求,当编辑器单击“取消发布”菜单命令时,我需要显示一个警报/弹出窗口。我将显示带有是/否按钮的弹出窗口,如果选择是,我们将继续并显示现有的 UnPub 屏幕。如果选择否,则不发生任何活动,用户返回屏幕。

  1. 如何实现?

  2. 我们能否在不为自己创建新命令的情况下扩展/覆盖现有 CME 命令?

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    我昨天刚刚学会了如何做到这一点(感谢 Nuno Linhares)——您首先需要熟悉为 GUI 制作新的编辑器。

    下一步是找到您要覆盖的命令的名称(在您的情况下可能是“UnPublish”)。最简单的方法是在 GUI 中通过 Chrome 或 FieFox 使用“检查元素”,并在您希望扩展的按钮上查找类似 @​​987654322@ 的内容。

    设置好基本编辑器后,您需要添加新命令以覆盖现有命令,如下所示:

    <extensions>
        <ext:dataextenders />
        <ext:editorextensions>
          <ext:editorextension target="CME">
            <ext:editurls />
            <ext:listdefinitions />
            <ext:taskbars />
            <ext:commands />
            <ext:commandextensions>
              <ext:commands>
                <ext:command name="UnPublish" extendingcommand="CustomUnPublishCommand"/>
              </ext:commands>
              <ext:dependencies>
                <cfg:dependency>CustomUnPublish.CommandSet</cfg:dependency>
              </ext:dependencies>
            </ext:commandextensions>
            <ext:contextmenus />
            <ext:lists />
            <ext:tabpages />
            <ext:toolbars />
            <ext:ribbontoolbars />
          </ext:editorextension>
        </ext:editorextensions>
      </extensions>
    

    以正常方式添加所有依赖项(JS 和 CSS 等)和命令引用。

    然后像编写任何其他 GUI 命令一样编写 JS 执行函数,并在处理完弹出窗口后调用现有命令,如下所示:

    CustomUnPublish.prototype._execute = function CustomUnPublish$_execute(selection, pipeline) {
        //Insert some logic to make a popup and confirm
            blnOkToProceed = true;
        //
    
        if (blnOkToProceed) {
    
            //EDIT: Original code
            $cme.getCommand("UnPublish")._execute(selection, pipeline);
            //EDIT: Or using the suggestion from @Peter below
            $commands.executeCommand("UnPublish", selection, pipeline);
            //End Edit
        }
        return;
    };
    

    【讨论】:

    • 谢谢克里斯,它成功了。 下的依赖关系如何相互关联。如何在扩展配置文件中进行解析。请求一些指针。
    • 如果您费心阅读所有内容,它实际上在实时文档中得到了很好的解释(sdllivecontent.sdl.com/LiveContent/content/en-US/… - 需要登录)。
    • 克里斯说得对。不过,我强烈建议使用 $commands.executeCommand 而不是 getCommand 和 _execute。每当您发现自己调用以下划线开头的方法时,您应该寻找替代方法 - 因为这是私有方法的命名约定(= 不是公共 API 的一部分)
    • 谢谢彼得,我已经更新了上面的答案以包含您的建议
    最近更新 更多