Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: RvM am 09.12.02 - 09:57:38
-
Ich möchte gerne ein Namensfeld nur mit Personen, die eine entsprechende Rolle haben, aus der ACL aussuchen.
Wie muss ich da vorgehen?
-
Kannst Du das mal spezifizieren? Was willst Du genau machen?
Ich versteh die Frage nicht so recht.
Bernd
-
Ich möchte gerne, das der Editor aus der ACL für das Editieren eines versteckten Leserfeldes nur diejenigen User in der ACL auswählen kann, denen eine entsprechende Rolle zu gewiesen ist, denn wenn Du ein Namensfeld über die Auswahl "Zugriffskontrollliste für Auswahl verwenden" füllen möchtest, bekommst Du ALLE Einträge der ACL angezeigt.
Und genau das will ich nicht.
-
... über die NotesDatabase bekommst du Zugriff auf die NotesACL,
... über NotesACL.GetFirstEntry => GetNextEntry bekommest du alle Einträge...
... über NotesACLEntry.Roles kannst du die Rollen in der ACL herausbekommen...
Der Rest ist Select Case oder entsprechendes...
ata
-
aus der Notes Help
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim levelString As String
Dim levelConstant As Integer
Set uidoc = workspace.CurrentDocument
Set db = session.CurrentDatabase
Set acl = db.ACL
levelString = Inputbox$( "What level?" )
' function call to convert the string
' into an ACLLEVEL constant
levelConstant = GetLevelConstant( levelString )
' go through all the entries in the ACL
Set entry = acl.GetFirstEntry
While Not ( entry Is Nothing )
' if the entry has the level that the user chose
If ( entry.Level = levelConstant ) Then
' append the entry's name to the text list
' in the People field
Call uidoc.FieldAppendText _
( "People", entry.Name & "; " )
End If
Set entry = acl.GetNextEntry( entry )
Wend
' refresh current document so that
' text list displays nicely
Call uidoc.Refresh
End Sub
mußt etwas umbauen, aber das Prinzip ist jetzt schon sichtbar.
Statt "entry.level" (ruft eine eigene Funktion auf) mußt Du natürlich checken, ob das aktuelle entry die Rolle ABC hat, also:
If entry.IsRoleEnabled( "[ROLLE_ABC]" ) Then...
Feldwert-Liste befüllen...
Das Ganze würde ich zB ausführen, wenn das Doc in den Editmode gesetzt wird, dann ein verstecktes Multivaluefeld befüllen, das einem dritten Feld = Auswahlfeld als Schlüsselwortliste dient
edit: @ata, ich sehe Du hast es schon passend. :)