Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Neuling_2k7 am 04.12.07 - 22:03:18

Titel: Dokument zur Bearbeitung sperren
Beitrag von: Neuling_2k7 am 04.12.07 - 22:03:18
Hallo @Notes Gemeinde,

ich habe mal wieder eine Anforderung, die ich alleine nicht hin bekomme:

Dokumente in meiner DB sollen nicht über doppelklick zur Bearbeitung geöffnet werden können. Um Dokumente zu bearbeiten habe ich einen Aktions-Button in meiner Ansicht eingebaut.

So weit bin ich schon mal alleine gekommen:

In den Declarations der DB habe ich eine Variable <allow_edit> als boolean deklariert.

Im PostOpen der Maske wird diese Variable auf <false> gesetzt.

Im QueryModeChange der Maske wird dann folgender code abgefragt:
Code
If allow_edit = False Then
  continue=False
  Exit Sub
End If

in meinem Aktion-Button habe ich folgenden Code hinterlegt:
Code
	Dim uidoc As NotesuiDocument 
	Dim db As NotesDatabase 
	Dim ws As New NotesUIWorkspace 
	
	Set uidoc=ws.CurrentDocument 
	allow_edit=True
	uidoc.editmode=True 

Der erste Teil der Anforderung funktioniert: das Dokument kann über einen Doppelklick nicht bearbeitet werden.
Aber:
Wenn ich den Button verwende funktioniert es auch nicht. Im Debugger habe ich festgestellt das <allow_edit> beim klick auf den Button keinen Wert hat - also quasi initial ist.

Ist das ein normales vorgehen in Notes, oder mach ich was falsch??
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: MadMetzger am 04.12.07 - 22:15:14
Hm... Wie hast du denn allow_edit definiert? Ist das eine globale Variable in der Maske? Dann hast du aber in dem Button (Wo befindet sich der?) keinen Zugriff darauf, wenn ich mich jetzt gerade nicht vollkommen irre.
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: Neuling_2k7 am 04.12.07 - 22:17:42
Hi,

hab das als Variable im DB-Script_Declarations folgendermaßen definiert:

dim allow_edit as boolean


Der Button direkt auf der Maske definiert....
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: MadMetzger am 04.12.07 - 22:18:42
Dann muss ich meine Aussage revidieren. Habe es gerade ausprobiert. Hatte einen Verdacht, dass die Variable in dem Kontext nicht sichtbar ist... Aber der hat sich nicht bewahrheitet.
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: Neuling_2k7 am 04.12.07 - 22:21:39
das ist ja das was mich wundert...

Wenn ich mir die gesamte Aktion im Debugger anschaue ist die Variable immer da und wird auch beim Doppelklick gefüllt und ich kann den wert dann im Querymodechange abfragen und entsprechend reagieren.
Wenn ich den Button klicke ist die Variable aber leer...
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: MadMetzger am 04.12.07 - 22:24:57
Was mich gerade viel mehr wundert: Ich habe deinen Quellcode so 1:1 übernommen in eine nackte Maske und es funktioniert, so wie gewünscht.
Also folgendes habe ich gemacht:
- Variable in Declarations deklariert
- im PostOpen mit false vorbelegt
- deinen Code aus Button und QueryModeChange übernommen

Und genauso tut es bei mir. Da muss das Problem womöglich woanders liegen.
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: Neuling_2k7 am 04.12.07 - 22:27:31
Was mich gerade viel mehr wundert: Ich habe deinen Quellcode so 1:1 übernommen in eine nackte Maske und es funktioniert, so wie gewünscht.

hab jetzt auch nochmal geschaut - ich hab immernoch das selbe ergebnis - die Variable bleibt [initial]....
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: MadMetzger am 04.12.07 - 22:36:36
Achso: Und was du damit natürlich nicht verhinderst ist, dass man ein Dokument dann noch direkt über Strg+B bearbeiten kann. Denn in dem Fall wird das Event QueryModeChange überhaupt nicht getriggert. Aber zu deinem Problem habe ich gerade nicht so direkt die Idee...
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: MadMetzger am 04.12.07 - 22:37:46
Moment, mir kommt gerade eine Idee: Kann es sein, dass dein Doppelklick zum Öffnen des Dokuments erfolgt? Dann siehe meine vorherige Antwort...
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: Neuling_2k7 am 04.12.07 - 22:48:13
Moment, mir kommt gerade eine Idee: Kann es sein, dass dein Doppelklick zum Öffnen des Dokuments erfolgt? Dann siehe meine vorherige Antwort...

Das hab ich jetzt nicht so ganz verstanden...  ???

Ich mache einen Doppelklick zum öffnen des Doks, und dann klicke ich den Button auf der Maske...
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: koehlerbv am 04.12.07 - 23:46:03
Das ganze Vorgehen ist vollkommen falsch. Und das wird auch nicht besser, selbst wenn man da noch herumdoktort.  Wenn man die Zugriffsrechte der Dokumente in der DB VOLLKOMMEN im Griff hat (was ich zu bezweifeln wage), dann könnte das helfen:
    
[LotusScript]: EditMode für bestimmte Dokumente verwehren (http://atnotes.de/index.php?topic=20455.0)

Aber wie gesagt: Da müsste der ganze Rest stimmen. Und da fehlt Dir wohl noch einiges. Lass Dich also bitte nicht täuschen, wenn Du Code aus dem BP-Artikel umsetzt! Du könntest da ggf. einem üblem Trugschluss aufsetzen. Lies daher bitte sorgfältigst die Einleitung meines Artikels!

Bernhard
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: ata am 05.12.07 - 08:33:46
... hast du Option Explicit in der Aktion und in den Globals der Maske gesetzt?

Toni
Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: pete_bla am 05.12.07 - 09:42:30
Hi,

(oder Option Declare..)

aber mir stellt sich die Frage, (wie auch Bernhard), warum Du hier den "In Bearbeitung öffnen" verweigern willst?
- normalerweiese darf das kein Problem sein - die, die nicht dürfen (->Autoren/nicht Autoren) erhalten sowieso nie den Bearbeitungsmodus.

Ich verwehre das "im Bearbeiten öffnen" persönlich per Scirpt allerhöchsten im
Code
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
	if Mode = 1 and not IsNewDoc then continue = false
End Sub 
mehr auch: -> Desingerhelp "NotesUIDocument"...

Für alles Anderes muss man viel zuviele Dinge beachten -
und eine Sicherheit stellt dies sowieso nicht da !

Wenn Du dich davon nicht abbringen lässt,
geb uns mehr infos, was Du eigentlich überhaupt vorhast.
Eventuell können wir Dir dann besser helfen.

Gruss, Pete(r)

Titel: Re: Dokument zur Bearbeitung sperren
Beitrag von: ata am 05.12.07 - 11:29:07
... ich vermute mal, daß in der Aktion eine Validierung stattfindet, ob ein möglicher Autor das Dokument in diesem Fall trotzdem bearbeiten darf. Ich kenn solche Fälle, bei denen es darauf ankommt, daß das Dokument aus einer bestimmten Ansicht geöffnet werden muß und in einem bestimmten Status (etc) ist...

Da kenne ich entsprechende Konstrukte, daß Autoren nicht jederzeit bearbeiten dürfen - je nachdem wie kompliziert die Prozessabläufe sind...

Toni