我寫了一個GUI擴展,它爲SDL Tridion CME中的許多Item視圖(例如Component,Page和Schema等)添加了一個附加選項卡。如果在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
信息選項卡默認將在頂部加載,而不是常規選項卡。這與下面的代碼執行和運作非常良好:
$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
常量中。
任何意見將不勝感激。