Index: views/signup.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/signup.views.inc,v
retrieving revision 1.4.2.2
diff -u -p -r1.4.2.2 signup.views.inc
--- views/signup.views.inc	19 Dec 2008 01:00:36 -0000	1.4.2.2
+++ views/signup.views.inc	19 Dec 2008 01:38:31 -0000
@@ -139,6 +139,14 @@ function signup_views_data() {
       ),
   );
 
+  $data['signup']['nid'] = array(
+    'title' => t('Node: Manage signups link'),
+    'field' => array(
+      'handler' => 'signup_handler_field_signup_admin_link',
+      'help' => t('Link to manage signups of a node.'),
+    ),
+  );
+
   // Define base group for signup_log table.
   $data['signup_log']['table']['group'] = t('Signup');
 
@@ -259,6 +267,9 @@ function signup_views_handlers() {
       'signup_handler_argument_signup_user_uid' => array(
         'parent' => 'views_handler_argument_numeric',
       ),
+      'signup_handler_field_signup_admin_link' => array(
+        'parent' => 'views_handler_field_node_link',
+      ),
       'signup_handler_field_signup_send_confirmation' => array(
         'parent' => 'views_handler_field',
       ),
Index: views/handlers/signup_handler_field_signup_admin_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_admin_link.inc
diff -N views/handlers/signup_handler_field_signup_admin_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_admin_link.inc	19 Dec 2008 01:38:31 -0000
@@ -0,0 +1,27 @@
+<?php
+// $Id$
+
+/**
+ * Field handler to manage signups of a node.
+ */
+class signup_handler_field_signup_admin_link extends views_handler_field_node_link {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['uid'] = array('table' => 'node', 'field' => 'uid');
+  }
+
+  function render($values) {
+    global $user;
+
+    // Ensure the user can administer signups for this node.
+    $admin_all = user_access('administer all signups');
+    $admin_own = user_access('administer signups for own content') && ($values->{$this->aliases['uid']} == $user->uid);
+    if (!($admin_all || $admin_own)) {
+      return;
+    }
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('manage signups');
+    return l($text, "node/{$values->{$this->aliases['nid']}}/signups", array('query' => drupal_get_destination()));
+  }
+}
+
