The Archdiocese of Saint Louis' website has always had a very widely-used and useful prayer request functionality. Anyone in the world can submit a prayer request, and every prayer request is moderated and prayed for by contemplative sisters in the Archdiocese.
The old prayer request form
The website first had an online contact form, and all prayer requests were submitted by email. However, after some time, this got to be quite a burden (hundreds of requests were coming in every day!). The Archdiocese used a Joomla! component, PrayerCenter, to handle the prayer requests for some time, with some custom modifications to speed up the workflow of moderating hundreds (some days, many hundreds!) of prayer requests. PrayerCenter is pretty good, but is not as modular and able to be customized as I would like.
The new prayer request form
The new prayer request form (visible to end users) is highly optimized, and much more user-friendly. It limits the amount of characters in a prayer request, and using jQuery, shows the user how many characters he has remaining. Going completely custom allowed us to also tweak every last detail to our liking, meaning we didn't have confusing PrayerCenter branding here and there.
PrayerCenter was working okay for a while, but every few months, when the number of prayer requests would hit something like 50,000, the request form would lock up (Prayer Center was not built to handle this kind of volume), and the database would have to be reset.
When the Archdiocese decided to rebuild its website in 2009, I had to ensure this prayer request functionality was present (first of all), but I also wanted to improve its usability and optimize the moderation process.
Drupal CCK, Content Types, and Views: Building Blocks
To begin, I set up a "Prayer Request" content type, and set it to have the following fields:
- First Name/Initials (this is the default 'Title' field)
- Prayer Request: This CCK textarea field allows 750 characters, to make sure that prayer requests don't go on too long (our moderators don't have all day, you know!).
- 'Keep Private' on/off checkbox
By default, Prayer Requests are unpublished (this way nobody can see them except for the prayer request moderators.
The new prayer requests page
I then set up a view that does three things:
- Shows a public listing of 'approved' (i.e. "Published") prayer requests. Anybody can view this page here: Prayer Requests
- Shows a listing of all the prayer requests marked Private. A volunteer summarizes all these prayer requests and sends that summary to the contemplative sisters for prayer. After the volunteer reads all the requests (she will check a box next to each one as she reads them), she uses Views Bulk Operations (VBO) to mass-delete them.
- Shows a listing of all the submitted prayer requests that are unpublished (ready for moderation). The moderator can click 'Publish' next to the prayer request, or click in the body of the prayer request to edit it (using AJAX - I used the Editable Fields and the Publish Content modules to enable this functionality).
The Moderation Page
The Private Prayer Requests page
After setting up the views, I simply put everything into a 'Request a Prayer' menu, then put that menu's block on all the various prayer request-related pages.
RSS Feed of Prayers
Using Drupal's Views, it's pretty easy to create RSS/news feeds for whatever you want. We created a feed to go along with the Prayer Requests page, which shows the last 40 prayer requests posted to the website.
Using two of Drupal's most used modules (Views and CCK, which is now built into Drupal 7), we've replicated pretty much the entire core of the PrayerCenter module for Joomla... except this system can handle trillions of prayer requests before we'll even have to think about the size of the database!