From e291b906419a7b06fe5cc06546f59c7f075055f4 Mon Sep 17 00:00:00 2001 From: lkassianik Date: Thu, 18 Jun 2015 11:02:12 -0700 Subject: [PATCH] Format Calendar list objects Summary: Closes T8050, Format Calendar list objects Test Plan: Open Calendar list, check that new formatting is true to mocks. Reviewers: chad, #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: epriestley, Korvin Maniphest Tasks: T8050 Differential Revision: https://secure.phabricator.com/D13318 --- .../PhabricatorCalendarEventSearchEngine.php | 30 ++++++++++++++----- .../storage/PhabricatorCalendarEvent.php | 23 ++++++++++++++ 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php b/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php index d2898177ad..cac6c39252 100644 --- a/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php +++ b/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php @@ -313,17 +313,31 @@ final class PhabricatorCalendarEventSearchEngine $list = new PHUIObjectItemListView(); foreach ($events as $event) { $from = phabricator_datetime($event->getDateFrom(), $viewer); - $to = phabricator_datetime($event->getDateTo(), $viewer); + $duration = ''; $creator_handle = $handles[$event->getUserPHID()]; + $attendees = array(); + foreach ($event->getInvitees() as $invitee) { + $attendees[] = $invitee->getInviteePHID(); + } + + $attendees = pht( + 'Attending: %s', + $viewer->renderHandleList($attendees) + ->setAsInline(1) + ->render()); + + if (strlen($event->getDuration()) > 0) { + $duration = pht( + 'Duration: %s', + $event->getDuration()); + } + $item = id(new PHUIObjectItemView()) - ->setHeader($event->getName()) - ->setHref($event->getURI()) - ->addByline(pht('Creator: %s', $creator_handle->renderLink())) - ->addAttribute(pht('From %s to %s', $from, $to)) - ->addAttribute(id(new PhutilUTF8StringTruncator()) - ->setMaximumGlyphs(64) - ->truncateString($event->getDescription())); + ->setHeader($viewer->renderHandle($event->getPHID())->render()) + ->addAttribute($attendees) + ->addIcon('none', $from) + ->addIcon('none', $duration); $list->addItem($item); } diff --git a/src/applications/calendar/storage/PhabricatorCalendarEvent.php b/src/applications/calendar/storage/PhabricatorCalendarEvent.php index 2b3fc4bdb8..874c62fc4b 100644 --- a/src/applications/calendar/storage/PhabricatorCalendarEvent.php +++ b/src/applications/calendar/storage/PhabricatorCalendarEvent.php @@ -373,6 +373,29 @@ final class PhabricatorCalendarEvent extends PhabricatorCalendarDAO return false; } + public function getDuration() { + $seconds = $this->dateTo - $this->dateFrom; + $minutes = round($seconds / 60, 1); + $hours = round($minutes / 60, 3); + $days = round($hours / 24, 2); + + $duration = ''; + + if ($days >= 1) { + return pht( + '%s day(s)', + round($days, 1)); + } else if ($hours >= 1) { + return pht( + '%s hour(s)', + round($hours, 1)); + } else if ($minutes >= 1) { + return pht( + '%s minute(s)', + round($minutes, 0)); + } + } + /* -( Markup Interface )--------------------------------------------------- */