You are here

function cck_time_widget in CCK Time 6

Same name and namespace in other branches
  1. 5 cck_time.module \cck_time_widget()

Implementation of hook_widget().

File

./cck_time.module, line 132

Code

function cck_time_widget(&$form, &$form_state, $field, $items, $delta = 0) {
  $element = array(
    '#type' => $field['widget']['type'],
    '#default_value' => '',
  );

  //deal with default values when editing a form
  if (isset($items[$delta]['value'])) {

    //value comes from a previously stored node with this cck field;

    //divide the single string value from the database into its drop-down boxes on the form
    list($hour, $minute) = split(':', $items[$delta]['value']);
    if ($field['format'] == 12) {
      $items[$delta]['minute'] = substr($minute, 0, 2);
      $items[$delta]['meridiem'] = substr($minute, 2, 2);
    }
    else {
      $items[$delta]['minute'] = $minute;
    }
    $items[$delta]['hour'] = $hour;
    $element['#default_value'] = $items[$delta];
  }
  elseif (isset($items[$delta]['hour'])) {

    //brand-new node: assign the default values from the cck field setup form that

    //happen to be stored in $items[$delta]
    $element['#default_value'] = $items[$delta];
  }
  elseif (!$field['required']) {

    //CCK field not required, so could be empty intentionally
    $element['#default_value'] = array(
      'hour' => '',
      'minute' => '',
    );
  }
  elseif (isset($items[$delta])) {

    //the CCK field was added later to the node; the field is empty -> get the default values
    $element['#default_value'] = $field['widget']['default_value'][0];
  }
  return $element;
}