diff --git a/core/modules/datetime_range/src/DateTimeRangeTrait.php b/core/modules/datetime_range/src/DateTimeRangeTrait.php index 5a34f2c..2147da6 100644 --- a/core/modules/datetime_range/src/DateTimeRangeTrait.php +++ b/core/modules/datetime_range/src/DateTimeRangeTrait.php @@ -3,6 +3,7 @@ namespace Drupal\datetime_range; use Drupal\Core\Datetime\DrupalDateTime; +use Drupal\Core\Field\FieldItemListInterface; use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem; /** @@ -75,4 +76,41 @@ protected function buildDateWithIsoAttribute(DrupalDateTime $date) { return $build; } + /** + * {@inheritdoc} + */ + public function viewElements(FieldItemListInterface $items, $langcode) { + $elements = []; + $separator = $this->getSetting('separator'); + + foreach ($items as $delta => $item) { + if (!empty($item->start_date) && !empty($item->end_date)) { + /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ + $start_date = $item->start_date; + /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ + $end_date = $item->end_date; + + if ($start_date->format('U') !== $end_date->format('U')) { + $elements[$delta] = [ + 'start_date' => $this->buildDateWithIsoAttribute($start_date), + 'separator' => ['#plain_text' => ' ' . $separator . ' '], + 'end_date' => $this->buildDateWithIsoAttribute($end_date), + ]; + } + else { + $elements[$delta] = $this->buildDateWithIsoAttribute($start_date); + } + + if (!empty($item->_attributes)) { + $elements[$delta]['#attributes'] += $item->_attributes; + // Unset field item attributes since they have been included in the + // formatter output and should not be rendered in the field template. + unset($item->_attributes); + } + } + } + + return $elements; + } + } diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php index a23de51..8154dee 100644 --- a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php +++ b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php @@ -37,36 +37,6 @@ public static function defaultSettings() { /** * {@inheritdoc} */ - public function viewElements(FieldItemListInterface $items, $langcode) { - $elements = []; - $separator = $this->getSetting('separator'); - - foreach ($items as $delta => $item) { - if (!empty($item->start_date) && !empty($item->end_date)) { - /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ - $start_date = $item->start_date; - /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ - $end_date = $item->end_date; - - if ($start_date->format('U') !== $end_date->format('U')) { - $elements[$delta] = [ - 'start_date' => $this->buildDate($start_date), - 'separator' => ['#plain_text' => ' ' . $separator . ' '], - 'end_date' => $this->buildDate($end_date), - ]; - } - else { - $elements[$delta] = $this->buildDate($start_date); - } - } - } - - return $elements; - } - - /** - * {@inheritdoc} - */ public function settingsForm(array $form, FormStateInterface $form_state) { $form = parent::settingsForm($form, $form_state); diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php index f5ebb8c..c5c7d8f 100644 --- a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php +++ b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php @@ -38,43 +38,6 @@ public static function defaultSettings() { /** * {@inheritdoc} */ - public function viewElements(FieldItemListInterface $items, $langcode) { - $elements = []; - $separator = $this->getSetting('separator'); - - foreach ($items as $delta => $item) { - if (!empty($item->start_date) && !empty($item->end_date)) { - /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ - $start_date = $item->start_date; - /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ - $end_date = $item->end_date; - - if ($start_date->format('U') !== $end_date->format('U')) { - $elements[$delta] = [ - 'start_date' => $this->buildDateWithIsoAttribute($start_date), - 'separator' => ['#plain_text' => ' ' . $separator . ' '], - 'end_date' => $this->buildDateWithIsoAttribute($end_date), - ]; - } - else { - $elements[$delta] = $this->buildDateWithIsoAttribute($start_date); - } - - if (!empty($item->_attributes)) { - $elements[$delta]['#attributes'] += $item->_attributes; - // Unset field item attributes since they have been included in the - // formatter output and should not be rendered in the field template. - unset($item->_attributes); - } - } - } - - return $elements; - } - - /** - * {@inheritdoc} - */ public function settingsForm(array $form, FormStateInterface $form_state) { $form = parent::settingsForm($form, $form_state); diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php index 4842e1f..287f451 100644 --- a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php +++ b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php @@ -37,36 +37,6 @@ public static function defaultSettings() { /** * {@inheritdoc} */ - public function viewElements(FieldItemListInterface $items, $langcode) { - $elements = []; - $separator = $this->getSetting('separator'); - - foreach ($items as $delta => $item) { - if (!empty($item->start_date) && !empty($item->end_date)) { - /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ - $start_date = $item->start_date; - /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */ - $end_date = $item->end_date; - - if ($start_date->format('U') !== $end_date->format('U')) { - $elements[$delta] = [ - 'start_date' => $this->buildDate($start_date), - 'separator' => ['#plain_text' => ' ' . $separator . ' '], - 'end_date' => $this->buildDate($end_date), - ]; - } - else { - $elements[$delta] = $this->buildDate($start_date); - } - } - } - - return $elements; - } - - /** - * {@inheritdoc} - */ public function settingsForm(array $form, FormStateInterface $form_state) { $form = parent::settingsForm($form, $form_state);