diff --git a/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php b/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php index a23de51..5ed601d 100644 --- a/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php +++ b/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php @@ -31,6 +31,8 @@ class DateRangeCustomFormatter extends DateTimeCustomFormatter { public static function defaultSettings() { return [ 'separator' => '-', + 'display_start_date' => TRUE, + 'display_end_date' => TRUE, ] + parent::defaultSettings(); } @@ -40,6 +42,8 @@ class DateRangeCustomFormatter extends DateTimeCustomFormatter { public function viewElements(FieldItemListInterface $items, $langcode) { $elements = []; $separator = $this->getSetting('separator'); + $display_start_date = $this->getSetting('display_start_date'); + $display_end_date = $this->getSetting('display_end_date'); foreach ($items as $delta => $item) { if (!empty($item->start_date) && !empty($item->end_date)) { @@ -49,11 +53,16 @@ class DateRangeCustomFormatter extends DateTimeCustomFormatter { $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), - ]; + $elements[$delta] = []; + if ($display_start_date) { + $elements[$delta]['start_date'] = $this->buildDate($start_date); + } + if ($display_start_date && $display_end_date) { + $elements[$delta]['separator'] = ['#plain_text' => ' ' . $separator . ' ']; + } + if ($display_end_date) { + $elements[$delta]['separator']['end_date'] = $this->buildDate($end_date); + } } else { $elements[$delta] = $this->buildDate($start_date); @@ -76,6 +85,16 @@ class DateRangeCustomFormatter extends DateTimeCustomFormatter { '#description' => $this->t('The string to separate the start and end dates'), '#default_value' => $this->getSetting('separator'), ]; + $form['display_start_date'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Display start date'), + '#default_value' => $this->getSetting('display_start_date'), + ]; + $form['display_end_date'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Display end date'), + '#default_value' => $this->getSetting('display_end_date'), + ]; return $form; }