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

Chr*_*ers 6 tridion tridion-2011

我编写了一个GUI扩展,它为SDL Tridion CME中的许多Item视图添加了一个额外的选项卡(例如Component,Page和Schema等).我还编写了一些JavaScript,如果在URL中指定了加载了选项卡名称的视图,则会直接加载该选项卡.

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

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64&tab=InfoTab
Run Code Online (Sandbox Code Playgroud)

而不是默认值

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64
Run Code Online (Sandbox Code Playgroud)

信息选项卡将加载在顶部,而不是常规选项卡.这是使用以下代码片段执行的,并且运行良好:

$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);        
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个上下文菜单项来打开项目并使用我的新功能链接到选项卡.我的第一个想法是自己构建Item URL,只需在我的execute方法中打开一个新窗口.所以我查看Open.prototype_execute()了GUI 标准功能中的默认功能.这存储在navigation.jsCME 的文件中,并由该Tridion.Cme.Commands.Open.prototype._execute方法执行.代码比我预期的要复杂得多,因为它处理共享项目和权限等.

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

任何建议将不胜感激.

Bor*_*nko 3

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