### Eclipse Workspace Patch 1.0 #P Date Index: date_repeat/date_repeat_form.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/date/date_repeat/date_repeat_form.inc,v retrieving revision 1.15.4.1 diff -u -r1.15.4.1 date_repeat_form.inc --- date_repeat/date_repeat_form.inc 20 Jun 2008 01:32:43 -0000 1.15.4.1 +++ date_repeat/date_repeat_form.inc 25 Jun 2008 22:51:05 -0000 @@ -56,7 +56,7 @@ $element['#description'] = t('Choose a frequency and period to repeat this date. If nothing is selected, the date will not repeat.'); $element['#collapsible'] = TRUE; $element['#collapsed'] = !empty($element['#repeat_collapsed']) ? $element['#repeat_collapsed'] : 0; - + $element['INTERVAL'] = array( '#type' => 'select', //'#title' => t('Interval'), @@ -105,7 +105,7 @@ if (!empty($merged_values['BYDAY']) || !empty($merged_values['BYMONTH'])) { $collapsed = FALSE; } - // start the advanced fieldset + // start the advanced fieldset $element['advanced'] = array( '#type' => 'fieldset', '#title' => t('Advanced'), @@ -211,11 +211,18 @@ if (is_array($form_values['UNTIL']['datetime']) && array_key_exists('date', $form_values['UNTIL']['datetime'])) { $form_values['UNTIL']['datetime'] = $form_values['UNTIL']['datetime']['date']; + } elseif(is_array($form_values['UNTIL']['datetime']) && !array_key_exists('date', $form_values['UNTIL']['datetime'])) { + // date_api_ical_build_rrule() assumes that the datetime key is a DATE_DATETIME, otherwise it errors + // upon form submission with form validation failure, the datetime key is a DATE_ARRAY, but without the date key + // so convert to DATE_DATETIME for the situation where date_api_ical_build_rrule() is run on it in _date_repeat_rrule_process() + //$form_values['UNTIL']['datetime'] = date_convert($form_values['UNTIL']['datetime'], DATE_ARRAY, DATE_DATETIME); } if (isset($form_values['EXDATE']) && is_array($form_values['EXDATE'])) { foreach ($form_values['EXDATE'] as $delta => $value) { if (is_array($value['datetime']) && array_key_exists('date', $value['datetime'])) { $form_values['EXDATE'][$delta]['datetime'] = $value['datetime']['date']; + } elseif(is_array($value['datetime']) && !array_key_exists('date', $value['datetime']) && isset($value['datetime']['year'])) { + $form_values['EXDATE'][$delta]['datetime'] = date_convert($value['datetime'], DATE_ARRAY, DATE_DATETIME); } } } @@ -228,9 +235,12 @@ function date_repeat_rrule_validate($element, &$form_state) { include_once('./'. drupal_get_path('module', 'date_api') .'/date_api_ical.inc'); $form_values = $form_state['values']; - $field_name = $element['#parents'][0]; - $item = $form_values[$field_name]['rrule']; - $item = date_repeat_merge($item); + if($element['#tree']) { + foreach($element['#parents'] as $v) { + $form_values = $form_values[$v]; + } + } + $item = date_repeat_merge($form_values); $rrule = date_api_ical_build_rrule($item); form_set_value($element, $rrule, $form_state); }