gpt4 book ai didi

tridion - 如何在 SDL Tridion Anguilla 框架中从用户的 ID 中获取用户的名称和描述

转载 作者:行者123 更新时间:2023-12-04 14:15:47 25 4
gpt4 key购买 nike

我为 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() 返回的值是否?实际上是修订者还是创建项目的人?

最佳答案

我通常在安圭拉遵循这种方法:

  • 使用 $models.getItem(item Id)加载对象,从某人(@puf?)那里听说这是缓存的。
  • 检查 object.isLoaded() 是否存在,如果是,则执行我的事件处理程序
  • 如果未加载对象,则监听事件

  • 这一切都归结为这样的事情:

    p.keyword = $models.getItem(p.keywordUri);
    if (p.keyword.isLoaded()) {
    this._onReleaseKeywordLoaded();
    } else {
    $evt.addEventHandler(p.keyword, "load", this.getDelegate(this._onReleaseKeywordLoaded));
    p.keyword.load();
    }

    然后,您将从事件处理程序中调用模型的 Web 服务,因为您确定届时将加载该对象。

    在您当前的代码中,您可能试图在加载对象之前阅读描述,因此未定义。我倾向于将多个函数中需要的变量放在 this.properties 中。 var(在我的例子中是 p)然后在每个函数的开头做这样的事情:

    var p = this.properties;
    var whatever = p.whatever;

    关于tridion - 如何在 SDL Tridion Anguilla 框架中从用户的 ID 中获取用户的名称和描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12805280/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com