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

2024-01-07

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


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

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

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

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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SDL Tridion Anguilla 框架中从用户 ID 获取用户名和描述 的相关文章

随机推荐

  • 向面板添加垂直滚动条

    我正在尝试做一个Panel可滚动 但只能垂直滚动 所以AutoScroll不起作用 因为子控件必须越过左边缘 那么这是如何做到的呢 尝试 仅 垂直滚动 自动滚动需要为 false 才能接受更改 mypanel AutoScroll fals
  • 在 R 中设置 kmeans 的静态中心

    我想根据预先确定的中心点 my center Points 对长和纬度 my long lats 列表进行分组 当我跑步时 k lt kmeans as matrix my long lats centers as matrix my ce
  • 使用 UIPasteBoard 复制图像 (Swift)

    我最近看到这个项目 用户可以从自定义键盘上点击 GIF 他们会看到一个 复制的 工具栏出现 我有一个问题 如何在产品中重现此工具提示GIF 教程 http o aolcdn com hss storage midas 27c2fb5dfec
  • jQuery 灯箱画廊

    是否存在具有标准灯箱功能的 jQuery 插件 在 灯箱 窗口中 我想在同一 灯箱 窗口中的某处 左侧 底部等 将当前图像和其余图 像显示为缩略图 ColorBox http colorpowered com colorbox 一个轻量级
  • 对 Automapper 配置文件进行单元测试

    我的确想要测试自定义逻辑CreateMap方法 我愿意NOT想要测试某些类型的映射是否存在 我该怎么做或者我需要知道哪些课程 我很感激该文件的每一个提示 Automapper 单元测试似乎很少见 public class UnitProfi
  • 计算 numpy.chararray 中字符出现次数的最快方法

    Python主义者 计算字符在字符中出现的最快方法是什么numpy character array 我正在做以下事情 In 59 for i in range 10 m input Enter A or B rr 0 i m Enter A
  • 使用 ASP MVC 下载并显示私有 Azure Blob

    我将 ASP MVC 5 Razor 与 Microsoft Azure Blob 存储结合使用 我可以使用 MVC 成功地将文档和图像上传到 Blob 存储 但我很难找到一些如何下载和显示文件的 MVC 示例 如果 blob 存储为公共文
  • ConstraintLayout 不会省略 TextView 中的长文本

    我有一个TextView在图像的右侧 我试图在图像旁边放置一些长文本 但该文本应通过在末尾添加 自动结束 然而 这是行不通的 我使用这个布局
  • Google 地图 API - geocode() 不返回纬度和经度

    我试图使用以下代码通过地址获取纬度和经度 function initialize directionsDisplay new google maps DirectionsRenderer geocoder new google maps G
  • 如何避免在factory_girl中循环创建关联模型?

    我有一个应用程序 用户可以使用多种服务登录 例如谷歌 脸书 推特等 为了促进这一点 我有一个基础User模型哪个has many Identity记录 Each Identity记录有一个provider字段 例如 Google Faceb
  • 实现幻灯片的下一个和后退按钮

    我正在尝试制作一个 php 幻灯片 我几乎完成了 我只需要实现下一个和后退按钮 我认为这很容易 但显然你不能在 php 中增加索引 sql SELECT pic url FROM pic info result conn gt query
  • 无法在 Angular 2 应用程序内提交 HTML 表单

    我试图在我的 Angular 2 beta2 应用程序中包含静态 HTML 表单 但当我点击提交按钮时它不会执行任何操作 这是我使用的 HTML
  • Jenkins代理407错误

    我在跑詹金斯 CI在使用代理访问互联网的公司网络内 我尝试在中配置代理详细信息插件 gt 高级 但即使凭据是正确的 是的 我检查了很多次 它也无法验证 测试 URL 即使在http google com http google com并返回
  • 是否可以按 3 个月的时间段对结果进行分组?

    我尝试从当月开始按 3 个月的时间段对结果进行分组 如下所示 row1 15 This should contain November September and October row2 25 This should contain Au
  • 使用 Enterprise Library 5 进行数据库日志记录

    有人知道如何使用 EL 5 0 实现数据库异常日志记录吗 Thanks 您将需要针对数据库运行脚本 以便它为您创建特定的表结构 此外 还将创建一个存储过程 您必须在跟踪侦听器的配置部分中引用该存储过程 您应该能够在此处找到此脚本文件 C E
  • ExpressJS 不会在 app.use 中触发下一个路由

    我在使用 app use 时遇到 ExpressJS 触发错误路由的问题 这是index js 文件中的代码 我在其中组合了所有路由 const app express Router express Router app use api v
  • Java Streams 是迭代器设计模式的实现吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 那么 正如标题所问的那样 Java Streams 可以被视为迭代器模式的实现吗 我们是否可以认为 stream 调用 Collection 会
  • 没有得到应用内结算的响应

    我正在我的应用程序中实现 Android 应用内计费 但 我没有从 Google play 获得 Json 响应 Override public void onClick DialogInterface dialog int which d
  • 在 Google Apps 脚本中调用 Google 表格插件?

    是否可以像调用 Apps 脚本中的函数一样调用 Google Sheets 插件 我正在尝试自动化这样的几个步骤 将数据从工作表 1 导入 附加到主工作表 1 将数据从工作表 2 导入 附加到主工作表 2 将主表 1 和 2 中的值合并 附
  • 如何在 SDL Tridion Anguilla 框架中从用户 ID 获取用户名和描述

    我为 SDL Tridion 2011 SP1 编写了 GUI 扩展 GUI 由一个额外的功能区按钮和保存组件时触发的事件处理程序组成 我的事件处理程序注册如下 PowerTools Commands ItemCommenting prot