Tôi đã viết một phần mở rộng GUI cho SDL Tridion 2011 SP1. GUI bao gồm một nút thêm ribbon và trình xử lý sự kiện được kích hoạt khi một thành phần được lưu.Làm thế nào để bạn có được tên và mô tả của người dùng từ ID của họ trong khung SDL Tridion Anguilla
xử lý sự kiện của tôi được đăng ký như sau:
PowerTools.Commands.ItemCommenting.prototype._execute = function (selection) {
var item = $display.getItem();
$evt.addEventHandler(item, "save", this.getDelegate(this._onItemSaved));
$cme.getCommand("SaveClose")._execute(selection);
};
và xử lý sự kiện trông như thế này:
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);
};
này đang làm việc tốt, ngoại trừ việc biến commentername
phải lúc nào cũng xác định. Có cách tiếp cận tốt hơn để nhận tên và mô tả của người dùng không?
Ngoài ra, có ai biết nếu giá trị được trả về bởi eventitem.source.getCreatorId()
thực sự là Reviser hay thực sự là người đã tạo mục này?
Cảm ơn trước
Nhận xét nhỏ. Bạn nên gọi command.invoke (lựa chọn); thay vì sau đó lệnh._execute (lựa chọn); Nếu không, các tiện ích mở rộng cho lệnh SaveClose sẽ không được áp dụng và bạn có thể gặp lỗi js. –
Gọi getCreatorId() trên một mục thực sự trả về người đã tạo mục và không phải là người cuối cùng sửa đổi nó. –