getDiffProperty('arc:lint-excuse'); $excuse = phutil_escape_html($excuse); $excuse = nl2br($excuse); $excuse_markup = ''; if (strlen($excuse)) { $excuse_markup = '

Explanation for failure(s):

'. ''.$excuse.''; } return $excuse_markup; } public function renderValueForRevisionView() { $diff = $this->getDiff(); $path_changesets = mpull($diff->loadChangesets(), 'getId', 'getFilename'); $lstar = DifferentialRevisionUpdateHistoryView::renderDiffLintStar($diff); $lmsg = DifferentialRevisionUpdateHistoryView::getDiffLintMessage($diff); $ldata = $this->getDiffProperty('arc:lint'); $ltail = null; $have_details = false; if ($ldata) { $ldata = igroup($ldata, 'path'); $lint_messages = array(); foreach ($ldata as $path => $messages) { $message_markup = array(); foreach ($messages as $message) { $path = idx($message, 'path'); $line = idx($message, 'line'); $code = idx($message, 'code'); $severity = idx($message, 'severity'); $name = idx($message, 'name'); $description = idx($message, 'description'); $line_link = phutil_escape_html($line); if (isset($path_changesets[$path])) { // TODO: Create standalone links for large diffs. Logic is in // DifferentialDiffTableOfContentsView::renderChangesetLink(). $line_link = phutil_render_tag( 'a', array( 'href' => '#C'.$path_changesets[$path].'NL'.$line, ), $line_link); } if ($description != '') { $have_details = true; } $message_markup[] = hsprintf( '
  • '. '%s (%s) %s '. 'at line '.$line_link. javelin_render_tag( 'div', array( 'sigil' => 'differential-field-detail', 'style' => 'display: none;', ), '%s'). '
  • ', $severity, ucwords($severity), $code, $name, $description); } $lint_messages[] = '
  • '. 'Lint for '.phutil_escape_html($path).''. ''. '
  • '; } $lexcuse = $this->getLintExcuse(); $ltail = '
    '. $lexcuse. ''. '
    '; } Javelin::initBehavior('differential-show-field-details'); if ($have_details) { $lmsg .= ' - '.javelin_render_tag( 'a', array( 'href' => '#details', 'sigil' => 'differential-show-field-details', ), 'Details'); } return $lstar.' '.$lmsg.$ltail; } }