私は、SDL Tridion CMEの多くのアイテムビュー(コンポーネント、ページ、スキーマなど)にタブを追加するGUI拡張を作成しました。また、URLにタブ名を指定してビューをロードした場合に、そのタブを直接ロードするJavaScriptを作成しました。Tridion.Cme.Commands.Open.prototype._execute()のデフォルトの動作をどのように拡張できますか?
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
Infoタブのデフォルトを上にロードされます代わりに、:
結果は次のようにページがタブ名がロードされている場合は、追加したことです一般タブの。これは、次のコードで実行し、非常にうまく機能している:
$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メソッドで新しいウィンドウを開くことでした。そこで、GUIの標準機能Open.prototype_execute()
のデフォルト機能を調べました。これはCMEのnavigation.js
ファイルに格納され、Tridion.Cme.Commands.Open.prototype._execute
メソッドで実行されます。コードは、共有アイテムやアクセス権などを扱うため、私が予想していたよりもはるかに複雑です。
このコードをすべて自分の関数にコピーするのではなく、エレガントに拡張する方法があるのでしょうか既存のOpen.prototype_execute()
関数を追加し、自分自身の関数のために "& tab = MyTab"を$cme.Popups.OPEN_ITEM_OPTIONS.URL
定数に追加します。
アドバイスをいただければ幸いです。