Skip to content

UI help needed: Recurring events form usability

January 28, 2009

As a part of the effort of getting a good solid implementation of recurring events into Plone, we need a user interface to enter the date, time and recurring events information. Not only does the current UI of p4a.plonevent lack important recurrence features, the Plone event ui for entering the start and end times of an event is in itself way to primitive. So this is an opportunity for non-coders  to help the Plone community with a development issue.

The start/end day UI should support the following four scenarios, and show different inputs depending on scenario:

  • Events that have only a start time
  • Events that have both a start and an end time on the same day
  • Events that spans one or several days, and
  • All day events that have only date and no time information.

One way to do this is to have checkboxes, like “no duration” to turn off the end-time inputs, and and another for “ends on the same day” (checked by default) and nother for “all-day event”. Or, maybe that should be a list of radio-buttons. “No end time/ends same day/ends another day/all-day event”. I’m not a usability guy, I don’t know which is best. You decide. Maybe there is a third better option.

Also, you should be able to somehow expand the recurrence information for recurring events, for example by checking a “This even recurs” checkbox or something similar. The recurrence features that are needed are

  • Recurrence frequency: daily/weekly/monthly/yearly (no, per hour, minute or seconds are not supported)
  • Recurrence interval: if it’s every day/week/month year or just every Nth
  • The recurrence type: For monthly and yearly recurrences we need to be able to select between some rules for recurrence, for example: should a monthly recurrence always be the 3rd, or always the 1st tuesday. Should the yearly recurrence be always on the specific date, or on the specific day of the year (not the same thing on leap years) or if it should always be on the same offset relative to easter sunday
  • An end-time for the recurrencs or a recurrence count.

Nice things, but completely optional, would be a way to manage recurrence exceptions.

So, make your suggestion, you are wlecome to rip off existing solutions if you want. Design a UI for this that has the above features and is nice and usable. It doesn’t have to be pretty, it’s not a design competion, but a usability competition. We’ll then get somebody to implement a widget that implements your form, and I’ll put it into p4a.plonevent.


From → calendaring, plone, zope

  1. Ricardo Newbery permalink

    I’m sure there are other existing implementations but I sort of like the simplicity of the one that comes with Apple’s iCal.

    Basically, initially it has one visible selection field called “repeat”:

    – None (the default)
    – Every day
    – Every week
    – Every month
    – Every year
    – Custom…

    Select anything other than “None” and another selection field is appended below it called “end” (more about this later).

    Select “Custom…” and you’re presented with a popup window that changes its look depending on the first selection field called “frequency”:

    – Daily
    – Weekly (the default)
    – Monthly
    – Yearly

    Custom > Daily:

    Every ___ day(s)

    Custom > Weekly:

    Every ___ week(s) on: (Sun,Mon,Tue,Wed,Thu,Fri,Sun)

    Custom > Monthly:

    Every ___ month(s)

    O Each (1st – 31st)
    O On the (first, second, third, fourth, last) (Sun,Mon,Tue,Wed,Thu,Fri,Sun)

    Custom > Yearly:

    Each ___ year(s) in: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sept, Oct, Nov, Dec)

    [ ] On the (first, second, third, fourth, last) (Sun,Mon,Tue,Wed,Thu,Fri,Sun)

    After making your custom selections, the appropriate text describing your selection is displayed below the “repeat” field.

    You then can select from the “end” options:

    – Never
    – After
    – On date

    Select “After” or “On date” and a new field shows up next to the field like so:

    After ___ time(s)

    On date _01/28/2009_ (a date selection field)

    Geez… now that I’ve written this all down, it doesn’t seem so “simple” any more… funny how much is hidden under this very compact UI.

    Anyway… you asked. 🙂

  2. You might get some interesting view on this topic on the cultured code Things blog:

  3. Cris permalink

    I have to echo disko there. I read that post a few months back and sent the link to natea as an example that would be well taken by p4a calendar as it moved toward repeating events. Please read it and take a look at what they came up with. It’s lean and powerful (and pretty clear, too)

  4. Ricardo Newbery permalink

    I downloaded and played a little with the todo app mentioned in the link disko posted. I agree the repeat date UI is slightly improved over the iCal version although with a task management focus rather than an event scheduling focus. The implementation was confusing at first until I realized that the app was trying to keep track of two different dates; a creation date and a due date. I can understand the requirement but found the multiple purpose UI a bit clumsy as a result. We probably don’t need this complexity.

    A summary:

    You select a “due date” using a standard calendar popup and/or click on the “Make Repeating…” selection available to the far right of the calendar field.

    Clicking on “Make Repeating…” brings up a popup window similar to the iCal version that changes its look depending on the frequency field, labeled either “Copies are due ___” or “Copies are created ___” depending on whether the “each copy has a due date” field is checked (see below). [We can probably just revert to the simplier iCal frequency selection here]

    Frequency options include:

    – daily
    – weekly
    – monthly
    – yearly

    and a couple more options we don’t need:

    – after completion
    [so to dos are created or due after a previous one is completed]

    – for iCal events
    [to make to dos based on existing iCal events]

    The detail for each frequency window is very similar to the iCal version described previously but includes three extra lines:

    1) A line labeled either “Next” or “Due” depending on whether the “each copy has a due date” field is checked (see below). The only purpose of this field appears just to display the repeating dates, or possibly to adjust the start date of the sequence (it’s a little confusing). [This feels like fluff for our use case]

    2) An “Ends” field similar to the iCal “end” field, just moved inside the popup window itself. [This feels like a slight improvement over the iCal version]

    3) A checkbox at the very bottom labeled “Each copy has a due date”. Checking this box changes the labels on two fields above it (described previously) and adds another entry field next to it: “It is created ___ days before due.” [Of course we don’t need this]

    Other differences from the iCal version:

    1) The weekly, monthly, and yearly form includes a “+” button next to the detail field allowing you to set up multiple repeating events on different schedules. [Probably overkill for our purposes]

    2) The monthly form collapses the two options into one line like so…

    Every ___ months on the (last, 1st – 30th) (day, Sun, Mon, Tue, Wed, Thu, Fri, Sun)

    3) Similarly, the yearly form also collapses the options into one line like so…

    Every ___ years on the (last, 1st – 30th) (day, Sun, Mon, Tue, Wed, Thu, Fri, Sun) in (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sept, Oct, Nov, Dec)

    I like the compactness of 2 and 3 above over the iCal version. But maybe it might confuse people?

    So to summarize, I like some of the “Things” UI slightly better than the iCal version but only for three small changes: moving the “ends” field and collapsing the options for monthly and yearly entries.


  5. Sorry to be a bit late on this thread. Reading Ricardo’s post, and being thus convinced to explore disco’s link, I think we need to keep event management separate from task management. Both can be accommodated by a similar data model, but the UI at the front end should be oriented to event management. If a task management application wants to adapt from it, go for it. But being an iCal user, I can easily see management of repeating events incorporated into a core product for Plone along these lines of improvement. The main improvement in this distinction being an RSVP-like option (replacing the due date option in a “todo” application).

    Some hybrid of the iCal and Things UI, keeping it simple but probably more like iCal, is probably the way to go, at least on the front end. I’m much less sure about how it’s implemented on the back end, i.e., the user reports that are generated (the event_view template, folder_summary_view, Calendar portlet, events portet, collections portlets based on events, etc.), let alone any improvements on recurring events would have on views. It gets complicated very quickly, and should have some effect now about how the date entry UI is designed. I just don’t know how to address this issue, but it should be soon.


  6. To clarify: I’m not looking for recommendations on how to do this. I’m looking for someone to DO this.

  7. Bryan Wilson and I are interested in taking on this challenge and have recently been in contact with Lennart by email. We are planning on tackling the user interface, as well as some of the middleware and backend implications.

  8. tomin permalink

    Is this a competition with prizes included?

    • As there are zero entries, your win is guaranteed (unless it sucks). Your price will be getting to see it implemented.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: