diff --git a/core/modules/datetime/config/schema/datetime.schema.yml b/core/modules/datetime/config/schema/datetime.schema.yml index 406a2fd..aade88f 100644 --- a/core/modules/datetime/config/schema/datetime.schema.yml +++ b/core/modules/datetime/config/schema/datetime.schema.yml @@ -1,5 +1,7 @@ # Schema for the configuration files of the Datetime module. +# datetime + field.storage_settings.datetime: type: mapping label: 'Datetime settings' @@ -83,3 +85,78 @@ field.widget.settings.datetime_datelist: field.widget.settings.datetime_default: type: mapping label: 'Datetime default display format settings' + +# daterange + +field.storage_settings.daterange: + type: mapping + label: 'Daterange settings' + mapping: + datetime_type: + type: string + label: 'Date type' + +field.field_settings.daterange: + type: mapping + label: 'Daterange settings' + +field.value.daterange: + type: mapping + label: 'Default value' + mapping: + default_date_type: + type: string + label: 'Default date type' + default_date: + type: string + label: 'Default date value' + +field.formatter.settings.daterange_base: + type: mapping + mapping: + separator: + type: string + label: 'Separator' + timezone_override: + type: string + label: 'Time zone override' + +field.formatter.settings.daterange_default: + type: field.formatter.settings.daterange_base + label: 'Daterange default display format settings' + mapping: + format_type: + type: string + label: 'Date format' + +field.formatter.settings.daterange_plain: + type: field.formatter.settings.daterange_base + label: 'Daterange plain display format settings' + +field.formatter.settings.daterange_custom: + type: field.formatter.settings.daterange_base + label: 'Daterange custom display format settings' + mapping: + date_format: + type: string + label: 'Date/time format' + translatable: true + translation context: 'PHP date format' + +field.widget.settings.daterange_datelist: + type: mapping + label: 'Daterange select list display format settings' + mapping: + increment: + type: integer + label: 'Time increments' + date_order: + type: string + label: 'Date part order' + time_type: + type: string + label: 'Time type' + +field.widget.settings.daterange_default: + type: mapping + label: 'Daterange default display format settings' diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php index c52922f..3586fb7 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php @@ -42,7 +42,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) { /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ $end_date = $item->end_date; - if ($this->getFieldSetting('datetime_type') == 'date') { + if ($this->getFieldSetting('daterange_type') == 'date') { // A date without time will pick up the current time, use the default. datetime_date_default_time($start_date); datetime_date_default_time($end_date); diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php index ce6d469..e239936 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php @@ -42,7 +42,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) { /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ $end_date = $item->end_date; - if ($this->getFieldSetting('datetime_type') == 'date') { + if ($this->getFieldSetting('daterange_type') == 'date') { // A date without time will pick up the current time, use the default. datetime_date_default_time($start_date); datetime_date_default_time($end_date); @@ -55,7 +55,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) { $this->setTimeZone($start_date); $this->setTimeZone($end_date); - // Display the date using theme datetime. + // Display the dates using theme datetime. $elements[$delta] = [ '#cache' => [ 'contexts' => [ diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php index eb16abf..a548e05 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php +++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php @@ -31,7 +31,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) { /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */ $end_date = $item->end_date; - if ($this->getFieldSetting('datetime_type') == 'date') { + if ($this->getFieldSetting('daterange_type') == 'date') { // A date without time will pick up the current time, use the default. datetime_date_default_time($start_date); datetime_date_default_time($end_date); @@ -58,7 +58,7 @@ public function viewElements(FieldItemListInterface $items, $langcode) { * {@inheritdoc} */ protected function formatDate($date) { - $format = $this->getFieldSetting('datetime_type') == 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT; + $format = $this->getFieldSetting('daterange_type') == 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT; $timezone = $this->getSetting('timezone_override'); return $this->dateFormatter->format($date->getTimestamp(), 'custom', $format, $timezone != '' ? $timezone : NULL); } diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php index b5d96aa..1f9c6bb 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php +++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php @@ -9,7 +9,7 @@ use Drupal\Core\Form\FormStateInterface; /** - * Represents a configurable entity datetime field. + * Represents a configurable entity daterange field. */ class DateRangeFieldItemList extends FieldItemList { @@ -95,7 +95,7 @@ public static function processDefaultValue($default_value, FieldableEntityInterf // A default value should be in the format and timezone used for date // storage. $date = new DrupalDateTime($default_value[0]['default_date'], DATETIME_STORAGE_TIMEZONE); - $storage_format = $definition->getSetting('datetime_type') == DateTimeItem::DATETIME_TYPE_DATE ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT; + $storage_format = $definition->getSetting('daterange_type') == DateRangeItem::DATERANGE_TYPE_DATE ? DATERANGE_DATE_STORAGE_FORMAT : DATERANGE_DATETIME_STORAGE_FORMAT; $value = $date->format($storage_format); // We only provide a default value for the first item, as do all fields. // Otherwise, there is no way to clear out unwanted values on multiple diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php index 101973f..6aca3b2 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php +++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php @@ -102,8 +102,8 @@ public function storageSettingsForm(array &$form, FormStateInterface $form_state $element['datetime_type'] = array( '#type' => 'select', - '#title' => t('Date type'), - '#description' => t('Choose the type of date to create.'), + '#title' => $this->t('Date type'), + '#description' => $this->t('Choose the type of date to create.'), '#default_value' => $this->getSetting('datetime_type'), '#options' => array( static::DATERANGE_TYPE_DATETIME => t('Date and time'), diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php index c7b513a..ffc54f5 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php +++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php @@ -6,7 +6,7 @@ use Drupal\Core\Form\FormStateInterface; /** - * Plugin implementation of the 'datetime_datelist' widget. + * Plugin implementation of the 'daterange_datelist' widget. * * @FieldWidget( * id = "daterange_datelist", @@ -144,7 +144,7 @@ public function settingsSummary() { $summary = array(); $summary[] = t('Date part order: @order', array('@order' => $this->getSetting('date_order'))); - if ($this->getFieldSetting('datetime_type') == 'datetime') { + if ($this->getFieldSetting('daterange_type') == 'datetime') { $summary[] = t('Time type: @time_type', array('@time_type' => $this->getSetting('time_type'))); $summary[] = t('Time increments: @increment', array('@increment' => $this->getSetting('increment'))); } diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php index 20228a6..e304b1f 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php +++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php @@ -59,6 +59,8 @@ public static function create(ContainerInterface $container, array $configuratio public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element = parent::formElement($items, $delta, $element, $form, $form_state); + debug([$this->getSettings()]); + // Identify the type of date and time elements to use. switch ($this->getFieldSetting('daterange_type')) { case DateRangeItem::DATERANGE_TYPE_DATE: diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php index 8ac0afd..28c7e12 100644 --- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php +++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php @@ -27,6 +27,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen $element['#attributes']['class'][] = 'container-inline'; $element['start_value'] = array( + '#title' => $this->t('Start'), '#type' => 'datetime', '#default_value' => NULL, '#date_increment' => 1, @@ -35,6 +36,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen ); $element['end_value'] = array( + '#title' => $this->t('End'), '#type' => 'datetime', '#default_value' => NULL, '#date_increment' => 1,