Index: modules/cck/content_views.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/cck/content_views.inc,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 content_views.inc
--- modules/cck/content_views.inc	16 Oct 2006 11:33:41 -0000	1.1.2.5
+++ modules/cck/content_views.inc	2 Nov 2006 22:18:52 -0000
@@ -43,23 +43,30 @@
 
       $columns = $db_info['columns'];
       $main_column = array_shift($columns);
-      $addlfields = array();
-      foreach ($columns as $column => $attributes) {
-        $addlfields[] = $attributes['column'];
-      }
 
       $table['fields'] = array();
       $table['fields'][$main_column['column']] = array(
         'name' => $field_types[$field['type']]['label'] .': '. $field['widget']['label'] .' ('. $field['field_name'] .')',
-        'addlfields' => $addlfields,
-        'sortable' => isset($main_column['sortable']) ? $main_column['sortable'] : FALSE,
         'handler' => 'content_views_field_handler',
         'option' => array('#type' => 'select', '#options' => $formatters),
         'content_db_info' => $db_info,
         'content_field' => $field,
         'content_field_module' => $module,
       );
-      if (isset($main_column['sortable']) && $main_column['sortable']) {
+      if ($field['multiple']) {
+        $table['fields'][$main_column['column']]['notafield'] = TRUE;
+        $table['fields'][$main_column['column']]['sortable'] = FALSE;
+      }
+      else {
+        $addlfields = array();
+        foreach ($columns as $column => $attributes) {
+          $addlfields[] = $attributes['column'];
+        }
+        $table['fields'][$main_column['column']]['addlfields'] = $addlfields;
+        $table['fields'][$main_column['column']]['sortable'] = isset($main_column['sortable']) ? $main_column['sortable'] : FALSE;
+      }
+
+      if ($table['fields'][$main_column['column']]['sortable']) {
         $table['sorts'] = array();
         $table['sorts'][$main_column['column']] = array(
           'name' => $field_types[$field['type']]['label'] .': '. $field['widget']['label'] .' ('. $field['field_name'] .')',
@@ -97,11 +104,28 @@
 function content_views_field_handler($field_info, $field_data, $value, $data) {
   $field = $field_info['content_field'];
   $item = array();
-  foreach ($field_info['content_db_info']['columns'] as $column => $attributes) {
-    $view_column_name = 'node_data_'. $field['field_name'] .'_'. $attributes['column'];
-    $item[$column] = $data->$view_column_name;
+  if ($field['multiple']) {
+    foreach ($field_info['content_db_info']['columns'] as $column => $attributes) {
+      $query_columns[] = "node_data_$field[field_name].$attributes[column] AS $column";
+    }
+    $query = "SELECT ".implode(', ', $query_columns).
+             " FROM {node} node".
+             " LEFT JOIN {node_data_$field[field_name]} node_data_$field[field_name] ON node.vid = node_data_$field[field_name].vid".
+             " WHERE node.nid = ".$data->nid.
+             " ORDER BY node_data_$field[field_name].delta";
+    $result = db_query(db_rewrite_sql($query, 'node'));
+    while ($item = db_fetch_array($result)) {
+      $item_list[] = content_format($field, $item, $field_data['options']);
+    }
+    return (count($item_list) > 1) ? theme_item_list($item_list) : $item_list[0];
+  }
+  else {
+    foreach ($field_info['content_db_info']['columns'] as $column => $attributes) {
+      $view_column_name = 'node_data_'. $field['field_name'] .'_'. $attributes['column'];
+      $item[$column] = $data->$view_column_name;
+    }
+    return content_format($field, $item, $field_data['options']);
   }
-  return content_format($field, $item, $field_data['options']);
 }
 
 /**
