class DateTimeDefaultWidget extends WidgetBase {
public function __construct($plugin_id, array $plugin_definition, FieldInstance $instance, array $settings) {
$instance['default_value_function'] = $this
->defaultValueFunction();
parent::__construct($plugin_id, $plugin_definition, $instance, $settings);
}
public function defaultValueFunction() {
return 'datetime_default_value';
}
public function formElement(array $items, $delta, array $element, $langcode, array &$form, array &$form_state) {
$field = $this->field;
$instance = $this->instance;
$format_type = datetime_default_format_type();
$element['#theme_wrappers'][] = 'datetime_wrapper';
$element['#attributes']['class'][] = 'container-inline';
$element['#element_validate'][] = 'datetime_datetime_widget_validate';
switch ($field['settings']['datetime_type']) {
case 'date':
$date_type = 'date';
$time_type = 'none';
$date_format = config('system.date')
->get('formats.html_date.pattern.' . $format_type);
$time_format = '';
$element_format = $date_format;
$storage_format = DATETIME_DATE_STORAGE_FORMAT;
break;
default:
$date_type = 'date';
$time_type = 'time';
$date_format = config('system.date')
->get('formats.html_date.pattern.' . $format_type);
$time_format = config('system.date')
->get('formats.html_time.pattern.' . $format_type);
$element_format = $date_format . ' ' . $time_format;
$storage_format = DATETIME_DATETIME_STORAGE_FORMAT;
break;
}
$element['value'] = array(
'#type' => 'datetime',
'#default_value' => NULL,
'#date_increment' => 1,
'#date_date_format' => $date_format,
'#date_date_element' => $date_type,
'#date_date_callbacks' => array(),
'#date_time_format' => $time_format,
'#date_time_element' => $time_type,
'#date_time_callbacks' => array(),
'#date_timezone' => drupal_get_user_timezone(),
'#required' => $element['#required'],
);
$element['value']['#date_element_format'] = $element_format;
$element['value']['#date_storage_format'] = $storage_format;
if (!empty($items[$delta]['date'])) {
$date = $items[$delta]['date'];
$date
->setTimezone(new \DateTimeZone($element['value']['#date_timezone']));
if ($field['settings']['datetime_type'] == 'date') {
datetime_date_default_time($date);
}
$element['value']['#default_value'] = $date;
}
return $element;
}
}