Event registration requirements for Church Volunteers use-case: Signup, Webform or others?

Events happening in the community are now at Drupal community events on www.drupal.org.
tborrome's picture

Hi - here are some requirements for a Church volunteer event registration use-case. I posted this previously on the Churches groups...

I'm struggling about what modules to use for event volunteer registration for my church.. I'm down to the signup module http://drupal.org/project/signup and the webform module http://drupal.org/project/webform but I cant get all the functionality we need with just one of them.

Basically, what we need is the ability for a volunteer to browse events from a calendar and sign up for that event to volunteer but there are a few specific requirements that make it a little more complex ...

  1. A volunteer should be able to do multiple registrations - like signing up the kids for an event, or signing up others who don't have user accounts or even email addresses, we have a lot of volunteers who don't even use the computer..

  2. Be able to customize the volunteer registration fields for each event.

  3. Be able to export the registration list to Excel.

  4. Be able to set limits for # of volunteers for an event.

  5. be able to open and close an event manually and automatically (when maximum is reached).

  6. Be able to prevent schedule conflicts ... volunteers shouldn't be able to sign up for 2 events for the same time slot.

  7. Be able to restrict sign ups by age (for example, there are volunteer events only for kids less than 12, events that require age > 18 or events for < 18 )

  8. Be able to have multiple shifts per event ... For example: Event A - Shift 1PM to 2PM, 3PM to 4PM.. and have users sign up for these shifts.

Webform is very nice with customizing registration fields and we can make the webform an event by adding CCK date fields. It also allows multiple registrations and can export the results to delimited formats and Excel. So it addresses 1 to 3 very well but the rest are questionable. Setting limits and auto-closing are possible through a PHP snippet on the webform node but I need to make event admin users who are not PHP programmers create and manage these event web forms, so this is approach is not suitable. Also, having an event admin user open and close the event manually can only be done by unpublishing the node.

Signup is more flexible since it can be assigned for different content types and setting max limits, opening/closing and auto-closing upon reaching limits are all built in functionality. It also has nice features for emailing reminders for signed up events and built in "My Signups" views and blocks. However, it can't handle 2 important requirements - multiple registrations and customizable registration fields... actually you can customize the registration fields in the PHP code in signup.theme as documented, but the customization is site wide.. not per event.

As for preventing schedule conflicts and age-based signups (6 and 7), I still don't have a solution... signup module used to have a signup_conflicts module for drupal 4.7 but that got discontinued. http://drupal.org/node/326110

For multiple shifts per event (8), I've seen volunteer_timeslots module http://drupal.org/project/volunteer_timeslots and it can do something like this but its only for drupal 5 and event nodes.

I think I've hit a dead end. I don't know if we can achieve the requirements with existing modules... Glad there's a new initiative for a unified event registration module in this group. Thanks and looking forward to hear/share some thoughts on this..

Comments

Great discussion here. So

jumoke's picture

Great discussion here. So what did you end up using? I am working on something very similar and have the same issues...

Customizing Signup

developer-x's picture

There is a lot here - so I'm just going to comment on the signup registration customization. Actually, you can add registration fields per-event - not site-wide. However, to do so, you have to write some custom code. What I did was override phptemplate_signup_user_form in my template.php, check the node id for a particular event, then add form elements per the form_api. Here is a snippet:

function phptemplate_signup_user_form($node) {
  global $user;
  $form = array();

  // If this function is providing any extra fields at all, the following
  // line is required for form form to work -- DO NOT EDIT OR REMOVE.
  $form['signup_form_data']['#tree'] = TRUE;

  if ($node->nid == 1248 ) {
    $form['signup_form_data']['Name'] = array();
    $form['signup_form_data']['signup_anon_mail'] = array(
      '#type' => 'textfield',
      '#title' => t('Email'),
      '#name' => 'signup_anon_mail',
      '#tree' => FALSE,
      '#maxlength' => 255,
      '#required' => TRUE,
    );
    $form['signup_form_data']['Street Address'] = array(
      '#type' => 'textfield',
      '#title' => t('Street Address'),
      '#required' => TRUE,
    );
    $form['signup_form_data']['City'] = array(
      '#type' => 'textfield',
      '#title' => t('City'),
      '#required' => TRUE,
    );
    $form['signup_form_data']['Zip'] = array(
      '#type' => 'textfield',
      '#title' => t('Zip'),
      '#required' => TRUE,
    );
  }
}

Hope that helps