? views/foo.txt
? views/project_issue.views.inc.d5
cvs diff: Diffing views
Index: views/project_issue.views.inc
===================================================================
RCS file: views/project_issue.views.inc
diff -N views/project_issue.views.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/project_issue.views.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,202 @@
+<?php
+// $Id: project_issue.views.inc,v 1.7 2009/01/07 20:48:27 dww Exp $
+
+/**
+ * @file
+ * Provides support for Views integration.
+ */
+
+/**
+ * Implementation of hook_views_data().
+ */
+function project_issue_views_data() {
+  $data = array();
+
+  $data['project_issues']['table']['group']  = t('Project issue');
+
+  $data['project_issues']['table']['join'] = array(
+    'node' => array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    ),
+    'project_projects' => array(
+      'type' => 'INNER',
+      'left_table' => 'project_projects',
+      'left_field' => 'nid',
+      'field' => 'pid',
+    ),
+    'project_release_nodes' => array(
+      'type' => 'INNER',
+      'left_table' => 'project_release_nodes',
+      'left_field' => 'nid',
+      'field' => 'rid',
+    ),
+  );
+
+  $data['project_issues']['pid'] = array(
+    'title' => t('Project'),
+    'help' => t('The project an issue is tied to.'),
+    'field' => array(
+      'handler' => 'views_handler_field_node',
+      'click sortable' => TRUE,
+    ),
+    // Information for accepting a pid as an argument
+    'argument' => array(
+      'handler' => 'views_handler_argument_node_nid',
+      'name field' => 'title',
+      'numeric' => TRUE,
+      'validate type' => 'nid',
+    ),
+    // Information for accepting a pid as a filter
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'relationship' => array(
+      'base' => 'node',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Project node'),
+    ),
+  );
+
+  $data['project_issues']['category'] = array(
+    'title' => t('Category'),
+    'help' => t("The issue's category (bug, task, feature, etc)."),
+    'field' => array(
+      'handler' => 'project_issue_handler_field_issue_category',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'project_issue_handler_filter_issue_category',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  $data['project_issues']['component'] = array(
+    'title' => t('Component'),
+    'help' => t("The issue's component (the options are controlled per-project)."),
+    'field' => array(
+      'handler' => 'views_handler_field_node',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  $data['project_issues']['priority'] = array(
+    'title' => t('Priority'),
+    'help' => t("The issue's priority (critical, normal, minor)."),
+    'field' => array(
+      'handler' => 'project_issue_handler_field_issue_priority',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+      'help' => t("Sort by the issue's priority."),
+    ),
+    'filter' => array(
+      'handler' => 'project_issue_handler_filter_issue_priority',
+      'help' => t("Filter on each issue's status."),
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+  );
+
+  $data['project_issues']['rid'] = array(
+    'title' => t('Version'),
+    'help' => t('The version associated with the issue (depends on project_release.module).'),
+    'field' => array(
+      'handler' => 'views_handler_field_node',
+      'click sortable' => TRUE,
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_node_nid',
+      'name field' => 'title',
+      'numeric' => TRUE,
+      'validate type' => 'nid',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'relationship' => array(
+      'base' => 'node',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Project release node'),
+    ),
+  );
+
+  $data['project_issues']['assigned'] = array(
+    'title' => t('Assigned'),
+    'help' => t('The user the issue is assigned to.'),
+    'relationship' => array(
+      'base' => 'users',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Assigned user'),
+    ),
+  );
+
+  $data['project_issues']['sid'] = array(
+    'title' => t('Status'),
+    'help' => t('The status of each issue'),
+    'field' => array(
+      'handler' => 'project_issue_handler_field_issue_status',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+      'help' => t("Sort by the issue's status."),
+    ),
+    'filter' => array(
+      'handler' => 'project_issue_handler_filter_issue_status',
+      'help' => t("Filter on each issue's status."),
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+  );
+  return $data;
+}
+
+/**
+ * Implementation of hook_views_handlers().
+ */
+function project_issue_views_handlers() {
+  return array(
+    'info' => array(
+      'path' => drupal_get_path('module', 'project_issue') .'/views/handlers',
+    ),
+    'handlers' => array(
+      'project_issue_handler_field_issue_category' => array(
+        'parent' => 'views_handler_field',
+      ),
+      'project_issue_handler_field_issue_priority' => array(
+        'parent' => 'views_handler_field',
+      ),
+      'project_issue_handler_field_issue_status' => array(
+        'parent' => 'views_handler_field',
+      ),
+      'project_issue_handler_filter_issue_category' => array(
+        'parent' => 'views_handler_filter_in_operator',
+      ),
+      'project_issue_handler_filter_issue_priority' => array(
+        'parent' => 'views_handler_filter_in_operator',
+      ),
+      'project_issue_handler_filter_issue_status' => array(
+        'parent' => 'views_handler_filter_in_operator',
+      ),
+    ),
+  );
+}
+
Index: views/project_issue.views_default.inc
===================================================================
RCS file: views/project_issue.views_default.inc
diff -N views/project_issue.views_default.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/project_issue.views_default.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,671 @@
+<?php
+// $Id$
+
+
+/**
+ * @file
+ * Provides default views on behalf of the project_issue module.
+ */
+
+/**
+ * Implementation of hook_views_default_views().
+ */
+function project_issue_views_default_views() {
+  // ----------------------------------------
+  // Issue queue across all projects
+  // ----------------------------------------
+  $view = new view;
+  $view->name = 'project_issue_all_projects';
+  $view->description = 'Project issues for all projects';
+  $view->tag = 'Project issue';
+  $view->view_php = '';
+  $view->base_table = 'node';
+  $view->is_cacheable = FALSE;
+  $view->api_version = 2;
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+  $handler = $view->new_display('default', 'Defaults', 'default');
+  $handler->override_option('relationships', array(
+    'assigned' => array(
+      'label' => 'Assigned user',
+      'required' => 0,
+      'id' => 'assigned',
+      'table' => 'project_issues',
+      'field' => 'assigned',
+      'relationship' => 'none',
+    ),
+    'rid' => array(
+      'label' => 'Version',
+      'required' => 0,
+      'id' => 'rid',
+      'table' => 'project_issues',
+      'field' => 'rid',
+      'relationship' => 'none',
+    ),
+    'pid' => array(
+      'id' => 'pid',
+      'table' => 'project_issues',
+      'field' => 'pid',
+    ),
+  ));
+  $handler->override_option('fields', array(
+    'title_1' => array(
+      'label' => 'Project',
+      'link_to_node' => 0,
+      'exclude' => 0,
+      'id' => 'title_1',
+      'table' => 'node',
+      'field' => 'title',
+      'relationship' => 'pid',
+    ),
+    'title' => array(
+      'label' => 'Summary',
+      'link_to_node' => 1,
+      'exclude' => 0,
+      'id' => 'title',
+      'table' => 'node',
+      'field' => 'title',
+      'relationship' => 'none',
+    ),
+    'sid' => array(
+      'id' => 'sid',
+      'table' => 'project_issues',
+      'field' => 'sid',
+    ),
+    'priority' => array(
+      'id' => 'priority',
+      'table' => 'project_issues',
+      'field' => 'priority',
+    ),
+    'category' => array(
+      'label' => 'Category',
+      'link_to_node' => 0,
+      'exclude' => 0,
+      'id' => 'category',
+      'table' => 'project_issues',
+      'field' => 'category',
+      'relationship' => 'none',
+    ),
+    'version' => array(
+      'label' => 'Version',
+      'link_to_node' => 0,
+      'exclude' => 0,
+      'id' => 'version',
+      'table' => 'project_release_nodes',
+      'field' => 'version',
+      'relationship' => 'rid',
+    ),
+    'last_comment_timestamp' => array(
+      'label' => 'Last updated',
+      'date_format' => 'time ago',
+      'custom_date_format' => '',
+      'exclude' => 0,
+      'id' => 'last_comment_timestamp',
+      'table' => 'node_comment_statistics',
+      'field' => 'last_comment_timestamp',
+      'relationship' => 'none',
+    ),
+    'name' => array(
+      'label' => 'Assigned to',
+      'link_to_user' => 1,
+      'exclude' => 0,
+      'id' => 'name',
+      'table' => 'users',
+      'field' => 'name',
+      'relationship' => 'assigned',
+    ),
+  ));
+  $handler->override_option('filters', array(
+    'type' => array(
+      'operator' => 'in',
+      'value' => array(
+        'project_issue' => 'project_issue',
+      ),
+      'group' => '0',
+      'exposed' => FALSE,
+      'expose' => array(
+        'operator' => FALSE,
+        'label' => '',
+      ),
+      'id' => 'type',
+      'table' => 'node',
+      'field' => 'type',
+      'relationship' => 'none',
+    ),
+    'status_extra' => array(
+      'operator' => '=',
+      'value' => '',
+      'group' => '0',
+      'exposed' => FALSE,
+      'expose' => array(
+        'operator' => FALSE,
+        'label' => '',
+      ),
+      'id' => 'status_extra',
+      'table' => 'node',
+      'field' => 'status_extra',
+      'relationship' => 'none',
+    ),
+    'title' => array(
+      'operator' => '=',
+      'value' => '',
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'title_op',
+        'identifier' => 'title',
+        'label' => 'Project',
+        'optional' => 1,
+        'remember' => 0,
+      ),
+      'case' => 0,
+      'id' => 'title',
+      'table' => 'node',
+      'field' => 'title',
+      'relationship' => 'pid',
+    ),
+    'category' => array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'category_op',
+        'identifier' => 'category',
+        'label' => 'Category',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'id' => 'category',
+      'table' => 'project_issues',
+      'field' => 'category',
+      'relationship' => 'none',
+    ),
+    'priority' => array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'priority_op',
+        'identifier' => 'priority',
+        'label' => 'Priority',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'id' => 'priority',
+      'table' => 'project_issues',
+      'field' => 'priority',
+      'relationship' => 'none',
+    ),
+    'sid' => array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'sid_op',
+        'identifier' => 'status',
+        'label' => 'Status',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'id' => 'sid',
+      'table' => 'project_issues',
+      'field' => 'sid',
+      'relationship' => 'none',
+    ),
+  ));
+  $handler->override_option('access', array(
+    'type' => 'none',
+  ));
+  $handler->override_option('title', 'Issues for all projects');
+  $handler->override_option('items_per_page', 50);
+  $handler->override_option('use_pager', '1');
+  $handler->override_option('style_plugin', 'table');
+  $handler->override_option('style_options', array(
+    'grouping' => '',
+    'override' => 1,
+    'sticky' => 0,
+    'order' => 'desc',
+    'columns' => array(
+      'title_1' => 'title_1',
+      'title' => 'title',
+      'sid' => 'sid',
+      'priority' => 'priority',
+      'category' => 'category',
+      'name' => 'name',
+      'version' => 'version',
+      'last_comment_timestamp' => 'last_comment_timestamp',
+    ),
+    'info' => array(
+      'title_1' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'title' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'sid' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'priority' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'category' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'name' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'version' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'last_comment_timestamp' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+    ),
+    'default' => 'last_comment_timestamp',
+  ));
+  $handler = $view->new_display('page', 'Page', 'page_1');
+  $handler->override_option('path', 'project/issues');
+  $handler->override_option('menu', array(
+    'type' => 'normal',
+    'title' => 'Issues',
+    'weight' => '0',
+    'name' => 'navigation',
+  ));
+  $handler->override_option('tab_options', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => 0,
+  ));
+  $handler = $view->new_display('feed', 'Feed', 'feed_1');
+  $handler->override_option('sorts', array(
+    'last_comment_timestamp' => array(
+      'order' => 'DESC',
+      'granularity' => 'second',
+      'id' => 'last_comment_timestamp',
+      'table' => 'node_comment_statistics',
+      'field' => 'last_comment_timestamp',
+      'override' => array(
+        'button' => 'Use default',
+      ),
+      'relationship' => 'none',
+    ),
+  ));
+  $handler->override_option('style_plugin', 'rss');
+  $handler->override_option('style_options', array(
+    'mission_description' => FALSE,
+    'description' => '',
+  ));
+  $handler->override_option('row_plugin', 'node_rss');
+  $handler->override_option('path', 'project/issues/rss');
+  $handler->override_option('menu', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => 0,
+    'name' => '',
+  ));
+  $handler->override_option('tab_options', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => 0,
+  ));
+  $handler->override_option('displays', array(
+    'page_1' => 'page_1',
+    'default' => 0,
+  ));
+  $handler->override_option('sitename_title', FALSE);
+
+  $views[$view->name] = $view;
+
+  // ----------------------------------------
+  // Issue queue for a specific project
+  // ----------------------------------------
+  $view = new view;
+  $view->name = 'project_issues_by_project';
+  $view->description = 'Project issues by project';
+  $view->tag = 'Project issue';
+  $view->view_php = '';
+  $view->base_table = 'node';
+  $view->is_cacheable = FALSE;
+  $view->api_version = 2;
+  $view->disabled = FALSE;
+  $handler = $view->new_display('default', 'Defaults', 'default');
+  $handler->override_option('relationships', array(
+    'assigned' => array(
+      'label' => 'Assigned user',
+      'required' => 0,
+      'id' => 'assigned',
+      'table' => 'project_issues',
+      'field' => 'assigned',
+      'relationship' => 'none',
+    ),
+    'rid' => array(
+      'label' => 'Version',
+      'required' => 0,
+      'id' => 'rid',
+      'table' => 'project_issues',
+      'field' => 'rid',
+      'relationship' => 'none',
+    ),
+    'pid' => array(
+      'id' => 'pid',
+      'table' => 'project_issues',
+      'field' => 'pid',
+    ),
+  ));
+  $handler->override_option('fields', array(
+    'title' => array(
+      'label' => 'Summary',
+      'link_to_node' => 1,
+      'exclude' => 0,
+      'id' => 'title',
+      'table' => 'node',
+      'field' => 'title',
+      'relationship' => 'none',
+    ),
+    'sid' => array(
+      'id' => 'sid',
+      'table' => 'project_issues',
+      'field' => 'sid',
+    ),
+    'priority' => array(
+      'id' => 'priority',
+      'table' => 'project_issues',
+      'field' => 'priority',
+    ),
+    'category' => array(
+      'label' => 'Category',
+      'link_to_node' => 0,
+      'exclude' => 0,
+      'id' => 'category',
+      'table' => 'project_issues',
+      'field' => 'category',
+      'relationship' => 'none',
+    ),
+    'version' => array(
+      'label' => 'Version',
+      'link_to_node' => 0,
+      'exclude' => 0,
+      'id' => 'version',
+      'table' => 'project_release_nodes',
+      'field' => 'version',
+      'relationship' => 'rid',
+    ),
+    'last_comment_timestamp' => array(
+      'label' => 'Last updated',
+      'date_format' => 'time ago',
+      'custom_date_format' => '',
+      'exclude' => 0,
+      'id' => 'last_comment_timestamp',
+      'table' => 'node_comment_statistics',
+      'field' => 'last_comment_timestamp',
+      'relationship' => 'none',
+    ),
+    'name' => array(
+      'label' => 'Assigned to',
+      'link_to_user' => 1,
+      'exclude' => 0,
+      'id' => 'name',
+      'table' => 'users',
+      'field' => 'name',
+      'relationship' => 'assigned',
+    ),
+  ));
+  $handler->override_option('arguments', array(
+    'uri' => array(
+      'default_action' => 'not found',
+      'style_plugin' => 'default_summary',
+      'style_options' => array(),
+      'wildcard' => '',
+      'wildcard_substitution' => '',
+      'title' => 'Issues for %1',
+      'default_argument_type' => 'fixed',
+      'default_argument' => '',
+      'validate_type' => 'none',
+      'validate_fail' => 'not found',
+      'glossary' => 0,
+      'limit' => '0',
+      'case' => 'none',
+      'path_case' => 'none',
+      'transform_dash' => 0,
+      'id' => 'uri',
+      'table' => 'project_projects',
+      'field' => 'uri',
+      'relationship' => 'pid',
+      'default_options_div_prefix' => '',
+      'default_argument_user' => 0,
+      'default_argument_fixed' => '',
+      'default_argument_php' => '',
+      'validate_argument_node_type' => array(),
+      'validate_argument_node_access' => 0,
+      'validate_argument_nid_type' => 'nid',
+      'validate_argument_vocabulary' => array(),
+      'validate_argument_type' => 'tid',
+      'validate_argument_project_term_vocabulary' => array(),
+      'validate_argument_project_term_argument_type' => 'tid',
+      'validate_argument_project_term_argument_action_top_without' => 'pass',
+      'validate_argument_project_term_argument_action_top_with' => 'pass',
+      'validate_argument_project_term_argument_action_child' => 'pass',
+      'validate_argument_php' => '',
+    ),
+  ));
+  $handler->override_option('filters', array(
+    'type' => array(
+      'operator' => 'in',
+      'value' => array(
+        'project_issue' => 'project_issue',
+      ),
+      'group' => '0',
+      'exposed' => FALSE,
+      'expose' => array(
+        'operator' => FALSE,
+        'label' => '',
+      ),
+      'id' => 'type',
+      'table' => 'node',
+      'field' => 'type',
+      'relationship' => 'none',
+    ),
+    'status_extra' => array(
+      'operator' => '=',
+      'value' => '',
+      'group' => '0',
+      'exposed' => FALSE,
+      'expose' => array(
+        'operator' => FALSE,
+        'label' => '',
+      ),
+      'id' => 'status_extra',
+      'table' => 'node',
+      'field' => 'status_extra',
+      'relationship' => 'none',
+    ),
+    'category' => array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'category_op',
+        'identifier' => 'category',
+        'label' => 'Category',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'id' => 'category',
+      'table' => 'project_issues',
+      'field' => 'category',
+      'relationship' => 'none',
+    ),
+    'priority' => array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'priority_op',
+        'identifier' => 'priority',
+        'label' => 'Priority',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'id' => 'priority',
+      'table' => 'project_issues',
+      'field' => 'priority',
+      'relationship' => 'none',
+    ),
+    'sid' => array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'sid_op',
+        'identifier' => 'status',
+        'label' => 'Status',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'id' => 'sid',
+      'table' => 'project_issues',
+      'field' => 'sid',
+      'relationship' => 'none',
+    ),
+  ));
+  $handler->override_option('access', array(
+    'type' => 'none',
+  ));
+  $handler->override_option('title', 'Issues by project');
+  $handler->override_option('items_per_page', 50);
+  $handler->override_option('use_pager', '1');
+  $handler->override_option('style_plugin', 'table');
+  $handler->override_option('style_options', array(
+    'grouping' => '',
+    'override' => 1,
+    'sticky' => 0,
+    'order' => 'desc',
+    'columns' => array(
+      'title' => 'title',
+      'sid' => 'sid',
+      'priority' => 'priority',
+      'category' => 'category',
+      'last_comment_timestamp' => 'last_comment_timestamp',
+      'version' => 'version',
+      'name' => 'name',
+    ),
+    'info' => array(
+      'title' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'sid' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'priority' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'category' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'version' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'last_comment_timestamp' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+      'name' => array(
+        'sortable' => 1,
+        'separator' => '',
+      ),
+    ),
+    'default' => 'last_comment_timestamp',
+  ));
+  $handler = $view->new_display('page', 'Page', 'page_1');
+  $handler->override_option('path', 'project/issues/%');
+  $handler->override_option('menu', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => '0',
+    'name' => '',
+  ));
+  $handler->override_option('tab_options', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => 0,
+  ));
+  $handler = $view->new_display('feed', 'Feed', 'feed_1');
+  $handler->override_option('sorts', array(
+    'last_comment_timestamp' => array(
+      'order' => 'DESC',
+      'granularity' => 'second',
+      'id' => 'last_comment_timestamp',
+      'table' => 'node_comment_statistics',
+      'field' => 'last_comment_timestamp',
+      'override' => array(
+        'button' => 'Use default',
+      ),
+      'relationship' => 'none',
+    ),
+  ));
+  $handler->override_option('style_plugin', 'rss');
+  $handler->override_option('style_options', array(
+    'mission_description' => FALSE,
+    'description' => '',
+  ));
+  $handler->override_option('row_plugin', 'node_rss');
+  $handler->override_option('path', 'project/issues/rss/%');
+  $handler->override_option('menu', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => 0,
+    'name' => '',
+  ));
+  $handler->override_option('tab_options', array(
+    'type' => 'none',
+    'title' => '',
+    'weight' => 0,
+  ));
+  $handler->override_option('displays', array(
+    'page_1' => 'page_1',
+    'default' => 0,
+  ));
+  $handler->override_option('sitename_title', FALSE);
+
+  $views[$view->name] = $view;
+
+  return $views;
+}
+
cvs diff: Diffing views/handlers
Index: views/handlers/project_issue_handler_field_issue_category.inc
===================================================================
RCS file: views/handlers/project_issue_handler_field_issue_category.inc
diff -N views/handlers/project_issue_handler_field_issue_category.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/project_issue_handler_field_issue_category.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+
+/**
+ * Field handler to display the current category of an issue.
+ */
+class project_issue_handler_field_issue_category extends views_handler_field {
+  function render($values) {
+    require_once drupal_get_path('module', 'project_issue') .'/issue.inc';
+    return check_plain(project_issue_category($values->{$this->field_alias}));
+  }
+}
+
Index: views/handlers/project_issue_handler_field_issue_priority.inc
===================================================================
RCS file: views/handlers/project_issue_handler_field_issue_priority.inc
diff -N views/handlers/project_issue_handler_field_issue_priority.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/project_issue_handler_field_issue_priority.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+
+/**
+ * Field handler to display the current priority of an issue.
+ */
+class project_issue_handler_field_issue_priority extends views_handler_field {
+  function render($values) {
+    require_once drupal_get_path('module', 'project_issue') .'/issue.inc';
+    return check_plain(project_issue_priority($values->{$this->field_alias}));
+  }
+}
+
Index: views/handlers/project_issue_handler_field_issue_status.inc
===================================================================
RCS file: views/handlers/project_issue_handler_field_issue_status.inc
diff -N views/handlers/project_issue_handler_field_issue_status.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/project_issue_handler_field_issue_status.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+
+/**
+ * Field handler to display the current status of an issue.
+ */
+class project_issue_handler_field_issue_status extends views_handler_field {
+  function render($values) {
+    require_once drupal_get_path('module', 'project_issue') .'/issue.inc';
+    return check_plain(project_issue_state($values->{$this->field_alias}));
+  }
+}
+
Index: views/handlers/project_issue_handler_filter_issue_category.inc
===================================================================
RCS file: views/handlers/project_issue_handler_filter_issue_category.inc
diff -N views/handlers/project_issue_handler_filter_issue_category.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/project_issue_handler_filter_issue_category.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,15 @@
+<?php
+// $Id$
+
+
+/**
+ * Filter issues based on their category.
+ */
+class project_issue_handler_filter_issue_category extends views_handler_filter_in_operator {
+  function get_value_options() {
+    require_once drupal_get_path('module', 'project_issue') .'/issue.inc';
+    // All categories, not plural
+    $this->value_options = project_issue_category(FALSE, FALSE);
+  }
+}
+
Index: views/handlers/project_issue_handler_filter_issue_priority.inc
===================================================================
RCS file: views/handlers/project_issue_handler_filter_issue_priority.inc
diff -N views/handlers/project_issue_handler_filter_issue_priority.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/project_issue_handler_filter_issue_priority.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+
+/**
+ * Filter issues based on their priority.
+ */
+class project_issue_handler_filter_issue_priority extends views_handler_filter_in_operator {
+  function get_value_options() {
+    require_once drupal_get_path('module', 'project_issue') .'/issue.inc';
+    $this->value_options = project_issue_priority();
+  }
+}
+
Index: views/handlers/project_issue_handler_filter_issue_status.inc
===================================================================
RCS file: views/handlers/project_issue_handler_filter_issue_status.inc
diff -N views/handlers/project_issue_handler_filter_issue_status.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/handlers/project_issue_handler_filter_issue_status.inc	15 Jan 2009 04:59:43 -0000
@@ -0,0 +1,14 @@
+<?php
+// $Id$
+
+
+/**
+ * Filter issues based on their status.
+ */
+class project_issue_handler_filter_issue_status extends views_handler_filter_in_operator {
+  function get_value_options() {
+    require_once drupal_get_path('module', 'project_issue') .'/issue.inc';
+    $this->value_options = project_issue_state();
+  }
+}
+
