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.js
CME のファイルに保存され、Tridion.Cme.Commands.Open.prototype._execute
メソッドによって実行されます。共有アイテムやアクセス許可などを扱うため、コードは予想よりもはるかに複雑です。
このコードをすべて自分の関数にコピーするだけでなく、既存の関数をエレガントに拡張し、自分の関数Open.prototype_execute()
の定数に "&tab=MyTab" を追加する方法がないか考えていました。$cme.Popups.OPEN_ITEM_OPTIONS.URL
アドバイスをいただければ幸いです。