Since all databases are required to have one view, and all design-elements basically are NotesDocuments, it's easy to rewrite the code to work without needing a "real document".
Function WebFilePath( db As NotesDatabase ) As String
Dim view As NotesView
Set view = db.Views(0)
Dim viewDoc As NotesDocument
Set viewDoc = db.GetDocumentByUNID( view.UniversalID )
WebFilePath = Join( Evaluate( |@WebDbName|, viewDoc ) )
End Function
If for some reason you're not working in a HTTP-environment, use this instead of @WebDbName:
@ReplaceSubstring( @DbName[2] ; "\\" ; "/" )
--
Today, I had to make a multi-db search agent for web localhost compatible. When printing the path to the db, I had used NotesDatabase.FilePath. The problem with this is that it returns the filesystem path to the db when running locally. E.g. c:\lotus\notes\data\db.nsf
I could use NotesDatabase.ReplicaID, but I prefer somewhat readable URLs.
My solution was using evaluate @DbName[2] (the path to the database), with a document from the db I was currently processing. Without the document as second argument, evaluate would return the path to the search database.
Function printPath(resultDoc As NotesDocument) As String
Dim dbpath As String
dbpath = Join( Evaluate( |
@ReplaceSubstring(@DbName[2];"\\";"/")|,resultDoc))
printPath= "/" + dbpath + "/0/" + resultDoc .UniversalID
End Function
2 comments:
What about NotesDocument.HttpUrl ?
Returns an empty string in my search agent.
The agent is run by ?OpenAgent.
NotesDocument.HttpURL only works with WebQueryOpen/-Save? I must admit that I've never used that property successfully.
I tried it a while back, and it returned an empty string in that case as well.
Post a Comment