Booking /reserving 'items' (for one week)

I have a school site (Plone 4) that wants the following:

  1. They have 10 bikes that students can 'book for a week' for free (so booking by week number is probably ok)
  2. The want some 'visual way' of showing that only 5 are left next week if 5 are booked
  3. We probably dont need a waiting list.
  4. If it was possible, the best way to check if the booking is 'real' is to send an email they have to confirm, as all student have a ' mail'
  5. They have not decided 'how long before' one can book a bike, so for now it will be 'next week'
  6. There should be no check in / out of the bikes on the site, meaning if someone does not pick up their bike, students will have to physically go to the 'bike pick up place to see if one is available

PS: The students will not have login on the site.

Any suggestions on how to do this (existing product / content rules /PloneFormGen? )??

create a Bike content type and associate a custom workflow to it: available, booked, broken…

use Plone's resources to fulfill your requirements (workflow transitions, content rules, collections…).

1 Like

I need to 'book it without any manual work', so how do I make it bookable for one week (exactly).
Maybe I could trigger a workflow 'every sunday' (unbook) and another one by clicking on the confirm mail (an URL): book ?

If there isn't a plugin out there that does what you want and decide to build it custom I really don't recommend using DX to try and do it. You are better of using rapido or plomino. Building a mini application inside plone using plone itself generally means you hit against some assumption that works for a content usecase but works against your custom app and then you are in a mess of customising plone to build an app that is nothing to do with plone.

There are a bunch of booking type plugins for plone however. One may fit your needs

For trigger events I use collective.cron.

Your 'reserve' transition could automatically set the booking end date.

Hi Espen,

Maybe this add-on will do the job for you out-of-the-box: Products.PloneBooking 3.1.1 for Plone 5 and 4.3 available

Give each bike an unique id (e.g number 1,2,...10). Add these bikes as bookable objects. Each object can be booked once for a certain time-slot. A time-slot can be 1 hour or 1 week or 1 month or wathever you want. You can use workflow to submit an email to the subscriber when an new time-slot is added, changed or deleted. Only available (non-booked) objects will appear in a pop-up in the calendar to be selected by the user. People need to fill-in name, email, title and phonenumber plus optional a comment field. Of course that can be changed.

We (large internal company ~100.000 empl)oyees use it in Plone to book unique demo centers and its resources. Now in production for over 2 years without any issue.

I got it also working and tested it to run on Plone 5. We have too much add-ons which are not yet ported to Plone 5 and that is why we do not use Plone 5.

You can book directly your bikes in a calendar and see which bikes are booked (like the outlook calendar for meetings). You can decide (configure) that people make a booking to be confirmed by an authorised person or just allow an automatic booking (so no need to give an okay). Users can see in the calender if a booking for the object (a bike) is pending (to be confirmed) as the timeslot is then orange, when the color is green it means that the booking is definitely confirmed so booked/occupied.

Any amount of uniquely bookable objects/resources can be defined whether they are bikes, rooms, beamers or cars... You can group these objects in object types and/or categories if you want and use this as filters.
Example with drop down boxes which appear when defined and they act as filters for the bookable objects:
Select object types: transport vehicles, rooms
Select categories: car, bike, moped (when type transport vehicles was selected in previous filter types)
Select categories: meeting room, diner room, chat room (when type rooms was selected in previous filter types)

Calendar can be shown in day, week and month view and there is also a listing view which includes also an year overview
Calendar can be shown default in month view or week or day (configurablel). The bookable time period can be set for example only bikes can be booked between 7-18:00 hrs.
The booking is even repeatable. For example book this bike with number 5 for a week and repeat that periodically til a certain end date (for example til end of next year every month the first week of the month)

You can export the bookings in CSV format. Clean-up functions are available to delete old entries E.g older than 6 months or 12 months. This is a flexible parameter and function is invoked manually by the administrator.

Hope this helps. PloneFormGen does not help you with the complexities of the date/time handling and to avoid double bookings etc. This is a much safer bet.

1 Like

(sorry for late reply)..

before your answer, I did not get PloneBooking to work, so I did things a bit similar to hverlades suggestion.

Actually, I made a 'Week' content type, with an int for number of bikes and this stores the 'bookers' in a (data grid) list field.
Visually showing how many bikes there are is done with CSS, based on class in the template ( class = booked-len(bookers)
Bookings are confirmed / cancelled by email