Domino 9 und frühere Versionen > Entwicklung
Dringend zB Queryopen in einer Form
Rob Green:
hi, wieder back ..
ich habe mal schnell ne maske für dich gekrizzelt:
1. Feld "TEXTEINGABE"
Hidden im Lesemodus
kein Vorgabewert
2. Feld "PASS"
Hidden =für Lesemodus und @isnewdoc
kein Vorgabewert
3. Feld "HIST"
Hidden im EDITMODUS
Berechnet mit Formel:
{a:=@If( @IsNewDoc;texteingabe;
!@IsNewDoc & pass=hid;texteingabe;
hist);
@If(!@IsNewDoc & pass!=hid;
@SetField("texteingabe";"");void);
a}
4. Feld "HID"
Hidden =für EDITMODE und !@isnewdoc
kein Vorgabewert
In das WEBQUERYSAVE Event der Maske kommt ein Aufruf eines Agenten, Name "(check)" per command-toolsrunmacro
Und der WebQuerySave Agent selbst, manuell aus der List, run once:
Sub Initialize
Dim session As New NotesSession
Dim doc As NotesDocument
Set doc = session.DocumentContext
Dim temppass As String
Dim hidpass As String
temppass = doc.pass(0)
hidpass = doc.hid(0)
If Not doc.isnewnote Then
If temppass = hidpass Then
doc.pass = ""
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
Else
continue=False
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
End If
Else
doc.texteingabe=""
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
End If
End Sub
Zunächst:
Du kannst - zur Wiederholung wie im ersten Thread von Dir zu diesem Thema - keine QuerySave, QueryOpen Events ansprechen...im Web...die triggern nicht los. Dafür gibt es das Event WebQueryOpen (vor generieren des HTML Codes) und WebQuerySave (und vor submit der Form) in der Maske, die einen Agent aufrufen.
Also was passiert?
Beim erstellen der Maske erscheinen sichtbar die Felder
TEXTEINGABE und HID. In Texteingabe kommt Dein Text rein, in HID Dein Passwort.
Bei Speichern wird der Agent erstmalig aufgerufen.
Es wird der Part
Else
doc.texteingabe = ""
Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
End If
ausgeführt. Er leert das Texteingabefeld. Der darin enthaltene Text wird in das berechnete, im EDITMODe versteckte Feld "HIST" übernommen. Dazu ist die Formel im HIST Feld verantwortlich, aber nur der erste Teil:
a:=@If( @IsNewDoc;texteingabe; !@IsNewDoc & pass=hid;texteingabe;hist);
...
a
Hier übernimmt HIST den Inhalt von "texteingabe", da es sich um ein neues Doc handelt.
Über {Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"} wird die Ausgangsansicht wieder aufgerufen (hier hardcodiert).
Nun editieren wir das Doc......das lasse ich zu...yep...nun werden die Felder
TEXTEINGABE und PASS eingeblendet. HID (das Feld mit dem Passwort) ist versteckt und wird auch nicht im HTML Code angezeigt! Der User kann nun etwas neues eingeben (oder aus dem Feld HIST den Inhalt kopieren und verändern...dazu dann eben das Hide When komplett für HIST rausnehmen...ist ja eh nicht editierbar). Aber, er muß ins Feld PASS sein Passwort eingeben, was er vormals bei der Erstellung des Docs verwendet hat.
Nun triggert beim Speichern wieder der WebQuerySave los. Nunmehr wird dieser Teil im LS ausgeführt:
If Not doc.isnewnote Then
If temppass = hidpass Then
doc.pass = "" Print "[http://localhost/Gliederung.nsf/Sender?OpenView]"
Else
continue=False Print "[http://localhost/Gliederung.nsf/PÖSEPÖSE.htm]"
End If
Wenn der Feldinhalt vom PASS Feld mit dem versteckelten Feldinhalt von HID übereinstimmt, wird das PASS Feld fürs nächste Editieren geleert (wäre ja sonst ziemlich...öhhhh..ääääähhh....dooof wenns stehenbleiben würde...) und die Ansicht mit den Docs aufgerufen. Wenn nicht, wird eine pöse.htm aufgerufen und das Speichern abgebrochen.
Die Formel im Feld HIST wird natürlich auch getriggered und zwar der Part:
{a:=@If( @IsNewDoc;texteingabe;
!@IsNewDoc & pass=hid;texteingabe;
hist);
@If(!@IsNewDoc & pass!=hid;
@SetField("texteingabe";"");void);
a}
1. wenn es kein neues Doc ist und Pass = Hid ist, übernimmt "HIST" den neuen Inhalt von "Texteingabe". Wenn nicht, bleibt HIST gleich.
2. zusätzlich, wenn pass <> hid ist, wird das Feld "Texteingabe" geleert....was im nachhinein eigentlich net nötig ist, da das Doc ja eh nicht gespeichert wird....doch..normalerweise sollte ich das gleiche Doc erneut aufrufen....na ja, egal...
Yep, das wars, was Du wolltest.
Ach soo..in die Maske in HTML HEAD komt folgende Formel rein, um das Caching auszuschalten, was beim Testen ja Sinn macht (sonst siehste net die Ergebnisse/Änderungen gleich..mußt dann manuell Refresh machen...wollen wir doch vermeiden)
"<META HTTP-EQUIV=\"expires\" content=\"Saturday, 31-Dec-89 06:30:00 GMT\"><META HTTP-EQUIV=\"Pragma\" CONTENT=\"no_cache\">"
adminnaddel:
@Rob_Green
Guten Morgen und vielen Dank für Dein Wunderwerk.
Ich bin jetzt am Arbeitsplatz und habe mir Dein Werk gerade ausgedruckt. Nun werde ich mich an die Geschiche ran machen und hoffe, daß ich das alles verstehen werde!
Gruß und ich melde mich
Rob Green:
hab dir was zugemailed...kannste als Vorlage nehmen...Maske Sender2 ignorieren, ist für was anderes gedacht.
Halt nur Ansicht Sender, Maske Sender (incl. Code im Webquerysave) und Agent "(empty)"
Schaus Dir gleich mal im Browser an, ob Du schlau wirst draus.
Ach ja, gibt es nicht irgendwo Webspace für Domino kostenlos zum Testen???
adminnaddel:
Hi,
zu1= Danke für die Mail, aber nun bin ich ja net @home
Frage: hast du sie jetzt noch griffbereit, könntest du sie vielleicht jetzt an meine Firmenadresse schicken?
zu2= Ja gibt es
http://www.corefusion.net = 5MB free
http://www.free.dominoserver.de = 10MB free
Gruss
Rob Green:
danke,
und die Firmenadresse...mail mich mal an oder warte, was soll der der Kram, ich poste den Link hier....: http://www.basic-t.com/upload/Gliederung1.zip
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln