This is the jumping off page for all things related to events, calendar items, and other calendar related content.

see also:

Related Crabgrass Tools

Code to backport

Looks like the bulk of the code to backport is collected here:

Some of that code – especially the date / calendering specific one has been taken from hyperactive. The original code in hyperactive seems to be quite a bit more powerful including repeating events and ical export. It can be found here:

Backporting Calendaring is a sketch of what might be necessary.

Tech notes

A few fields were added to the pages table that was put there only so that we can treat any page like a calendar item. This was needed because page was our only unit of permission resolution.

Things have changed. Now, you can associate page_terms with any object and use page_terms to resolves the permission access restrictions. For example, this is how assets work: you can join on the page_terms table in order to query all the assets you should have access to.

This is all done for you if you do add the column page_terms_id to your table and include PageData in your model. See lib/page_data.rb for more details.

The result is that maybe these columns should be removed from pages and put back in events:

   t.datetime "starts_at"
   t.datetime "ends_at"

Commercial applications

some apps to steal ideas from.

Gantt Chart Style

Project management style calendering
Definition from wikipedia

Example

Open source code for calendaring

Rails/ruby code for calendaring

Use Cases

Public events

A group called THE FANS OF JEAN BUSKIN wants to announce public events (their own as well as those of others that they think are interesting). For each event some group member creates an event page with WHO, WHAT, WHERE, and WHEN. These event pages are aggregated in a beautiful calendar view which is elegantly integrated into the public jump page for the group.
Crabgrass user WILD BILL HAYWOOD who is viewing the calendar sees that: THURS MAY 17, 5 p.m., at Bread & Roses Advocacy, 1009 4th Ave E, Olympia; OLYMPIA IWW REORGANIZING Meeting, where past dues will also be collected. By clicking a conveniently located button, WILD BILL adds this event to his calendar

Recurring group meetings

On the 3rd Thursday of every month, the SEA SHEPARD SOCIETY has a video conference to share the latest developments in animal rights and pirate fashion. But PAUL WATSON always forgets about the meeting, since he gave his planner to a sea turtle. With an easy few clicks, WATSON’S FIRST MATE adds a recurring event to the SEA SHEPARD group calendar and this is automatically added to PAUL and everybody else’s personal calendars. Since WHALE EATING NINJAS are trying to infiltrate these meetings, this confidential information is not publicly visible. BUT PAULs contacts and fellow-group-members can see that he is busy at meeting times, although they cannot see what he is up to (that makes it easy for the sea turtle to find a time when they can hang out.)

Scheduling Shifts

While in some ways standard calendars can be used to staff regular shifts, I think there are specific features important for this use. For example, somebody would first fill out what the empty shifts are for the next few months (likely specifying particular roles, so if the shop is open 3-9 tues-saturday, each shift might have a greeter from 2:30-7, another person from from 3-9, and a closer from 5-9:30). Then volunteers can look at the calendar, see which spots are empty, and sign up.

Two projects I was involved with now use this pretty crappy tool for shift scheduling, but find it really helpful:
one, two