Sat Mar 10 04:43:43 UTC 2007  gordon@heydon.com.au
  * Add use of the token module for replacable fields
diff -rN -u old-newsite.csf.com.au/sites/all/modules/actions/actions.inc new-newsite.csf.com.au/sites/all/modules/actions/actions.inc
--- old-newsite.csf.com.au/sites/all/modules/actions/actions.inc	2007-03-10 04:54:09.000000000 +0000
+++ new-newsite.csf.com.au/sites/all/modules/actions/actions.inc	2007-03-10 04:54:10.000000000 +0000
@@ -310,26 +310,11 @@
       $from = variable_get('site_mail', ini_get('sendmail_from'));
       $subject = $edit['subject'];
       $message = $edit['message'];
-      if ($edit['recipient'] == t('%author')) {
-        $recipient = $user->mail;
-      } else {
-        $recipient = $edit['recipient'];
-      }
+      $recipient = token_replace($edit['recipient'], 'node', $node, '%', '');
       if (isset($node) && is_object($node)) {
-        $variables = array(
-          '%site_name' => $site_name,
-          '%username' => $user->name,
-          '%uid' => $node->uid,
-          '%node_url' => url('node/' . $node->nid, NULL, NULL, TRUE),
-          '%node_type' => $node->type,
-          '%title' => $node->title,
-          '%teaser' => strip_tags($node->teaser),
-          '%body' => strip_tags($node->body)
-           );
-
-        $subject = strtr($subject, $variables);
+        $subject = token_replace($subject, 'node', $node, '%', '');
         $subject = str_replace(array("\r", "\n"), '', $subject);
-        $message = strtr($message, $variables);
+        $message = token_replace($message, 'node', $node, '%', '');
       }
       if (drupal_mail('action_send_email', $recipient, $subject, $message, "From: $from\nReply-to: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to: $from" )) {
         watchdog('action', t('Sent email to %recipient', array('%recipient' => $recipient)));
@@ -354,7 +339,7 @@
         '#default_value' => $edit['recipient'],
         '#size' => '20',
         '#maxlength' => '254',
-        '#description' => t('The email address to which the message should be sent OR enter %author if you would like to send an e-mail to the original author of the post.', array('%author' => theme('placeholder', t('%author')))),
+        '#description' => t('The email address to which the message should be sent. You may include variables from the Available tokens below'),
       );
       $form['subject'] = array(
         '#type' => 'textfield',
@@ -362,7 +347,7 @@
         '#default_value' => $edit['subject'],
         '#size' => '20',
         '#maxlength' => '254',
-        '#description' => t('The subject of the message.'),
+        '#description' => t('The subject of the message. You may include variables from the Available tokens below'),
       );
       $form['message'] = array(
         '#type' => 'textarea',
@@ -370,23 +355,19 @@
         '#default_value' => $edit['message'],
         '#cols' => '80',
         '#rows' => '20',
-        '#description' => t('The message that should be sent.  You may include the following variables: %site_name, %username, %node_url, %node_type, %title, %teaser, %body'),
+        '#description' => t('The message that should be sent. You may include variables from the Available tokens below'),
+      );
+      $form['tokens_list'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Available Tokens'),
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+        'list' => array(
+          '#value' => theme('token_help', 'node', '%', ''),
+        ),
       );
       return $form;
 
-     // validate the HTML form
-    case 'validate':
-      $errors = array();
-
-      if (!valid_email_address($edit['recipient']) && $edit['recipient'] != t('%author')) {
-        $errors['recipient'] = t('Please enter a valid email address or %author.', array('%author' => theme('placeholder', t('%author'))));
-      }
-      foreach ($errors as $name => $message) {
-        form_set_error($name, $message);
-      }
-
-      return count($errors) == 0;
-
     // process the HTML form to store configuration
     case 'submit':
       $params = array(
@@ -406,22 +387,7 @@
   switch($op) {
     case 'do':
       global $user;
-      $variables = array(
-        '%site_name' => variable_get('site_name', 'drupal'),
-        '%username' => $user->name ? $user->name : variable_get('anonymous', 'Anonymous'),
-      );
-      
-      if (isset($node) && is_object($node)) {
-        $variables += array(
-          '%uid' => $node->uid,
-          '%node_url' => url('node/' . $node->nid, NULL, NULL, TRUE),
-          '%node_type' => $node->type,
-          '%title' => strip_tags($node->title),
-          '%teaser' => strip_tags($node->teaser),
-          '%body' => strip_tags($node->body),
-        );
-      }
-      $edit['message'] = strtr($edit['message'], $variables);
+      $edit['message'] = token_replace($edit['message'], 'node', $node, '%', '');
       drupal_set_message($edit['message']);
       break;
 
@@ -441,7 +407,16 @@
         '#default_value' => isset($edit['message']) ? $edit['message'] : '',
         '#required' => TRUE,
         '#rows' => '8',
-        '#description' => t('The message to be displayed to the current user.  You may include the following variables: %site_name, %username, %node_url, %node_type, %title, %teaser, %body.'),
+        '#description' => t('The message to be displayed to the current user.  You may include variables from the Available tokens below'),
+      );
+      $form['tokens_list'] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Available tokens'),
+        '#collapsible' => TRUE,
+        '#collapsed' => TRUE,
+        'list' => array(
+          '#value' => theme('token_help', 'node', '%', ''),
+        ),
       );
       return $form;
 
diff -rN -u old-newsite.csf.com.au/sites/all/modules/actions/actions.info new-newsite.csf.com.au/sites/all/modules/actions/actions.info
--- old-newsite.csf.com.au/sites/all/modules/actions/actions.info	2007-03-10 04:54:09.000000000 +0000
+++ new-newsite.csf.com.au/sites/all/modules/actions/actions.info	2007-03-10 04:54:10.000000000 +0000
@@ -1,3 +1,4 @@
 ; $Id: actions.info,v 1.1 2006/10/15 21:17:07 jvandyk Exp $
 name = Actions
-description = Provides an API for modules to trigger and respond to Drupal actions.
\ No newline at end of file
+description = Provides an API for modules to trigger and respond to Drupal actions.
+dependencies = token

