Once JCal Pro® for Joomla 1.5.x reached Release Candidate status, we started prioritizing changes for JCal Pro® 2.0. It became apparent for the reasons above (and others I will discuss in other blog posts) that an overhaul of the recurring events system would simplify the codebase and make new feature additions a lot easier to implement. We decided that the best way to create recurring events was to create a database record for EVERY instance in a recurring series of events. To populate a calendar view with events now becomes straightforward:
- Determine time frame for calendar view (i.e. month)
- Query the events database for records with start or end dates in that time frame
- Display output to user
In this case, the mathematics for creating a recurring series of events is performed only once (when the event is created) as opposed to every time a calendar view is required. Obviously, the processing power and number of database queries required to display a calendar view is also much lower. In addition, creating an event exception is simple as an individual record in the database can be modified or deleted as required and no calculations are required to generate a calendar view (as this modified database record will appear as appropriate from the database query).
I am pleased to tell you that we have a working prototype of JCal Pro® 2.0 that is utilizing this new recurring events format and it is phenomenal! Some other features related to recurring events are worth noting;
- The first event of a recurring series is now the 'parent' event with each future instance a 'child' event. This allows us to (for example) still delete or edit an entire series of recurring events (the parent and all the children) as opposed to deleting/editing each individual record (i.e. event) from the database.
- If you make a change to just one instance in a recurring series (an event exception), the 'child' becomes a 'detached child'. Editing or deleting the rest of the series is now independent of the detached child which now behaves almost identically to a static event (you will have the option to modify detached children also when modifying a parental event).
Here are the other features that we are working on and expect to be available in JCal Pro® 2.0. Note that a beta version should be ready before the new year and will be available to subscribers of our Lifetime All Access and Theme Club Pro subscrition plans.
- Joomla 1.5 only -JCal Pro® 2.x will not support Joomla 1.0.
- Multiple calendar support - Much like categories, events will also be assigned to a calendar when created. Calendars have individual permissions like categories, and menu items to specific calendars can now be created natively in the Joomla menu manager.
- Private events - Events will all now have owners (i.e. the event creator). An event can be specified as private and thus only displayed to the owner when logged in to the frontend of the web site. Menu items for private events can also be natively created in the Joomla menu manager so that a menu link to a 'personal calendar' can be created. The addition of event ownership should hasten the development of plugins for social networking extensions like Community Builder and JomSocial.
- Read-only private events
- Multi-lingual translation (Joomfish) support - the raw SQL queries have been replaced with Joomla API calls thereby allowing multi-lingual translation of calendar names, category names and event details.
- Import from JCal Pro® 1.5 - will occurr without modifying the original event data (i.e. no-risk upgrading)
- SEF URL support - initial support for sh404SEF®
- Transparent upgrade mechanism - no need to uninstall and re-install multiple extensions
- Faster performance - Reduced database queries (perhaps as much as 50% reduction) anticipated to significantly speed up JCal Pro®
Things we are strongly considering for JCal Pro® 2.1 include:
- Additional recurring event options - for example, 'third Saturday of each month'
- Maintenance control panel - Area to group import functions, mass change of event owner, mass change calendar, add sample data (like typical holidays), remove sample data
- RSS feeds - available on a per category or per calendar basis
Here are some screenshots of the JCal Pro® 2.0 propotype: