diff --git a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php --- a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php @@ -227,7 +227,7 @@ $day_view = id(new PHUICalendarWeekView()) ->setViewer($viewer) - ->setView('week') + ->setTipDirection('W') ->setEvents($event_views) ->setWeekLength(3) ->render(); diff --git a/src/view/phui/calendar/PHUICalendarListView.php b/src/view/phui/calendar/PHUICalendarListView.php --- a/src/view/phui/calendar/PHUICalendarListView.php +++ b/src/view/phui/calendar/PHUICalendarListView.php @@ -1,12 +1,28 @@ epochStart = $start; + $this->epochEnd = $end; + return $this; + } + + public function getEpochStart() { + return $this->epochStart; + } + + public function getEpochEnd() { + return $this->epochEnd; + } + public function setMoreLink($more_link) { $this->moreLink = $more_link; return $this; @@ -16,15 +32,24 @@ return $this->moreLink; } - private function getView() { - return $this->view; + public function setTipDirection($direction) { + $this->tipDirection = $direction; + return $this; + } + + private function getTipDirection() { + return $this->tipDirection; } - public function setView($view) { - $this->view = $view; + public function setPastDirection($direction) { + $this->pastDirection = $direction; return $this; } + private function getPastDirection() { + return $this->pastDirection; + } + public function addEvent(AphrontCalendarEventView $event) { $this->events[] = $event; return $this; @@ -58,9 +83,10 @@ $singletons = array(); foreach ($this->events as $event) { - $start_epoch = $event->getEpochStart(); - - if ($event->getIsAllDay()) { + if ($event->getEpochStart() < $this->getEpochStart()) { + // The event starts on an earlier day, so hide the start time. + $timelabel = pht(''); + } else if ($event->getIsAllDay()) { $timelabel = pht('All Day'); } else { $timelabel = phabricator_time( @@ -68,7 +94,14 @@ $this->getUser()); } - $icon_icon = $event->getIcon(); + if ($event->getEpochStart() < $this->getEpochStart() && + $this->getPastDirection() !== null) { + // Show that the event starts on an earlier day by pointing to the past. + $icon_icon = 'fa-arrow-circle-'.$this->getPastDirection(); + } else { + $icon_icon = $event->getIcon(); + } + $icon_color = $event->getIconColor(); $icon = id(new PHUIIconView()) @@ -98,24 +131,15 @@ $event_classes[] = 'event-cancelled'; } - $tip = $event->getDateTimeSummary(); - if ($this->getView() == 'day') { - $tip_align = 'E'; - } else if ($this->getView() == 'month') { - $tip_align = 'N'; - } else { - $tip_align = 'W'; - } - $content = javelin_tag( 'a', array( 'href' => $event->getURI(), 'sigil' => 'has-tooltip', 'meta' => array( - 'tip' => $tip, + 'tip' => $event->getDateTimeSummary(), 'size' => 200, - 'align' => $tip_align, + 'align' => $this->getTipDirection(), ), ), array( diff --git a/src/view/phui/calendar/PHUICalendarMonthView.php b/src/view/phui/calendar/PHUICalendarMonthView.php --- a/src/view/phui/calendar/PHUICalendarMonthView.php +++ b/src/view/phui/calendar/PHUICalendarMonthView.php @@ -93,7 +93,8 @@ $list = id(new PHUICalendarListView()) ->setViewer($viewer) - ->setView('month'); + ->setEpochRange($day_start_epoch, $day_end_epoch) + ->setPastDirection('left'); foreach ($all_day_events as $item) { if ($counter < $max_daily) { $list->addEvent($item); diff --git a/src/view/phui/calendar/PHUICalendarWeekView.php b/src/view/phui/calendar/PHUICalendarWeekView.php --- a/src/view/phui/calendar/PHUICalendarWeekView.php +++ b/src/view/phui/calendar/PHUICalendarWeekView.php @@ -4,7 +4,7 @@ private $events; private $dateTime; private $weekLength = 7; - private $view = 'day'; + private $tipDirection = 'E'; public function setEvents($events) { $this->events = $events; @@ -28,13 +28,13 @@ return $this; } - public function setView($view) { - $this->view = $view; + public function setTipDirection($direction) { + $this->tipDirection = $direction; return $this; } - private function getView() { - return $this->view; + private function getTipDirection() { + return $this->tipDirection; } public function render() { @@ -61,6 +61,8 @@ } $filled_boxes[] = $this->renderSidebarBox( + $box_start, + $box_end, $box_events, $day_box['title']); } @@ -68,13 +70,15 @@ return $filled_boxes; } - private function renderSidebarBox($events, $title) { + private function renderSidebarBox($epoch_start, $epoch_end, $events, $title) { $widget = id(new PHUICalendarWidgetView()) ->addClass('calendar-day-view-sidebar'); $list = id(new PHUICalendarListView()) ->setUser($this->getViewer()) - ->setView($this->getView()); + ->setEpochRange($epoch_start, $epoch_end) + ->setTipDirection($this->getTipDirection()) + ->setPastDirection('up'); if (count($events) == 0) { $list->showBlankState(true);