Loading src/Element/OfficeHoursList.php +0 −1 Original line number Diff line number Diff line Loading @@ -187,7 +187,6 @@ class OfficeHoursList extends FormElement { return; } // @todo JVO: reuse static function OHItem::validateOfficeHoursSettings( $field_settings = $element['#field_settings']; $validate_hours = $field_settings['valhrs']; // Exception: end time 00:00 --> 24:00. Loading src/Plugin/Field/FieldFormatter/OfficeHoursFormatterDefault.php +3 −2 Original line number Diff line number Diff line Loading @@ -35,13 +35,14 @@ class OfficeHoursFormatterDefault extends OfficeHoursFormatterBase { // If no data is filled for this entity, do not show the formatter. // N.B. 'Show current day' may return nothing in getRows(), while other days are filled. /** @var \Drupal\office_hours\Plugin\Field\FieldType\OfficeHoursItemListInterface $items */ if (!$items->getValue()) { $office_hours = $items->getValue(); if (!$office_hours) { return $elements; } $settings = $this->getSettings(); $field_definition = $items->getFieldDefinition(); $office_hours = $this->getRows($items->getValue(), $this->getSettings(), $this->getFieldSettings()); $office_hours = $this->getRows($office_hours, $this->getSettings(), $this->getFieldSettings()); $elements[] = [ '#theme' => 'office_hours', '#parent' => $field_definition, Loading src/Plugin/Field/FieldType/OfficeHoursItemList.php +7 −7 Original line number Diff line number Diff line Loading @@ -69,10 +69,10 @@ class OfficeHoursItemList extends FieldItemList implements OfficeHoursItemListIn /** * {@inheritdoc} */ public function setValue($values, $notify = TRUE) { public function setValue($value, $notify = TRUE) { // Allow other modules to allow $values. $this->dispatchUpdateEvent(OfficeHoursEvents::OFFICE_HOURS_UPDATE, $values); parent::setValue($values, $notify); $this->dispatchUpdateEvent(OfficeHoursEvents::OFFICE_HOURS_UPDATE, $value); parent::setValue($value, $notify); } /** Loading @@ -80,19 +80,19 @@ class OfficeHoursItemList extends FieldItemList implements OfficeHoursItemListIn * * @param string $event_name * The event to trigger. * @param array|null $values * @param array|null $value * An array of values of the field items, or NULL to unset the field. * Can be changed by EventSubscribers. * * @return \Drupal\sms\Event\SmsMessageEvent * The dispatched event. */ protected function dispatchUpdateEvent($event_name, array &$values) { protected function dispatchUpdateEvent($event_name, &$value) { /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher */ $event_dispatcher = \Drupal::service('event_dispatcher'); $event = new OfficeHoursUpdateEvent($values); $event = new OfficeHoursUpdateEvent($value); $event = $event_dispatcher->dispatch($event); $values = $event->getValues(); $value = $event->getValues(); } } src/Plugin/Field/FieldWidget/OfficeHoursDefaultWidget.php +5 −5 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ class OfficeHoursDefaultWidget extends OfficeHoursWidgetBase { // - First level are day numbers. // - Second level contains field values arranged by $day_delta. $indexed_items = array_fill_keys(range(0, 6), []); foreach ($items as $index => $item) { foreach ($items as $item) { $value_of_item = $item->getValue(); if ($item && !empty($value_of_item)) { $indexed_items[(int) $value_of_item['day']][] = $item; Loading @@ -84,9 +84,9 @@ class OfficeHoursDefaultWidget extends OfficeHoursWidgetBase { // @todo The theme_function clears values above cardinality. Move it here. for ($day_delta = 0; $day_delta < $cardinality; $day_delta++) { $default_value = ['day' => $day, 'day_delta' => $day_delta]; $default_value = isset($indexed_items[$day][$day_delta]) ? $indexed_items[$day][$day_delta]->getValue() + $default_value : $default_value; if (isset($indexed_items[$day][$day_delta])) { $default_value = $indexed_items[$day][$day_delta]->getValue() + $default_value; } $elements[] = [ '#day' => $day, '#daydelta' => $day_delta, Loading Loading @@ -116,7 +116,7 @@ class OfficeHoursDefaultWidget extends OfficeHoursWidgetBase { '#tabledrag' => FALSE, ] + $element['value'] + $elements; // Wrap the table in a collapsible fieldset, which is th only way(?) // Wrap the table in a collapsible fieldset, which is the only way(?) // to show the 'required' asterisk and the help text. // The help text is now shown above the table, as requested by some users. // N.B. For some reason, the title is shown in Capitals. Loading src/Plugin/Field/FieldWidget/OfficeHoursListWidget.php +11 −7 Original line number Diff line number Diff line Loading @@ -26,23 +26,27 @@ class OfficeHoursListWidget extends OfficeHoursWidgetBase { $element = parent::formElement($items, $delta, $element, $form, $form_state); $item = $items[$delta]; $default_value = ['day' => '', 'day_delta' => 0]; $default_value = isset($item) // && $item->getValue() != [] ? $item->getValue() + $default_value : $default_value; $default_value = [ 'day' => '', 'day_delta' => 0, ]; if (isset($item)) { $default_value = $item->getValue() + $default_value; } $day = isset($default_value['day']) ? $default_value['day'] : ''; $day = $default_value['day']; if (OfficeHoursDateHelper::isExceptionDay($day)) { // @todo Support Exception days. return []; } $element['value'] = [ '#type' => 'office_hours_list', '#default_value' => $default_value, '#day' => $day, // @todo Set weekday number for Exception days. // Make sure the value is shown in OfficeHoursSlot(). '#daydelta' => 0, '#dayname' => '', '#type' => 'office_hours_list', '#default_value' => $default_value, // Wrap all of the select elements with a fieldset. '#theme_wrappers' => [ 'fieldset', Loading Loading
src/Element/OfficeHoursList.php +0 −1 Original line number Diff line number Diff line Loading @@ -187,7 +187,6 @@ class OfficeHoursList extends FormElement { return; } // @todo JVO: reuse static function OHItem::validateOfficeHoursSettings( $field_settings = $element['#field_settings']; $validate_hours = $field_settings['valhrs']; // Exception: end time 00:00 --> 24:00. Loading
src/Plugin/Field/FieldFormatter/OfficeHoursFormatterDefault.php +3 −2 Original line number Diff line number Diff line Loading @@ -35,13 +35,14 @@ class OfficeHoursFormatterDefault extends OfficeHoursFormatterBase { // If no data is filled for this entity, do not show the formatter. // N.B. 'Show current day' may return nothing in getRows(), while other days are filled. /** @var \Drupal\office_hours\Plugin\Field\FieldType\OfficeHoursItemListInterface $items */ if (!$items->getValue()) { $office_hours = $items->getValue(); if (!$office_hours) { return $elements; } $settings = $this->getSettings(); $field_definition = $items->getFieldDefinition(); $office_hours = $this->getRows($items->getValue(), $this->getSettings(), $this->getFieldSettings()); $office_hours = $this->getRows($office_hours, $this->getSettings(), $this->getFieldSettings()); $elements[] = [ '#theme' => 'office_hours', '#parent' => $field_definition, Loading
src/Plugin/Field/FieldType/OfficeHoursItemList.php +7 −7 Original line number Diff line number Diff line Loading @@ -69,10 +69,10 @@ class OfficeHoursItemList extends FieldItemList implements OfficeHoursItemListIn /** * {@inheritdoc} */ public function setValue($values, $notify = TRUE) { public function setValue($value, $notify = TRUE) { // Allow other modules to allow $values. $this->dispatchUpdateEvent(OfficeHoursEvents::OFFICE_HOURS_UPDATE, $values); parent::setValue($values, $notify); $this->dispatchUpdateEvent(OfficeHoursEvents::OFFICE_HOURS_UPDATE, $value); parent::setValue($value, $notify); } /** Loading @@ -80,19 +80,19 @@ class OfficeHoursItemList extends FieldItemList implements OfficeHoursItemListIn * * @param string $event_name * The event to trigger. * @param array|null $values * @param array|null $value * An array of values of the field items, or NULL to unset the field. * Can be changed by EventSubscribers. * * @return \Drupal\sms\Event\SmsMessageEvent * The dispatched event. */ protected function dispatchUpdateEvent($event_name, array &$values) { protected function dispatchUpdateEvent($event_name, &$value) { /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher */ $event_dispatcher = \Drupal::service('event_dispatcher'); $event = new OfficeHoursUpdateEvent($values); $event = new OfficeHoursUpdateEvent($value); $event = $event_dispatcher->dispatch($event); $values = $event->getValues(); $value = $event->getValues(); } }
src/Plugin/Field/FieldWidget/OfficeHoursDefaultWidget.php +5 −5 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ class OfficeHoursDefaultWidget extends OfficeHoursWidgetBase { // - First level are day numbers. // - Second level contains field values arranged by $day_delta. $indexed_items = array_fill_keys(range(0, 6), []); foreach ($items as $index => $item) { foreach ($items as $item) { $value_of_item = $item->getValue(); if ($item && !empty($value_of_item)) { $indexed_items[(int) $value_of_item['day']][] = $item; Loading @@ -84,9 +84,9 @@ class OfficeHoursDefaultWidget extends OfficeHoursWidgetBase { // @todo The theme_function clears values above cardinality. Move it here. for ($day_delta = 0; $day_delta < $cardinality; $day_delta++) { $default_value = ['day' => $day, 'day_delta' => $day_delta]; $default_value = isset($indexed_items[$day][$day_delta]) ? $indexed_items[$day][$day_delta]->getValue() + $default_value : $default_value; if (isset($indexed_items[$day][$day_delta])) { $default_value = $indexed_items[$day][$day_delta]->getValue() + $default_value; } $elements[] = [ '#day' => $day, '#daydelta' => $day_delta, Loading Loading @@ -116,7 +116,7 @@ class OfficeHoursDefaultWidget extends OfficeHoursWidgetBase { '#tabledrag' => FALSE, ] + $element['value'] + $elements; // Wrap the table in a collapsible fieldset, which is th only way(?) // Wrap the table in a collapsible fieldset, which is the only way(?) // to show the 'required' asterisk and the help text. // The help text is now shown above the table, as requested by some users. // N.B. For some reason, the title is shown in Capitals. Loading
src/Plugin/Field/FieldWidget/OfficeHoursListWidget.php +11 −7 Original line number Diff line number Diff line Loading @@ -26,23 +26,27 @@ class OfficeHoursListWidget extends OfficeHoursWidgetBase { $element = parent::formElement($items, $delta, $element, $form, $form_state); $item = $items[$delta]; $default_value = ['day' => '', 'day_delta' => 0]; $default_value = isset($item) // && $item->getValue() != [] ? $item->getValue() + $default_value : $default_value; $default_value = [ 'day' => '', 'day_delta' => 0, ]; if (isset($item)) { $default_value = $item->getValue() + $default_value; } $day = isset($default_value['day']) ? $default_value['day'] : ''; $day = $default_value['day']; if (OfficeHoursDateHelper::isExceptionDay($day)) { // @todo Support Exception days. return []; } $element['value'] = [ '#type' => 'office_hours_list', '#default_value' => $default_value, '#day' => $day, // @todo Set weekday number for Exception days. // Make sure the value is shown in OfficeHoursSlot(). '#daydelta' => 0, '#dayname' => '', '#type' => 'office_hours_list', '#default_value' => $default_value, // Wrap all of the select elements with a fieldset. '#theme_wrappers' => [ 'fieldset', Loading