Monday, September 01, 2008

Drupal registration module for KDE summits

As you might have noticed, the registration page of the Akademy 2008 website is in fact a drupal site. The original concept for this was conceived by Niels van Mourik (who does drupal development as a day job) and further developed by Marijn Kruisselbrink and me.

It's a normal drupal installation so every person that registers gets a user account. After the login you are automatically redirected to the first page of the registration module where personal details have to be entered.
Next up is the accommodation and extra options reservation. We've used the extras this year for the social event and day trip which both had a 150 person limit and for inquiring about interest in bike rental. The N810 giveaway was also arranged with the options feature, with a limit of 100.

The 3th tab will summarize the selections made and the payment due to complete the registration. A payment ID is automatically generated to be used in a SEPA (EU bank transfer) form as comment to simplify manual processing of those payments. There is also a direct link to PayPal to make the transfer. Obviously all details were supplied to PayPal using it's API so the payment is only a few clicks away. The PayPal payments are automaticly processed using their Instant Payment Notification system.

Here are some of the most important features of the registration module you won't have noticed as a regular user:
* Registrants page: An overview of all registrations including name, email, payment ID, payment status, balance and a combobox to lock the registration forms. It also has a global lock to close registration and control new account creation.
* Accommodation Page: Here we can adjust the available spaces in the hostels that were arranged by the organization. It's also a convenient overview to check the status.
* Reports: SQL queries and results on the internal database. Output in HTML with adjustable links for each tuple and CSV. It also does parameterized queries.
This is really the most powerful feature and has allowed us to do just about anything we wanted with the information in the database. Some examples of that are the automatic generation of conference invite letters for visa applications and namebadges. This was achieved with TeX classes written by Bart Coppens.
The MAC addresses were downloaded and parsed by bash magic to be used in the pfsense portal that provided access to the internet and gave everyone a static IP lease.

The module was functional for Akademy yet it was missing some important features and needs refactoring:
Refactor:
* Change the name of the module
* Change the names of the database tables according to the event name
* Rename the functions to something generic instead of akademy_*

Absolutely needed features:
* Confirmation emails
* Automatic reminder emails

Workflow design:
* Timeline: phases in the registration to control which fields are possible to be edited by whom and deadlines
** Accommodation booking open -> deadline
** Registration open -> deadline
** During event: only certain fields can be adjusted
* Deletion of incomplete registration at the registration deadline

Optional participant features:
* Optional additional visa form with more privacy sensitive data
* Cancel registration by participant him/herself
* More payment options like Google Checkout

Back office features:
* Better "Accommodation" page
** Show free beds as well
** Adding and removing hostel
* Better "Payments" page and db table with dates, bank transfer numbers, etc.
** Deletion or correction of {payment} tuples after refunding
* Page for adding and editing extra options

Advanced back office features:
* Automatic visa invite generation using LaTeX
* Automatic payment receipt generation with support for company name
* Bank, PayPal, etc fee accounting included in the database tables. Needs to include date received and a summary of the booked accommodation and options
* Drag'n'Drop style room assignments using AJAX
* Option: integrate it into a larger community web 2.0'ish website
* Option: "arrived" field or {arrival} table
* Option: cmdline or GUI program to use at the reception desk for:
** marking arrivals
** print individual badge or all badges
In order for the registration module to be used for upcoming events the refactor and needed features has to be done first. After that, and possibly before the Summit in Gran Canaria, the rest can be implemented. Certainly the advanced back office features will be very much needed for a +500 people event.

This modules should not be used by KDE only though. In fact I plan to use it for a conference on our campus early next year (yeah, another one).

If you have PHP, drupal or HTML skills, just want to suggest something or want to help with testing, please join #kde-www or send a mail to kde-www@kde.org

1 comment:

Anonymous said...
This comment has been removed by a blog administrator.