【问题标题】:How can you create a context menu item that links to a specific tab in the SDL Tridion CME?如何创建链接到 SDL Tridion CME 中特定选项卡的上下文菜单项?
【发布时间】:2012-09-30 22:47:51
【问题描述】:

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

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

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

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

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

此代码正确触发,但选项卡从未被选中。有没有真正选择选项卡的方法?

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    我想说你需要写两部分:

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

    我认为已经有相当多的例子将参数从命令传递到它的弹出窗口,所以将重点放在#2。

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

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

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

    那我们只需要选择正确的标签就可以了:

    tab.selectItem('InfoTab');
    

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

    【讨论】:

      【解决方案2】:

      感谢@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 或项目,它将在该选项卡上打开

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

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

      【讨论】:

        猜你喜欢
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多