This is a suite of modules to provide robust iCal integration for Drupal. It has a number of dependencies:
- The Date Repeat module (part of the Date module suite)
- The Autoload module (1.x or later)
- The iCalCreator PHP library.
- The Libraries module is required for installing iCalCreator.
- The UUID module for handling ical references.
This module provides a common API for managing iCal data, particularly iCal VEVENT data. It consists of a number of moving parts:
This module provides the base API and integration with iCalCreator. It also provides an improved wrapping class for managing VEVENT objects, and PHP iterators to generate out instances of a recurrence. It has support for RRULEs, RDATEs, EXRULEs, and EXDATEs.
This module provides a feature to use with the features module. It sets ups the needed content types, fields, rules, and other settings needed for a common event system.
This module provides a CCK field to hold VEVENT data. The basic widget and formatter are really basic, and the storage mechanism is just raw VEVENT strings. This module is most useful when combined with...
This is an alternate widget for icalfields. It provides a fancy-schmancy Ajax-based interface for editing complex date repeat rules. It supports individual and repeating rules for extended periods of time.
This module, via Rules integration, automatically generates "instance" nodes from an "event" node (that has an icalfield on it). That is, rather than trying to cram all of the instances of a given repeating event into one massive node there is an "event" node that has the repeat data and then every instance gets its own node, which can be edited, updated, accessed, put into Views, syndicated, etc.
Note: In the current version this is not automatic. You need to setup Rules configuration to make this happen. Rules integration is provided but there is no default rule instance. This should be fixed before a final release. :-)
This module provides for a "status" field on the instance nodes, based on whether or not the RRULE in the event node that generated it is marked "canceled".
How does an instance node know what event node it belongs to? By this field! The icalreferencefield module is a Node Reference-like field that links not to a node, but to a node and a specific icalfield instance on that node. That allows an instance node to be dynamically updated by the event node as needed when the rule changes.
In essence, think of this suite as date_repeat TNG. :-) The setup is a bit complex, but the end result is seriously awesome. It is currently in alpha state pending some needed cleanups, but it can be used now. API changes before the final release should be minimal. Feedback and help with documentation are very welcome.
This module is best when used in conjunction with Inherited Formatters, as then instance nodes can simply inherit their other data fields from the event node.
Note that "instance node" and "event node" are not node types provided by this suite. Any node types can act as instance or event nodes by configuring them with the appropriate fields.