Domino 9 und frühere Versionen > Entwicklung

Probleme mit Postopen

<< < (3/3)

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