Index: content.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck/Attic/content.module,v retrieving revision 1.301.2.118 diff -u -r1.301.2.118 content.module --- content.module 30 Aug 2009 14:16:55 -0000 1.301.2.118 +++ content.module 4 Feb 2010 05:25:33 -0000 @@ -541,6 +541,35 @@ } /** + * Custom multiple value field validator to validate all delta values + * to check if it is required. + * @param array $element + * @param array $form_state + * @return $element + */ +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' => $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.21 diff -u -r1.7.2.21 content.node_form.inc --- includes/content.node_form.inc 18 Jul 2009 00:40:20 -0000 1.7.2.21 +++ includes/content.node_form.inc 4 Feb 2010 05:25:33 -0000 @@ -179,6 +179,9 @@ '#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 +189,7 @@ $defaults = array( '#title' => ($field['multiple'] >= 1) ? '' : $title, '#description' => ($field['multiple'] >= 1) ? '' : $description, - '#required' => $delta == 0 && $field['required'], + '#required' => ($field['multiple'] >= 1) ? FALSE : $field['required'], '#weight' => $delta, '#delta' => $delta, '#columns' => array_keys($field['columns']),