2012-03-21 40 views
4

我已經建立了一個GUI擴展「注入」我自己的JavaScript到支持SDL Tridion 2011發佈對話框(在這篇文章和評論的解釋:http://albertromkes.wordpress.com/2012/01/30/tridion-gui-extensions-how-to-load-a-javascript-without-showing-a-gui-element/讀取參數發佈對話框擴展

我見支持SDL Tridion的發佈對話框(publish.js)的發佈對話框需要一些參數(不是URL),這些都在傳遞例如:

var p = this.properties; 
if (p.params && p.params.items && p.params.items.length > 0) 

所以在我的JavaScript我想獲得持有的properties.params.items,但我似乎無法得到它。

我的JavaScript代碼發佈視圖已加載「之後」插入:

<cfg:extension target="Tridion.Web.UI.Editors.CME.Views.Popups.Publish"> 
    <cfg:insertafter>Extensions.Resources</cfg:insertafter> 
</cfg:extension> 

而且在我的JavaScript(和在Firebug控制檯),我試圖獲得使用$display.getView().properties值,但是這會返回一個null對象。

我一直在使用Firebug來環視window,$display和其他各種物體,但是看不到params物體。

我的JavaScript看起來像這樣:

$evt.addEventHandler($display, "start", itemsForPublish); 

function itemsForPublish() { 

    var p = $display.getView().properties; 
    var items = p.params.items || []; 

    alert(items); 
} 

回答

7

這應該工作:

function itemsForPublish() { 
    alert(window.dialogArguments.items); 
} 

在 'Publishing.js'(在 'Publish.js'),你可以看到項目發佈發送到Popups的dialogArguments。

+1

謝謝艾伯特,那工作。我曾嘗試過這段代碼,但我刷新了發佈對話框以檢查更改。當這樣做時,params對象爲null。所以絕對值得注意的是,每次發佈對話框都應該關閉/打開。 – johnwinter 2012-03-22 13:59:41