/**
  * {@inheritdoc}
  */
 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');
     if ($this->getFieldSetting('datetime_type') == DateRangeItem::DATETIME_TYPE_DATETIME) {
         $time_type = $this->getSetting('time_type');
         $increment = $this->getSetting('increment');
     } else {
         $time_type = '';
         $increment = '';
     }
     // Set up the date part order array.
     switch ($date_order) {
         default:
         case 'YMD':
             $date_part_order = ['year', 'month', 'day'];
             break;
         case 'MDY':
             $date_part_order = ['month', 'day', 'year'];
             break;
         case 'DMY':
             $date_part_order = ['day', 'month', 'year'];
             break;
     }
     switch ($time_type) {
         case '24':
             $date_part_order = array_merge($date_part_order, ['hour', 'minute']);
             break;
         case '12':
             $date_part_order = array_merge($date_part_order, ['hour', 'minute', 'ampm']);
             break;
         case 'none':
             break;
     }
     $element['value'] = ['#type' => 'datelist', '#date_increment' => $increment, '#date_part_order' => $date_part_order] + $element['value'];
     $element['end_value'] = ['#type' => 'datelist', '#date_increment' => $increment, '#date_part_order' => $date_part_order] + $element['end_value'];
     return $element;
 }
예제 #2
0
 /**
  * {@inheritdoc}
  */
 public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state)
 {
     $element = parent::formElement($items, $delta, $element, $form, $form_state);
     // Identify the type of date and time elements to use.
     switch ($this->getFieldSetting('datetime_type')) {
         case DateRangeItem::DATETIME_TYPE_DATE:
         case DateRangeItem::DATETIME_TYPE_ALLDAY:
             $date_type = 'date';
             $time_type = 'none';
             $date_format = $this->dateStorage->load('html_date')->getPattern();
             $time_format = '';
             break;
         default:
             $date_type = 'date';
             $time_type = 'time';
             $date_format = $this->dateStorage->load('html_date')->getPattern();
             $time_format = $this->dateStorage->load('html_time')->getPattern();
             break;
     }
     $element['value'] += ['#date_date_format' => $date_format, '#date_date_element' => $date_type, '#date_date_callbacks' => [], '#date_time_format' => $time_format, '#date_time_element' => $time_type, '#date_time_callbacks' => []];
     $element['end_value'] += ['#date_date_format' => $date_format, '#date_date_element' => $date_type, '#date_date_callbacks' => [], '#date_time_format' => $time_format, '#date_time_element' => $time_type, '#date_time_callbacks' => []];
     return $element;
 }