cvs diff: Diffing views
Index: views/signup.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/signup.views.inc,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 signup.views.inc
--- views/signup.views.inc	22 Nov 2008 00:47:24 -0000	1.4
+++ views/signup.views.inc	18 Dec 2008 16:32:38 -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');
 
@@ -253,6 +261,9 @@ function signup_views_handlers() {
       'signup_handler_field_signup_user_form_data' => array(
         'parent' => 'views_handler_field_prerender_list',
       ),
+      'signup_handler_field_signup_admin_link' => array(
+        'parent' => 'views_handler_field_node_link',
+      ),
       'signup_handler_filter_boolean' => array(
         'parent' => 'views_handler_filter_boolean_operator',
       ),
cvs diff: Diffing views/handlers
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	18 Dec 2008 16:32:38 -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()));
+  }
+}
+
cvs diff: Diffing views/plugins
