In our calendar, all the research groups with calendars are listed under "Regular seminars" on the top page. The whole dept calendar is listed under "Calendars". Click on all the links to try them out. Colors are used to make the calendars easy to use; like today is colored green. Here is one snap, another snap, yet another. or another.
To enter or change any data, a calendar manager (for one research group) has to login first, with pre-configured login name and password. Ordinary users don't need to login to view the calendars. You can set up different login names to have different permissions (such as, can only work on one given group, not send mail, etc). The calendar system itself has another password to protect its configuration. Once you have logged in, every page will have the action buttons in red color near the bottom, and all calendar entries will have an "Edit" button next to them.
For a group calendar manager to add a new talk to his group, first click on the group name on the top page. Then click on "AddEntry" near the bottom of the group page. In the web form, the research group name and talk heading are already filled out. You can select other groups to cross-post to other groups which may be interested in that talk. Both speaker name and talk room have their own database, so you only need to enter them once. All the other entries needs no explanation. If the time and room you filled in is already taken by another talk, it'll tell you.
Near the bottom of this week and next week's calendar page, there are buttons to preview, print and mail the text version of the calendar to a mailing list.
If anyone is interested in setting this up for their dept, we are be happy to provide the source. Currently it consists of only one perl script file. It requires perl5 with GDBM_File support. Support for generic SQL servers is on the way, when I have more time, that is.
P.S. Short Installation Note: 1. get the source from http://www.math.duke.edu/~yu/mcal/src/mcal . and save it in your cgi-bin directory. Change its owner/permission to make it excutable by the web server. 2. In the same cgi-bin directory, create a subdirectory 'mcal-data' and make it read/writable by the web server. Creating a .htaccess in there to stop people from accessing the data directly. The 'mcal-data' can be moved to other places, but you have to edit the script with the new location. 3. Go to the script url: http://your_web_server/cgi-bin/mcal and configure it. That's about it:)