diff --git a/src/Plugin/Field/FieldWidget/DateConfigurableListWidget.php b/src/Plugin/Field/FieldWidget/DateConfigurableListWidget.php index c55461e..64b6f63 100644 --- a/src/Plugin/Field/FieldWidget/DateConfigurableListWidget.php +++ b/src/Plugin/Field/FieldWidget/DateConfigurableListWidget.php @@ -3,7 +3,6 @@ namespace Drupal\datetime_extras\Plugin\Field\FieldWidget; use Drupal\Core\Field\FieldItemListInterface; -use Drupal\Core\Field\WidgetBase; use Drupal\Core\Form\FormStateInterface; use Drupal\datetime\Plugin\Field\FieldWidget\DateTimeDatelistWidget; @@ -34,6 +33,12 @@ class DateConfigurableListWidget extends DateTimeDatelistWidget { public function settingsForm(array $form, FormStateInterface $form_state) { $elements = parent::settingsForm($form, $form_state); + $elements['date_order']['#options'] += [ + 'Y' => $this->t('Year'), + 'MY' => $this->t('Month/Year'), + 'YM' => $this->t('Year/Month'), + ]; + return $elements; } @@ -52,6 +57,27 @@ class DateConfigurableListWidget extends DateTimeDatelistWidget { public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { $element = parent::formElement($items, $delta, $element, $form, $form_state); + $date_order = $this->getSetting('date_order'); + + // Set up the date part order array. + switch ($date_order) { + case 'Y': + $date_part_order = ['year']; + break; + + case 'MY': + $date_part_order = ['month', 'year']; + break; + + case 'YM': + $date_part_order = ['year', 'month']; + break; + } + + if (isset($date_part_order)) { + $element['value']['#date_part_order'] = $date_part_order; + } + return $element; }