| Current Status The Calendar Portlet has been contributed to the JA-SIG repository as a free and open-source project. For current information on the portlet, please visit its new JA-SIG wiki page: http://www.ja-sig.org/wiki/display/PLT/CalendarPortlet |
JSR-168 read-only calendar portlet. Currently this portlet allows a user to view built-in default calendars add external iCal feeds for display.
This portlet is effectively 2 portlets, a fully customizable version and a static customizable version: My Calendar Portlet and Yale Events Portlet.
Features
- Aggregate calendars and produce a read-only display
- Calendars may be iCal feeds on the web or CAS-proxy protected iCal feeds
- Create custom calendar adapter implementations to retrieve calendar information from databases, custom XML schemas, etc.
- Admins may define default calendars and assign them to users by role
- Users may add additional calendars from iCalShare, Google Calendar, etc.
Screenshots
Main Calendar View

Editing Calendars


Installation
- Check out calendar project.
- Edit log4j.properties and database.properties.
- run "ant build"
Important Information Regarding Changes
YaleInfo's version of the calendar portlet is a modified pre-jasig version. As of YaleInfo IR-2.3.0, the calendar portlet was modified to change the way that user's calendar's were stored.
Storing of Data
Originally, user's calendars were stored in the database and keyed off of the subscribeId. This key was thought to be unique. Unfortunately, the key is only unique per user but the data is all stored together. So it was identified that one user could define their own personal calendar and other users would also end up seeing this calendar.
To solve this and further problems, a key is generated using a global sequence (hibernate_sequence) and stored in portlet preferences. As long as portlet preferences are migrated, the database can be migrated as is and data will always match.
The implementation of this was a little "hackish" at best. Due to the limitations of the portlet specification, one can only save portlet preferences in an action phase. The problem is, when the user adds the portlet to their layout, we need to immediately generate that key and save it but the portlet is not executing an action phase. The workaround for this was to use the Jasig AJAX Support which, from a high level, will issue an ajax request to an action url which will save the generated key to portlet preferences.