Domino 9 und frühere Versionen > Entwicklung
Probleme mit Postopen
koehlerbv:
Das Abfragen des EditMode steht auch an der völlig falschen Stelle.
Wenn Du allerdings tatsächlich das Bearbeiten gänzlich sperren willst (also nicht zum Beispiel Änderungen nur noch über Buttons zulassen willst oder ähnliche Konstrukte, die das Sperren des "normalen" EditModes via QueryModeChange begründen), dann musst Du natürlich unbedingt Autorenfelder verwenden.
Bernhard
gentleman:
Hi,
also sollte jemand das gleiche suchen, hier meine lösung.
Es funktioniert nämlich doch! mein chef hats hingebracht:
in den queryopen das script rein:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim session As New NotesSession
Dim acl As notesacl
Dim entry As notesaclentry
Dim ein As String
ein = session.GetEnvironmentString("ProblemEintritt")
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry(Session.UserName)
If Not isnewdoc Then
If source.document.dok_status(0) = "6. Abgeschlossen" And Mode = 1 And Not entry.IsRoleEnabled( "[Admin]" ) Then
continue = False
Messagebox "Das Dokument ist bereits abgeschlossen. Keine Bearbeitung möglich!" ,OK, "Hinweis"
Else
If Mode = 1 And Not entry.IsRoleEnabled( "[Admin]" ) And Not (ein = "Ja") Then
continue = False
Messagebox "Eine Bearbeitung des Dokuments ist nur über die Schaltfläche ''Bearbeiten'' möglich" ,OK, "Hinweis"
End If
End If
End If
End Sub
und in den querymodechange das hier rein:
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim ein As String
ein = session.GetEnvironmentString("ProblemEintritt")
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.document
Dim acl As notesacl
Set db = session.CurrentDatabase
Dim entry As notesaclentry
Set acl = db.ACL
Set entry = acl.GetEntry(Session.UserName)
If doc.dok_status(0) = "6. Abgeschlossen" And Not entry.IsRoleEnabled( "[Admin]" ) Then
Messagebox "Dokument ist bereits abgeschlossen!", OK, "Fehler"
continue = False
Else
If doc.dok_status(0) = "hugo" Then
continue = True
Else
If Not (ein = "Ja") Then
Messagebox "Eine Bearbeitung des Dokuments ist nur über die Schaltfläche ''Bearbeiten'' möglich", OK, "Fehler"
continue = False
End If
End If
End If
End Sub
sucht bestimmt noch jemand :D
marc
koehlerbv:
Das ist aber nun etwas anderes als ursprünglich gewollt - jetzt kann ja das Dokument gar nicht mehr geöffnet werden ...
Wenn das Bearbeiten wirklich komplett verhindert werden soll, geht das nur über Autorenfelder. So wie jetzt schreibt man sich ein kleines Agentileinchen und setzt seine Felder eben selber ;D
Bernhard
gentleman:
--- Zitat von: koehlerbv am 21.10.04 - 14:10:53 ---Das ist aber nun etwas anderes als ursprünglich gewollt - jetzt kann ja das Dokument gar nicht mehr geöffnet werden ...
--- Ende Zitat ---
Doch, aber eben nur über die Schaltfläche "Bearbeiten".
Und der Admin kommt immer rein!
Ich finds sehr gut so :D
trotzdem danke
marc
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln