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?

Was it helpful?

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
scroll top