Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 25 |
TimestampDatetimeWidget | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
72 | |
0.00% |
0 / 25 |
formElement | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 11 |
|||
massageFormValues | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 14 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Datetime\Plugin\Field\FieldWidget\TimestampDatetimeWidget. | |
*/ | |
namespace Drupal\Core\Datetime\Plugin\Field\FieldWidget; | |
use Drupal\Core\Datetime\DrupalDateTime; | |
use Drupal\Core\Datetime\Element\Datetime; | |
use Drupal\Core\Datetime\Entity\DateFormat; | |
use Drupal\Core\Field\FieldItemListInterface; | |
use Drupal\Core\Field\WidgetBase; | |
use Drupal\Core\Form\FormStateInterface; | |
/** | |
* Plugin implementation of the 'datetime timestamp' widget. | |
* | |
* @FieldWidget( | |
* id = "datetime_timestamp", | |
* label = @Translation("Datetime Timestamp"), | |
* field_types = { | |
* "timestamp", | |
* "created", | |
* } | |
* ) | |
*/ | |
class TimestampDatetimeWidget extends WidgetBase { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { | |
$date_format = DateFormat::load('html_date')->getPattern(); | |
$time_format = DateFormat::load('html_time')->getPattern(); | |
$default_value = isset($items[$delta]->value) ? DrupalDateTime::createFromTimestamp($items[$delta]->value) : ''; | |
$element['value'] = $element + array( | |
'#type' => 'datetime', | |
'#default_value' => $default_value, | |
'#date_year_range' => '1902:2037', | |
); | |
$element['value']['#description'] = $this->t('Format: %format. Leave blank to use the time of form submission.', array('%format' => Datetime::formatExample($date_format . ' ' . $time_format))); | |
return $element; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) { | |
foreach ($values as &$item) { | |
// @todo The structure is different whether access is denied or not, to | |
// be fixed in https://www.drupal.org/node/2326533. | |
if (isset($item['value']) && $item['value'] instanceof DrupalDateTime) { | |
$date = $item['value']; | |
} | |
elseif (isset($item['value']['object']) && $item['value']['object'] instanceof DrupalDateTime) { | |
$date = $item['value']['object']; | |
} | |
else { | |
$date = new DrupalDateTime(); | |
} | |
$item['value'] = $date->getTimestamp(); | |
} | |
return $values; | |
} | |
} |