Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: js84 am 12.07.05 - 11:24:42

Titel: Web Agent done auf neuer seite
Beitrag von: js84 am 12.07.05 - 11:24:42
Hi,

ich und meine Agenten. :-)

Also ich hab jetzt nen Web Agenten, der tut. Wenn der gelaufen ist (durch Drücken eines Buttons über die URL aufgerufen) wird im Browser ne neue Seite geöffnet mit der URL und es steht "agent done" da.

Wie kann ich denn verhindern., dass er die neue Seite öffnet??

Ich muß den Agenten mit der URL aufrufen, da ich einige Parameter übergeben muß.

Wer kann mir helfen......???

 
LG Jana

Titel: Re: Web Agent done auf neuer seite
Beitrag von: umi am 12.07.05 - 12:48:10
Hallo

So am Rande: Du könntest den Agent so Schreiben, dass er die Parameter aus dem aktuellen Dokument holt (siehe Notessession.DocumentContext). Dann brauchst Du die URL nicht zwingend zu parsen.

Zur Rückegabe gibts mehrere Möglichkeiten:
a) Du gibts via Print "...." eine Statusmeldung in HTML aus.
b) Du gibts Print "<script> window.close();</script>" , da wird das aktuelle Fenster gleich geschlossen.
c) Du gibst via Print "[" & url & "]" eine URL an den Browser. / url ist dabei die Adresse irgendeines Dokuments oder Designelements.
d) Du hast im Ursprünglichen Form ein $$Return Feld (Siehe Designerhelp)

gruss
umi
Titel: Re: Web Agent done auf neuer seite
Beitrag von: js84 am 12.07.05 - 13:05:28
DAnke für die wie immer schnelle Hilfe.

Das ich die Parameter mit einer URL übergeben hat schon seine Berechtigung, da ich Feldnamen und nicht deren Inhalt übergebe  ;)

Aber wie auch immer VIELEN DANK

LG Jana
Titel: Re: Web Agent done auf neuer seite
Beitrag von: umi am 12.07.05 - 13:27:08
Du kannst via dem DocumentContext auf alle Felder des aktuellen Dokuments zugreifen.
Titel: Re: Web Agent done auf neuer seite
Beitrag von: js84 am 12.07.05 - 13:32:41
Ja, das weiß ich doch,
ich will den Agenten für ein  Feld laufen lassen. Abhängig davon wo der Button gedrückt wird muß der Agent für eine anderes Feldlaufen.
Titel: Re: Web Agent done auf neuer seite
Beitrag von: umi am 12.07.05 - 13:43:26
Ok, Da hat der Kaffeemangel meine Linsen getrübt... :-)
Titel: Re: Web Agent done auf neuer seite
Beitrag von: datenbanken24 am 12.07.05 - 14:52:47
Umi hat eigentlich schon alles gesagt,
ein ?OpenAgent kann ja fast nur mit einem "window.open" angetriggert werden und macht damit immer ein kleines Fenster auf. Genau wie von Umi vorgeschlagen, gibt der Agent dann einfach das JS-Close-Script aus, und schließt sein Fenster gleich selber wieder.

Wen dieses (kurzzeitige) Minifenster aber absolut noch stört,
kann dies mit etwas Aufwand und einem kleinen Trick umgehen,
(den einzigen, den ich hierfür kenne):

Man nehme irgendein sichtbares oder unsichtbares Image-Objekt innerhalb der HTML-Seite
und weise die Source-Property (per Button oder schon beim HTML Aufbau) über den Agenten zu.

form.imagename.src = .../agent?openagent&para

oder

getElementByname(imagename).src = .../agent?openagent&para

Wenn das Image sichtbar ist, muss der Agent nichts weiter als einen Pfad zu einem Image zurückgeben,
z.B. .../xyz.gif

Wenn das Image unssichtbar oder nur 1x1 groß ist, ist sogar das schnuppe, aber nicht die schönste Programmierung, weil man ja absichtlich einen Fehler programmiert... (den aber keiner sieht...)

Hiermit kann man Domino-Agenten auf dem Server aufrufen,
OHNE das zusätzliche Fenster.

Bei anderen Form-Properties geht das leider nicht,
ein form.inputfeld.value = .../agent?openagent&para
wäre ZU schön und einfach, um wahr zu sein.

Das kommt dann wahrscheinlich erst demnächst mit den Domino WebServices.

Gruß,
Uwe
Titel: Re: Web Agent done auf neuer seite
Beitrag von: js84 am 12.07.05 - 15:25:32
Also bei mir öffnet der kein kleines Fenster sondern schreibt die URL des Agentenaufrufs in das aktuelle Fenster.

Woran kann das denn jetzte liegen ?

*verzweifelt*
Titel: Re: Web Agent done auf neuer seite
Beitrag von: umi am 12.07.05 - 15:27:49
Wie wird den dein Agent aufgerufen?
a) mit @settargetframe und @urlopen
b) JavaScript?

gruss
umi
Titel: Re: Web Agent done auf neuer seite
Beitrag von: js84 am 12.07.05 - 15:29:59
Mit
@URLOpen
Ich hab keine Frames, weil ich das alles ´mit Portlets mach und darstelle
Titel: Re: Web Agent done auf neuer seite
Beitrag von: umi am 12.07.05 - 15:33:59
Ich weiss jetzt nicht ob es was nützt aber versuch mal mit
@settargetframe("_blank");
@urlopen(Dein Agent)

Damit wird der Agent explizit in einem neuen Fenster geöffnet.

alternativ könntest Du auch mit JS das den Agent öffnen:
"window.open(url)"
gruss
umi
Titel: Re: Web Agent done auf neuer seite
Beitrag von: js84 am 13.07.05 - 10:40:30
So also ich hab das jetzt so gemacht das der Agent mit @URLOpen aufgerufen wird und am ende soll er zurück in das Dokument springen, von dem er aufgerufen wurde.

Was jetzt mein Problem ist, ist dass er in das Parentdocument springt und er aber in einem Response doucument aufgerufen wurde.

Woran kann das jetzt schon wieder liegen ?
das is echt zum heulen
Titel: Re: Web Agent done auf neuer seite
Beitrag von: umi am 13.07.05 - 12:56:36
Was macht der Agent am schluss den?
Titel: Re: Web Agent done auf neuer seite
Beitrag von: js84 am 13.07.05 - 13:18:28
Am ende ruft er mit Print "[" "]" die URL mit der Docid des Dokumentes auf.

so:

Set doc=s.DocumentContext
docid=doc.UniversalID

targeturl$="http://host/db/0/" & docid & "?OpenDocument"
   Print "["  & targeturl$ & "]"