读取SDL Tridion 2011中的参数发布对话框扩展

joh*_*ter 4 tridion

我已经构建了一个GUI扩展,将我自己的JavaScript"注入"SDL Tridion 2011发布对话框(如本文所述和评论:http://albertromkes.wordpress.com/2012/01/30/tridion-gui-扩展 - 如何加载-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)
Run Code Online (Sandbox Code Playgroud)

所以在我的JavaScript中我想抓住properties.params.items,但我似乎无法掌握它.

我的JavaScript代码是在"发布"视图加载后插入的:

<cfg:extension target="Tridion.Web.UI.Editors.CME.Views.Popups.Publish">
  <cfg:insertafter>Extensions.Resources</cfg:insertafter>
</cfg:extension>
Run Code Online (Sandbox Code Playgroud)

在我的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);
}
Run Code Online (Sandbox Code Playgroud)

Alb*_*kes 7

这应该工作:

function itemsForPublish() {
    alert(window.dialogArguments.items);
}
Run Code Online (Sandbox Code Playgroud)

在'Publishing.js'(和'Publish.js')中,您可以看到要发布的项目被发送到Popups的dialogArguments.