... hier wäre die Version mit der Schaltfläche in einer Mail. Der User benötigt Managerrechte in seiner Mail-DB...
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docMail As NotesDocument
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim sGroupName As String
Dim sReturnMailAddress As String
Dim sThankYou As String
sGroupName = "DeineKalenderGruppe"
sReturnMailAddress = "info@anton-tauscher.de"
sThankYou = "Vielen Dank. Der Vorgang wurde erfolgreich abgeschlossen. Dieses Dokument wird geschlossen."
Set db = session.CurrentDatabase
Set acl = db.ACL
' # Gibt es die Gruppe bereits in der ACL?
Set entry = acl.getEntry( sGroupName )
If Not entry Is Nothing Then
Set docMail = db.CreateDocument
docMail.Form = "memo"
docMail.Subject = |ACHTUNG: User "| + session.UserName + |" hatte die Gruppe "|+sGroupName+|" bereits eingetragen.|
Call docMail.Send( False , sReturnMailAddress)
Msgbox |Die Gruppe "|+sGroupName+|" gibt es bereits... | , 0 , "ACL-Prüfung"
Exit Sub
End If
' # Die Gruppe eintragen mit den erforderlichen Rechten...
Set entry = acl.CreateACLEntry(sGroupName , 0)
entry.IsPublicReader = True
entry.IsPublicWriter = True
Call acl.Save
' # Jetzt zur Sicherheit noch das Profildokument updaten...
Set doc = db.GetProfileDocument("CalendarProfile")
Set uidoc = ws.EditDocument(True , doc)
Call uidoc.Save
Call uidoc.Close
Set docMail = db.CreateDocument
docMail.Form = "memo"
docMail.Subject = |User: "| + session.UserName + |" hat die Gruppe "|+sGroupName+|" eingetragen.|
Call docMail.Send( False , sReturnMailAddress )
Msgbox sThankYou
ws.CurrentDocument.Close
... den Code in eine Schaltfläche und per Mail an alle betroffenen User versenden...
... es gibt noch die Möglichkeit, den Code in einen Agent einzubauen, der dann auf dem Server gestartet werden muß. ACHTUNG: der Agent muß mit einer ID unterzeichnet werden, die berechtigt ist Änderungen in den ACL's der Maildatenbanken vorzunehmen.
... so in der Art könnte der Agent aussehen
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docMail As NotesDocument
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim sGroupName As String
Dim pathName As String, fileName As String
sGroupName = "DeineKalenderGruppe"
pathName = "D:\Server5\Lotus\Domino\Data\Mail\*.*"
fileName = Dir$(pathName, 0)
Do While fileName <> ""
Msgbox fileName
Set db = session.GetDataBase("Celerona/Celerona" , "Mail\"+fileName)
If db.Isopen Then
Set acl = db.ACL
' # Gibt es die Gruppe bereits in der ACL?
Set entry = acl.getEntry( sGroupName )
If Not entry Is Nothing Then
Msgbox |Die Gruppe "|+sGroupName+|" gibt es bereits... | , 0 , "ACL-Prüfung"
Exit Sub
End If
' # Die Grupe eintragen mit den erforderlichen Rechten...
Set entry = acl.CreateACLEntry(sGroupName , 0)
entry.IsPublicReader = True
entry.IsPublicWriter = True
Call acl.Save
' # Jetzt zur Sicherheit noch das Profildokument updaten...
Set doc = db.GetProfileDocument("CalendarProfile")
Set uidoc = ws.EditDocument(True , doc)
Call uidoc.Save
Call uidoc.Close
End If
fileName = Dir$()
Loop
Print "Agent abgeschlossen"
ata