2012-03-21 39 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