You are here

function cck_time_select_process in CCK Time 7

Process the element before displaying the field.

1 string reference to 'cck_time_select_process'
cck_time_element_info in ./cck_time.module
Implements hook_element_info().

File

./cck_time.module, line 213
Creates a time widget for CCK text fields

Code

function cck_time_select_process($element, &$form_state, $form) {

  // to do: add CSS using #attach.
  drupal_add_css(drupal_get_path('module', 'cck_time') . '/cck_time.css', 'module', 'screen', FALSE);
  $field = field_widget_field($element, $form_state);
  $instance = field_widget_instance($element, $form_state);
  $delta = $element['#delta'];
  $required = $delta == 0 && $instance['required'] ? $element['#required'] : FALSE;
  $format = $field['settings']['format'];
  $increment = $field['settings']['increment'];
  if ($increment < 1) {
    $increment = 1;
  }
  switch ($format) {
    case 12:
      $h_min = 1;
      $h_max = 12;
      break;
    case 24:
    default:
      $h_min = 0;
      $h_max = 23;
      break;
  }

  // hours
  $hours = $required ? array() : array(
    '' => '',
  );
  for ($i = $h_min; $i <= $h_max; $i++) {
    if ($format == 24) {
      $val = $i < 10 ? "0{$i}" : $i;
      $hours[$val] = $val;
    }
    else {
      $hours[$i] = $i;
    }
  }

  // minutes
  $minutes = $required ? array() : array(
    '' => '',
  );
  for ($i = 0; $i <= 59; $i += $increment) {
    $val = $i < 10 ? "0{$i}" : $i;
    $minutes[$val] = $val;
  }
  $element['#type'] = 'fieldset';
  $element['#tree'] = TRUE;
  $element['#attributes'] = array(
    'class' => 'cck-time',
  );
  $element['#title'] = $instance['label'];
  $element['hour'] = array(
    '#type' => 'select',
    '#title' => t('Hour'),
    '#title_display' => 'invisible',
    '#options' => $hours,
    '#required' => $required,
    '#default_value' => isset($element['#value']['hour']) ? $element['#value']['hour'] : NULL,
    '#prefix' => '<div class="cck-time-element">',
    '#suffix' => '</div>',
  );
  $element['minute'] = array(
    '#type' => 'select',
    '#title' => t('Minute'),
    '#title_display' => 'invisible',
    '#options' => $minutes,
    '#required' => $required,
    '#default_value' => isset($element['#value']['minute']) ? $element['#value']['minute'] : NULL,
    '#prefix' => '<div class="cck-time-element">',
    '#suffix' => '</div>',
  );
  if ($format == 12) {
    $element['meridiem'] = array(
      '#type' => 'select',
      '#title' => t('Meridiem'),
      '#title_display' => 'invisible',
      '#options' => array(
        'AM' => 'AM',
        'PM' => 'PM',
      ),
      '#required' => $required,
      '#default_value' => isset($element['#value']['meridiem']) ? $element['#value']['meridiem'] : NULL,
      '#prefix' => '<div class="cck-time-element">',
      '#suffix' => '</div>',
    );
  }
  return $element;
}