OfficeHoursSlot.php in Office Hours 8
File
src/Element/OfficeHoursSlot.php
View source
<?php
namespace Drupal\office_hours\Element;
use Drupal\Core\Form\FormStateInterface;
class OfficeHoursSlot extends OfficeHoursList {
public static function processOfficeHoursSlot(&$element, FormStateInterface $form_state, &$complete_form) {
$element = parent::processOfficeHoursSlot($element, $form_state, $complete_form);
$max_delta = $element['#field_settings']['cardinality_per_day'] - 1;
$day_delta = $element['#daydelta'];
$day = isset($element['#value']['day']) ? (int) $element['#value']['day'] : '';
if ($day_delta == 0) {
$label = $element['#dayname'];
}
elseif ($day_delta > $max_delta) {
$label = '';
$element['#attributes']['class'][] = 'office-hours-hide';
$element['#value'] = empty($element['#value'] ? [] : $element['#value']);
$element['#value']['starthours'] = '';
$element['#value']['endhours'] = '';
$element['#value']['comment'] = '';
}
elseif (isset($element['#value']['starthours']) && (!empty($element['#value']['starthours']) || $element['#value']['starthours'] === '0')) {
$label = t('and');
$element['#attributes']['class'][] = 'office-hours-more';
}
else {
$label = t('and');
$element['#attributes']['class'][] = 'office-hours-hide';
$element['#attributes']['class'][] = 'office-hours-more';
}
$element['day'] = [
'#type' => 'hidden',
'#prefix' => $day_delta ? "<div class='office-hours-more-label'>{$label}</div>" : "<div class='office-hours-label'>{$label}</div>",
'#default_value' => $day,
'#value' => $day,
];
$element['#attributes']['class'][] = "office-hours-day-{$day}";
return $element;
}
}
Classes
Name |
Description |
OfficeHoursSlot |
Provides a one-line text field form element for the Week Widget. |