6

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

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

是否可以重新创建它,如果可以,是否有任何关于如何链接到特定选项卡的示例?

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

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

此代码正确触发,除了选项卡永远不会被选中。有没有一种方法可以实际选择选项卡?

4

2 回答 2

5

我会说你需要写两部分:

  1. 命令打开弹出窗口需要向弹出窗口传递一个参数,指示要聚焦的选项卡
  2. 在弹出窗口中,您需要一些 JavaScript 来识别/解析参数,然后聚焦正确的选项卡

我认为已经有很多将参数从命令传递到其弹出窗口的示例,因此将重点关注#2。

在弹出窗口中选择一个选项卡

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

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

然后我们只需要在它上面选择正确的选项卡:

tab.selectItem('InfoTab');

我们想要关注的选项卡在哪里InfoTab,因此您传递到弹出窗口的参数在哪里。

于 2012-10-10T13:16:55.403 回答
4

感谢@Frank 的帮助和@Albert 的精彩帖子,我现在在我的编辑器中添加了以下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 或项目,它将在该选项卡上打开

例如`http://cmsserver/WebUI/item.aspx?tcm=16#id=tcm:1-46&tab=InfoTab

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

于 2012-10-10T14:42:12.997 回答