< Back

Document Subject: Add days off to Lotus Notes calendar
Hint Short Cut: Add this to your code & documentation to help you find this page.
http://#AddToCalendar or http://A555F9/nn.nsf/ByAlias/AddToCalendar

The trick with this is to call the computewithform...




 

 

Code:

Stick this in an action button on the form.

Uses fields requester, datefrom and dateto and status from current document.

 

'Code to add a busy day to user's notes calendar.

 ' See http://www.notesninjas.com/#AddToCalendar for latest version

On Error Goto errhdlr
Dim uiw As New NotesUIWorkspace
Dim uidoc As notesuidocument
Set uidoc=uiw.currentdocument
If uidoc.IsNewDoc Then
 Messagebox "This is a new document, please save it first."
 End
End If
Dim doc As notesdocument
Set doc = uidoc.document
Dim s As New notessession
Call s.SetEnvironmentVar("CSDocType","2")

Dim maildb As notesdatabase
Dim mdb As Variant
mdb=Evaluate("@maildbname")
Print "maildb:" & mdb(0) & "-" & mdb(1)
Set maildb=New notesdatabase(mdb(0),mdb(1))

Set caldoc = maildb.CreateDocument
caldoc.Form = "Appointment"
If doc.datefrom(0) =doc.dateto(0) Then
 
 
 caldoc.Subject = "Holiday " & doc.datefrom(0)  
Else
 caldoc.Subject = "Holiday " & doc.datefrom(0) & "-" & doc.dateto(0)
End If
Dim rt As New notesrichtextitem(caldoc,"Body")
Call rt.appendtext("Holiday for " & doc.Requester(0) )
Call rt.addnewline(1)
Call rt.appendtext("Status: " & doc.statusflag(0) )
Call rt.addnewline(1)
Call rt.appenddoclink(doc,"Link to Request" )

caldoc.Subject = "Holiday " & doc.datefrom(0) & "-" & doc.dateto(0)
caldoc.AppointmentType = "2"
Call caldoc.replaceitemvalue("StartDate", doc.datefrom(0))
Call caldoc.replaceitemvalue("StartDateTime", doc.datefrom(0))
Call caldoc.replaceitemvalue("EndDate", doc.dateto(0))
Call caldoc.replaceitemvalue("EndDateTime", doc.dateto(0))
caldoc.StartTime = "08:00:00 AM"
caldoc.EndTime = "05:00:00 PM"
Dim Item As NotesItem
Set item = caldoc.ReplaceItemValue("_ViewIcon", 9)
Dim mItem As NotesItem
Set mitem = caldoc.ReplaceItemValue("$MessageType","Not a Draft")


'change entry to Public
Dim pItem As NotesItem
Set pitem = caldoc.ReplaceItemValue("$PublicAccess","1")

Set dateTime = New NotesDateTime(doc.datefrom(0) + " " + "08:00 AM")
Set endTime = New NotesDateTime(doc.dateto(0) + " " + "08:00 AM")
Redim varCDT(0) As notesdatetime
Set varCDT(0)=New notesdatetime(datetime.zonetime)
Call datetime.adjustday(1)
count=1
Do Until datetime.timedifferencedouble(endtime)>0
 Redim Preserve varCDT(count)
 Set varcdt(count)=New notesdatetime(datetime.zonetime)
 Call datetime.adjustday(1)
 count=count+1
Loop


Set CDT = caldoc.ReplaceItemValue("CalendarDateTime", varcdt)
Call caldoc.computewithform(False,False)
Call caldoc.Save(False,False)

Call uiw.EditDocument(False,caldoc)

End

errhdlr:
Print Error$ & " at line " & Erl
End