我在Lotus中有一个Page,它有一个动作按钮。 当用户不是角色管理员或主管的一部分时,此按钮必须不可见。 我这样做的方法是添加这个公式:
@IsNotMember(" [Admin]&#34 ;; @UserRoles)| @IsNotMember(" [主管]&#34 ;; @UserRoles)
但它不起作用.. 如果我只有1,例如:@IsNotMember(" [Admin]&#34 ;; @UserRoles)和角色Admin,那么作为管理员,我可以看到它。
但我也希望如果用户来自角色主管而不是管理员,他仍然可以看到该按钮。
怎么办?
答案 0 :(得分:3)
式
@IsNotMember("[Admin]" : "[Supervisor]"; @UserRoles)
如果用户既没有角色又有#34; [Admin]" 返回@True也不是" [主管]"。将其用作按钮的隐藏时间公式。只有管理员和主管才会看到按钮。
答案 1 :(得分:3)
Knut的回答是正确的。我的回答说明了原因,并提出了一种隐藏方法,几乎总能使它们更易于理解。
Notes一直在使用hide-when公式,但是人们真的倾向于根据他们的要求来看待它们!我们知道什么时候想看东西(在这种情况下我们是主管或管理员)。而且我们非常擅长将那些看得见的要求转变为隐藏式公式,因为我们在记住DeMorgan's Law方面非常糟糕,其中包括:^(P& Q)== (^ P | ^ Q)
因此,如果我们以这种方式陈述要求:
<script>
if(localStorage.night == "on") {
document.body.style.backgroundColor = "#000"; // color of your choice
}
</script>
我们往往难以通过两个@IsNotMember调用(隐式逻辑Nots)将其转换为正确的公式,因为我们忘记Ors必须变为Ands才能使其正确。但如果我们这样想的话:
Hide when the user isn't a Supervisor or an Admin
很容易看出如何表达它:
See when the user is an Admin or the user is an Supervisor
或者使用公式语言列表的强大功能,我们可以将其简化为:
@IsMember("[Supervisor]"; @UserRoles) | @IsMember("[Admin]"; @UserRoles);
要把它变成等效的hide-when,你需要做的就是把它放在逻辑上并不是这样的:
@IsMember("[Supervisor]": "[Admin]" ; @UserRoles);
你可以用任何看见公式做到这一点 - 用括号括起来然后放一个!在它的前面,但在使用@IsMember的公式的特殊情况下,你可以将它改为@IsNotMember,这将它带回Knut的解决方案。