cvs diff: Diffing views
Index: views/project.views.inc
===================================================================
RCS file: /Users/wright/drupal/local_repo/contributions/modules/project/views/project.views.inc,v
retrieving revision 1.5
diff -u -p -r1.5 project.views.inc
--- views/project.views.inc	16 Feb 2009 22:43:15 -0000	1.5
+++ views/project.views.inc	21 Aug 2010 03:39:48 -0000
@@ -360,6 +360,14 @@ function project_views_plugins() {
         'path' => drupal_get_path('module', 'project') .'/views/plugins',
       ),
     ),
+    'argument default' => array(
+      'project_plugin_argument_default_project_type' => array(
+        'title' => t('Project type from URL'),
+        'handler' => 'project_plugin_argument_default_project_type',
+        'path' => $project_path . '/views/plugins',
+        'parent' => 'fixed', // so that the parent class is included
+      ),
+    ),
   );
 }
 
cvs diff: Diffing views/default_views
Index: views/default_views/project_index.view.php
===================================================================
RCS file: views/default_views/project_index.view.php
diff -N views/default_views/project_index.view.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/default_views/project_index.view.php	21 Aug 2010 03:57:42 -0000
@@ -0,0 +1,224 @@
+<?php
+// $Id: project_types.view.php,v 1.1 2009/11/25 16:44:51 dww Exp $
+
+/**
+ * @file
+ * An index of all projects of a certain project type by title.
+ */
+
+$view = new view;
+$view->name = 'project_index';
+$view->description = 'Listing of all projects by title';
+$view->tag = '';
+$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('fields', array(
+  'title' => array(
+    'label' => '',
+    'alter' => array(
+      'alter_text' => 0,
+      'text' => '',
+      'make_link' => 0,
+      'path' => '',
+      'link_class' => '',
+      'alt' => '',
+      'prefix' => '',
+      'suffix' => '',
+      'target' => '',
+      'help' => '',
+      'trim' => 0,
+      'max_length' => '',
+      'word_boundary' => 1,
+      'ellipsis' => 1,
+      'html' => 0,
+      'strip_tags' => 0,
+    ),
+    'empty' => '',
+    'hide_empty' => 0,
+    'empty_zero' => 0,
+    'link_to_node' => 1,
+    'exclude' => 0,
+    'id' => 'title',
+    'table' => 'node',
+    'field' => 'title',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('sorts', array(
+  'title' => array(
+    'order' => 'ASC',
+    'id' => 'title',
+    'table' => 'node',
+    'field' => 'title',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('arguments', array(
+  'tid' => array(
+    'default_action' => 'not found',
+    'style_plugin' => 'default_summary',
+    'style_options' => array(),
+    'wildcard' => 'all',
+    'wildcard_substitution' => 'All',
+    'title' => '%1 index',
+    'breadcrumb' => '',
+    'default_argument_type' => 'fixed',
+    'default_argument' => '',
+    'validate_type' => 'project_type_term',
+    'validate_fail' => 'not found',
+    'break_phrase' => 0,
+    'add_table' => 0,
+    'require_value' => 0,
+    'reduce_duplicates' => 0,
+    'set_breadcrumb' => 0,
+    'id' => 'tid',
+    'table' => 'term_node',
+    'field' => 'tid',
+    'validate_user_argument_type' => 'uid',
+    'validate_user_roles' => array(
+    ),
+    'relationship' => 'none',
+    'default_options_div_prefix' => '',
+    'default_argument_fixed' => '',
+    'default_argument_user' => 0,
+    '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' => 'convert',
+    'validate_argument_transform' => 0,
+    'validate_user_restrict_roles' => 0,
+    'validate_argument_project_term_argument_type' => 'convert',
+    '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' => 'fail',
+    'validate_argument_php' => '',
+  ),
+));
+$handler->override_option('filters', array(
+  'status' => array(
+    'operator' => '=',
+    'value' => '1',
+    'group' => '0',
+    'exposed' => FALSE,
+    'expose' => array(
+      'operator' => FALSE,
+      'label' => '',
+    ),
+    'id' => 'status',
+    'table' => 'node',
+    'field' => 'status',
+    'relationship' => 'none',
+  ),
+  'type' => array(
+    'operator' => 'in',
+    'value' => array(
+      'project_project' => 'project_project',
+    ),
+    'group' => '0',
+    'exposed' => FALSE,
+    'expose' => array(
+      'operator' => FALSE,
+      'label' => '',
+    ),
+    'id' => 'type',
+    'table' => 'node',
+    'field' => 'type',
+    'relationship' => 'none',
+  ),
+));
+$handler->override_option('access', array(
+  'type' => 'none',
+));
+$handler->override_option('cache', array(
+  'type' => 'none',
+));
+$handler->override_option('items_per_page', 0);
+$handler->override_option('distinct', 1);
+$handler->override_option('style_plugin', 'list');
+$handler->override_option('style_options', array(
+  'grouping' => '',
+  'type' => 'ol',
+));
+$handler = $view->new_display('page', 'Page', 'page_1');
+$handler->override_option('path', 'project/%/index');
+$handler->override_option('menu', array(
+  'type' => 'none',
+  'title' => '',
+  'description' => '',
+  'weight' => 0,
+  'name' => 'navigation',
+));
+$handler->override_option('tab_options', array(
+  'type' => 'none',
+  'title' => '',
+  'description' => '',
+  'weight' => 0,
+  'name' => 'navigation',
+));
+$handler = $view->new_display('block', 'Block', 'block_1');
+$handler->override_option('arguments', array(
+  'tid' => array(
+    'default_action' => 'default',
+    'style_plugin' => 'default_summary',
+    'style_options' => array(),
+    'wildcard' => 'all',
+    'wildcard_substitution' => 'All',
+    'title' => '%1 index',
+    'breadcrumb' => '',
+    'default_argument_type' => 'project_plugin_argument_default_project_type',
+    'default_argument' => '',
+    'validate_type' => 'project_type_term',
+    'validate_fail' => 'not found',
+    'break_phrase' => 0,
+    'add_table' => 0,
+    'require_value' => 0,
+    'reduce_duplicates' => 0,
+    'set_breadcrumb' => 0,
+    'id' => 'tid',
+    'table' => 'term_node',
+    'field' => 'tid',
+    'validate_user_argument_type' => 'uid',
+    'validate_user_roles' => array(
+    ),
+    'relationship' => 'none',
+    'default_options_div_prefix' => '',
+    'default_argument_fixed' => '',
+    'default_argument_user' => 0,
+    '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' => 'convert',
+    'validate_argument_transform' => 0,
+    'validate_user_restrict_roles' => 0,
+    'validate_argument_project_term_argument_type' => 'convert',
+    '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' => 'fail',
+    'validate_argument_php' => '',
+    'override' => array(
+      'button' => 'Use default',
+    ),
+  ),
+));
+$handler->override_option('items_per_page', 5);
+$handler->override_option('use_more', 1);
+$handler->override_option('use_more_always', 1);
+$handler->override_option('use_more_text', 'Full index');
+$handler->override_option('style_options', array(
+  'grouping' => '',
+  'type' => 'ul',
+));
+$handler->override_option('block_description', '');
+$handler->override_option('block_caching', -1);
cvs diff: Diffing views/handlers
cvs diff: Diffing views/plugins
Index: views/plugins/project_plugin_argument_default_project_type.inc
===================================================================
RCS file: views/plugins/project_plugin_argument_default_project_type.inc
diff -N views/plugins/project_plugin_argument_default_project_type.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/plugins/project_plugin_argument_default_project_type.inc	21 Aug 2010 03:39:29 -0000
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * Provide a default argument of the currently relevant project type.
+ */
+class project_plugin_argument_default_project_type extends views_plugin_argument_default {
+  function get_argument() {
+    // If we're on one of the project menu items (e.g. for project browsing),
+    // the 2nd element in the URL *should* be the project type.
+    if (arg(0) == 'project') {
+      return arg(1);
+    }
+
+    // If we're viewing a node, see if it's a project node, and if so, figure
+    // out its project type.
+    if (arg(0) == 'node') {
+      $node = node_load(arg(1));
+      if ($node->type == 'project_project') {
+        // Grab only the top-level terms.
+        $tree = taxonomy_get_tree(_project_get_vid(), 0, -1, 1);
+        foreach ($tree as $project_type_term) {
+          if (isset($node->taxonomy[$project_type_term->tid])) {
+            return $project_type_term->name;
+          }
+        }
+      }
+    }
+  }
+}
cvs diff: Diffing views/theme
cvs diff: Diffing release
Index: release/project_release.module
===================================================================
RCS file: /Users/wright/drupal/local_repo/contributions/modules/project/release/project_release.module,v
retrieving revision 1.154
diff -u -p -r1.154 project_release.module
--- release/project_release.module	19 Aug 2010 16:31:17 -0000	1.154
+++ release/project_release.module	21 Aug 2010 01:58:51 -0000
@@ -2168,3 +2168,12 @@ function project_release_preprocess_view
   }
 }
 
+/**
+ * Implement hook_views_default_views_alter().
+ */
+function project_release_views_default_views_alter(&$views) {
+  $path = drupal_get_path('module', 'project_release');
+  require_once("$path/views/project_release.views_default.inc");
+  _project_release_views_default_views_alter($views);
+}
+
cvs diff: Diffing release/includes
cvs diff: Diffing release/translations
cvs diff: Diffing release/views
Index: release/views/project_release.views.inc
===================================================================
RCS file: /Users/wright/drupal/local_repo/contributions/modules/project/release/views/project_release.views.inc,v
retrieving revision 1.14
diff -u -p -r1.14 project_release.views.inc
--- release/views/project_release.views.inc	9 Feb 2010 04:19:29 -0000	1.14
+++ release/views/project_release.views.inc	20 Aug 2010 22:22:47 -0000
@@ -429,6 +429,17 @@ function project_release_views_data() {
       'label' => t('Project node'),
     ),
   );
+  $data['project_release_supported_versions']['tid'] = array(
+    'title' => t('Supported API Compatibility term'),
+    'help' => t('The term ID of a supported API compatibility version.'),
+    'field' => array(
+      'handler' => 'views_handler_field_taxonomy',
+      'click sortable' => FALSE,
+    ),
+    'filter' => array(
+      'handler' => 'project_release_handler_filter_version_api_tid',
+    ),
+  );
   $data['project_release_supported_versions']['supported'] = array(
     'title' => t('Supported'),
     'help' => t('Is the specific branch supported by a given project.'),
Index: release/views/project_release.views_default.inc
===================================================================
RCS file: /Users/wright/drupal/local_repo/contributions/modules/project/release/views/project_release.views_default.inc,v
retrieving revision 1.6
diff -u -p -r1.6 project_release.views_default.inc
--- release/views/project_release.views_default.inc	18 Feb 2010 00:34:26 -0000	1.6
+++ release/views/project_release.views_default.inc	21 Aug 2010 00:09:57 -0000
@@ -25,3 +25,48 @@ function project_release_views_default_v
   return $views;
 }
 
+/**
+ * Implement hook_views_default_views_alter().
+ *
+ * This injects project_release-specific features into views provided
+ * by the project.module.
+ */
+function _project_release_views_default_views_alter(&$views) {
+  if (isset($views['project_index'])) {
+    $views['project_index']->set_display('default');
+    $views['project_index']->display_handler->set_option('relationships', array(
+      'supported_releases_rel' => array(
+        'label' => 'supported versions',
+        'required' => 0,
+        'id' => 'supported_releases_rel',
+        'table' => 'project_projects',
+        'field' => 'supported_releases_rel',
+        'relationship' => 'none',
+      ),
+    ));
+    $filters = $views['project_index']->display_handler->get_option('filters');
+    $filters['tid'] = array(
+      'operator' => 'in',
+      'value' => array(),
+      'group' => '0',
+      'exposed' => TRUE,
+      'expose' => array(
+        'use_operator' => 0,
+        'operator' => 'tid_op',
+        'identifier' => 'api_compatibility',
+        'label' => 'Filter by API compatibility',
+        'optional' => 1,
+        'single' => 1,
+        'remember' => 0,
+        'reduce' => 0,
+      ),
+      'type' => 'select',
+      'id' => 'tid',
+      'table' => 'project_release_supported_versions',
+      'field' => 'tid',
+      'relationship' => 'supported_releases_rel',
+    );
+    $views['project_index']->display_handler->set_option('filters', $filters);
+    $views['project_index']->destroy();
+  }
+}
cvs diff: Diffing release/views/default_views
cvs diff: Diffing release/views/handlers
cvs diff: Diffing release/views/plugins
