6

ビュー内のタブに直接リンクする GUI 拡張機能を使用して、コンテキスト メニューに項目を追加したいと考えています。

良い例は、古いバージョンの SDL Tridion です。「情報」タブでコンポーネント ビューを直接開いたコンテキスト メニューに、コンポーネントの「情報」タブへのリンクがありました。

これを再現することは可能ですか?もしそうなら、特定のタブにリンクする方法のサンプルはありますか?

次の JavaScript を tab.js に追加してみました。

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

タブが選択されないことを除いて、このコードは正しく実行されます。実際にタブを選択する方法はありますか?

4

2 に答える 2

5

私はあなたが2つの部分を書く必要があると思います:

  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 に答える