如何创建链接到SDL Tridion CME中特定选项卡的上下文菜单项?

时间:2012-10-10 12:50:30

标签: tridion tridion-2011

我想使用GUI扩展将项添加到上下文菜单中,该扩展直接链接到视图中的选项卡。

一个很好的例子是SDL Tridion的旧版本。在上下文菜单中有一个指向组件“信息”选项卡的链接,该选项卡直接在“信息”选项卡上打开了组件视图。

是否可以重新创建此项,如果有,是否有关于如何链接到特定标签的示例?

我尝试将以下JavaScript添加到我的tab.js:

var tabname = $url.getHashParam("tab")
if (tabname != '') {
    if ($j('#' + tabname)) {
        $j('#' + tabname).focus();
    }
}

此代码正确触发,但选项卡永远不会被选中。有没有一种实际选择标签的方法?

2 个答案:

答案 0 :(得分:5)

我说你需要写两部分:

  1. 该命令打开弹出窗口,需要将参数传递给弹出窗口,指示要关注的选项卡
  2. 在弹出窗口中,您需要一些识别/解析参数的JavaScript,然后重点关注正确的选项卡
  3. 我认为已经有一些将命令从命令传递到其弹出窗口的示例,因此将重点关注#2。

    在弹出窗口中选择一个标签

    当您在Tridion GUI中看到标签时,它们通常是Tridion.Controls.TabControl的一部分。如果您在弹出窗口中运行JavaScript,则可以使用此代码段获取所有选项卡控件:

    var tab = $controls.getControl($("#MasterTabControl"), 
                                   "Tridion.Controls.TabControl");
    

    然后我们只需要在其上选择正确的标签:

    tab.selectItem('InfoTab');
    

    InfoTab是我们想要关注的标签,因此您传递给弹出窗口的参数。

答案 1 :(得分:4)

感谢@Frank为所有人提供了帮助,感谢@Albert为他出色的post,我现在将以下JavaScript文件添加到我的编辑器中:

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

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或项目添加任何选项卡名称,它将在该选项卡上打开

e.g。 ?`HTTP://cmsserver/WebUI/item.aspx TCM = 16#标识= TCM:1-46&安培;标签= InfoTab

最后一步是将我的上下文菜单连接到此URL