Issue #3414883 by paul121, acbramley, catch, smustgrave, quietone: [regression] datetime_timestamp widget does not use default field value
parent
e2f9b0c99f
commit
2fe69efea3
|
@ -25,8 +25,7 @@ class TimestampDatetimeWidget extends WidgetBase {
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
|
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
|
||||||
$parent_entity = $items->getParent()->getValue();
|
$default_value = isset($items[$delta]->value) ? DrupalDateTime::createFromTimestamp($items[$delta]->value) : '';
|
||||||
$default_value = (!$parent_entity->isNew() && isset($items[$delta]->value)) ? DrupalDateTime::createFromTimestamp($items[$delta]->value) : '';
|
|
||||||
$element['value'] = $element + [
|
$element['value'] = $element + [
|
||||||
'#type' => 'datetime',
|
'#type' => 'datetime',
|
||||||
'#default_value' => $default_value,
|
'#default_value' => $default_value,
|
||||||
|
|
|
@ -154,6 +154,25 @@ class TimestampTest extends BrowserTestBase {
|
||||||
$medium = DateFormat::load('medium')->getPattern();
|
$medium = DateFormat::load('medium')->getPattern();
|
||||||
$this->drupalGet('entity_test/' . $id);
|
$this->drupalGet('entity_test/' . $id);
|
||||||
$this->assertSession()->pageTextContains($date->format($medium));
|
$this->assertSession()->pageTextContains($date->format($medium));
|
||||||
|
|
||||||
|
// Build up a date in the UTC timezone.
|
||||||
|
$value = '2024-01-16 00:00:00';
|
||||||
|
$date = new DrupalDateTime($value, 'UTC');
|
||||||
|
|
||||||
|
// Set a default value for the field.
|
||||||
|
$this->field->setDefaultValue($date->getTimestamp())->save();
|
||||||
|
|
||||||
|
// Update the timezone to the system default.
|
||||||
|
$date->setTimezone(timezone_open(date_default_timezone_get()));
|
||||||
|
|
||||||
|
$this->drupalGet('entity_test/add');
|
||||||
|
$date_format = DateFormat::load('html_date')->getPattern();
|
||||||
|
$time_format = DateFormat::load('html_time')->getPattern();
|
||||||
|
// Make sure the default field value is set as the default value in the widget.
|
||||||
|
$this->assertSession()->fieldExists('field_timestamp[0][value][date]');
|
||||||
|
$this->assertSession()->fieldValueEquals('field_timestamp[0][value][date]', $date->format($date_format));
|
||||||
|
$this->assertSession()->fieldExists('field_timestamp[0][value][time]');
|
||||||
|
$this->assertSession()->fieldValueEquals('field_timestamp[0][value][time]', $date->format($time_format));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue