Status update 1 for JCal Pro® 2.0, the Joomla calendar

 Since stabilization of the  JCal Pro® for Joomla 1.5 codebase, we have been busy behind the scenes working on JCal Pro® 2.0. If you've followed the forums, you have some idea of the changes that are coming. However, as we have actually started the programming, a few more things have materialized that look to now be part of JCal Pro® 2.0. 

 Before I get into the feature list, some background is prudent. One of the historical limitations of JCal Pro® has always been the way in which recurring events are stored in the database. Basically, a recurring event was stored as a single record. Each time a calendar view, module or plugin was called to display events, JCal would do the following tasks:

  1. Query the events database table to find ALL (past and current) recurring events (important: ALL recurring events ever created had to be queried)
  2. Based on the recurring events parameters, mathematically create an array of upcoming events
  3. Assemble the recurring and static events and sort as required by the calendar view/module/plugin
  4. Display output to user

 Any change in the calendar view (say for example browsing to the next month) triggered this process again. Not only was this method inefficient and slow, it meant that creating recurring event exceptions (i.e. deleting one instance of a recurring series of events) would require a new database table to store a list of exceptions which would then be used to modify the arrays of events created in step 2 (above). Some users may recall that we experimented with this system of event exceptions in the now deprecated JCal Pro® 1.6.x. In addition, adding new recurring event options like the 'third Saturday of each month' was a daunting task further complicating the mathematics required to accurately populate a calendar view with events

 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:

  1. Determine time frame for calendar view (i.e. month)
  2. Query the events database for records with start or end dates in that time frame
  3. 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:

Last modified on Apr142011
blog comments powered by Disqus

Get the latest updates on our extensions