【发布时间】:2012-10-09 17:29:57
【问题描述】:
我为 SDL Tridion 2011 SP1 编写了一个 GUI 扩展。 GUI 包含一个额外的功能区按钮和在保存组件时触发的事件处理程序。
我的事件处理程序注册如下:
PowerTools.Commands.ItemCommenting.prototype._execute = function (selection) {
var item = $display.getItem();
$evt.addEventHandler(item, "save", this.getDelegate(this._onItemSaved));
$cme.getCommand("SaveClose")._execute(selection);
};
事件处理程序如下所示:
PowerTools.Commands.ItemCommenting.prototype._onItemSaved = function (eventitem) {
var comment = prompt("Please enter a comment", "");
$messages.registerNotification("Saving user comments...");
var commentitemid = eventitem.source.getId();
var commenterid = eventitem.source.getCreatorId();
var commenter = $tcm.getItem(commenterid);
var commentername = commenter.getDescription();
var commentdate = eventitem.source.getLastModifiedDate();
var commentversion = eventitem.source.getVersion();
//Call the service to update
PowerTools.Model.Services.AppDataServices.Append("ext:ItemCommenting", commentitemid, "<comment><user>" + commenterid + "</user><message>" + comment + "</message><datetime>" + commentdate + "</datetime><version>" + commentversion + "</version></comment>", null, null, null, false);
};
这工作正常,除了变量commentername 始终未定义。有没有更好的方法来获取用户的姓名和描述?
另外,有谁知道eventitem.source.getCreatorId() 返回的值实际上是Reviser 还是创建该项目的人?
【问题讨论】:
-
小备注。你应该调用 command.invoke(selection);而不是 command._execute(selection);否则将不会应用 SaveClose 命令的扩展,并且您可能会遇到 js 错误。
-
在项目上调用 getCreatorId() 确实会返回创建项目的人,而不是最后一个修改项目的人。
标签: tridion tridion-2011