| Name | Calendar Plugin Improvements |
|---|---|
| Author(s) | None - you can volunteer to contribute |
| Priority | High |
| Progress | No progress |
| Status | Awaiting developer resources |
| Description | Usability improvements to the Calendar Plugin |
Description
Calendaring is an important group activity that we need to support within the wiki. Basically, I want our calendar plugin to be as good and polished and joyful to use as the best of web calendars current out there: Google Calendar, 30Boxes, Backpack calendar. We already have a strong backend, so we need to focus on polish, aesthetics and usablity (particular speed). We need to make increasing use of dynamic HTML and ajax to achieve a desktop-like user experience.
Things I'd like to tackle on Calendar, in priority order:
- BUG: When you click on day view, it goes to selected day -1, instead of the selected day.
- Try to keep the calendar width from jumping around when the ajax stuff happens.
- Change "add event" to happen all in one screen. The "choose a calendar" step should just be a dropdown stuck to the last selected calendar. (You'll need to use Ajax to reload the calendar fields if they change the calendar type.)
- Have an option for 24hr or 12hr time. Use the most concise format for time and date ('6pm') where possible to save space.
- Left align the text in the boxes.
- There will be some additional CSS/HTML improvements – designs to be uploaded.
- Checking/unchecking specific sub-calendars to show/hide their events
- More colour options
- More event details in the week/day views.
- Performance/caching
- FEATURE: Add an event in natural language: ('dinner next tuesday').
- Figure out how to do multi-day view that span the boxes. The rounded corners are nice too.
- FEATURE: Add drag-and-drop moving from day to day. (Scriptaculous or YUI should help with this).
- Add a 'Day View' in the top right corner listing the details of the selected days events, in order.
- FEATURE: Allow calendars to have a specific time-zone set for each one.
- FEATURE: A personal calendar for each user that has a personal space. Put it in a space tab and make it available via a macro.
- FEATURE: A macro that display the personal calendar in a compact format.
- As many bugs as possible.
- FEATURE: Allow iCal users to 'publish' their calendars into Confluence (with or without details) using CalDAV?
- FEATURE: Create a Space Tab that lists all the calendars in a space.
- FEATURE: hCal (microformats) format for calendar items.
References
Hey Jonathan, a few comments from myself and from people who've contacted me about features:
- Not quite sure what you mean by 'selected day -1' instead of the selected day. How is that helpful?
- Fixed calendar width will be tricky. One possibility is to go the Google Calendar route and use the main calendar display area for editing events. Lots more space that way.
- Selecting the calendar on the add event seems reasonable. Probably the best is to Ajax it every time the calendar is changed.
- 24-hour time vs. 12 hour time: this one I think should be a user/server selected option. I've had requests from people for both formats.
- Various formatting stuff - sure, whatever. I'm not a graphic designer. At least I added colours

- Natural language event addition: Sounds fun.
- Multi-day events will also be fun.
- Drag-and-drop should be easier - somewhat. As you say, Scriptaculous or YUI have such features already.
- Calendar-specific timezones: What exactly do you mean by this? As in, all events in a specific calendar will be in the calendar's timezone, or just that each new event will have a calendar-specific default timezone? iCalendar doesn't really have a single specific timezone, and if you restrict it, it will mess up any existing calendars with multiple timezones set.
Guy: I agree - caching would be a good idea.
Other stuff people have asked for:
- Checking/unchecking specific sub-calendars to show/hide their events
- More colour options
- More event details in the week/day views.
We will need the use of iCalendar invitation applicability feature:
- Accept
- Reject
- suggest a new time/date
- Delete / update (send notifications etc.)
We will need to use this as we want to add event directly to the calendar from the event creation page - of course this will somehow need to have an e-mail associated with it...
I've been testing the Confluence calendar at our company and it seems like a good tool. However, there appear to be functionalities present that are not working.
- The link to "add a calendar" seems to superimpose a calendar onto the existing calendar. You can give it a name, chose an identifying color and then when you add an entry, you may select which calendar you want it to be associated with. This is excellent for organizing several different kinds of things onto one calendar. However, for a particular calendar entry, you can not tell which calendar it is associated with; not even by the calendar color. Also, it would be nice to see all entries associated with just one of the calendars. Is it possible to add this or improve on this functionality?
- There appears to be a function which allows one to download an individual calendar. I get an error when I try to execute that. I might be doing something wrong but I don't think so. It would be very nice to be able to have a set of calendars all superimposed and yet allow one of them to be extracted in some way (downloaded).

For yui-ext, I'd highly recommend waiting until 0.4 is stable as it has loads of sexy new drag-drop goodness. In addition, it looks like it will finally be standalone from yahoo's yui library so overall code size will be reduced and everything will be more consistent.
Adaptavist have been playing a lot with yui-ext and there are still some areas that need attention. Particularly, forms can be a bit "longwinded", especially as there isn't currently a decent pattern for data binding.
The calendar would also benefit from a BIG injection of caching! It's sooooo slow at the moment that it's painful to use.