如何扩展Tridion.Cme.Commands.Open.prototype.\u execute()的默认行为?

如何扩展Tridion.Cme.Commands.Open.prototype.\u execute()的默认行为?,tridion,tridion-2011,Tridion,Tridion 2011,我已经编写了一个GUI扩展,它为SDL Tridion CME中的许多项视图(例如组件、页面和模式等)添加了一个附加选项卡。我还编写了一些JavaScript,如果在URL中指定了使用选项卡名称加载视图,则直接加载该选项卡 结果是,如果加载页面时添加了如下选项卡名称: http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64&tab=InfoTab 而不是 http://localhost/WebUI/item.aspx?tcm=64

我已经编写了一个GUI扩展,它为SDL Tridion CME中的许多项视图(例如组件、页面和模式等)添加了一个附加选项卡。我还编写了一些JavaScript,如果在URL中指定了使用选项卡名称加载视图,则直接加载该选项卡

结果是,如果加载页面时添加了如下选项卡名称:

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64&tab=InfoTab
而不是

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64
信息选项卡将加载在顶部,而不是常规选项卡。这是使用以下代码段执行的,效果非常好:

$evt.addEventHandler($display, "start", onDisplayStarted);

// This callback is called when any view has finished loading
function onDisplayStarted() {

    $evt.removeEventHandler($display, "start", onDisplayStarted);
    var tabname = $url.getHashParam("tab");
    if (tabname != '') {
        var tabControl = $controls.getControl($("#MasterTabControl"), "Tridion.Controls.TabControl");
        tabControl.selectItem(tabname);        
    }
}
现在,我想使用我的新功能创建一个上下文菜单项来打开项目并链接到选项卡。我的第一个想法是自己构造项目URL,并在execute方法中打开一个新窗口。因此,我查看了GUI的标准
Open.prototype\u execute()
功能中的默认功能。这存储在CME的
navigation.js
文件中,由
Tridion.CME.Commands.Open.prototype.\u execute
方法执行。代码比我预想的要复杂得多,因为它处理共享项和权限等

我想知道是否有一种方法可以优雅地扩展现有的
Open.prototype\u execute()
函数,并将我的“&tab=MyTab”附加到
$cme.Popups.Open\u ITEM\u OPTIONS.URL
常量中,而不仅仅是将所有这些代码复制到我自己的函数中


任何建议都将不胜感激。

最后,Open命令使用
$config.getEditorUrl(项目类型)
获取项目视图的url(项目类型-
$const.ItemType.COMPONENT
等)。这部分功能没有扩展点,但您可以自行尝试覆盖它