private function renderEvent(AphrontCalendarEventView $event, $epoch_start, $epoch_end) { $user = $this->user; $event_start = $event->getEpochStart(); $event_end = $event->getEpochEnd(); $classes = array(); $when = array(); $classes[] = 'aphront-calendar-event'; if ($event_start < $epoch_start) { $classes[] = 'aphront-calendar-event-continues-before'; $when[] = 'Started ' . phabricator_datetime($event_start, $user); } else { $when[] = 'Starts at ' . phabricator_time($event_start, $user); } if ($event_end > $epoch_end) { $classes[] = 'aphront-calendar-event-continues-after'; $when[] = 'Ends ' . phabricator_datetime($event_end, $user); } else { $when[] = 'Ends at ' . phabricator_time($event_end, $user); } Javelin::initBehavior('phabricator-tooltips'); $info = $event->getName(); if ($event->getDescription()) { $info .= "\n\n" . $event->getDescription(); } $text_div = javelin_render_tag('div', array('sigil' => 'has-tooltip', 'meta' => array('tip' => $info . "\n\n" . implode("\n", $when), 'size' => 240), 'class' => 'aphront-calendar-event-text'), phutil_escape_html(phutil_utf8_shorten($event->getName(), 32))); return javelin_render_tag('div', array('class' => implode(' ', $classes)), $text_div); }