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