--- event.module 2008-12-30 18:54:03.000000000 -0500 +++ event-new.module 2009-03-11 14:12:43.000000000 -0400 @@ -2145,19 +2145,26 @@ function event_form_alter(&$form, $form_ if (variable_get('date_default_timezone_id', 0) === 0) { drupal_set_message(t('Please select the default timezone for your website before creating events.', array('!url' => url('admin/settings/date-time'))), 'error'); } + // for popup, set #type to date_popup, and #default_value to YYYY-MM-DD HH:MM:SS $form['event']['start_exploded'] = array( - '#type' => 'event', + '#type' => module_exists('date_popup') ? 'date_popup' : 'event', '#title' => t('Start date'), - '#default_value' => isset($node->event['start_exploded']) ? $node->event['start_exploded'] : _event_user_time(), + '#default_value' => isset($node->event['start_exploded']) ? + (module_exists('date_popup') ? $node->event['start_exploded']['date'] . " " . $node->event['start_exploded']['time'] + : $node->event['start_exploded'] ) + : (module_exists('date_popup') ? _event_popup_default_timestring(_event_user_time()) : _event_user_time()), '#weight' => -15, ); // This needs to be validated only if has_end_date checked // So we'll do that manually in the form validation function $form['event']['end_exploded'] = array( - '#type' => 'event', + '#type' => module_exists('date_popup') ? 'date_popup' : 'event', '#title' => t('End date'), - '#default_value' => isset($node->event['end_exploded']) ? $node->event['end_exploded'] : _event_user_time(), + '#default_value' => isset($node->event['start_exploded']) ? + (module_exists('date_popup') ? $node->event['end_exploded']['date'] . " " . $node->event['end_exploded']['time'] + : $node->event['end_exploded']) + : (module_exists('date_popup') ? _event_popup_default_timestring(_event_user_time()) : _event_user_time()), '#weight' => -13, '#skip_validate' => TRUE, ); @@ -2219,6 +2226,21 @@ function event_form_alter(&$form, $form_ * Special validate handler for the node form */ function event_form_validate($form, &$form_state) { + // If date_popup in use, set start_exploded and end_exploded month,day,year,hour,minute,second + if (module_exists('date_popup')) { + $start_time_array = event_explode_date($form_state['values']['event']['start_exploded']); + $form_item['#parents'] = array('event', 'start_exploded'); + form_set_value($form_item, $start_time_array , $form_state); + $form['event']['start_exploded']['#value'] = $start_time_array; + + if ($form_state['values']['event']['has_end_date']) { + $form_item['#parents'] = array('event', 'end_exploded'); + $end_time_array = event_explode_date($form_state['values']['event']['end_exploded']); + form_set_value($form_item, $end_time_array , $form_state); + $form['event']['end_exploded']['#value'] = $end_time_array; + } + } + // If an end date is specified, it needs to be validated. if ($form_state['values']['event']['has_end_date']) { $form['event']['end_exploded']['#skip_validate'] = FALSE; @@ -2267,6 +2289,11 @@ function event_pre_render(&$node) { if (!isset($node->event['end_utc'])) { $node->event['end_utc'] = event_date_later($node->event['end_exploded'], -1 * variable_get('date_default_timezone', 0), 'seconds'); } + // if date_popup in use, set the date and time + if (module_exists('date_popup')) { + $node->event['start_exploded'] = _event_popup_date($node->event['start_exploded']); + $node->event['end_exploded'] = _event_popup_date($node->event['end_exploded']); + } } /** @@ -2286,8 +2313,8 @@ function event_nodeapi(&$node, $op, $tea return array('event' => array( 'start' => $object->event_start, 'end' => $object->event_end, - 'start_exploded' => event_explode_date($object->event_start), - 'end_exploded' => event_explode_date($object->event_end), + 'start_exploded' => module_exists('date_popup') ? _event_popup_date(event_explode_date($object->event_start)) : event_explode_date($object->event_start), + 'end_exploded' => module_exists('date_popup') ? _event_popup_date(event_explode_date($object->event_end)) : event_explode_date($object->event_end), 'start_orig' => $object->event_start, 'end_orig' => $object->event_end, 'timezone' => $object->timezone, @@ -3362,3 +3389,35 @@ function event_schema_alter(&$schema) { ); } +/* + * Format event time array as popup time array + * + * @param $time array (month,day,year,hour,minute,second) + * + * @return an array containing the popup time (date, time) +*/ +function _event_popup_date($time) { + $popup_time['date'] = + $time['year'] . "-" . + $time['month'] . "-" . + $time['day'] ; + $popup_time['time'] = + $time['hour'] . ":" . + $time['minute'] . ":" . + $time['second'] ; + return $popup_time; +} + +/* + * Format event time array as string YYYY-MM-DD HH:MM:SS + * + * @param $time array (month,day,year,hour,minute,second) + * + * @return a string + */ +function _event_popup_default_timestring($time){ + return $time['year'] . '-' . $time['month'] . '-' . $time['day'] . + ' ' . $time['hour'] . ':' . $time['minute'] . ':' . $time['second']; +} + +