Domino 9 und frühere Versionen > ND6: Entwicklung

WebqueryOpen-Agent eine URL öffnen

<< < (2/3) > >>

flaite:
Grundsätzlich brauchst du für eine Client-initiierte, durch bestimmte Werte in den Feldern bedingte Umleitung nur  ein bischen JavaScript code dynamisch erzeugen und das per PassThru html auf die Seite zu tun (s.u.)
Ich bin mir ziemlich sicher, dass das anders besser gelöst werden kann. Das hängt aber von den spezifischen Details in der Anwendung ab.



--- Code: ---<script language="JavaScript">

<!--
if (bedingung==true) {

window.location.href = "http://www.ibm.com";
}
//-->
</script>

--- Ende Code ---
Das (bedingung==true) kannst du ja auch mit Notes Bordmitteln (Formelsprache) dynamisch generieren.
So die Art: Als Feldformel:

--- Code: ---nl:= @newLine();
"<script language=\"JavaScript\">" + nl +
"<!--" + nl +
"if (" + @if(meinFeld="wertDerZurUmleitungFührt"; "true"; "false") + ") {" + nl +
"window.location.href = \"http://www.ibm.com\"";" + nl +
"}" + nl +
"//-->" + nl +
"</script>"

--- Ende Code ---

Mark³:
du kannst auch anstelle des Öffnens eines Dokumentes gleich einen Agenten per URL ansteuern der dann Logik ausführt und als Ergebnis eine Webseite präsentiert.
Anregungen zu solchen Sachen findest du z.B. in den Domino.Doc-Templates, falls du da irgendwie rankommst.

flaite:
Per Script wird aus einem Agenten (falls ich mich noch recht erinnere) irgendwie so die URL angestossen.


--- Code: ---print "[http://www.atnotes.de]";

--- Ende Code ---
So könnte man in einem Agenten Verzweigung einbauen

--- Code: ---if (doc.wert(0) = "ibm" then
print "[http://www.ibm.com]"
else
print "[http://www.atnotes.de]"
end if

--- Ende Code ---
Afaik sind diese eckigen Klammern unbedingt notwendig. Und es muß runtime das erste print statement im Agenten sein (im if-else können runtime beide prints das erste sein).
Die Syntax kann aber leicht anders sein.

Gruß Axel

Lotuseffekt:
Vielen Dank für eure Einträge. Ich werde das eine oder andere heute ausprobieren.
 
Grundsätzlich wollte ich verhindern, dass ein Benutzer eine Seite aus der Chronik-Liste (History) direkt öffnet, falls er diese Seite zuvor besucht hat. Beim Öffnen der Seite überprüfe ich bestimmte Parameter (Zeitstempel, etc.) und falls das Dokument 'veraltet' ist, soll er auf eine bestimmte Seite geroutet werden.

@Axel: genau dieses Statement habe ich im Web-Query-Open-Agenten (print "[www.ibm.de]") eingegeben. Leider funktioniert es nur im WebQuerySave-Ereignis. Wie auch schon m3 zietiert hat, ist es in der Hilfe beschrieben, dass jegliche Ausgaben im Query-Open-Agenten von Domino ignoriert werden.

flaite:
Du kannst die Anwendung vielleicht irgendwie so organisieren, dass die Dokumente nicht direkt sondern eben über einen Agenten aufgerufen werden. So ein bischen in Anlehnung an Modell2/MVC in Servlet/JSP.
In zahlreichen Java Frameworks gehen ja alle Client Requests zunächst über ein zentrales Controller-Servlet.
Es ist aber zugegenermassen fraglich, ob eine solche Architektur für Domino überhaupt Sinn macht.
WebQueryOpen wird glaub ich insgesamt sehr wenig benutzt.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln