A working demo of Bookable Calendar 3.2.

This site runs the contrib module Bookable Calendar (3.2.x-dev) with three demo calendars and the 3.2 reservation workflows set up to try. It is also where we work on the module: three patches, and two tabs of our own on every calendar. A script rebuilds the demo with dates from today, so the times are always this week and next.

  • 3 demo calendars
  • 3 patches to the module
  • 2 tabs of our own

Three calendars, three ways to count a place

Each calendar shows a different booking rule of the module. Each one opens three ways: the module's own page, a FullCalendar week, and a row of start times.

Meeting room

1 booking per hour

Weekdays 9:00 to 17:00 with no 12:00, two weeks ahead, from one hourly Smart Date recurrence rule. Bookings need two days' notice to cancel, and a full hour has a waitlist.

Evening yoga

12 mats, parties of 2

Tuesday and Thursday at 18:00 and Saturday at 9:30, four weeks ahead. Each person takes a mat, so a party of two takes two. Owned by the demo instructor, who manages its reservations.

Bike repair clinic

1 click, 1 open booking

30-minute appointments on Monday, Wednesday and Friday from 10:00 to 12:00. One click books a time, a person can hold one open booking at a time, and rescheduling is switched off.

Four views of the same times

The module ships one page per calendar. We added two tabs beside it, and a schedule across all three calendars.

Calendar page

/bookable-calendar/{id}

The module's own page: upcoming times by day, places left and a Book button, with a pager and date and time-zone pickers. Its rows line up because of the #3629832 patch.

Calendar tab

…/calendar

Our module bookable_fullcalendar: the openings on a FullCalendar week, month or list. Each time says Available, places left, Full or Past, and links to its booking form or the waitlist.

Times tab

…/times

Our module bookable_times: a week at a time, a row of start times under each day, Next available when a week is empty, and the booking form in a dialog.

Schedule

/schedule

Every open time of all three calendars on a Calendar View month or week grid. Full times are left out.

Six workflows to try

The 3.2 branch adds reservation workflows on top of booking, and the demo script sets up each one. Its two accounts have no password: log in with drush @ddev.bookable uli --name=demo-instructor, or --name=demo-customer.

Owner workspace: what does the instructor manage?
Log in as demo-instructor, open My calendars in the account menu, then the yoga calendar's Reservations tab. The meeting room's tab is closed to them: they own the yoga calendar only.
Reschedule or cancel: what may a customer change?
Log in as demo-customer and open My bookings. Tomorrow's meeting-room booking offers only Reschedule, since canceling needs two days' notice; next week's offers both. The clinic offers only Cancel, as rescheduling is off there.
Summary and .ics: what does a booker get?
Every reservation page has Add to calendar (.ics). There are no meeting links: the Google and Microsoft submodules are not enabled.
Availability: how do visitors move through the times?
Open any calendar page. Page sizes of 5, 4 and 8 times give the pager, the date and time-zone pickers and Next available something to do.
History and attendance: what happened at last week's class?
As the instructor, open the yoga Reservations tab. Yoga, last week has a completed, a no-show and a checked-in booking, a booking moved on to the next class, and one canceled by the instructor with a reason.
Waitlist: what happens when the meeting room is full?
Quinn waits for Sam's time, and Avery holds an offer since Jordan canceled. Run drush @ddev.bookable queue:run bookable_calendar_notifications, then open the mail in Mailpit for the claim link. An offer lasts two hours.

What we changed in the module

Three patches on 3.2.x-dev at 4302696 and two modules of our own, kept on this site rather than pushed upstream.


  • Oct 5

    Oct 5

    Demo site installed

    Bookable Calendar 3.2.x-dev on Smart Date and Smart Date Recur, with the script that rebuilds the demo.



  • #3629511

    #3629511

    Hand-made and moved times stay put

    A local patch. Saving an opening deleted the instances it had not generated; now a time made or moved by hand is written into its opening. The merge request was trimmed to the first half; we keep the whole fix.



  • #3629527

    #3629527

    My calendars

    Merge request !57: a link in the account menu to the calendars an owner can manage.



  • #3629832

    #3629832

    One row per time on the calendar page

    Merge request !58: Time and Slots Available line up, and the time zone is named once, in the column label.



  • Oct 9

    Oct 9

    Calendar and Times tabs

    bookable_fullcalendar and bookable_times, two views of a calendar's openings as tabs beside View.



  • Oct 28

    Oct 28

    This page

    Built in Drupal Canvas from the Singularity theme's components, through the same tools an MCP agent uses.


Book a time, then try to break it.

Everything here is sample data. To start again with fresh dates, run drush @ddev.bookable php:script scripts/bookable-demo.php.