Ragome
Ragome

Reputation: 75

Generating a document link coming from another form (Web)

I'm trying to generate document links from another form using a button I created (in pass through below). Upon clicking the button, an agent must run and document link/s should be generated, and the current form should still be in edit mode (web).

Here are the issues: 1. I am unable to generate document link/s coming from another form through the view. The key is PeopleID, the current document has the computed field which should match with another form. 2. When I click on the button, it redirects me to the agent page and says that the agent is done running (non-verbatim). It should still be on the current document (current page, only that the document link/s should be generated).

Below is the code I use on the form (in pass-through) for the button and JS function to run agent.

 <input type="button" value="Generate Link" onclick="javascript:runAgent();">
 <script language="JavaScript">
 function runAgent() {
   var path = document.forms[0].BaseLink.value; // BaseLink is the prefix url.
   var completeUrl = path + '(GenerateDoc)?OpenAgent&UNID=' + document.forms[0].UniqueID.value;
 self.location.href = completeUrl;
 }
 </script>

After this, I have a rich text field named "DocumentLink", computed.

For the agent code, here it is:

 Dim session As New NotesSession
 Dim db as NotesDatabase
 Dim curDoc as NotesDocument
 Dim difDoc as NotesDocument
 Dim view as NotesView
 Dim rtitem as NotesRichTextItem
 Dim peopleID as String

 Set db = session.currentDatabase

 thisDocumentID = Right$(session.DocumentContext.query_string(0),32)

 Set curDoc = db.GetDocumentByUNID(thisDocumentID) //For some reason I am not getting anything here.

 Set view = db.GetView("MyView")

 peopleID = curDoc.PeopleID(0)

 Set difDoc = view.GetDOcumentByKey(peopleID,true)

 If Not difDoc Is Nothing Then

 Set rtitem = curDOc.GetFirstItem("DocumentLink")

 rtitem.values = ""

 Call rtitem.AppendDocLink(difDoc,"Link to other form")

 Call curDoc.Save(True,False)

 End If

Appreciate your help.

Upvotes: 0

Views: 266

Answers (1)

Newbs
Newbs

Reputation: 1632

There are several issues with what you are doing.

First: The self.location.href = completeUrl; line in Javascript will redirect the browser to the agent which has no relationship to the currently selected or open document. Alternatives to this approach would be using AJAX techniques from jQuery or other framework to run your agent asynchronously. If you have not saved the current document then there might not be a UNID on the Query String using your current approach.

Second: You should put the PeopleId on the query string also so that the agent can read it. The agent should then parse the Query_String_Decoded to get the two elements UNID and PeopleId.

Third: your agent is not generating any output. You should use PRINT statements in the LotusSctipt to create some feedback. You can also create JavaScript Tags and calls to calls to redirect back to the original page/document.

Upvotes: 1

Related Questions