A thorough Ical web calendar parser. Very stylable list of events. Displays events from multiple calendars in out the box or with customised grouping, formatting and styling. Multiple pages or post or widget or both. Lots of css hooks to style it the way you want. Implements more of the ical spec than other plugins - further implementations (eg: last day of year, 2nd to last monday of month etc) can be requested, and may be coming!
Generates css tags for hcalendar miccroformat support.
List upcoming recurring or single events, notes, journal, freebusy information from many ical feeds. Offers a range of defaults and customisation options. Including the possiblity of grouping events by month/week/day or many other for presentation and styling. Offers your viewers the option to subscribe or add the events or the whole calendar to their calendars (google or other).
NB: Plugin requires php 5 >= 5.2, and the php DATETIME Class enabled (this is standard in php 5.2). You may get a parse error,something like
"syntax error, unexpected T_VARIABLE in...." if you are not on a version of PHP that has the "clone" function.
Test with your calendar at demo site:
Demo site or see a language implementation at a
German language demo
Translations exist for:
* Belorussian by iam from www.fatcow.com
* Afrikaans (partial)
* German (partial)
If anyone would like to offer some translations, please do. The Code Styling Localisation Plugin is very useful for this.
More to come
ATTENTION: Due to problems with themes who strongly specify list item css in many different ways, I am thinking of removing the hardcoded list structure with the table cells (you could add it back in using the before/after fields in the admin area if you wanted). I liked it ecuase I thought it was more 'semantic' than just some breaks here and there to force the bits onto new lines. If you have any thoughts or concerns about this, please leave a comment on the website.
See Demo site for a list of possible features, or to add your own.
Content
- If the information is available in your calendar, include additional fields and/or add some bling: .. links to google maps if location or geo exists, "add event" icons or "add calendar" (not just the icsfile)
- Include other calendars for your viewers info. Many are available on the web and can be "sorted" into your calendar: public holidays, world events, school terms, eccentric dates etc.
- Will handle any html in the text fields.
- Allocate fields to columns and order within the columns and use css for example to float end time up next to start time.
- Offers a refresh link with date and time last cached - may be useful if your calendar has many updates on one day a week, with long gaps inbetween. Prevents unnecessary downloads.
- Optionally choose timezone.
- Add your own before/after content or styling (eg: SUMMARY as h3 ) for each field.
Styling
- Works out the box with a default css style as well as many other possibilities:
- Allows grouping of events (eg: daily, weekly, monthly, quarterly, by seasons, by years for readability and styling.
- Default basic css provided, plus lots of css tags for innovative styling (eg: by group of dates, or for recurring events, or untimed (all day) events.
- A default set of transparent(for different backgrounds) images is provided for the additional "icon" fields.
- In the before and after options for each field, use following tags only : <p> <br /> <hr /> <h2> <h3> <h4> <h5> <h6> <strong> < em> <address>.
- These tags along with the possibility of having your own plugin css file should be more than adequate for your styling needs.
Date, Times and Timezone
- Note: wordpress 2.8 now allows the timezone to be specified by city which should cater for daylight saving differences. Please check very carefully that times are correct and that you understand what the times should be.
- Timezones - there is your server's timezone, the timezone of the calendar files, and your wordpress timezone. The plugin will try for the timezone string (either from wordpress 2.8 or the automatic timezone plugin. Failing that it wiull try for gmt_offset, and attempt to convert it to a timezone string. Failingthat it will use UTC time. If anyone needs more sophisticated functionality such as allowing a selection of timezones, please contact me.
- Locale and language specific date and time formatting is provided. Both the datetime and strftime formats can be used. Note that not all are supported on all servers (particularly not windows).
- Wordpress default date and time formats will be defaulted to. If upgrading, you will have to change to these manually if you want them as it will not overwrite your earlier settings until you reset.
Testing
- Can pass URL's, Listtypes and nocache/debug options via the url query string for ease of testing.
Upgrading
- In version 2.5.1 new logic has been added to allow you to keep your old settings while still seeing any new fields or features added. If a feature is meantioned and you do not see it in the config, you may need to "reset" your options. First make a note of any special settings, reset, then reapply your special settings.
General Logic
- Check if page has iCal Urls, and then parse URL's (cacheing or refreshing as necessary)
- Merge events, todo's, notes etc if multiple urls specified
- Expand recurring events and Limit the total list, so it does not go on for ever
- Sort by datetime
- Group (or rather issue grouping code on change of group) if requested
- Generate any special display situations such as:
- If event is all day, remove start time, set css class
- If start time equals end time, set end time to empty string
- If end date = start date, don't display end date
- If url in text, convert to a hyperlink
- If location or geo exists and map requested, add a map link to google maps. Include the calendar location if the location text is short, to help google find it.
- Allow html in descriptions, and convert any url's to links if not already converted.
This version of the plugin has been rewritten significantly, so while ideas have come from a number of sources, in many cases the code is new - developed based on the RFC 2445. In various other code scripts originally used, problems were being experienced with Recurrence, Duplications (due to exceptions in Recurrences) and Timezones. Recurrence can be incredibly complex and some plugins opt for simply not implementing many possibilities.
Some inputs/ideas for the ical import parsing, from:
* import_ical.php from the WebCalendar project.
* [dwc's plugin] (http://dev.webadmin.ufl.edu/~dwc/2005/03/10/ical-events-plugin/)
* [PhpIcalendar] (http://phpicalendar.net/)
* [Horde] (http://www.horde.org/kronolith/)