Changeset View
Changeset View
Standalone View
Standalone View
src/infrastructure/diff/view/PHUIDiffInlineCommentDetailView.php
| Show First 20 Lines • Show All 421 Lines • ▼ Show 20 Lines | public function render() { | ||||
| $snippet = id(new PhutilUTF8StringTruncator()) | $snippet = id(new PhutilUTF8StringTruncator()) | ||||
| ->setMaximumGlyphs(96) | ->setMaximumGlyphs(96) | ||||
| ->truncateString($inline->getContent()); | ->truncateString($inline->getContent()); | ||||
| $metadata['snippet'] = pht('%s: %s', $author, $snippet); | $metadata['snippet'] = pht('%s: %s', $author, $snippet); | ||||
| $metadata['menuItems'] = $menu_items; | $metadata['menuItems'] = $menu_items; | ||||
| $suggestion_content = $this->newSuggestionView($inline); | |||||
| $inline_content = phutil_tag( | |||||
| 'div', | |||||
| array( | |||||
| 'class' => 'phabricator-remarkup', | |||||
| ), | |||||
| $content); | |||||
| $markup = javelin_tag( | $markup = javelin_tag( | ||||
| 'div', | 'div', | ||||
| array( | array( | ||||
| 'class' => $classes, | 'class' => $classes, | ||||
| 'sigil' => $sigil, | 'sigil' => $sigil, | ||||
| 'meta' => $metadata, | 'meta' => $metadata, | ||||
| ), | ), | ||||
| array( | array( | ||||
| javelin_tag( | javelin_tag( | ||||
| 'div', | 'div', | ||||
| array( | array( | ||||
| 'class' => 'differential-inline-comment-head grouped', | 'class' => 'differential-inline-comment-head grouped', | ||||
| 'sigil' => 'differential-inline-header', | 'sigil' => 'differential-inline-header', | ||||
| ), | ), | ||||
| array( | array( | ||||
| $group_left, | $group_left, | ||||
| $group_right, | $group_right, | ||||
| )), | )), | ||||
| phutil_tag_div( | phutil_tag( | ||||
| 'differential-inline-comment-content', | 'div', | ||||
| phutil_tag_div('phabricator-remarkup', $content)), | array( | ||||
| 'class' => 'differential-inline-comment-content', | |||||
| ), | |||||
| array( | |||||
| $suggestion_content, | |||||
| $inline_content, | |||||
| )), | |||||
| )); | )); | ||||
| $summary = phutil_tag( | $summary = phutil_tag( | ||||
| 'div', | 'div', | ||||
| array( | array( | ||||
| 'class' => 'differential-inline-summary', | 'class' => 'differential-inline-summary', | ||||
| ), | ), | ||||
| array( | array( | ||||
| Show All 27 Lines | private function canHide() { | ||||
| if (!$inline->supportsHiding()) { | if (!$inline->supportsHiding()) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| return true; | return true; | ||||
| } | } | ||||
| private function newSuggestionView(PhabricatorInlineComment $inline) { | |||||
| $content_state = $inline->getContentState(); | |||||
| if (!$content_state->getContentHasSuggestion()) { | |||||
| return null; | |||||
| } | |||||
| $context = $inline->getInlineContext(); | |||||
| if (!$context) { | |||||
| return null; | |||||
| } | |||||
| $head_lines = $context->getHeadLines(); | |||||
| $head_lines = implode('', $head_lines); | |||||
| $tail_lines = $context->getTailLines(); | |||||
| $tail_lines = implode('', $tail_lines); | |||||
| $old_lines = $context->getBodyLines(); | |||||
| $old_lines = implode('', $old_lines); | |||||
| $old_lines = $head_lines.$old_lines.$tail_lines; | |||||
| if (strlen($old_lines) && !preg_match('/\n\z/', $old_lines)) { | |||||
| $old_lines .= "\n"; | |||||
| } | |||||
| $new_lines = $content_state->getContentSuggestionText(); | |||||
| $new_lines = $head_lines.$new_lines.$tail_lines; | |||||
| if (strlen($new_lines) && !preg_match('/\n\z/', $new_lines)) { | |||||
| $new_lines .= "\n"; | |||||
| } | |||||
| if ($old_lines === $new_lines) { | |||||
| return null; | |||||
| } | |||||
| $raw_diff = id(new PhabricatorDifferenceEngine()) | |||||
| ->generateRawDiffFromFileContent($old_lines, $new_lines); | |||||
| $raw_diff = phutil_split_lines($raw_diff); | |||||
| $raw_diff = array_slice($raw_diff, 3); | |||||
| $raw_diff = implode('', $raw_diff); | |||||
| $view = phutil_tag( | |||||
| 'div', | |||||
| array( | |||||
| 'class' => 'inline-suggestion-view PhabricatorMonospaced', | |||||
| ), | |||||
| $raw_diff); | |||||
| return $view; | |||||
| } | |||||
| } | } | ||||