Domino 9 und frühere Versionen > Entwicklung

Start eines Agenten aus JavaScript

<< < (2/5) > >>

ata:
... das lässt sich nicht einfach beantworten, dazu sollte man deinen Code sehen:

- Mittels der Dialogbox triffst du eine Auswahl. Diese Auswahl solltest du mit if abfragen und dann die location-Methode verwenden. Dann sollte der Aufruf des Agenten in der richtigen Reihenfolge kommen...

Nur ohne deinen Code lässt sich so was nur ahnen...

Toni

aoibhneach:
@ata
Hallo Toni!

Du hast natürlich Recht! Nur experimentiere ich hier mit einem Beispiel, welches ich bei www.jNotes.de gefunden habe.

Hier der link
http://www.jnotes.de/JNotes/jnotes_webware.nsf/0/3D61CB985812D11EC1256E1400351407?openDocument

Der Aufruf des Auswahlfensters erfolgt so:

--- Code: ---addSingleName("Selection_2", "no", 250, 420, "comma");

--- Ende Code ---


--- Code: ---function addSingleName(FieldName, Groups, width, height, sChar) {
      var left = Math.floor( (screen.width - width) / 2);
      var top = Math.floor( (screen.height - height) / 2);
      var params = "top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
      var URL1 =  "/MsingleSelect?openform&sChar="+ sChar;  //pfad des auswahlmenus
      var URL2 = "/MsingleSelect?openform&groups=yes&sChar="+ sChar;

      accessField = FieldName ;
      if ( Groups != "yes" ) {
            var w = window.open( url + URL1 ,"Select", params);   //öffnet ein pop-up
            } else {
            var w = window.open(url +  URL2,"Select", params);    //öffnet popup
      }
}

--- Ende Code ---

Der OK-Button im popup-Fenster ruft ready() auf.


--- Code: ---var accessFieldName = window.opener.accessField;
var accessField = window.opener.document.forms[0][accessFieldName];
var href = new String();//dieser zeilenblcok liest die adresse der datenbank aus
href = window.location.href;        //adresszeile im browser
var pos_nsf = href.lastIndexOf(".nsf"); //position von ".nsf" wird gesucht
var url = href.substr(0, pos_nsf + 4)        //alles hinter ".nsf" wird abgeschnitten

function ready() {
      var sIndex = document.forms[0].Namen.selectedIndex;
      if (sIndex!=-1) {
            accessField.value = document.forms[0].Namen[sIndex].text;
      };
      window.close();
}

--- Ende Code ---

Ich hatte auch versucht, den Agent im If-Block (sIndex!=-1) über window.location und auch document.location zu starten, aber es klappt icht.

So, ich hoffe die code-Ausschnitte sind so ausreichend und verwirren nicht.

Danke für weitere Tips!!!

Nils

Glombi:
Auf meiner Hausaufgabenliste steht das gleiche Problem, daher verfolge ich den Thread mit großem Interesse und versuche meinen Teil dazu beizutragen.

Aufgabe: Im Web ist ein Dokument geöffnet. Dort gibts die Aktionen "Genehmigen" und "Ablehnen". Bei "Ablehnen" soll ein Fenster zur Eingabe der Begründung aufgehen. Wenn man diese dann eingetippt hat, soll mit OK das Begründungsfenster geschlossen und ein Agent aufgerufen werden. Der Agent soll Werte im Ursprungsdokument setzen.

Folgendes hatte ich mir überlegt:
Ich rufe das Dialogdokument auf und übergebe mit der URL die Dok-ID des Dokuments. Diese ID wird dann in ein Feld SourceDocID geschrieben, welches über die CGI-Variable "Query_String" geholt wird.

Jetzt muss ich den Agenten so aufrufen, dass er das Dialogdokument mit dem Feld "SourceDocID" "kennt", d.h. sowas wie
paramid$ = notesAgent.ParameterDocID

Aber: Wie mache ich das denn mit JavaScript? Wie kann ich eine NoteID mitgeben?

tbc...

Andreas

umi:
Die NoteID oder DocumentID muss bereits im HTML Code vorhanden sein.
Dabei kann es als Feld oder eleganter als Computed Text im übergeben werden.
Falls das JS im Body der Maske übergeben wird, kann somit direkt die ID in eine Funktion geschrieben werden.

--- Code: ---<script type="text/javascript">
function getID() { return "<computedTExt=@text(@Documentuniqueid)>";}</script>

--- Ende Code ---

Evtl. wäre die CGI-Variable Query_String_Decoded besser geeignet, da alle Sonderzeichen wieder zurückübersetzt wurden z.B: %20 -> " "

Deinen Agent kannst Du ja wie folgt aufrufen

http://server/pfadzurDB/db.nsf/AgentNAme?OpenAgent&docunid=0918208201298310812313&Parameter1=yes&parameter2=rot

Im Agent kannst Du dann folgendes machen

--- Code: ---dim s as notessession
dim context as notesdocument
dim querystring as string

set s = new notessession
set context = s.documentcontext
querystring = context.getitemvalue("Query_string_decoded")(0)

--- Ende Code ---

Im Agent brauchst Du dann nur die Variable "QueryString" zu parsen um die einzelnen Parameter (docunid,parameter1,parameter2) auszulesen.

Um am Ende des Agent etwas zu erhalten kann mit einem entsprechenden Print eine URL zurückgegeben werden z.B. auf das geändert Dokument oder eine Bestätgungsmeldung


--- Code: ---print "[/pfad/db/view/docid?Open"]

--- Ende Code ---

Glombi:

--- Zitat ---set context = s.documentcontext

--- Ende Zitat ---
Ja klar!  :D
Manchmal stört das Brett vorm Kopf doch etwas  ;)

Merci! Auch für die anderen Tipps!

Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln