我希望在当前用户拥有“作者”权限或当前用户是具有这些权限的组成员时显示一个按钮。
这就是我尝试在我的按钮的rendered
属性中实现它的方式:
var cxt = com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent();
var isEditable = cxt.isDocEditable(currentDocument.getDocument());
return isEditable;
在我的情况下,isEditable
始终是真的。
有人可以告诉我,我做错了吗?
提前谢谢。
我似乎愚蠢地跳过Author
访问权限并仅使用Manager
,Editor
,Reader
进行了测试。
非常感谢@Paul Stephen Withers和@Per Henrik Lausten带领我走向解决方案。
如需进一步参考,如果有人需要,我可以根据文档的读/写模式显示/隐藏编辑/隐藏保存按钮:
// Save button
var showButton = currentDocument.isEditable();
var contxt = com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent();
var isEditable = contxt.isDocEditable(currentDocument.getDocument());
return (isEditable && showButton);
// Edit button
var showButton = !currentDocument.isEditable();
var contxt = com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent();
var isEditable = contxt.isDocEditable(currentDocument.getDocument());
return (isEditable && showButton);
答案 0 :(得分:2)
确保您使用具有作者访问权限的用户在数据库的ACL中进行测试。
对于具有编辑访问权限的用户,您的代码将始终返回。
答案 1 :(得分:0)
另一种方法是从userBean返回用户的accessLevel,并在用户具有EDITOR访问权限或更高权限时呈现该按钮。您还需要测试具有AUTHOR访问权限的用户,并进行这些进一步测试以查看它们是否位于文档中的AUTHORS-TYPE字段中(以下示例中的DocAuthor字段)。
以下代码可用于两种情况,并且位于[编辑]按钮的呈现属性中:
if (document1.isEditable()){
return false;
} else {
var editor = userBean.accessLevel >= lotus.domino.ACL.LEVEL_EDITOR;
var author = userBean.accessLevel >= lotus.domino.ACL.LEVEL_AUTHOR;
var isUser = @IsMember(document1.getItemValue("DocAuthor"),userBean.canonicalName);
if((editor) || (isUser && author)) {
return true;
} else {
return false;
}
}