@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Multi-day non-all-day events should be displayed on middle day day views

Summary: Fixes T8192, Multi-day non-all-day events should be displayed on middle day day views

Test Plan: Create non-all-day event May 20 12pm - May23 12pm, open May 21 day view. Event should span the entire day.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T8192

Differential Revision: https://secure.phabricator.com/D12835

+14 -10
+14 -10
src/view/phui/calendar/PHUICalendarDayView.php
··· 55 55 $day_start = $this->getDateTime(); 56 56 $day_end = id(clone $day_start)->modify('+1 day'); 57 57 58 - $day_start = $day_start->format('U'); 59 - $day_end = $day_end->format('U') - 1; 58 + $day_start_epoch = $day_start->format('U'); 59 + $day_end_epoch = $day_end->format('U') - 1; 60 60 61 61 foreach ($all_day_events as $all_day_event) { 62 62 $all_day_start = $all_day_event->getEpochStart(); 63 63 $all_day_end = $all_day_event->getEpochEnd(); 64 64 65 - if ($all_day_start < $day_end && $all_day_end > $day_start) { 65 + if ($all_day_start < $day_end_epoch && $all_day_end > $day_start_epoch) { 66 66 $today_all_day_events[] = $all_day_event; 67 67 } 68 68 } ··· 73 73 $hour_end = id(clone $hour)->modify('+1 hour')->format('U'); 74 74 75 75 foreach ($this->events as $event) { 76 - if ($event->getIsAllDay()) { 77 - continue; 78 - } 79 - if ($event->getEpochStart() >= $hour_start 80 - && $event->getEpochStart() < $hour_end) { 76 + if ($event->getIsAllDay()) { 77 + continue; 78 + } 79 + if (($hour == $day_start && 80 + $event->getEpochStart() <= $hour_start && 81 + $event->getEpochEnd() > $day_start_epoch) || 82 + ($event->getEpochStart() >= $hour_start 83 + && $event->getEpochStart() < $hour_end)) { 81 84 $current_hour_events[] = $event; 82 85 $this->todayEvents[] = $event; 83 86 } 84 87 } 85 88 foreach ($current_hour_events as $event) { 86 - $event_start = $event->getEpochStart(); 87 - $event_end = min($event->getEpochEnd(), $day_end); 89 + $day_start_epoch = $this->getDateTime()->format('U'); 90 + $event_start = max($event->getEpochStart(), $day_start_epoch); 91 + $event_end = min($event->getEpochEnd(), $day_end_epoch); 88 92 89 93 $top = (($event_start - $hour_start) / ($hour_end - $hour_start)) 90 94 * 100;