diff --git a/date_repeat/date_repeat_form.inc b/date_repeat/date_repeat_form.inc index 76023d7..2ae65d4 100644 --- a/date_repeat/date_repeat_form.inc +++ b/date_repeat/date_repeat_form.inc @@ -314,11 +314,13 @@ function _date_repeat_rrule_process($element, &$form_state, $form) { '#tree' => TRUE, ); - $monthly_byday_count = ''; + $monthly_byday_count = array(); $monthly_byday_day = ''; if (isset($rrule['BYDAY']) && !empty($rrule['BYDAY']) && $rrule['FREQ'] === 'MONTHLY') { - $monthly_byday_count = substr($rrule['BYDAY'][0], 0, -2); - $monthly_byday_day = substr($rrule['BYDAY'][0], -2);; + foreach (array_keys($rrule['BYDAY']) as $key) { + $monthly_byday_count[$key] = substr($rrule['BYDAY'][$key], 0, -2); + $monthly_byday_day = substr($rrule['BYDAY'][$key], -2); + } } list($byday_count_title, $byday_day_title) = explode('@byday', t('On the @byday of', array(), array('context' => 'Date repeat'))); @@ -327,7 +329,7 @@ function _date_repeat_rrule_process($element, &$form_state, $form) { '#title' => $byday_count_title, '#default_value' => !empty($monthly_byday_count) ? $monthly_byday_count : '', '#options' => date_order_translated(), - '#multiple' => FALSE, + '#multiple' => TRUE, '#prefix' => '
', '#suffix' => '
', ); @@ -418,11 +420,13 @@ function _date_repeat_rrule_process($element, &$form_state, $form) { '#tree' => TRUE, ); - $yearly_byday_count = ''; + $yearly_byday_count = array(); $yearly_byday_day = ''; if (isset($rrule['BYDAY']) && !empty($rrule['BYDAY']) && $rrule['FREQ'] === 'YEARLY') { - $yearly_byday_count = substr($rrule['BYDAY'][0], 0, -2); - $yearly_byday_day = substr($rrule['BYDAY'][0], -2);; + foreach (array_keys($rrule['BYDAY']) as $key) { + $yearly_byday_count[$key] = substr($rrule['BYDAY'][$key], 0, -2); + $yearly_byday_day = substr($rrule['BYDAY'][$key], -2); + } } list($byday_count_title, $byday_day_title) = explode('@byday', t('On the @byday of', array(), array('context' => 'Date repeat'))); @@ -431,7 +435,7 @@ function _date_repeat_rrule_process($element, &$form_state, $form) { '#title' => $byday_count_title, '#default_value' => !empty($yearly_byday_count) ? $yearly_byday_count : '', '#options' => date_order_translated(), - '#multiple' => FALSE, + '#multiple' => TRUE, '#prefix' => '
', '#suffix' => '
', ); @@ -830,7 +834,11 @@ function date_repeat_merge($form_values, $element) { break; case 'BYDAY_BYMONTH': - $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY'] = $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY_COUNT'] . $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY_DAY']; + $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY'] = array(); + foreach ($form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY_COUNT'] as $count) { + $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY'][] = $count . $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY_DAY']; + } + $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY'] = implode(',', $form_values['monthly']['BYDAY_BYMONTH_child']['BYDAY']); $form_values['monthly'] = array_merge($form_values['monthly'], (array) $form_values['monthly']['BYDAY_BYMONTH_child']); break; } @@ -857,7 +865,11 @@ function date_repeat_merge($form_values, $element) { break; case 'BYDAY_BYMONTH': - $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY'] = $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY_COUNT'] . $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY_DAY']; + $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY'] = array(); + foreach ($form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY_COUNT'] as $count) { + $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY'][] = $count . $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY_DAY']; + } + $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY'] = implode(',', $form_values['yearly']['BYDAY_BYMONTH_child']['BYDAY']); $form_values['yearly'] = array_merge($form_values['yearly'], (array) $form_values['yearly']['BYDAY_BYMONTH_child']); break; } diff --git a/date_repeat_field/date_repeat_field.css b/date_repeat_field/date_repeat_field.css index bb8926c..82ff454 100644 --- a/date_repeat_field/date_repeat_field.css +++ b/date_repeat_field/date_repeat_field.css @@ -44,6 +44,7 @@ .date-clear.bymonthday label, .date-clear.bymonthday select { display: inline; + vertical-align: text-top; } .date-repeat-input.byday-day label,