A calendar of events is must-have for many organizations. To get started, you can publish your calendar from your favorite calendar application as HTML to your web site. For a more advanced and interactive site, you can setup a web-based calendar application that can import/export, produce RSS feeds and more. This article will detail six different methods to publish your calendar along with the pros and cons of each method.

The iCal Standard

There is a widely accepted standard format for exchanging calendar data
called iCal specified in RFC 2445.
This is not to be confused with Apple's iCal application even
though they share the same "iCal" name.

Each RFC (Request For Comment) is proposed and published on the Internet.
The IETF
(Internet Engineering Task Force) will eventually evolve the RFC
into a standard if there is enough interest (and in the process
give it a unique number like iCal's 2445).
The iCal standard was approved in 1998.

The iCal standard is used by many calendar tools but not all.
Outlook does not natively support iCal, making life a little more difficult
for Windows users.
(Outlook does support vCal, which was used as the basis of iCal.)
If you are not an Outlook user, you have the luxury
of choosing an alternate calendar client like
Mozilla Sunbird (available for
Windows, Linux and Mac OS X).
If you are hooked on Outlook or required to use it by the powers that be,
there are third-party tools that can add better iCal support to Outlook.
(See Resources below.)

The iCal standard is important for interoperability between calandar
applications. An iCal-compliant client will be able to send and receive
event updates from an iCal-compiant server.

Internet event calendars are in high demand by businesses,
schools, churches and other organizations.
Because Internet tools and standards continue to evolve,
it's not always easy to determine the best way to get your calendar
online.

This article will help you decide the best way to get
your calendar online.
Your options range from simply authoring HTML pages that list your events
to using a calendar client application to publish
your events to a calendar server.

First, you will need to identify your requirements.
How you put a calendar online will be determined by a handful of factors:

Do you already have calendar data (i.e. events)?

If so, what format is it in (Outlook, Palm, iCal)?

Do you already have a web site and a hosting service for it?

Do you want your calendar of
events to be on this site?

Does your hosting service
support a server-side language (PHP, Perl) and
a database (MySQL, SQLite)?

What calendar features are important to you?

Allowing others to view your calendar

Allowing others to edit/update your calendar

Keyword searching

Filtering by categories

Exporting to iCal

RSS support

To understand why these questions are important, you'll need to understand
the how an event calendar can be presented on the web.
In order for someone to view your calendar in their web browser, it will
need to be made available on your web site.
This article will guide your through this process using six
different methods.

To manage your online event calendar, you will need the following:

An application to add, edit and delete your events: This can be
a standalone calendar client application on your desktop or
web-based interface running on your web site.

A place to store your events: This could be
a proprietary data file (like Outlook's data file),
an iCal data file or a relational database.

A method to convert your calendar data into HTML on your web site so
your users can view the calendar in a web browser:
This could be an HTML export from a calendar application or
a web-based calendar application.

Within the WinDates application, select
CalendarExport, and
choose iCalendar as the file type.

Select which calendars you wish to export or "All Calendars" to
export all events from all calendars.

Specify a filename when prompted where to save using the ".ics"
filename extension.

Copy your saved iCal file to the "calendars" subdirectory of
your PHP iCalendar installation on your web site. Typically,
you would do this with FTP (FileZilla). However, WinDates also
supports transfering the iCal file for you without the need
for an FTP program. (See the WinDates documentation.)

Issues for consideration:

While WinDates is simple to use, it supports many advanced features
including support for the iCal standard.

If you have events in WinDates or
any other iCal-compiant calendar application, you won't have
to re-enter those events.

PHP iCalendar is open source and is free to use.

PHP iCalendar has an attractive interface with
advanced features such as RSS syndication and keyword searching.

WinDates is no longer being supported.

The PHP iCalendar interface will not match the rest of your
web site.
The application is driven
by templates and can be modified, but you must know HTML in order
to do this. Navigation links back to your site would need to
be added by modifying the templates.

Yahoo's services include much more than a calendar. With a free Yahoo
account, you will get a web-based calendar and free web-based mail.

Step-by-step:

Sign up for a free Yahoo account.

Login to the calendar site at calendar.yahoo.com.

Click on the Sharing link.

For Sharing Options, select
"Anyone can view my calendar".

For Event Sharing (default),
select "Public".

Click on the Save button.

You will be back at the calendar page. Click on the
Add Event button.

Fill in the details of your event and be sure to
have "Sharing" set to "Public." Save the event.

You will be back at the calendar page. The URL for others
to view your calendar is at the bottom of the page.

Yahoo also supports syncing events with Outlook, Palm, Pocket PC and
Lotus Organizer with their free Intellisync program.
This means you can manage your events with any of these programs rather
than using the Yahoo web interface for adding events.

Issues for consideration:

Yahoo's service is entirely free.

Yahoo's Intellisync supports a variety of calendar applications,
allowing you to choose from a number
of calendar programs to manage your events.
You won't have to re-enter any events you have already entered.

The event calendar will be hosted on Yahoo instead of
your own website.

WebCalendar is a web-based calendar application that uses PHP
as its scripting language. It requires a database to store events.
Supported databases include MySQL, Oracle, Microsoft SQL Server,
PostgreSQL, SQLite and others.

Before trying to install WebCalendar, make sure your hosting service
supports PHP and at least one database. If they do not support any
databases, check to see if they support SQLite.
(SQLite is a file-based
implementation of a database and is included by default with PHP5.)

Installing WebCalendar involves more steps than the other solutions.
You will need to install the WebCalendar files and setup the
WebCalendar database.
Version 1.1 of WebCalendar makes the database setup much easier by
created the needed database tables for you from a web-based interface.
Versions 1.0 and earlier will require you to create the needed database
tables from something like phpMyAdmin.

Step-by-step:

Download the 1.1 version of WebCalendar.

Unzip the downloaded file on your web server.

Rename the calendar directory from "WebCalendar-1.1.0" (or
whichever version you have) to something more simple like
"calendar".

Point your browser to the "calendar" directory of your web site.

You should now be at the WebCalendar Install Wizard page.
Follow all steps until you reach the end and the
Launch WebCalendar button appears. Press the button
to access WebCalendar.

From the WebCalendar login, use the default login which is
username "admin" and password "admin".

Click on Admin near the bottom of the page.

Click on System Settings

Click on the "Public Access" tab. Select "Yes" for
"Allow public access". This will allow people to view the
calendar with requiring a username and password. A number
of additional options will appear at this time. For now,
leave those at their default values and press
Save.

Create a new event with the "Add Event" link near the bottom
of each page. Be sure to select "Public Access" from the list
of participants. This will make the event appear on the calendar
for users who do not have a username and password.

Because WebCalendar is dynamically generated it has a full list
of features:

Keyword searching

Filtering by event category

RSS syndication

Import and export of iCal, vCal and Palm

Automatic publishing from iCal calendar applications that
support it (Apple iCal, for example).

Custom reports

Allows viewers to submit new events for your approval

Although WebCalendar has been used to showcase the advantages of
a dynamically generated calendar site, these same advantages will
apply to other web-based calendars such as Chronos, Jax, myPHPCalendar,
Prospector, and Proverbs.

Issues for consideration:

If you already have events in
an iCal-compiant calendar application (as well as Outlook and Palm),
there will be
no need to re-enter those events.
You can even use your iCal-compliant application to enter
new events directly into WebCalendar.

WebCalendar is open source and is free to use.

The appearance can be customized to match your site.

Can be hosted on your web site.

Allows visitors to submit events for your approval.

Users can subsribe with an iCal client to view
your events in their desktop calendar program.

Installation is somewhat complicated compared to other solutions.

Will have to pay a hosting service with PHP and MySQL support if
you do not have one.

The future holds more choices for getting your calendar online.
The Mozilla Calendar project and the Sunbird project
should continue to develop into
mature iCal-compliant desktop applications for publishing events to
your web site.
The RemoteCalendars project continues to add better iCal support to
Microsoft Outlook. You can publish your events to PHP iCalendar or
WebCalendar using RemoteCalendars. And, web-based calendar applications
continue to develop into more robust and full-featured applications.

While applications continue to improve, standards for sharing data
also evolve.
Keep an eye on the adoption of SyncML, iTIP (RFC 2446),
iMIP (RFC 2447) and CalDAV (see Resources below for details).
These standards will affect how users share and synchronize
calendars in the coming years.

This article has convered only some of ways to put a calendar online.
As standards and tools evolve, this process will become easier and
involve fewer steps.
Users will be able to interact with your event calendar in more ways.
More users will become savvy about RSS syndication and iCal remote
subscriptions.

As you decide which tools to use, keep an eye on how visitors
to your site will want to use your event calendar in the future.
If your site allows for iCal subscriptions, users can download your
event calendar and put in their PDA and integrate
your calendar with their own.

About the Author

Craig Knudsen has been developing software solutions since the early 90s.
He founded the open source WebCalendar project in 2000
and continues to lead the project.
He has developed web-based applications using all sorts
of combinations of C, Perl,
Java, JavaScript, PHP and even ASP.
When not attempting to build furniture in his workshop, you can reach
him at craig@k5n.us.