6

SDL Tridion CME の多くのアイテム ビュー (コンポーネント、ページ、スキーマなど) に追加のタブを追加する GUI 拡張機能を作成しました。ビューがロードされたときにタブ名が URL で指定されている場合に、そのタブを直接ロードする JavaScript もいくつか作成しました。

その結果、タブ名が追加された状態でページがロードされた場合、次のようになります。

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64&tab=InfoTab

のデフォルトではなく、

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64

一般タブではなく、情報タブが一番上にロードされます。これは次のコード スニペットで実行され、非常にうまく機能します。

$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);        
    }
}

ここで、新しい機能を使用して、アイテムを開いてタブにリンクするためのコンテキスト メニュー アイテムを作成したいと思います。私が最初に考えたのは、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

アドバイスをいただければ幸いです。

4

1 に答える 1

3

最後に、Open コマンドを使用$config.getEditorUrl(item_type)してアイテム ビューの URL を取得します (item_type -$const.ItemType.COMPONENTなど)。機能のこの部分には拡張ポイントはありませんが、自己責任でいつでも上書きを試みることができます。

于 2012-10-19T12:45:52.053 に答える