編集モードで表示するには、表示モードで開いている状態から移行する他に、ビューから Ctrl + E 等で直接編集モードで開くといったパターンが考えられます。
表示モードから編集モードへ切り替える時、フォームのイベント Querymodechange で判定できます。
Sub Querymodechange( Source As Notesuidocument, Continue As Variant ) If Not Source.EditMode Then If Isnull( Arraygetindex( Evaluate( "@UserRoles" ), "[Admin]", 5 ) ) Then Continue = False End If End Sub
上のコードでは、Evaluate の戻り値が配列になるので Arraygetindex で配列のどこに管理者のロールがあるかを調べています。配列のどこにもなければ Null となり判定できます。
ビューから直接、編集モードで開く時、フォームのイベント QueryOpen で判定できます。
Sub Queryopen( Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant ) If Not Isnewdoc Then If Mode = 1 Then dbadmin = Evaluate(|@IsMember( "[Admin]"; @UserRoles )|) If dbadmin( 0 ) = 0 Then Continue = False End If End If End Sub
上のコードでは、@IsMember で管理者のロールが付与されているかどうかを調べています。ロールが付与されていなければ戻り値(配列)の0番目には0が入ります。
なお、新規文書の作成時には判定しないよう制御しています。
判定方法はいろいろあると思いますが、上のどちらも@関数とロールを活用してコードを簡単にしています。
0 件のコメント:
コメントを投稿