groups[$name])) { $this->groups[$name] = $items; } else { $this->groups[$name] = array_merge($this->groups[$name], $items); } return $this; } public static function renderCommentContent( PhabricatorInlineCommentInterface $inline, PhutilMarkupEngine $engine) { $inline_content = $inline->getContent(); if (strlen($inline_content)) { $inline_cache = $inline->getCache(); if ($inline_cache) { $inline_content = $inline_cache; } else { $inline_content = $engine->markupText($inline_content); if ($inline->getID()) { $inline->setCache($inline_content); $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); $inline->save(); unset($unguarded); } } } return $inline_content; } public function render() { require_celerity_resource('inline-comment-summary-css'); return $this->renderHeader().$this->renderTable(); } private function renderHeader() { return phutil_render_tag( 'div', array( 'class' => 'phabricator-inline-summary', ), 'Inline Comments'); } private function renderTable() { $rows = array(); foreach ($this->groups as $group => $items) { $has_where = false; foreach ($items as $item) { if (!empty($item['where'])) { $has_where = true; break; } } $cols = $has_where ? 3 : 2; $rows[] = ''. ''. phutil_escape_html($group). ''. ''; foreach ($items as $item) { $items = isort($items, 'line'); $line = $item['line']; $length = $item['length']; if ($length) { $lines = $line."\xE2\x80\x93".($line + $length); } else { $lines = $line; } if (isset($item['href'])) { $href = $item['href']; $target = '_blank'; $tail = " \xE2\x86\x97"; } else { $href = '#inline-'.$item['id']; $target = null; $tail = null; } $lines = phutil_escape_html($lines); if ($href) { $lines = phutil_render_tag( 'a', array( 'href' => $href, 'target' => $target, 'class' => 'num', ), $lines.$tail); } $where = idx($item, 'where'); $rows[] = ''. ''.$lines.''. ($has_where ? ''. phutil_escape_html($where). '' : null). ''. '
'. $item['content']. '
'. ''. ''; } } return phutil_render_tag( 'table', array( 'class' => 'phabricator-inline-summary-table', ), implode("\n", $rows)); } }