'-', ] + parent::defaultSettings(); } /** * {@inheritdoc} */ public function viewElements(FieldItemListInterface $items, $langcode) { // @todo Evaluate removing this method in // https://www.drupal.org/node/2793143 to determine if the behavior and // markup in the base class implementation can be used instead. $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->getTimestamp() !== $end_date->getTimestamp()) { $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); $form['separator'] = [ '#type' => 'textfield', '#title' => $this->t('Date separator'), '#description' => $this->t('The string to separate the start and end dates'), '#default_value' => $this->getSetting('separator'), ]; return $form; } /** * {@inheritdoc} */ public function settingsSummary() { $summary = parent::settingsSummary(); if ($separator = $this->getSetting('separator')) { $summary[] = $this->t('Separator: %separator', ['%separator' => $separator]); } return $summary; } }