Index: signup.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.module,v
retrieving revision 1.131
diff -u -r1.131 signup.module
--- signup.module	23 May 2008 10:18:32 -0000	1.131
+++ signup.module	23 Jul 2008 22:35:03 -0000
@@ -81,6 +81,9 @@
         '%info' => $signup_info,
         );
       $message = strtr($event->reminder_email, $trans);
+      if (module_exists('token')) {
+        $message = token_replace($message, 'node', node_load($event->nid));
+      }
       drupal_mail('signup_reminder_mail', $mail_address, $subject, $message, $from);
       watchdog('signup', t('Reminder for %event sent to %useremail.', array('%event' => $event->title, '%useremail' => $mail_address)), WATCHDOG_NOTICE, l(t('view'), 'node/'. $event->nid));
     }
@@ -1402,6 +1405,9 @@
     if ($node->signup_send_confirmation && $user_mail) {
       $subject = t('Signup confirmation for event: !event', array('!event' => $node->title));
       $message = strtr($node->signup_confirmation_email, $trans);
+      if (module_exists('token')) {
+        $message = token_replace($message, 'node', node_load($event->nid));
+      }
       drupal_mail('signup_confirmation_mail', $user_mail, $subject, $message, $from);
     }
 
@@ -1706,6 +1712,9 @@
  */
 function _signup_admin_form($node) {
   $signup_token_description = t('Supported string substitutions: %event, %time, %username, %useremail, %info (user signup information).');
+  if (module_exists('token')) {
+    $signup_token_description .= ' ' . t('Additional tokens provided by the token module are available for substitution.');
+  }
 
   // Load the default admin form data for new nodes.
   if (!$node || !$node->signup) {
@@ -1738,6 +1747,21 @@
     '#cols' => 40, '#rows' => 6,
     '#description' => t('Email sent to user upon signup.') .' '. $signup_token_description,
   );
+  
+  if (module_exists('token')) {
+    $tokens_html = _signup_build_token_help();
+    
+    $form['signup_confirmation_token_fieldset'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Tokens available for replacement'),
+      '#collapsible' => true,
+      '#collapsed' => true,
+    );
+    $form['signup_confirmation_token_fieldset']['values'] = array(
+      '#value' => $tokens_html,
+    );
+  }
+  
   // Define a sub-tree to wrap the next 2 form elements together in an
   // inline div for better display.
   $form['signup_reminder'] = array(
@@ -1766,6 +1790,20 @@
     '#cols' => 40, '#rows' => 6,
     '#description' => t('Email sent to user as an event reminder.') .' '. $signup_token_description,
   );
+  
+  if (module_exists('token')) {
+    // $tokens_html should all ready exist from the confirmation component
+    $form['signup_reminder_token_fieldset'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Tokens available for replacement'),
+      '#collapsible' => true,
+      '#collapsed' => true,
+    );
+    $form['signup_reminder_token_fieldset']['values'] = array(
+      '#value' => $tokens_html,
+    );
+  }
+  
   $form['signup_close_signup_limit'] = array(
     '#type' => 'textfield',
     '#title' => t('Signup limit'),
@@ -1869,6 +1907,21 @@
     '#description' => t('Body of the email message you wish to send to all users who have signed up for this @node_type.', array('@node_type' => $node->type)) .' '. $token_text,
     '#rows' => 10,
   );
+  
+  if (module_exists('token')) {
+    $tokens_html = _signup_build_token_help();
+
+    $form['message_tokens_fieldset'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Tokens available for replacement'),
+      '#collapsible' => true,
+      '#collapsed' => true,
+    );
+    $form['message_tokens_fieldset']['values'] = array(
+      '#value' => $tokens_html,
+    );
+  }
+  
   $form['send'] = array(
     '#type' => 'submit',
     '#value' => t('Send'),
@@ -1936,6 +1989,9 @@
       $trans['%time'] = signup_format_date($event);
 
       $message = strtr($form_values['message'], $trans);
+      if (module_exists('token')) {
+        $message = token_replace($message, 'node', node_load($event->nid));
+      }
       drupal_mail('signup_broadcast_mail', $mail_address, $subject, $message, $from);
       watchdog('signup', t('Broadcast email for %event sent to %email.', array('%event' => $event->title, '%email' => $mail_address)), WATCHDOG_NOTICE, l(t('view'), 'node/'. $event->nid));
     }
@@ -1976,3 +2032,38 @@
   require_once(drupal_get_path('module', 'signup') .'/signup_views.inc');
   return _signup_views_default_views();
 }
+
+/**
+ * Private function to generate HTML for showing the available tokens
+ * 
+ * @return The themed representation of the available tokens.
+ */
+function _signup_build_token_help() {
+  $patterns = token_get_list('node');
+  foreach ($patterns as $type => $pattern_set) {
+    foreach ($pattern_set as $pattern => $description) {
+      $tokens[$pattern] = $description;
+    }
+  }
+  
+  return theme('signup_token_help', $tokens);
+}
+
+/**
+ * theme_signup_token_help()
+ *
+ * @param $tokens
+ *   An array of token patterns mapping to their description
+ * 
+ * @return The themed representation of the tokens.
+ */
+function theme_signup_token_help($tokens) {
+  $tokens_html = "<dl>\n";
+  foreach ($tokens as $name => $description) {
+    $tokens_html .= '<dt>'. $name .'</dt>';
+    $tokens_html .= '<dd>'. $description .'</dd>';
+  }
+  $tokens_html .= "</dl>\n";
+  
+  return $tokens_html;
+}
\ No newline at end of file
