### Eclipse Workspace Patch 1.0
#P CCK 6.x
Index: includes/views/content.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/views/Attic/content.views.inc,v
retrieving revision 1.1.2.19
diff -u -r1.1.2.19 content.views.inc
--- includes/views/content.views.inc	4 Dec 2008 00:40:40 -0000	1.1.2.19
+++ includes/views/content.views.inc	9 Dec 2008 23:33:56 -0000
@@ -182,11 +182,26 @@
       'field' => 'vid',
     );
 
+    // Build the list of columns enabled for default views integration.
+    $db_columns = array();
+    foreach ($db_info['columns'] as $column => $attributes) {
+      if (!empty($attributes['views'])) {
+        $db_columns[$column] = $attributes;
+      }
+    }
+    // Pick up the first column when none has been explicitly enabled
+    // (pre CCK 2.2 backwards compatibility).
+    if (empty($db_columns)) {
+      $db_columns = array_slice($db_info['columns'], 0, 1, TRUE);
+    }
+
     $columns = array();
+    $db_fields = array();
     $arguments = array();
     $filters = array();
-    foreach ($db_info['columns'] as $column => $attributes) {
-      $columns[] = $attributes['column'];
+    foreach ($db_columns as $column => $attributes) {
+      $columns[] = $column;
+      $db_fields[] = $attributes['column'];
       $sorts[] = !empty($attributes['sortable']) ? TRUE : FALSE;
 
       // Identify likely filters and arguments for each column based on field type.
@@ -216,51 +231,68 @@
     }
 
     // Ensure all columns are retrieved,
-    $additional_fields = drupal_map_assoc($columns);
+    $additional_fields = drupal_map_assoc($db_fields);
 
-    $data[$columns[0]] = array(
-      'group' => t('Content'),
-      'title' => t('@label - (!name)', array('@label' => t($field['widget']['label']), '!name' => $field['field_name'])),
-      'title short' => check_plain(t($field['widget']['label'])),
-      'help' =>  t($field_types[$field['type']]['label']) .' - '. t('Appears in: @types', array('@types' => implode(', ', $types))),
-      'field' => array(
-        'field' => $columns[0],
-        'table' => $db_info['table'],
-        'handler' => 'content_handler_field_multiple',
-        'click sortable' => $sorts[0],
-        'additional fields' => $additional_fields,
-        'content_field_name' => $field['field_name'],
-        // Access control modules should implement content_views_access_callback().
-        'access callback' => 'content_views_access_callback',
-        'access arguments' => array($field),
-      ),
-      'argument' => array(
-        'field' => $columns[0],
+    // Provide automatic filters, sorts, and arguments for each column, not just the first.
+    $db_fields_count = count($db_fields);
+    foreach ($db_fields as $i => $db_field) {
+      $label_truncated = truncate_utf8(t($field['widget']['label']), 10, TRUE);
+      if ($db_fields_count == 1) {
+        $title = t('@label (!name)', array('@label' => t($field['widget']['label']), '!name' => $field['field_name']));
+        $title_short = check_plain($label_truncated);
+      }
+      else {
+        $title = t('@label (!name) - !column', array('@label' => t($field['widget']['label']), '!name' => $field['field_name'], '!column' => $columns[$i]));
+        $title_short = t('@label-truncated - !column', array('@label-truncated' => $label_truncated, '!column' => $columns[$i]));
+      }
+
+      $data[$db_field] = array(
+        'group' => t('Content'),
+        'title' => $title,
+        'title short' => $title_short,
+        'help' =>  t($field_types[$field['type']]['label']) .' - '. t('Appears in: @types', array('@types' => implode(', ', $types))),
+      );
+      if ($i == 0) {
+        $data[$db_field]['field'] = array(
+          'title' => t('@label (!name)', array('@label' => t($field['widget']['label']), '!name' => $field['field_name'])),
+          'title short' => check_plain($label_truncated),
+          'field' => $db_field,
+          'table' => $db_info['table'],
+          'handler' => 'content_handler_field_multiple',
+          'click sortable' => $sorts[$i],
+          'additional fields' => $additional_fields,
+          'content_field_name' => $field['field_name'],
+          // Access control modules should implement content_views_access_callback().
+          'access callback' => 'content_views_access_callback',
+          'access arguments' => array($field),
+        );
+      }
+      $data[$db_field]['argument'] = array(
+        'field' => $db_field,
         'table' => $db_info['table'],
-        'handler' => $arguments[0],
+        'handler' => $arguments[$i],
         'additional fields' => $additional_fields,
         'content_field_name' => $field['field_name'],
         'empty field name' => t('<No value>'),
-      ),
-      'filter' => array(
-        'field' => $columns[0],
+      );
+      $data[$db_field]['filter'] = array(
+        'field' => $db_field,
         'table' => $db_info['table'],
-        'handler' => $filters[0],
+        'handler' => $filters[$i],
         'additional fields' => $additional_fields,
         'content_field_name' => $field['field_name'],
         'allow empty' => TRUE,
-      ),
-    );
-    if (!empty($sorts[0])) {
-      $data[$columns[0]]['sort'] = array(
-        'field' => $columns[0],
-        'table' => $db_info['table'],
-        'handler' => 'content_handler_sort',
-        'additional fields' => $additional_fields,
-        'content_field_name' => $field['field_name'],
       );
+      if (!empty($sorts[$i])) {
+        $data[$db_field]['sort'] = array(
+          'field' => $db_field,
+          'table' => $db_info['table'],
+          'handler' => 'content_handler_sort',
+          'additional fields' => $additional_fields,
+          'content_field_name' => $field['field_name'],
+        );
+      }
     }
-    // TODO: provide automatic filters, sorts, and arguments for each column, not just the first?
     return array($table_alias => $data);
   }
 }
