### Eclipse Workspace Patch 1.0
#P cck
Index: content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/Attic/content.module,v
retrieving revision 1.301.2.122
diff -u -r1.301.2.122 content.module
--- content.module	25 Aug 2010 18:34:15 -0000	1.301.2.122
+++ content.module	25 Oct 2010 21:36:32 -0000
@@ -541,6 +541,32 @@
 }
 
 /**
+ * Custom multiple value field validator to validate all delta values to check
+ * if all are empty before triggering a #required validation error.
+ */
+function content_multiple_values_validate($element, &$form_state) {
+  $field = content_fields($element['#field_name']);
+  $items = array();
+  if (!empty($form_state['values'][$element['#field_name']])) {
+    $items = $form_state['values'][$element['#field_name']];
+    // If there was an AHAH add more button in this field, don't save it.
+    unset($items[$element['#field_name'] .'_add_more']);
+  }
+  $filtered = array();
+  $function = $field['module'] .'_content_is_empty';
+  foreach ((array) $items as $delta => $item) {
+    if (!$function($item, $field)) {
+      $filtered[] = $item;
+    }
+  }
+  if (empty($filtered)) {
+    $title = empty($element['#title']) ? $field['widget']['label'] : $element['#title'];
+    form_error($element, t('!title is required.', array('!title' => check_plain($title))));
+  }
+  return $element;
+}
+
+/**
  * Modules notify Content module when uninstalled, disabled, etc.
  *
  * @param string $op
Index: includes/content.node_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/Attic/content.node_form.inc,v
retrieving revision 1.7.2.22
diff -u -r1.7.2.22 content.node_form.inc
--- includes/content.node_form.inc	14 Aug 2010 05:17:39 -0000	1.7.2.22
+++ includes/content.node_form.inc	25 Oct 2010 21:36:32 -0000
@@ -173,12 +173,19 @@
   $title = check_plain(t($field['widget']['label']));
   $description = content_filter_xss(t($field['widget']['description']));
 
+  // We use core Drupal validation for #required for singular elements only, and
+  // use a custom validator for multiple elements. This allows use to check any
+  // delta value to fillful the #required validation.
   $form_element = array(
     '#theme' => 'content_multiple_values',
     '#title' => $title,
     '#required' => $field['required'],
     '#description' => $description,
   );
+  if ($field['multiple'] >= 1 && $field['required']) {
+    $form_element['#element_validate'] = array('content_multiple_values_validate');
+  }
+
   $function = $field['widget']['module'] .'_widget';
 
   for ($delta = 0; $delta <= $max; $delta++) {
@@ -186,7 +193,7 @@
       $defaults = array(
         '#title' => ($field['multiple'] >= 1) ? '' : $title,
         '#description' => ($field['multiple'] >= 1) ? '' : $description,
-        '#required' => $delta == 0 && $field['required'],
+        '#required' => $field['#required'] && $field['multiple'] == 0,
         '#weight' => $delta,
         '#delta' => $delta,
         '#columns' => array_keys($field['columns']),
