Autor Thema: Edit verhindern, wenn das Dokument einen gewissen Status hat  (Gelesen 1679 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Ich baue gerade an einer Seminarverwaltung für unsere Personalentwicklung.
Dabei stieß ich auf das Problem, wie ich das Bearbeiten von Dokumenten verhindern kann, wenn diese einen gewissen Status haben. Die Dokumente durchlaufen einen Workflow. Hierbei gibt es zwei exit-points, nach denen die Dokumente nur noch lesenderweise angezeigt werden sollen.

- Antrag auf Weiterbildung wurde abgelehnt
- Antrag hat den WF vollständig durchlaufen

im ersten Fall hat das Feld "rejected" den Wert "1"; der zweite Fall wird durch den Status "3" signalisiert

der Einfachheit halber habe ich ein weiteres StatusFeld "editable" eingebaut ( default = 0) ; dieses Feld wird auf "1" gesetzt, wenn einer der o.a. Fälle eintritt.

Wird nun das Dokument mittels Doppelklich in den EDIT Modus versetzt, so lässt sich das mit

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
   If source.fieldGetText("editable") = "1" Then
      Messagebox "Der Vorgang hat den Workflow vollständig durchlaufen und kann nicht mehr bearbeitet werden" , 16 , "Workflowende"   
      continue = False
   End If   
End Sub

leicht abfangen.

Was macht man aber, wenn man in Ansichten einen Button "Bearbeiten" hat ??

Normalerweise enthält der Buhtong die Formel "@Command([EditDocument])"

Alle Versuche, das Editieren im Dokument abzufedern verliefen erfolglos. Aber warum kompliziert, wenn es auch einfach geht ...

@If(editable ="1";
@Command([OpenDocument]);
@Command([EditDocument]))

in den Buhtong, und schon wird das Dokument im Lesemodus geöffnet, wenn das Feld "editable" den Wert "1" besitzt. Versucht nun jemand, das Dokument durch Doppelklick in den Bearbeitungsmodus zu versetzen, greift der Script Code im "Querymodechange"-Event der Maske
 
« Letzte Änderung: 17.01.05 - 19:47:40 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Edit verhindern, wenn das Dokument einen gewissen Status hat
« Antwort #1 am: 17.01.05 - 19:43:06 »
Was passiert denn, wenn man mit der rechten Rattentaste in der Ansicht draufklickt, und dann Editieren auswählt? Normalerweise muss der Code auch ins PostOpen-Event
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Edit verhindern, wenn das Dokument einen gewissen Status hat
« Antwort #2 am: 17.01.05 - 19:49:53 »
hmm, ja... aber dann geht das Ding gar nicht mehr auf. Das Doc soll aber immer noch angezeigt werden; bloß halt nicht mehr editierbar sein.
Ich sehe schon, da fehlen ein paar Fälle ( control + b, Rattentaste )
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Edit verhindern, wenn das Dokument einen gewissen Status hat
« Antwort #4 am: 17.01.05 - 20:02:42 »
OK, hier noch meine 2 Cent, um Ctrl+b und der Rattentaste den Garaus zu machen

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   If mode ="1"  And Not source.IsNewDoc Then
      continue = False
   End If
End Sub

Und jetzt gucke ich mir mal die BP an  ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Edit verhindern, wenn das Dokument einen gewissen Status hat
« Antwort #5 am: 17.01.05 - 21:04:47 »
Aehm ... gugg mal,

Aber hier ist was anderes:

Das muss aber in Postopen sein

If Source.EditMode Then Source.EditMode=False
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Edit verhindern, wenn das Dokument einen gewissen Status hat
« Antwort #6 am: 17.01.05 - 22:58:34 »
Jo, auch wenn der betreffende BP-Artikel auf meinem Mist gewachsen ist, möchte ich trotzdem dringend darauf verweisen, auch das Warum ist dort erklärt - und warum das QueryOpen hierfür überhaupt nicht taugt.

Unklar ist mir allerdings, warum Du in diesem Kontext (WF-Anwendung) keine Autoren-Felder führst. Damit macht man sich doch das Leben um einiges leichter, und möglichen Manipulationen vorbei am EditMode sind so auch nicht mehr Tür und Tor geöffnet.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz