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.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	20 Dec 2008 08:01:09 -0000
@@ -139,6 +139,51 @@ function signup_views_data() {
       ),
   );
 
+  if (variable_get('signup_form_location', 'node') == 'tab') {
+    $data['signup']['node_signup_form'] = array(
+      'title' => t('Node: Signup user form link'),
+      'field' => array(
+        'handler' => 'signup_handler_field_signup_node_signup_form_link',
+        'help' => t('Link to the page for a user to sign up or view their current signup.'),
+      ),
+    );
+  }
+
+  if (variable_get('signup_display_signup_user_list', 'signup') != 'none') {
+    $data['signup']['node_signup_list'] = array(
+      'title' => t('Node: Signup user list link'),
+      'field' => array(
+        'handler' => 'signup_handler_field_signup_node_signup_list_link',
+        'help' => t('Link to the listing of users signed up to a node.'),
+      ),
+    );
+  }
+
+  $data['signup']['admin_node'] = array(
+    'title' => t('Node: Administer signups link'),
+    'field' => array(
+      'handler' => 'signup_handler_field_signup_node_signup_admin_link',
+      'help' => t('Link to administer signups of a node.'),
+    ),
+  );
+
+  $data['signup']['admin_add_signups'] = array(
+    'title' => t('Node: Administer add signups link'),
+    'field' => array(
+      'handler' => 'signup_handler_field_signup_node_admin_add_signups_link',
+      'help' => t('Link to the administration form to sign up other users to a node.'),
+    ),
+  );
+
+  $data['signup']['signup_broadcast'] = array(
+    'title' => t('Node: Signup broadcast link'),
+    'field' => array(
+      'handler' => 'signup_handler_field_signup_node_signup_broadcast_link',
+      'help' => t('Link to the signup broadcast page for a node.'),
+    ),
+  );
+
+
   // Define base group for signup_log table.
   $data['signup_log']['table']['group'] = t('Signup');
 
@@ -259,6 +304,25 @@ function signup_views_handlers() {
       'signup_handler_argument_signup_user_uid' => array(
         'parent' => 'views_handler_argument_numeric',
       ),
+      'signup_handler_field_signup_node_admin_add_signups_link' => array(
+        'parent' => 'signup_handler_field_signup_node_link',
+      ),
+      'signup_handler_field_signup_node_link' => array(
+        'parent' => 'views_handler_field_node_link',
+      ),
+      'signup_handler_field_signup_node_signup_admin_link' => array(
+        'parent' => 'signup_handler_field_signup_node_link',
+      ),
+      'signup_handler_field_signup_node_signup_broadcast_link' =>  array(
+        'parent' => 'signup_handler_field_signup_node_link',
+      ),
+      'signup_handler_field_signup_node_signup_form_link' => array(
+        'parent' => 'signup_handler_field_signup_node_link',
+      ),
+      'signup_handler_field_signup_node_signup_list_link' => array(
+        'parent' => 'views_handler_field_node_link',
+      ),
+
       'signup_handler_field_signup_send_confirmation' => array(
         'parent' => 'views_handler_field',
       ),
cvs diff: Diffing views/handlers
Index: views/handlers/signup_handler_field_signup_node_admin_add_signups_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_node_admin_add_signups_link.inc
diff -N views/handlers/signup_handler_field_signup_node_admin_add_signups_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_node_admin_add_signups_link.inc	20 Dec 2008 08:01:09 -0000
@@ -0,0 +1,23 @@
+<?php
+// $Id$
+
+/**
+ * Field handler class for link to the form to signup other users to a node.
+ */
+class signup_handler_field_signup_node_admin_add_signups_link extends signup_handler_field_signup_node_link {
+  function get_default_link_text() {
+    return t('signup other users');
+  }
+
+  function get_link_url($nid) {
+    return "node/$nid/signups/add";
+  }
+
+  function check_access($node) {
+    global $user;
+    $admin_all = user_access('administer all signups');
+    $admin_own = user_access('administer signups for own content') && ($node->uid == $user->uid);
+    return ($admin_all || $admin_own);
+  }
+}
+
Index: views/handlers/signup_handler_field_signup_node_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_node_link.inc
diff -N views/handlers/signup_handler_field_signup_node_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_node_link.inc	20 Dec 2008 08:01:09 -0000
@@ -0,0 +1,72 @@
+<?php
+// $Id$
+
+/**
+ * Field handler base class to generate signup-related links to a node.
+ *
+ * This class doesn't work on its own, child classes need to implement some of
+ * the methods for this to actually produce valid links.
+ */
+class signup_handler_field_signup_node_link extends views_handler_field_node_link {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['uid'] = array('table' => 'node', 'field' => 'uid');
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $form['destination'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Set view as return destination'),
+      '#description' => t('After submitting a form on the page this links to, do you want to be redirected back to this view, or stay at the other page?'),
+      '#default_value' => $this->options['destination'],
+    );
+  }
+
+  /**
+   * Default text of the link if not specified.
+   */
+  function get_default_link_text() {
+    return '';
+  }
+
+  /**
+   * The URL for the link.
+   *
+   * @param $nid
+   *   Node ID of the node to generate the link for.
+   */
+  function get_link_url($nid) {
+    return '';
+  }
+
+  /**
+   * Check access for the link to the given node.
+   *
+   * @param $node
+   *   A fake node object that at least holds the nid and uid members.
+   */
+  function check_access($node) {
+    return FALSE;
+  }
+
+  function render($values) {
+    $node = new StdClass();
+    $node->nid = $values->{$this->aliases['nid']};
+    $node->uid = $values->{$this->aliases['uid']};
+    // Ensure the current user can access this link for the given node.
+    if (!$this->check_access($node)) {
+      return;
+    }
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : $this->get_default_link_text();
+    $url = $this->get_link_url($node->nid);
+    $link_options = array();
+    if (!empty($this->options['destination'])) {
+      $link_options['query'] = drupal_get_destination();
+    }
+
+    return l($text, $url, $link_options);
+  }
+}
+
Index: views/handlers/signup_handler_field_signup_node_signup_admin_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_node_signup_admin_link.inc
diff -N views/handlers/signup_handler_field_signup_node_signup_admin_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_node_signup_admin_link.inc	20 Dec 2008 08:01:09 -0000
@@ -0,0 +1,23 @@
+<?php
+// $Id$
+
+/**
+ * Field handler class to generate the signup administration link to a node.
+ */
+class signup_handler_field_signup_node_signup_admin_link extends signup_handler_field_signup_node_link {
+  function get_default_link_text() {
+    return t('administer signups');
+  }
+
+  function get_link_url($nid) {
+    return "node/$nid/signups/admin";
+  }
+
+  function check_access($node) {
+    global $user;
+    $admin_all = user_access('administer all signups');
+    $admin_own = user_access('administer signups for own content') && ($node->uid == $user->uid);
+    return ($admin_all || $admin_own);
+  }
+}
+
Index: views/handlers/signup_handler_field_signup_node_signup_broadcast_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_node_signup_broadcast_link.inc
diff -N views/handlers/signup_handler_field_signup_node_signup_broadcast_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_node_signup_broadcast_link.inc	20 Dec 2008 08:01:09 -0000
@@ -0,0 +1,23 @@
+<?php
+// $Id$
+
+/**
+ * Field handler class to generate the signup broadcast link for a node.
+ */
+class signup_handler_field_signup_node_signup_broadcast_link extends signup_handler_field_signup_node_link {
+  function get_default_link_text() {
+    return t('signup broadcast');
+  }
+
+  function get_link_url($nid) {
+    return "node/$nid/signups/broadcast";
+  }
+
+  function check_access($node) {
+    global $user;
+    $email_all = user_access('email all signed up users');
+    $email_own = user_access('email users signed up for own content') && ($user->uid == $node->uid);
+    return $email_all || $email_own;
+  }
+}
+
Index: views/handlers/signup_handler_field_signup_node_signup_form_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_node_signup_form_link.inc
diff -N views/handlers/signup_handler_field_signup_node_signup_form_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_node_signup_form_link.inc	20 Dec 2008 08:01:09 -0000
@@ -0,0 +1,20 @@
+<?php
+// $Id$
+
+/**
+ * Field handler class to generate the link to a node's signup form tab.
+ */
+class signup_handler_field_signup_node_signup_form_link extends signup_handler_field_signup_node_link {
+  function get_default_link_text() {
+    return t('signup form');
+  }
+
+  function get_link_url($nid) {
+    return "node/$nid/signups/signup";
+  }
+
+  function check_access($node) {
+    return (variable_get('signup_form_location', 'node') == 'tab') && user_access('sign up for content');
+  }
+}
+
Index: views/handlers/signup_handler_field_signup_node_signup_list_link.inc
===================================================================
RCS file: views/handlers/signup_handler_field_signup_node_signup_list_link.inc
diff -N views/handlers/signup_handler_field_signup_node_signup_list_link.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/signup_handler_field_signup_node_signup_list_link.inc	20 Dec 2008 08:01:09 -0000
@@ -0,0 +1,18 @@
+<?php
+// $Id$
+
+/**
+ * Field handler class to generate the link to the signup list on a node.
+ */
+class signup_handler_field_signup_node_signup_list_link extends views_handler_field_node_link {
+  function render($values) {
+    if ((variable_get('signup_display_signup_user_list', 'signup') != 'none') && user_access('view all signups')) {
+      return '';
+    }
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('signup list');
+    $nid = $values->{$this->aliases['nid']};
+    return l($text, "node/$nid/signups/list");
+  }
+}
+
cvs diff: Diffing views/plugins
