You are here

function cck_time_process in CCK Time 6

Process the element before displaying the field.

Build the form element. When creating a form using FAPI #process, note that $element['#value'] is already set.

The $fields array is in $form['#field_info'][$element['#field_name']].

1 string reference to 'cck_time_process'
cck_time_elements in ./cck_time.module
Implementation of hook_elements().

File

./cck_time.module, line 192

Code

function cck_time_process($element, $edit, $form_state, $form) {
  drupal_add_css(drupal_get_path('module', 'cck_time') . '/cck_time.css', 'module', 'screen', FALSE);
  $field = $form['#field_info'][$element['#field_name']];
  $delta = $element['#delta'];
  $required = $delta == 0 && $field['required'] ? $element['#required'] : FALSE;
  $clock = isset($field['format']) && !empty($field['format']) ? (int) $field['format'] : 24;
  $increment = isset($field['increment']) && !empty($field['increment']) ? (int) $field['increment'] : 1;
  if ($increment < 1) {
    $increment = 1;
  }
  switch ($clock) {
    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 ($clock == 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;
  }
  $form = array();
  $element['#type'] = 'fieldset';
  $element['#attributes'] = array(
    'class' => 'cck-time',
  );
  $element['#title'] = t($field['widget']['label']);
  $element['hour'] = array(
    '#type' => 'select',
    '#title' => '',
    '#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' => '',
    '#options' => $minutes,
    '#required' => $required,
    '#default_value' => isset($element['#value']['minute']) ? $element['#value']['minute'] : NULL,
    '#prefix' => '<div class="cck-time-element">',
    '#suffix' => '</div>',
  );
  if ($clock == 12) {
    $element['meridiem'] = array(
      '#type' => 'select',
      '#title' => '',
      '#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>',
    );
  }
  if (isset($element['#value']) && !$form_state['submitted']) {

    //remove this entry from $element or it is going to cause the display

    //of the word 'Array' at the end of the fieldset because it contains

    //$element['#value']['hour'] etc.
    unset($element['#value']);
  }
  return $element;
}