如果Lotus Formula脚本有两个角色,如何显示按钮

时间:2016-11-02 11:48:42

标签: lotus-domino lotus-formula

我在Lotus中有一个Page,它有一个动作按钮。 当用户不是角色管理员或主管的一部分时,此按钮必须不可见。 我这样做的方法是添加这个公式:

@IsNotMember(" [Admin]&#34 ;; @UserRoles)| @IsNotMember(" [主管]&#34 ;; @UserRoles)

但它不起作用.. 如果我只有1,例如:@IsNotMember(" [Admin]&#34 ;; @UserRoles)和角色Admin,那么作为管理员,我可以看到它。

但我也希望如果用户来自角色主管而不是管理员,他仍然可以看到该按钮。

怎么办?

2 个答案:

答案 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的解决方案。