Commit 80838288 authored by John Voskuilen's avatar John Voskuilen
Browse files

Issue #1998266: Add 'Exception day' feature - enhance some basic functions.

parent c4367e42
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -166,28 +166,23 @@ class OfficeHoursDatetime extends Datetime {
        return TRUE;
      }

      if ($element['day'] !== '' && strlen($element['day']) > 1) {
      // Check exception day.
      if (OfficeHoursDateHelper::isExceptionDay($element['day'])) {
        if (isset($element['day_delta']) && $element['day_delta'] == 0) {
          // @todo Why is day_delta sometimes not set?
          // First slot is never empty if an Exception date is set.
          return FALSE;
        }
        if ((isset($element['starthours']) && OfficeHoursDatetime::isEmpty($element['starthours']))
          && (isset($element['endhours']) && OfficeHoursDatetime::isEmpty($element['endhours']))
          && (!isset($element['comment']) || empty($element['comment']))
        ) {
          return TRUE;
      }
      }

      // Check normal weekday element.
      if ((isset($element['day']) && !OfficeHoursDateHelper::isExceptionDay($element['day']))
      // Hours may be empty if a comment is set.
      if (isset($element['day'])
        && (isset($element['starthours']) && OfficeHoursDatetime::isEmpty($element['starthours']))
        && (isset($element['endhours']) && OfficeHoursDatetime::isEmpty($element['endhours']))
        && (!isset($element['comment']) || empty($element['comment']))
      ) {
        return TRUE;
      }

      // Check HTML5 datetime element.
      if ((isset($element['starthours']['time']) && OfficeHoursDatetime::isEmpty($element['starthours']['time']))
        && (isset($element['endhours']['time']) && OfficeHoursDatetime::isEmpty($element['endhours']['time']))
+12 −1
Original line number Diff line number Diff line
@@ -198,6 +198,7 @@ class OfficeHoursList extends FormElement {
    // If any field of slot is filled, check for required time fields.
    $required_start = $validate_hours || $field_settings['required_start'] ?? FALSE;
    $required_end = $validate_hours || $field_settings['required_end'] ?? FALSE;

    if ($required_start && empty($start)) {
      $error_text = 'Opening hours must be set.';
      $erroneous_element = &$element['starthours'];
@@ -224,7 +225,17 @@ class OfficeHoursList extends FormElement {
    }

    if ($error_text) {

      $is_exception_day = OfficeHoursDateHelper::isExceptionDay($input['day']);
      if (!$is_exception_day) {
        $day_name = OfficeHoursDateHelper::weekDays(FALSE)[$input['day']];
      }
      else {
        // @todo Fix empty day name if error in 'more' slot.
        // @todo Add date to label -using proper formatLabels() helper function.
        $day_name = 'Exception day';
      }

      $error_text = $day_name  // Day name is already translated.
        . ': '
        . t($error_text,
+1 −1
Original line number Diff line number Diff line
@@ -354,7 +354,7 @@ class OfficeHoursDateHelper extends DateHelper {
   *   False if the day_number is a (sorted) weekday (-7 until +7).
   */
  public static function isExceptionDay($day_number) {
    return !(((int) $day_number) < 8);
    return (((int) $day_number) >= 8);
  }

}