Until now the event booking form has only worked for specific instances of an event (a single performance or whatever). Now, the missing first step for event selection is available.

If there is only one instance of one event available to the form (for example, the instance to offer is explicitly given in the form definition, or there is only one performance of the specified event), then the selection step is skipped. However, if an event has multiple performances or more than one event is accessible to the form then the visitor gets to select the instance. Each event is presented separately in a box. Within an event, the dates, times and/or venues/resources) where there is a choice are offered for selection.

For example, consider multiple showings of a Casablanca at the Camford Cinema theatre at 19:30 over four nights. The result is pretty obvious: the event is described and you get to choose which date, like this (Thursday being sold out):

Perhaps less obvious, however, is booking an appointment. Here we’ve defined three doctors – as separate resources (venues) – with appointments at similar dates and times. Here, someone would not necessarily look for a date and time first (though they might): it would also be common for someone to start with which doctor they want to see and maybe then the time, the date being flexible. (Similarly if a show is moving between towns, people are more likely to book primarily by venue rather than date).

Which events to offer

If the form is not told anything about what events to offer, it will show all those available. You can limit what the form offers by:

  • URL parameter, which means the same form can be re-purposed for similar events using a different URL. For example, the form above could offer only appointments with Dr Arbuthnot by appending to the url: ?venue=Dr%20Arbuthnot (%20 means a space in URL-speak).
  • a specific combination of event names, venue names, dates and times, when Event chosen by visitor is selected. Instead of query parameter names in the form definition, put the constraints in the boxes in the form definition, thus:

In either case you can offer more than one, separating the URL parameter or form values with commas.