OfficeHoursWidgetBase.php in Office Hours 8
File
src/Plugin/Field/FieldWidget/OfficeHoursWidgetBase.php
View source
<?php
namespace Drupal\office_hours\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\WidgetBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\office_hours\Element\OfficeHoursDatetime;
abstract class OfficeHoursWidgetBase extends WidgetBase {
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$settings = $this
->getFieldSettings();
$element['#field_settings'] = $settings;
$element['value'] = [
'#field_settings' => $settings,
'#attached' => [
'library' => [
'office_hours/office_hours_widget',
],
],
];
return $element;
}
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
foreach ($values as $key => &$item) {
if (OfficeHoursDatetime::isEmpty($item)) {
unset($values[$key]);
continue;
}
$start = OfficeHoursDatetime::get($item['starthours'], 'Hi');
$end = OfficeHoursDatetime::get($item['endhours'], 'Hi');
$item['starthours'] = isset($start) ? (int) $start : -1;
$item['endhours'] = isset($end) ? (int) $end : -1;
if (!empty($item['comment'])) {
$item['starthours'] = empty($start) ? -1 : $item['starthours'];
$item['endhours'] = empty($end) ? -1 : $item['endhours'];
}
}
return $values;
}
}