Remove Lotus Notes design element inheritance programatically
-
12-09-2019 - |
Question
As part of an effort to create a rudimentary revision control system, I would like to programatically disable design element level inheritance on a Lotus Notes template. I have so far tried the following:
- DXL export (ForceNoteFormat=true) + XSLT. This failed with a validation problem in the importer, on fields(!).
- DXL export (ForceNoteFormat=false) + XSLT. Seems to work, but I'd rather not use a DXL solution for something this general.
An area I would like to explore:
- Loop over all (design) Notes, remove the
$Class
item.
Does anybody have a suggestion on how to do this, or another approach that will remove inheritance?
Solution
The following sub seems to work, it removes the flag from any design element a 7.0.3 client can produce. I got the clues about NotesNoteCollection
from Ian's blog entry on the same subject:
Private Sub clearDesignInheritance(db As notesdatabase)
On Error Goto errorthrower
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(True) ' Select all note types...
nc.SelectDocuments=False ' ...except data documents.
Call nc.BuildCollection
Dim noteid As String
noteid = nc.GetFirstNoteId
Dim doc As notesdocument
Do Until noteid=""
Set doc = db.GetDocumentByID(noteid)
If doc.HasItem("$Class") Then
Call doc.RemoveItem("$Class")
Call doc.save(False,False,False)
End If
noteid = nc.GetNextNoteId(noteid)
Loop
Exit Sub
ErrorThrower:
Error Err, Error & Chr(13) + "Module: " & Cstr( Getthreadinfo(1) ) & ", Line: " & Cstr( Erl )
End Sub
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow