2012-06-28 21 views
4

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

  1. 这是如何实现的?

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

回答

8

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

下一步是找到要覆盖的命令的名称(可能在您的案例中为“UnPublish”)。最简单的方法是在GUI中使用Chrome或FieFox中的“检查元素”,然后在您想要扩展的按钮上寻找类似c:command="UnPublish"的东西。

一旦你有一个基本的编辑器设置,您需要添加新的命令覆盖现有的一个是这样的:

<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等),并指令引用在正常的方式。

然后写你的JS执行功能,就像任何其他GUI命令,并调用现有的命令你有你的工作弹出,这样的事情后:

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; 
}; 
+0

谢谢克里斯,它的工作。 之间的依赖关系如何相互链接?如何在扩展配置文件中解决问题。请求一些指针。 – bukubapi

+0

它实际上在现场文档(http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_DC9C231E60874E3386BBAF129328D9AD - 需要登录)中有很好的解释,如果你仔细阅读它的全部内容。 –

+1

克里斯是对的。 但我强烈建议使用$ commands.executeCommand而不是getCommand和_execute。 每当你发现自己调用一个以下划线开头的方法时,你应该寻找替代方法 - 因为这是私有方法的命名约定(=不是公共API的一部分) –