You are here

function cck_time_field_widget_form in CCK Time 7

Implements hook_field_widget_form().

File

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

Code

function cck_time_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $element += array(
    '#type' => 'cck_time_select',
    '#default_value' => '',
  );

  //deal with default values when editing a form
  if (isset($items[0]['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) = explode(':', $items[0]['value']);
    if ($field['settings']['format'] == 12) {
      $items[0]['minute'] = substr($minute, 0, 2);
      $items[0]['meridiem'] = substr($minute, 2, 2);
    }
    else {
      $items[0]['minute'] = $minute;
    }
    $items[0]['hour'] = $hour;
    $element['#default_value'] = $items[0];
  }
  elseif (isset($items[0]['hour'])) {

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

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

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

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