2012-10-18 49 views
6

我寫了一個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常量中。

任何意見將不勝感激。

回答

3

最後,打開命令使用$config.getEditorUrl(item_type)獲取項目視圖的URL(item_type - $const.ItemType.COMPONENT等)。這部分功能沒有擴展點,但您可以隨時嘗試自行承擔風險。