private function buildRecurringSection(PhabricatorCalendarEvent $event) { $viewer = $this->getViewer(); if (!$event->getIsRecurring()) { return null; } $properties = id(new PHUIPropertyListView())->setUser($viewer); $is_parent = $event->isParentEvent(); if ($is_parent) { $parent_link = null; } else { $parent = $event->getParentEvent(); $parent_link = $viewer->renderHandle($parent->getPHID())->render(); } $rule = $event->getFrequencyRule(); switch ($rule) { case PhabricatorCalendarEvent::FREQUENCY_DAILY: if ($is_parent) { $message = pht('This event repeats every day.'); } else { $message = pht('This event is an instance of %s, and repeats every day.', $parent_link); } break; case PhabricatorCalendarEvent::FREQUENCY_WEEKLY: if ($is_parent) { $message = pht('This event repeats every week.'); } else { $message = pht('This event is an instance of %s, and repeats every week.', $parent_link); } break; case PhabricatorCalendarEvent::FREQUENCY_MONTHLY: if ($is_parent) { $message = pht('This event repeats every month.'); } else { $message = pht('This event is an instance of %s, and repeats every month.', $parent_link); } break; case PhabricatorCalendarEvent::FREQUENCY_YEARLY: if ($is_parent) { $message = pht('This event repeats every year.'); } else { $message = pht('This event is an instance of %s, and repeats every year.', $parent_link); } break; } $properties->addProperty(pht('Event Series'), $message); return $properties; }
private function buildPropertySection(PhabricatorCalendarEvent $event) { $viewer = $this->getViewer(); $properties = id(new PHUIPropertyListView())->setUser($viewer); if ($event->getIsAllDay()) { $date_start = phabricator_date($event->getDateFrom(), $viewer); $date_end = phabricator_date($event->getDateTo(), $viewer); if ($date_start == $date_end) { $properties->addProperty(pht('Time'), phabricator_date($event->getDateFrom(), $viewer)); } else { $properties->addProperty(pht('Starts'), phabricator_date($event->getDateFrom(), $viewer)); $properties->addProperty(pht('Ends'), phabricator_date($event->getDateTo(), $viewer)); } } else { $properties->addProperty(pht('Starts'), phabricator_datetime($event->getDateFrom(), $viewer)); $properties->addProperty(pht('Ends'), phabricator_datetime($event->getDateTo(), $viewer)); } if ($event->getIsRecurring()) { $properties->addProperty(pht('Recurs'), ucwords(idx($event->getRecurrenceFrequency(), 'rule'))); if ($event->getRecurrenceEndDate()) { $properties->addProperty(pht('Recurrence Ends'), phabricator_datetime($event->getRecurrenceEndDate(), $viewer)); } if ($event->getInstanceOfEventPHID()) { $properties->addProperty(pht('Recurrence of Event'), pht('%s of %s', $event->getSequenceIndex(), $viewer->renderHandle($event->getInstanceOfEventPHID())->render())); } } $properties->addProperty(pht('Host'), $viewer->renderHandle($event->getUserPHID())); $invitees = $event->getInvitees(); foreach ($invitees as $key => $invitee) { if ($invitee->isUninvited()) { unset($invitees[$key]); } } if ($invitees) { $invitee_list = new PHUIStatusListView(); $icon_invited = PHUIStatusItemView::ICON_OPEN; $icon_attending = PHUIStatusItemView::ICON_ACCEPT; $icon_declined = PHUIStatusItemView::ICON_REJECT; $status_invited = PhabricatorCalendarEventInvitee::STATUS_INVITED; $status_attending = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; $status_declined = PhabricatorCalendarEventInvitee::STATUS_DECLINED; $icon_map = array($status_invited => $icon_invited, $status_attending => $icon_attending, $status_declined => $icon_declined); $icon_color_map = array($status_invited => null, $status_attending => 'green', $status_declined => 'red'); foreach ($invitees as $invitee) { $item = new PHUIStatusItemView(); $invitee_phid = $invitee->getInviteePHID(); $status = $invitee->getStatus(); $target = $viewer->renderHandle($invitee_phid); $icon = $icon_map[$status]; $icon_color = $icon_color_map[$status]; $item->setIcon($icon, $icon_color)->setTarget($target); $invitee_list->addItem($item); } } else { $invitee_list = phutil_tag('em', array(), pht('None')); } $properties->addProperty(pht('Invitees'), $invitee_list); $properties->invokeWillRenderEvent(); $properties->addProperty(pht('Icon'), id(new PhabricatorCalendarIconSet())->getIconLabel($event->getIcon())); return $properties; }