@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 106 lines 2.3 kB view raw
1<?php 2 3final class ShellLogView extends AphrontView { 4 5 private $start = 1; 6 private $lines; 7 private $limit; 8 private $highlights = array(); 9 10 public function setStart($start) { 11 $this->start = $start; 12 return $this; 13 } 14 15 public function setLimit($limit) { 16 $this->limit = $limit; 17 return $this; 18 } 19 20 public function setLines(array $lines) { 21 $this->lines = $lines; 22 return $this; 23 } 24 25 public function setHighlights(array $highlights) { 26 $this->highlights = array_fuse($highlights); 27 return $this; 28 } 29 30 public function render() { 31 require_celerity_resource('phabricator-source-code-view-css'); 32 require_celerity_resource('syntax-highlighting-css'); 33 34 Javelin::initBehavior('phabricator-oncopy', array()); 35 36 $line_number = $this->start; 37 38 $rows = array(); 39 foreach ($this->lines as $line) { 40 $hit_limit = $this->limit && 41 ($line_number == $this->limit) && 42 (count($this->lines) != $this->limit); 43 44 if ($hit_limit) { 45 $content_number = ''; 46 $content_line = phutil_tag( 47 'span', 48 array( 49 'class' => 'c', 50 ), 51 pht('...')); 52 } else { 53 $content_number = $line_number; 54 $content_line = $line; 55 } 56 57 $row_attributes = array(); 58 if (isset($this->highlights[$line_number])) { 59 $row_attributes['class'] = 'phabricator-source-highlight'; 60 } 61 62 // TODO: Provide nice links. 63 64 $th = phutil_tag( 65 'th', 66 array( 67 'class' => 'phabricator-source-line', 68 ), 69 $content_number); 70 71 $td = phutil_tag( 72 'td', 73 array('class' => 'phabricator-source-code'), 74 $content_line); 75 76 $rows[] = phutil_tag( 77 'tr', 78 $row_attributes, 79 array($th, $td)); 80 81 if ($hit_limit) { 82 break; 83 } 84 85 $line_number++; 86 } 87 88 $classes = array(); 89 $classes[] = 'phabricator-source-code-view'; 90 $classes[] = 'remarkup-code'; 91 $classes[] = 'PhabricatorMonospaced'; 92 93 return phutil_tag( 94 'div', 95 array( 96 'class' => 'phabricator-source-code-container', 97 ), 98 phutil_tag( 99 'table', 100 array( 101 'class' => implode(' ', $classes), 102 ), 103 phutil_implode_html('', $rows))); 104 } 105 106}