Autor Thema: Probleme mit Postopen  (Gelesen 2989 mal)

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Probleme mit Postopen
« am: 20.10.04 - 16:31:18 »
hi,

ich fange den bearbeitenmodus im querymodechange ab.
wenn man in nder ansicht allerdings strg+b drückt kommt man rein.

ich habe bereits einen code im postopen.
es erscheint die richtige fehlermeldung, nur leider is das dokument danach im bearbeiten modus, was ja da eigentlich ned soll :)


hier mein querymodechange code:
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



und hier mal mein postopen:
Sub Postopen(Source As Notesuidocument)
   source.EditMode = False
End Sub



wie gesagt, er bringt den richtig zugeordneten hinweis, is aber nach der bestätigung im bearbeiten modus

wäre klasse wenn da jemand weiter weiß :D

danke
marc

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit Postopen
« Antwort #1 am: 20.10.04 - 16:49:29 »
So auf den ersten Blick:
Im PostOpen triggerst Du mit dem Wechsel des EditMode ein QueryModeChange - und brichst das dann (unter den gegebenen Voraussetzungen) ab mit Continue = False. Das kannst Du nur machen, wenn EditMode = False ist, bei True musst Du es zulassen.

Weiterhin: Du fragst die Rolle direkt über UserName in der ACL ab. Warum nimmst Du nicht @UserNamesList - so wie es jetzt ist, kannst Du ja niemals mit Gruppen arbeiten.

Bernhard

Offline Timo Schüring

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Männlich
Re: Probleme mit Postopen
« Antwort #2 am: 20.10.04 - 16:50:03 »
Warum arbeitest Du nicht mit Autoren und Leser Feldern ?

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Re: Probleme mit Postopen
« Antwort #3 am: 20.10.04 - 17:01:13 »
hi,

danke für die schnellen antworten

So auf den ersten Blick:
Im PostOpen triggerst Du mit dem Wechsel des EditMode ein QueryModeChange - und brichst das dann (unter den gegebenen Voraussetzungen) ab mit Continue = False. Das kannst Du nur machen, wenn EditMode = False ist, bei True musst Du es zulassen.

d.h. ich muss im querymodechange ne weitere abfrage erstellen, oder?

so in etwa?

If source.EditMode = False Then
continue = False
End If


Weiterhin: Du fragst die Rolle direkt über UserName in der ACL ab. Warum nimmst Du nicht @UserNamesList - so wie es jetzt ist, kannst Du ja niemals mit Gruppen arbeiten.

wie würde der code aussehn? kenn diese methode nicht :)

vielen dank nochmals
marc

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit Postopen
« Antwort #4 am: 20.10.04 - 17:03:43 »
Code
If source.EditMode = False Then
continue = False
End If

Jo !

@UserNamesList kannst Du mit Evaluate in LS verwenden.

HTH,
Bernhard

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Re: Probleme mit Postopen
« Antwort #5 am: 20.10.04 - 17:13:12 »
also mein querymodechange sieht nun so aus:

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 source.EditMode = False Then
      continue = False
   Else
      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 If
End Sub




mein postopen so:
Sub Postopen(Source As Notesuidocument)
   source.EditMode = False
End Sub


die meldung erscheint, sonst passiert wieder nix :(

danke nochmals :)
marc

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Probleme mit Postopen
« Antwort #6 am: 20.10.04 - 18:24:46 »
die meldung erscheint, sonst passiert wieder nix :(

Hi,

was heisst das? Was passiert nicht und was sollte denn passieren?

Ich habe das in grauer Vorzeit auch mal versucht auf diesem Wege das Editieren zu kontrollieren. Irgendwann habe ich dann aufgegeben, da es immer ein Weg gegeben hat, das Dokument im Editmodus zu öffnen.

Ich würde das, so Action Kalle auch schon vorgeschlagen hat mit Autorenfeldern regelt. Damit bekommst du das relativ einfach wasserdicht.

Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Re: Probleme mit Postopen
« Antwort #7 am: 21.10.04 - 08:34:54 »
die meldung erscheint, sonst passiert wieder nix :(

Hi,

was heisst das? Was passiert nicht und was sollte denn passieren?

hi,
also durch mein script oben ist nur noch das öffnen über die ansicht möglich... der rest funzt einwandfrei! nur wenn ich über strg+b in der ansicht (zum beispiel) in den bearbeiten modus will, kommt zwar die meldung (bearbeitung nur über button möglich) aber nach der bestätigung des fehlers ist und bleibt er im bearbeiten modus.

da sollte er das dok aber dann eigentlich sperren.

danke
marc :)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Probleme mit Postopen
« Antwort #8 am: 21.10.04 - 08:57:02 »
Hi,

ist eigentlich auch klar warum.

Ich denke er läuft dabei auf folgendes Codestück:

...
        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           
...

Der Hund liegt in der Zeile

      continue = False

begraben.


Auszug aus der Designer-Hilfe:
...
Continue
Boolean. Read-write. Indicates whether or not the document will change modes. Initially set to True. Set this parameter to False if you do not want the document to change modes.
...

Da steht ganz deutlich, wenn Continue auf False gesetzt wird, wird der Modus nicht geändert. Also bleibt er in deinem Fall im Edit - Modus.

Ich kann dir nur nochmal raten, arbeite mit Autorenfeldern


Axel



Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Re: Probleme mit Postopen
« Antwort #9 am: 21.10.04 - 09:54:19 »
hi,

jo das problem is wenn ich continue = True mach, dann kann ich gar nimmer bearbeiten :D

na gut, dann schau ich mir das mit den autorenfeldern an

vielen dank :)
marc

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit Postopen
« Antwort #10 am: 21.10.04 - 09:57:41 »
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

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Re: Probleme mit Postopen
« Antwort #11 am: 21.10.04 - 13:15:33 »
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
« Letzte Änderung: 21.10.04 - 13:17:09 von gentleman »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Probleme mit Postopen
« Antwort #12 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 ...

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

Offline gentleman

  • Frischling
  • *
  • Beiträge: 42
  • Geschlecht: Männlich
  • uaaagh!
Re: Probleme mit Postopen
« Antwort #13 am: 02.11.04 - 09:09:07 »
Das ist aber nun etwas anderes als ursprünglich gewollt - jetzt kann ja das Dokument gar nicht mehr geöffnet werden ...

Doch, aber eben nur über die Schaltfläche "Bearbeiten".
Und der Admin kommt immer rein!
Ich finds sehr gut so :D

trotzdem danke
marc

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz