Remote Publishing with Apple iCal
From WebCalendar Wiki
 Enabling Publishing in WebCalendar
Ok, this part is not iCal-specific. But, you need to do this first. Follow the steps below:
- Go to Settings
- Select Preferences
- Click on the Subscribe/Publish tab
- For read/write publish, turn on Allow remote publishing (Requires WebCalendar 1.1 or later)
- For read-only subscribe, turn on Allow remote subscriptions. This will allow anyone with knowledge of this URL
 Modifying Your Apache Configuration
For read/write publish, you may need to modify your Apache's configuration file to allow support for HTTP PUT by adding the following to your httpd.conf file:
<Directory "/var/www/html/webcalendar"> Script PUT /icalclient.php </Directory>
Of course, replace "/var/www/html/webcalendar" with the directory where you installed WebCalendar.
 Read-Only Subscribe
Read-only subscriptions from WebCalendar to Apple iCal allow you to view your existing WebCalendar data from within the Apple iCal application. You cannot make changes within Apple iCal and send those changes back to WebCalendar.
Below is a screenshot of the subscribe dialog window. Pretty simple, eh? You just need to provide the URL seen in your WebCalendar user preferences. In the example below, admin (from admin.ics) is your WebCalendar user login, and localhost is your server name.
After you have clicked on the Subscribe button, another dialog window will appear with options for your subscribed calendar:
You may choose how often you want Apple iCal to reload the calendar data from WebCalendar by enabling the Refresh option. (This is recommended.) If you leave this option off, you can manually refresh a calendar by using the CTRL-Mouse Click on the calendar in your list of calendars (upper left corner of the Apple iCal window).
 Write Publish
Please see notes at the bottom of this page for limitations with this approach. If you choose to use Apple iCal to add/edit events in WebCalendar, then you should always use Apple iCal and never WebCalendar directory to create, edit or delete events.
Below is a screenshot of the publish dialog window. Start by selecting one of your local calendars from the upper left corner of the iCal window. Then, select Publish from the Calendar menu.
When the window first pops up, it defaults to publishing to a .Mac account. Change the "Publish on" setting to be "a Private Server", and the choices for settings will change as shown below.
The "Publish changes automatically" option will cause Apple iCal to send updates to WebCalendar each time you add or change an event in iCal. If you leave this option off, you will need to manually publish
- Note: This page was written using Apple iCal 2.0.5, which came pre-installed on Mac OS X 10.4 aka "Tiger".
 Read Subscribe
- There are no known issues with Apple iCal and WebCalendar's remote subscriptions.
 Write Publish
- I would have liked to call this feature "Read/Write Publish", but it appears Apple iCal only writes the changes to WebCalendar and does not check WebCalendar for changes to any of the events.
- At this time, you will need to start your calendar in Apple iCal. If you already have events in WebCalendar, they will not show up in Apple iCal when you do your initial publish. If you already have events in WebCalendar, you could try exporting all events from WebCalendar and importing into Apple iCal... then delete all the events in WebCalendar. Back up your WebCalendar database first. I haven't tried this, but it should work.
- If you add events to WebCalendar (through the web interface, not through Apple iCal), these events will not show up in your Apple iCal (on your published calendar).
- If you change an event in WebCalendar (through the web interface, not through Apple iCal), those changes will be overwritten by Apple iCal the next time it publishes.
- WebCalendar does not parse the iCalendar ATTENDEE parameter, so any attendee information you add in Apple iCal will be ignored by WebCalendar.
- It seems that Apple iCal does not download the calendar from WebCalendar. It only writes changes to WebCalendar using a WebDAV DELETE request then a WebDAV PUT request.
- You may find that deleting an event in Apple iCal will NOT delete the event on WebCalendar. Why does this happen? Partly because we're just using iCal (rather than a calendar sharing protocol like CalDAV). If this happens, you can go to WebCalendar and delete the event there (after deleting it in Apple iCal). A work-around for this would have been to "cancel" the event in Apple iCal rather than delete it. However, there doesn't seem to be any way to set an event's status to "Cancelled" in the Apple iCal user interface (even though it is part of the iCalendar RFC 2445 standard).
- A possible solution to these limitations will be to use CalDAV instead of iCalendar to sync calendar data. According to Apple, the version of iCal in Mac OS X Leopard, will include support for CalDAV. The CalDAV standard is superior to iCal in exchanging calendar updates, but it is not yet supported in WebCalendar. This is mostly due to the fact that most calendar apps did not support CalDAV. However, Mozilla Sunbird supports CalDAV now, and Apple iCal will soon.
- If you find these issues frustrating, then you might consider helping support development of k5nCal, a Java-based open source multi-platform desktop calendar application under development. It currently supports the Read-Only Subscribe model mentioned above and should have Read/Write Publish support soon.