I'm trying to create a calendaring system in Bolt so that I can display upcoming events on my site. I'd like to be able to have single events and recurring events (much like Exchange or Calendar), and then display them in sensible views (show the next few upcoming events; show the events for January; show the events next Tuesday; etc).
It looks like I can already do some of this in Bolt; namely, I can select from a table based on dates like I'd like to do ( http://docs.bolt.cm/content-fetching ). There's no easy way to support recurring events in Bolt that I can see, however.
I've found a couple posts that offer ideas on implementing this:
http://stackoverflow.com/questions/5183 ... age-method
I kind of like "C" on the second link -- "occurrences calculated on the fly, and a related table for exceptions", although I'd be OK with any of these approaches if I could get them to work within Bolt.
I have a couple of questions about implementing this. I haven't done a ton of digging into Bolt, but it seems like the approaches outlined above won't work well/at all in Bolt.
However the information in the table is stored (events are duplicated in the database itself, or events in the the recurrence are calculated on the fly) -- there doesn't seem to be a good way to do either of these in Bolt, let alone track exceptions to a given recurrence. The simplest solution may be to use a single large table, but that would require creating potentially multiple new rows in the table when a new event is created, which (as far as I can tell) Bolt does not support. There would also be other problems (When I go to view the list of events in the admin interface, do they all show up as individual events or as a single event? If they are individual, it is a pain to edit/delete each one of them.)
Calculating events on the fly seems more elegant, but supporting exceptions ("delete this specific instance", "this instance starts 30 minutes late") would probably require joining against a separate table and raises other confusing questions (Is an exception to a recurrence another new contenttype? if not, how will Bolt know it goes into another table?)?
What I'd really like is:
1) A single page to edit an event and its recurring properties (one contenttype). It would be nice to have a form similar to Google Calendar's, which is expressive but compact (something like this won't be created by default in Bolt).
2) a way to edit/delete a specific instance of an event (?? Not sure about how this would - maybe a second contenttype would be easiest, with a Relation to an event? I'm thinking I could do this and make it mostly transparent to the user.).
3) A way to fetch all the events in a given time window in the template
This isn't really a feature request, as I am willing to take time to build most/all of this. But, I'm wondering if anyone has any ideas on a suggested approach within Bolt, as I'm not too familiar with Bolt's design beyond what's on the website. Could/should this be done as part of an extension (do the hooks/interfaces for an extension to do something like this exist?), or should this fit into Bolt itself somehow? I believe I could get the important parts (1) and (2) currently, but (3) doesn't seem possible at all (and some changes to Bolt may make the first two things easier or cleaner).
Any ideas? Thanks!