mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 01:02:42 +01:00
Probably fix some display issues with all-day events?
Summary: Ref T11801. These are pretty fiddly because users expect to see the end time for timed events ("10 AM - 11 AM" is ONE hour long) but not for all-day events ("Nov 2 - Nov 3" is TWO days long!) We also want to store the thing the user actually entered so we don't lose data if they un-all-day the event later. This may take a little more fiddling since it feels a little shaky, but I couldn't break this version immediately. Test Plan: Imported a French holiday, got proper display in the UI. Reviewers: chad Reviewed By: chad Maniphest Tasks: T11801 Differential Revision: https://secure.phabricator.com/D16815
This commit is contained in:
parent
7ddd570fa5
commit
87c4efdb63
2 changed files with 12 additions and 2 deletions
|
@ -593,6 +593,9 @@ final class PhabricatorCalendarEvent extends PhabricatorCalendarDAO
|
|||
$min_date = $start->newPHPDateTime();
|
||||
$max_date = $end->newPHPDateTime();
|
||||
|
||||
// Subtract one second since the stored date is exclusive.
|
||||
$max_date = $max_date->modify('-1 second');
|
||||
|
||||
$min_day = $min_date->format('Y m d');
|
||||
$max_day = $max_date->format('Y m d');
|
||||
|
||||
|
@ -849,7 +852,11 @@ final class PhabricatorCalendarEvent extends PhabricatorCalendarDAO
|
|||
// If this is an all day event, we move the end date time forward to the
|
||||
// first second of the following day. This is consistent with what users
|
||||
// expect: an all day event from "Nov 1" to "Nov 1" lasts the entire day.
|
||||
if ($this->getIsAllDay()) {
|
||||
|
||||
// For imported events, the end date is already stored with this
|
||||
// adjustment.
|
||||
|
||||
if ($this->getIsAllDay() && !$this->isImportedEvent()) {
|
||||
$datetime = $datetime
|
||||
->newAbsoluteDateTime()
|
||||
->setHour(0)
|
||||
|
|
|
@ -198,8 +198,11 @@ final class PHUICalendarListView extends AphrontTagView {
|
|||
$viewer,
|
||||
$event->getEpochEnd()));
|
||||
|
||||
$end_date = $end->getDateTime();
|
||||
$end_date = $end_date->modify('-1 second');
|
||||
|
||||
$start_date = $start->getDateTime()->format('m d Y');
|
||||
$end_date = $end->getDateTime()->format('m d Y');
|
||||
$end_date = $end_date->format('m d Y');
|
||||
|
||||
if ($event->getIsAllDay()) {
|
||||
if ($start_date == $end_date) {
|
||||
|
|
Loading…
Reference in a new issue