Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Schocke am 29.12.04 - 14:19:07

Titel: Lotus Script & Java Script
Beitrag von: Schocke am 29.12.04 - 14:19:07
wie in meinem vorherigen Thread schon gesagt schreibe ich gerade einen Web Agent.
Nun habe ich den Sourcecode im Printip mit Lotus Script bereits zusammen.
Fürs Web funktioniert dieLotus Scripanweisung :

If Messagebox("Soll eine Nachricht an den Kunden geschickt werden ?", 4 + 32, "Frage") = 6 Then   ......................

nicht

Also ein bischen die Suchfunktion bemüht und dann das erarbeitet:

Print "<SCRIPT LANGUAGE=JavaScript>"   
   Print "window.confirm(""Soll eine Nachricht an den Kunden geschickt werden ?"")"   
   Print "</SCRIPT>"


Nur wie reagiere ich jetzt darauf ob der Button OK oder Cancel gedrückt wird ?

Wie gesagt erst kommt Notes Script, dann Java Script und dann wieder Notes Script

Was mir vorschwebt ist das bein OK klicken der Sourcecode ganz normal weiterläuft, und beim Cancel die Ausführung des Codes abbricht, aber das Dokument gespeichert wird.
Geht das ?
Oder ist es sinnvoller alles in Java Script neu zu schreiben ?

      
Titel: Re: Lotus Script & Java Script
Beitrag von: Glombi am 29.12.04 - 14:25:15
Der Agent läuft auf dem Domino Server, da kannst Du nicht mit JavaScript mit dem User interagieren.

Daher solltest Du am Ende des Agenten mit Print einen Link erzeugen:
Soll eine Nachricht... werden? Ja Nein

Ja und Nein dann jeweils als Links implementieren, die bestimmte Aktionen auslösen. Du könntest bspw. einen Agenten starten.

Andreas
Titel: Re: Lotus Script & Java Script
Beitrag von: Semeaphoros am 29.12.04 - 14:26:37
Du bist Dir offenbar nicht über die Infrastruktur im Klaren: Dein Notesscript läuft auf dem Server, deshalb funktioniert die Massagebox nicht. Dein JavaScript läuft auf dem Client, sprich dem Browser. Es gibt aber keine zweiseitige Kommunikation dieser beiden. Du müsstest da eher ein Formular/Maske gestalten und diese an den Browser schicken, genauso wie Du die erste Eingabe vom User geholt hast. Interaktives Programmieren in Web-Anwendungen funktioniert so nicht wirklich.
Titel: Re: Lotus Script & Java Script
Beitrag von: umi am 29.12.04 - 14:37:12
Hi
Vielleicht solltest Du den Workflow an eine Webapplikation anpassen?

Ich nehme jetzt einfach mal an der Benutzer drückt nach seiner Eingabe auf den Button "Mach was".
In Notes ist klar: ein Agent läuft los und macht was und generiert eine Messagebox

Im Web: Habe es meistens so gelöst, dass alle Abfragen schon mit JS durch waren befor der Agent gestartet wurde.

gruss umi
Titel: Re: Lotus Script & Java Script
Beitrag von: Semeaphoros am 29.12.04 - 14:38:52
Was Umi da schreibt, ist wohl die beste Anregung in dieser Situation, sprich, bevor der Submit an den Server zurückgeht, sollte mit JS die Sache so weit wie nur irgend möglich abgehandelt werden.
Titel: Re: Lotus Script & Java Script
Beitrag von: Schocke am 29.12.04 - 15:51:17
also jetzt gerate ich ein wenig ins Schwimmen
Das mit der Webprogrammierung scheint nicht so einfach zu sein.
Das der Agent auf dem Server läuft und nicht mit dem  Webuser interagieren kann habe ich begriffen.
Auch die Idee Java Script vor dem eigendlichen Agent abzuarbeiten leuchtet ein. Nur frage ich mich wie stelle ich das an ?
Ich arbeite zur Zeit mit dem "WebQuerySave" Event womit ich einen Agent starten kann. Nur wie bekomme ich dann mein JavaScript abgearbeitet ?
Bin für jeden Tip dankar
Titel: Re: Lotus Script & Java Script
Beitrag von: mibo11 am 29.12.04 - 16:06:06
Versuch doch mal dein Java Script in das Event "onSubmit" einzubauen.

Gruß Sascha
Titel: Re: Lotus Script & Java Script
Beitrag von: umi am 29.12.04 - 17:00:24
Hi Schocke

Jetzt wirds Tricky :-)

Du packst den Aufruf für den Agenten in einen Button z.B. mit dem Titel
'RunAgent'. Dieser Button ruft den Agenten auf mittels
@command([ToolsRunMacro];"MeinAgent").( Natürlich kannst Du zuerst auch noch das Dok speichern falls es nötig ist.... )

Soweit so gut.

Damit der Button auf dem Web nicht erscheint muss im HTML Eigenschaften Tab unter style folgendes eingetragen werden: display:none
Ausserdem braucht der Button eine ID also z.B. RunAgent.

Jetzt kannst Du via JavaScript den Agent Starten
Code

var button = document.getElementById('RunAgent');
if (button){ button.click();}
Titel: Re: Lotus Script & Java Script
Beitrag von: datenbanken24 am 30.12.04 - 00:55:11
In Verbindung mit Deinem Vorgänger-Fred in R5:
http://www.atnotes.de/index.php?topic=20282.0
denke ich,

Du willst doch eigentlich nur,
dass ein Benutzer beim Absenden eines "Antwortdokuments" im Web eine Mail an den Themenersteller generiert

Zitat:
(bei einer Antwort auf ein Thema bekommt der Themenersteller eine Antwortmail zugeschickt)

Jetzt soll er halt noch gefragt werden, ob er das wirklich will, stimmts ?

Da der WebQuerySave-Agent nie mit dem Benutzer (Browser) während des Laufens kommunizieren kann (da er nur NACH Ablauf einen Output hat) - musst Du das mit der Abfrage vorher klären, mit JS, und Dir das Ergebnis "merken".

Zum Beispiel so:

1. Bau ein Text-Feld "XYZ" in Deine Antwort-Maske (HTML-Eigenschaft: type=hidden).
2. Ein Javascript-Dreizeiler fragt mit einem Dialog im onSubmit ab, ob der Benutzer die Mail versenden will oder nicht - analog wie Du es in LS gemacht hast.
3. und schreibt die Entscheidung per Javascript als "1" oder "0" in das Feld "XYZ"
4a. Im WebQuerySaveEvent Deiner Maske fragst du dieses Feld einfach per @-Formel ab und startest den WebQuerySave LotusScript-Agenten, der die Mail schreibt -  oder startest diesen eben nicht - wenn er sonst nix anders macht.
4b. Der WQS-Agent startet immer und entscheidend selbst anhand des Feldes XYZ, ob er eine Mail sendet

Das Feld selbst am besten gleich nach der Frage wieder löschen.

Sollte in 10 Minuten Arbeit erledigt sein.
Viel Erfolg,
Uwe
Titel: Re: Lotus Script & Java Script
Beitrag von: Schocke am 30.12.04 - 07:14:56
@all
danke euch allen ich denke mit der Summe an Vorschlägen und Ansätzen werde ich es hinbekommen