Index: composite.module
===================================================================
--- composite.module	(revision 275)
+++ composite.module	(working copy)
@@ -42,12 +42,12 @@
 }
 
 // Helper function: Filter out properties, fill in 'info' field
-function _composite_references_preprocess($original, $zones) {
+function _composite_references_preprocess($original, $zones, $node) {
   // Build a list of references, also generating labels in the process
   $references = array();
   foreach (element_children($original) as $id) {
     $reference = $original[$id];
-    composite_invoke_referenceapi($reference, 'info');
+    composite_invoke_referenceapi($reference, 'info', $node);
     $references[$id] = $reference;
   }
 
Index: composite.pages.inc
===================================================================
--- composite.pages.inc	(revision 275)
+++ composite.pages.inc	(working copy)
@@ -166,7 +166,7 @@
   $form['vid'] = array('#type' => 'value', '#value' => $node->vid);
 
   // Composite references
-  $references = _composite_references_preprocess($node->composite_references, $layout_zones);
+  $references = _composite_references_preprocess($node->composite_references, $layout_zones, $node);
   _composite_compare('reset-zones', $layout_zones);
   usort($references, '_composite_compare');
 
Index: modules/content/composite_cck.module
===================================================================
--- modules/content/composite_cck.module	(revision 275)
+++ modules/content/composite_cck.module	(working copy)
@@ -71,21 +71,39 @@
   // Special: If this content type has a body, add it as a field
   $node_content_type = node_get_types('type', $node);
   if ($node_content_type->has_body) {
-    $options['body'] = t('Node: Body'); // array('@label' => check_plain($node_content_type->body_label)));
+    $element['value'] = $node->body;
+    $preview = _composite_cck_preview_element($element);
+    if (!empty($preview)) {
+      $options ['body'] = t('<em>!preview</em><br />Node: Body', array('!preview' => $preview)); // array('@label' => check_plain($node_content_type->body_label)));
+    }
+    else {
+      $options['body'] = t('Node: Body'); // array('@label' => check_plain($node_content_type->body_label)));
+    }
   }
   
-  // Get a list of available fields
+  // Get a list of individual field values for multi valued fields or single fields
   foreach ($fields as $field => $field_info) {
-    $options[$field] = t('Field: @label', array('@label' => $field_info['widget']['label']));
-  }
-
-  // Get a list of individual field values for multi valued fields
-  foreach ($fields as $field => $field_info) {
+    $item = $node->$field;
     if ($field_info['multiple']) {
       foreach ($node->$field as $delta => $field_value) {
-        $options[$field . '-' . $delta] = t('Field value: @label @delta', array('@label' => $field_info['widget']['label'], '@delta' => "[$delta]"));
+        $preview = _composite_cck_preview_element($item[$delta]);
+        if (!empty($preview)) {
+          $options[$field . '-' . $delta] = t('<em>!preview</em><br />Field value: @label @delta', array('@label' => $field_info['widget']['label'], '@delta' => "[$delta]", '!preview' => $preview));
+        }
+        else {
+          $options[$field . '-' . $delta] = t('Field value: @label @delta', array('@label' => $field_info['widget']['label'], '@delta' => "[$delta]"));
+        }
       }
     }
+    else {
+      $preview = _composite_cck_preview_element($item[0]);
+      if (!empty($preview)) {
+        $options[$field] = t('<em>!preview</em><br />Field: @label', array('@label' => $field_info['widget']['label'], '!preview' => $preview));
+      }
+      else {
+        $options[$field] = t('Field: @label', array('@label' => $field_info['widget']['label']));
+      }
+    }
   }
   
   return $options;
@@ -99,7 +117,14 @@
   switch ($op) {
     // Generate and insert an informative human-readable string into ['info']
     case 'info':
-      $reference['info'] = t('Node: Body'); // array('@label' => check_plain($node_content_type->body_label)));
+      $element['value'] = $node->body;
+      $preview = _composite_cck_preview_element($element);
+      if (!empty($preview)) {
+        $reference['info'] = t('<em>!preview</em><br />Node: Body', array('!preview' => $preview)); // array('@label' => check_plain($node_content_type->body_label)));
+      }
+      else {
+        $reference['info'] = t('Node: Body'); // array('@label' => check_plain($node_content_type->body_label)));
+      }
       break;
 
     // Return a rendering of the reference item
@@ -127,7 +152,14 @@
     // Generate and insert an informative human-readable string into ['info']
     case 'info':
       $field = content_fields($reference['parent_field']);
-      $reference['info'] = t('Field value: @label @delta', array('@label' => $field['widget']['label'], '@delta' => '['. $reference['delta'] .']'));
+      $item = $node->$reference['parent_field'];
+      $preview = _composite_cck_preview_element($item[$reference['delta']]);
+      if (empty($preview)) {
+        $reference['info'] = t('Field value: @label @delta', array('@label' => $field['widget']['label'], '@delta' => '['. $reference['delta'] .']'));
+      }
+      else {
+        $reference['info'] = t('<em>!preview</em><br />Field value: @label @delta', array('@label' => $field['widget']['label'], '@delta' => '['. $reference['delta'] .']', '!preview' => $preview));
+      }
       break;
 
     // Return a rendering of the reference item
@@ -179,3 +211,34 @@
   
   return $formatter_options;
 }
+
+/**
+ * Take a cck element and return a preview string for use when sorting.
+ *
+ * @param $element
+ * The raw cck element, taken from node_load().
+ * @return
+ * A human-readable and sanitized preview string.
+ */
+function _composite_cck_preview_element($element) {
+  if (isset($element['value'])) {
+    if (strlen($element['value']) < 40 || is_int($element['value'])) {
+      return check_plain($element['value']);
+    }
+    else {
+     return check_plain(substr($element['value'], 0, 40)) .'...';
+    }
+  }
+  else if (isset($element['nid'])) {
+    $data = db_fetch_object(db_query("SELECT nid, title FROM {node} WHERE nid = %d", $element['nid']));
+    if (!empty($data->nid)) {
+      return l($data->title, "node/$data->nid");
+    }
+  }
+  else if (isset($element['uid'])) {
+    $data = db_fetch_object(db_query("SELECT uid, name FROM {users} WHERE uid = %d", $element['uid']));
+    if (!empty($data->uid)) {
+      return l($data->name, "user/$data->uid");
+    }
+  }
+}
