diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimeDefaultFormatter.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimeDefaultFormatter.php index 03f172f..3ea6333 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimeDefaultFormatter.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimeDefaultFormatter.php @@ -103,11 +103,14 @@ public function viewElements(FieldInterface $items) { $formatted_date = ''; $iso_date = ''; + $date = NULL; if (!empty($item->date)) { - // The date was created and verified during field_load(), so it is safe - // to use without further inspection. $date = $item->date; - + } + elseif ($item->value) { + $date = $item->get('value')->getDateTime(); + } + if ($date) { // Create the ISO date in Universal Time. $iso_date = $date->format("Y-m-d\TH:i:s") . 'Z'; diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimePlainFormatter.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimePlainFormatter.php index 600092f..f9ad329 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimePlainFormatter.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/formatter/DatetimePlainFormatter.php @@ -36,10 +36,16 @@ public function viewElements(FieldInterface $items) { foreach ($items as $delta => $item) { $output = ''; + $date = NULL; if (!empty($item->date)) { + $date = $item->date; + } + elseif ($item->value) { + $date = $item->get('value')->getDateTime(); + } + if ($date) { // The date was created and verified during field_load(), so it is safe // to use without further inspection. - $date = $item->date; $date->setTimeZone(timezone_open(drupal_get_user_timezone())); $format = DATETIME_DATETIME_STORAGE_FORMAT; if ($this->getFieldSetting('datetime_type') == 'date') { diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php index 37d2c3b..ad9fa2b 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatelistWidget.php @@ -126,8 +126,15 @@ public function formElement(FieldInterface $items, $delta, array $element, array // validator will not have access to the field definition. $element['value']['#date_storage_format'] = $storage_format; + $date = NULL; if (!empty($items[$delta]->date)) { $date = $items[$delta]->date; + } + elseif ($items[$delta]->value) { + $date = $items[$delta]->get('value')->getDateTime(); + } + if ($date) { + $date = $items[$delta]->date; // The date was created and verified during field_load(), so it is safe to // use without further inspection. $date->setTimezone( new \DateTimeZone($element['value']['#date_timezone'])); diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php index 6628dbb..058310a 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDefaultWidget.php @@ -115,8 +115,14 @@ public function formElement(FieldInterface $items, $delta, array $element, array $element['value']['#date_element_format'] = $element_format; $element['value']['#date_storage_format'] = $storage_format; + $date = NULL; if (!empty($items[$delta]->date)) { $date = $items[$delta]->date; + } + elseif ($items[$delta]->value) { + $date = $items[$delta]->get('value')->getDateTime(); + } + if ($date) { // The date was created and verified during field_load(), so it is safe to // use without further inspection. $date->setTimezone(new \DateTimeZone($element['value']['#date_timezone'])); diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php index 2de2456..7bccfd8 100644 --- a/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php @@ -90,8 +90,6 @@ function testFieldAttachSaveLoad() { for ($delta = 0; $delta < $this->field['cardinality']; $delta++) { // The field value loaded matches the one inserted or updated. $this->assertEqual($entity->{$this->field_name}[$delta]->value, $values[$revision_id][$delta]['value'], format_string('Revision %revision_id: expected value %delta was found.', array('%revision_id' => $revision_id, '%delta' => $delta))); - // The value added in hook_field_load() is found. - $this->assertEqual($entity->{$this->field_name}[$delta]->additional_key, 'additional_value', format_string('Revision %revision_id: extra information for value %delta was found', array('%revision_id' => $revision_id, '%delta' => $delta))); } } } @@ -100,7 +98,7 @@ function testFieldAttachSaveLoad() { * Test the 'multiple' load feature. */ function testFieldAttachLoadMultiple() { - $entity_type = 'entity_test'; + $entity_type = 'entity_test_rev'; // Define 2 bundles. $bundles = array(