Sho' 'nuff!

I give the following disclaimers and hints:
* It's not very neat, it's not OOP.
* It's functional and that's where I'm heading for now. (Working proof
of concept.)
* There is a udf at cflib.org that helped me with the DESCRIPTION
output.  However, it didn't have all the functionality I was needed at
the time.
* It sends only to Exchange-based mailboxes.
* It sends meeting requests rather than appointment items.  Not a huge
difference, though.
* There is a weird problem with the ORGANIZER value.  For some reason, I
couldn't always specify an existing email address.  Weirder, though, is
that I specified a non-existant email address and it *always* works.
This only caused problems when accepting the event using OWA.  It's
Microsoft; go figure.
* It's not Ray Camden-proof yet.
* I call this page by clicking on an image next to an event subject
within a list of events.
* Watch line-wrapping in the DESCRIPTION value.  (Every line should
start with UPPER-CASE text.)
* The two mail-parts are required for Outlook to properly show the
description before and after accepting the event into your calendar.
Outlook and OWA are just a bit different, but this fixed the problem of
inconsistency.

Resources:
My icon: http://acelink.evansville.edu/Images/vCalendar.gif
http://blogs.msdn.com/exchange/archive/2004/10/22/246468.aspx
http://www.imc.org/pdi/ (Nice Word Document for reference)
Contributions by none other than Ben Forta!

Let me know if you have any questions.

M!ke


--------

<cfparam name="url.eventID" type="integer" default="-1">

<cffunction name="vCalDateTimeFormat" returntype="string" output="no">
        <cfargument name="eventTime" type="date" required="yes">
        <cfset arguments.eventTime = dateConvert("local2utc",
arguments.eventTime)>
        <cfreturn dateFormat(arguments.eventTime, "yyyymmdd") & "T" &
timeFormat(arguments.eventTime, "HHmmss") & "Z">
</cffunction>

<cfquery name="events" datasource="{DSN GOES HERE}">
SELECT
        calendarName
        ,subject
        ,location
        ,eventDetails
        ,startTime
        ,endTime
        ,allDayEventFlag
FROM
        Events
WHERE
        eventID = <cfqueryparam cfsqltype="cf_sql_integer"
value="#url.eventID#">
</cfquery>

<cfif not events.recordCount>
        <p>Event not found</p>

        <cfabort>
</cfif>

<cfmail from="[EMAIL PROTECTED]"
to="#session.objUser.getEmailAddress()#"
subject="#trim(events.subject)#" spoolenable="no">
<cfmailpart type="text/plain">#trim(events.eventDetails)#</cfmailpart>
<cfmailpart type="text/calendar">
BEGIN:VCALENDAR
PRODID:-//University of Evansville//AceLink//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
ORGANIZER:MAILTO:[EMAIL PROTECTED]
DTSTART:#vCalDateTimeFormat(events.startTime)#
DTEND:#vCalDateTimeFormat(events.endTime)#
LOCATION:#trim(events.location)#
TRANSP:OPAQUE
SEQUENCE:0
UID:{#createUUID()#}
DTSTAMP:#vCalDateTimeFormat(now())#
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:#reReplace(events.eventDetails,"[#
chr(13)##chr(10)#]", "=0D=0A=#chr(13)##chr(10)#     ", "all")#
SUMMARY:#trim(events.subject)#
PRIORITY:5
X-MICROSOFT-CDO-IMPORTANCE:1
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
</cfmailpart>
</cfmail>

<cfcontent reset="yes"><cfheader statuscode="204"><cfabort> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Logware (www.logware.us): a new and convenient web-based time tracking 
application. Start tracking and documenting hours spent on a project or with a 
client with Logware today. Try it for free with a 15 day trial account.
http://www.houseoffusion.com/banners/view.cfm?bannerid=67

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:199920
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to