--- /var/www/drupal-6.14/modules/signup/signup.module	2009-09-19 09:42:58.000000000 +0800
+++ /var/www/demo/sites/all/modules/signup/signup.module	2009-10-09 16:30:05.000000000 +0800
@@ -1085,7 +1085,7 @@
   }
 
   // Invoke hook_signup_cancel().
-  module_invoke_all('signup_cancel', $signup, $node);
+  module_invoke_all('signup', 'signup_cancel', $signup, $node);
 
   // Delete the record from the {signup_log} table.
   db_query('DELETE FROM {signup_log} WHERE sid = %d', $signup->sid);
@@ -1228,7 +1228,7 @@
     $current_time = time();
 
     // Allow other modules to inject data into the user's signup data.
-    $extra = module_invoke_all('signup_sign_up', $node, $account);
+    $extra = module_invoke_all('signup', 'signup_sign_up', $node, $account);
     $signup_info = array();
     if (!empty($signup_form['signup_form_data'])) {
       $signup_info = $signup_form['signup_form_data'];
@@ -1759,3 +1759,60 @@
   }
   return $values;
 }
+
+/**
+ * Implementation of hook_hook_info().
+ */
+function signup_hook_info() {
+  return array(
+    'signup' => array(
+      'signup' => array(
+        'signup_sign_up' => array(
+          'runs when' => t('After signing up a node'),
+        ),
+        'signup_cancel' => array(
+          'runs when' => t('After canceling signup of a node'),
+        ),
+      ),
+    ),
+  );
+}
+
+/**
+* Implementation of hook_trigger_name().
+*/
+function signup_signup ($op, $a1, $a2) {
+  switch ($op) {
+    case 'signup_sign_up':
+      $account = $a2;
+      $aids = _trigger_get_hook_aids('signup', $op);
+      $context = array(
+        'hook' => 'signup',
+        'op' => $op,
+//        'node' => $a1,
+//        'account' => $a2,
+      );
+      actions_do(array_keys($aids), $account, $context);
+    case 'signup_cancel':
+      $account = user_load($a1->uid);
+      $aids = _trigger_get_hook_aids('signup', $op);
+      $context = array(
+        'hook' => 'signup',
+        'op' => $op,
+//        'signup' => $a1,
+//        'node' => $a2,
+      );
+      actions_do(array_keys($aids), $account, $context);
+  }
+}
+
+/**
+ * Implementation of hook_menu_alter().
+ * 
+ * Work around loss of menu local task inheritance in Drupal 6.2.
+ */
+function signup_menu_alter(&$callbacks) {
+  if (module_exists('trigger') & isset($callbacks['admin/build/trigger/signup'])) {
+    $callbacks['admin/build/trigger/signup']['access callback'] = 'trigger_access_check';
+  }
+}
