Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 91 |
DateTimeDatelistWidget | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
182 | |
0.00% |
0 / 91 |
defaultSettings | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
formElement | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 38 |
|||
settingsForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 39 |
|||
settingsSummary | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\datetime\Plugin\Field\FieldWidget\DateTimeDatelistWidget. | |
*/ | |
namespace Drupal\datetime\Plugin\Field\FieldWidget; | |
use Drupal\Core\Field\FieldItemListInterface; | |
use Drupal\Core\Form\FormStateInterface; | |
/** | |
* Plugin implementation of the 'datetime_datelist' widget. | |
* | |
* @FieldWidget( | |
* id = "datetime_datelist", | |
* label = @Translation("Select list"), | |
* field_types = { | |
* "datetime" | |
* } | |
* ) | |
*/ | |
class DateTimeDatelistWidget extends DateTimeWidgetBase { | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function defaultSettings() { | |
return array( | |
'increment' => '15', | |
'date_order' => 'YMD', | |
'time_type' => '24', | |
) + parent::defaultSettings(); | |
} | |
/** | |
* {@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') == '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) { | |
case 'YMD': | |
$date_part_order = array('year', 'month', 'day'); | |
break; | |
case 'MDY': | |
$date_part_order = array('month', 'day', 'year'); | |
break; | |
case 'DMY': | |
$date_part_order = array('day', 'month', 'year'); | |
break; | |
} | |
switch ($time_type) { | |
case '24': | |
$date_part_order = array_merge($date_part_order, array('hour', 'minute')); | |
break; | |
case '12': | |
$date_part_order = array_merge($date_part_order, array('hour', 'minute', 'ampm')); | |
break; | |
case 'none': | |
break; | |
} | |
$element['value'] = array( | |
'#type' => 'datelist', | |
'#date_increment' => $increment, | |
'#date_part_order'=> $date_part_order, | |
) + $element['value']; | |
return $element; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
function settingsForm(array $form, FormStateInterface $form_state) { | |
$element = parent::settingsForm($form, $form_state); | |
$element['date_order'] = array( | |
'#type' => 'select', | |
'#title' => t('Date part order'), | |
'#default_value' => $this->getSetting('date_order'), | |
'#options' => array('MDY' => t('Month/Day/Year'), 'DMY' => t('Day/Month/Year'), 'YMD' => t('Year/Month/Day')), | |
); | |
if ($this->getFieldSetting('datetime_type') == 'datetime') { | |
$element['time_type'] = array( | |
'#type' => 'select', | |
'#title' => t('Time type'), | |
'#default_value' => $this->getSetting('time_type'), | |
'#options' => array('24' => t('24 hour time'), '12' => t('12 hour time')), | |
); | |
$element['increment'] = [ | |
'#type' => 'select', | |
'#title' => t('Time increments'), | |
'#default_value' => $this->getSetting('increment'), | |
'#options' => [ | |
1 => t('1 minute'), | |
5 => t('5 minute'), | |
10 => t('10 minute'), | |
15 => t('15 minute'), | |
30 => t('30 minute'), | |
], | |
]; | |
} | |
else { | |
$element['time_type'] = array( | |
'#type' => 'hidden', | |
'#value' => 'none', | |
); | |
$element['increment'] = [ | |
'#type' => 'hidden', | |
'#value' => $this->getSetting('increment'), | |
]; | |
} | |
return $element; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function settingsSummary() { | |
$summary = array(); | |
$summary[] = t('Date part order: @order', array('@order' => $this->getSetting('date_order'))); | |
if ($this->getFieldSetting('datetime_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'))); | |
} | |
return $summary; | |
} | |
} |