How to get the view UNID in Lotus Notes - lotus-notes

I am trying to build a URL to access the attachment in a document in Lotus Notes.
According to IBM lotus notes document, the url to access to an attachment in browser will be like this:
notes://server/db/view/document/$FILE/filename
The document said view could be view name or view id, document could be document id or document name.
I know how to retrieve document UNID in a view. But I don't know how to get the view UNID.
I tried to use the view name but no luck. It does not work.
I am not running any lotus scripts.
Actually, my final goal is to export all documents in a view to a spreadsheet. And build URL for attachments for each row. I am using #Text(#DocumentUniqueID) to get the doc id.
But not sure how to get view id.

The url should start with http://. Otherwise it will open the document in Notes client.
View name should work. Use the view name visible in Designer not the view title.
In case the view name has special characters (like spaces) add an alias name to view without special characters and use this alias name.
As an alternative you can use "0" as view ID.
Of course you can get the view id without programming: just open the view in browser. You see the view id in URL then.

You could use this class to export your view to Excel: http://blog.texasswede.com/export-notes-view-to-excel-with-multi-value-fields/
Then you just calculate the URL in one of the columns in the view:
"http://www.example.com/" + #WebDbName + "/0/" + #Text(#DocumentUniqueID) + "/$FILE/" + filename

To get the view unid without programming, you can open the Domino Designer and then the view list. Without opening a view, you can highlight the view in the view list, then look for the 'properties' pane/section. Open the 'Document IDs' tab and there you will find the UNID, NoteID and some other details for the view.
Of course, these can change, so either a 'db.nsf/0/...' or a specific view name, 'db.nsf/vwfiles/...' view name is preferable (as noted elsewhere).

Related

Why is the wrong form opening when I click the doc link I created from a SSJS function?

Ok, this is weird. I created an xpage input form. After the form is filled out, a document is created. I then create an email to notify people that the document has been created. I drop a doclink to the newly created document in the body of the email. During testing, I noticed that when I click the link in the email, the wrong Notes Form is opened. Instead of the 'TrainingRequest' form displaying the fields, the form 'Feedback' opens up instead. Here's what I checked:
- On the xpage data section, the 'form' is set to 'TrainingRequest'.
- When I open the document via the doc link, the field 'form' has the value 'TrainingRequest', which is correct. Yet it's displaying the 'Feedback' form.
- When I check the other field properties of the document, all the correct fields from the 'TrainingRequest' form are there and populated correctly.
- When I open the document via the view, the correct Notes form 'TrainingRequest' opens.
- There is no default form in the database design.
Has anyone seen this before?
thanks
clem
Doc links are always created using the default view of your application. If there is a form formula in this view then this overrides the form in the document. Remove the form formula of the default view and it works.
I almost NEVER use form formulas in my application because of the side effects.
Source code would be useful. But initial best guess based on what you're saying is you have two datasources on the XPage, neither have ignoreRequestParams set, so you're editing the same document with both data sources. ignoreRequestParams missing will ignore any properties you define.

Is it possible to keep images in configuration document in lotus notes?

I am trying to keep image in configuration document, in order to change the image dynamically i am not able to do like that.or Is there any other way to keep images in forms or pages without entering into code everytime?
If I understand correctly, you want to dynamically change/replace the Image in the form/Page design element without using the notes designer.
In Notes, all Design elements are treated as a document and each design element have a unique UNID. The "$Body" field stores the content of the form or page
You could do this by taking the UNID of the page or form and use db.GetDocumentByUNID() method to get handle to the Page or Form design element. Then modify the content of "$Body" field in lotus script to update image or any other data (table/text) in the Form/page. The changes will reflect in the Form/Page.
The UNID of the Page/form can be found in notes designer.
Let me know if this helps.

Attachment download from view

Is there a way to list all documents in a view control (or a repeat control) and have a download button / link that will allow the user to download multiple attachments that reside in a rich text field?
I have found options using the #AttachmentName, however this lists all attachments on the document and does not restrict the attachments to just one the RTF.
I have a work around using a dialog box, which does work well, just not as clean as the option I was looking for.
In a view you can have a computed column. Any code you place into a dialog could be placed into a computed column. The getDocument() method of the XSPviewEntry gives you access to the document (recycle wisely).
update
To use a download control, use a repeat with the view as datasource and a panel per row. The panel has the data source pointing to a document. Use tr as tag for the panel.
This is only needed if you have attachments in other fields you don't want to show

Unable to get document page name for

I have a view that has XPage Associated with document form set.
The form property has the xpage associated with the document.
If I click on the link in the view the proper correct xpage is displayed as expected.
But if I close the browser, and paste the URL to the document into the browser, I get the error, Unable to get document page name for (and the unid). As long as I remain logged in the url will work without error or if I set anonymous to Reader the url will continue to work. But if I close the browser where I would be prompted to login then I get the error but I get the error before being prompted to log in.
The url for assocated forms looks a little different than when the view is used to display the xpage.
myserver/mydb.nsf/$$OpenDominoDocument.xsp?documentId=12B571F2B03E3764852573690041E273&action=openDocument
The view has various types of forms so I need to associate the form with the xpage or I suppose I can compute the xpage for the form. But any idea what would be causing this issue?
If you are opening a document from a view, the associated form could be overriden by a form formula of the view. When opening the document directly with $$OpenDominoDocument.xsp the original form stored in the document is used instead.
The form can be associated with a XPage in different ways:
For XPiNC there is a field $XPagesAltClient in the form
For web access there is a field $XPagesAlt in the form
There is a entry in the xsp.properties file.
For example this entry...
xsp.domino.form.xpage.foo=bar
...will open a document with the value foo in the Form field with the XPage bar.xsp.
Hope this helps
Sven

Opening different xpages forms from a view panel

I have an Xpages application that pulls data from another .nsf file. I have a view panel linked to a view in that db. The view has documents with several different forms in it. I want to be able to open each document in it's own form(xpage).
How do I write a computed At Runtime, open selected document using: statement that will select the correct Xpage to present the document.
If you use the Data View component instead of a View Panel, you can compute the pageName attribute, referencing the var attribute to return a different value for each row based on the document that row represents. The flexibility of the Data View component also makes it easier to make your app look more like a modern web application and less like an Excel spreadsheet. As an additional bonus, the mobile theme invokes a renderer that makes each Data View instance look like a native mobile list, so using Data Views instead of View Panels simplifies mobile development.
You have 2 options:
use "use xpage associated with form" and edit the form's property
use a SSJS formula to compute the Form. You provide a variable name in the view control var to access a view row as XSPViewEntry. If the Form is in a view column even one you don't display you use .getColumnValue otherwise getDocument.getItemValueString
Does that work for you?
Maybe this mothed can help you: Unable to get document page name for
Hope this helps
Mark
I had a similar problem today. I use only one form but 3 different xpages for associated with this form. I have 3 different document types in the view. I used rowData the get the type of the document.
try{
var v=rowData.getColumnValue("form");
if(v.indexOf("x")> -1){var page ="x.xsp"}
else if(v.indexOf("y") > -1){var page = "y.xsp"}
else{var page = "z.xsp"}
}catch(e){
var page = "x.xsp"
}
So to your view you can create a column with the value of the form and you can use it.
I have used the extension library Dynamic View control which has an event you can code to get a handle to the NotesViewEntry which was selected. See the demo database page Domino_DynamicView.xsp and the Custom Event Handler tab for an example.
Note, in 8.5.3 (I have not upgraded yet) if you add or edit the eventHandler for onColumnClick it will be added to the XPages source as an xe:eventHandler. It needs to be an xp:eventHandler to work. The way to do it is to copy the code in the source from the exiting event and delete it. Recreate the event and update the code. Then go back into the source and change the tags within the eventHandler to xp:.

Resources