CFDV.org is the website for the The Chromatography Forum of Delaware Valley. Chromatography is a discipline of chemistry which is used to separate mixtures for analysis. For example, when your aspirin is tested to be 99.7% pure that was determined with chromatography by an analytical chemist. Likewise when your urine is tested to contain marijuana that was also determined by chromatography. Chromatography is a complex science and is used extensively in the pharmaceutical industry- an industry which has a large presence in the Delaware Valley. The Chromatography Forum is an independent organization which educates and unites scientists who are interested in this field.
I got the opportunity to build the CFDV website through my work friendships in chemistry (I was a chromatographer before learning web development). It was my first freelance project and was built in Fall ‘06 prior to my involvement with Drupal. Fortunately I convinced the forum to have me rebuild the site more recently in Drupal 5. In rebuilding the site (which previously had a homemade CMS) in Drupal, there was almost no change visible to the casual visitor but the site’s administration became streamlined and best of all the site’s potential for new functionality is extremely enhanced.
The site makes extensive use of the Date API and does some interesting things with dates and menus. When you click on ‘meetings’ it takes you to the next upcoming meeting and names it by the month it occurs. ‘Previous meetings’ uses the nice integration between date and views modules to give a very specific range and sorting of meeting nodes (the forum uses a September - June year which complicated the problem).
The site also takes reservations and payments by paypal for both meetings and courses. The meeting reservation form is just a fancy cck type. It passes the node id of a meeting as an argument to the node/add/registration page, and uses that to add relevant information and populate the meal choice. Then I used a lot of hook_form_alter and some jquery to further refine the form (it dynamically shows more fieldsets for additional guests in your party). I created a custom action to send the reservation to the CFDV administrator as well as the guest. I used lm_paypal module to integrate the site with paypal and allow the guests the option to pay online after reservation.
The course registration system is more complex than the meeting reservations, so for this I opted to create a custom multistep form using the Drupal Form API instead of relying on cck. If you’ve made it this far in this article you might already know what a hassle it is to make multistep forms in Drupal 5. You finish everything and then the client would like the form to have a back button (which I don’t think is really possible in the current API). The beauty of the course registration form is that its options are automatically created by the existing content of the course nodes on the site. All the courses and their options and prices and early-bird discounts already existed on the site as course nodes and with this wily form and my inherent fear of redundant data I made form magic come alive. (Other than being able to change the text at the top of the form, there is no maintenance required for this form at all.) I did some jquery work on the checkboxes on the form, so that only sensible combinations of box-checking can occur (checkbox wizardry). I also made the completed form save its data into an unpublished node for future reference. Then I hacked lm_paypal so that this new node’s id would be passed to paypal as an item number. Then when payment is completed and the item number is returned by paypal’s IPN, an action is fired to email the site administrator the contents of the saved node. Actually the most interesting thing about this form is that it is actually working! Next time though I might look into Simple Paypal Framework as well as lm_paypal module, to compare features.
It’s nice to work at enhancing this site and see its role with the organization evolve. There is quite a bit more use I can see the organization getting out of this site with future functionalities. Drupal sites can be much more than what you might traditionally think of as a website and also serve as software to automate things you may have been doing manually in your organization. I like the idea that a website is not one more thing an organization has to deal with updating but actually a tool that simplifies their workflow. I think that the custom forms I made for this site do exactly that, and that there is a lot of potential for this site in the future to serve as an online community for this group of scientists.