@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.

In Task Graphs, provide a parent/child hint and fix weird strikethrough

Summary:
Fixes T11386. Ref T4788.

- Apparently fix weird strikethrough effect? Spooky!
- Provide a little icon hint in the left column about which tasks are direct parents/children, vs just reachable somehow. I don't think this is super useful/important, but seems maybe nice?

Test Plan: {F1740779}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T4788, T11386

Differential Revision: https://secure.phabricator.com/D16342

+63 -6
+3 -3
resources/celerity/map.php
··· 7 7 */ 8 8 return array( 9 9 'names' => array( 10 - 'core.pkg.css' => 'efc0f11c', 10 + 'core.pkg.css' => '8b87d014', 11 11 'core.pkg.js' => '13c7e56a', 12 12 'darkconsole.pkg.js' => 'e7393ebb', 13 13 'differential.pkg.css' => '3fb7f532', ··· 25 25 'rsrc/css/aphront/notification.css' => '3f6c89c9', 26 26 'rsrc/css/aphront/panel-view.css' => '8427b78d', 27 27 'rsrc/css/aphront/phabricator-nav-view.css' => 'ac79a758', 28 - 'rsrc/css/aphront/table-view.css' => '8df59783', 28 + 'rsrc/css/aphront/table-view.css' => '832656fd', 29 29 'rsrc/css/aphront/tokenizer.css' => '056da01b', 30 30 'rsrc/css/aphront/tooltip.css' => '1a07aea8', 31 31 'rsrc/css/aphront/typeahead-browse.css' => '8904346a', ··· 537 537 'aphront-list-filter-view-css' => '5d6f0526', 538 538 'aphront-multi-column-view-css' => 'fd18389d', 539 539 'aphront-panel-view-css' => '8427b78d', 540 - 'aphront-table-view-css' => '8df59783', 540 + 'aphront-table-view-css' => '832656fd', 541 541 'aphront-tokenizer-control-css' => '056da01b', 542 542 'aphront-tooltip-css' => '1a07aea8', 543 543 'aphront-typeahead-control-css' => 'd4f16145',
+54 -1
src/infrastructure/graph/ManiphestTaskGraph.php
··· 3 3 final class ManiphestTaskGraph 4 4 extends PhabricatorObjectGraph { 5 5 6 + private $seedMaps = array(); 7 + 6 8 protected function getEdgeTypes() { 7 9 return array( 8 10 ManiphestTaskDependedOnByTaskEdgeType::EDGECONST, ··· 57 59 $object->getTitle()); 58 60 59 61 $link = array( 60 - $object->getMonogram(), 62 + phutil_tag( 63 + 'span', 64 + array( 65 + 'class' => 'object-name', 66 + ), 67 + $object->getMonogram()), 61 68 ' ', 62 69 $link, 63 70 ); ··· 67 74 $link = $viewer->renderHandle($phid); 68 75 } 69 76 77 + 78 + 79 + if ($this->isParentTask($object)) { 80 + $marker = 'fa-chevron-circle-up bluegrey'; 81 + $marker_tip = pht('Direct Parent'); 82 + } else if ($this->isChildTask($object)) { 83 + $marker = 'fa-chevron-circle-down bluegrey'; 84 + $marker_tip = pht('Direct Subtask'); 85 + } else { 86 + $marker = null; 87 + } 88 + 89 + if ($marker) { 90 + $marker = id(new PHUIIconView()) 91 + ->setIcon($marker) 92 + ->addSigil('has-tooltip') 93 + ->setMetadata( 94 + array( 95 + 'tip' => $marker_tip, 96 + 'align' => 'E', 97 + )); 98 + } 99 + 70 100 $link = AphrontTableView::renderSingleDisplayLine($link); 71 101 72 102 return array( 103 + $marker, 73 104 $trace, 74 105 $status, 75 106 $assigned, ··· 82 113 ->setHeaders( 83 114 array( 84 115 null, 116 + null, 85 117 pht('Status'), 86 118 pht('Assigned'), 87 119 pht('Task'), 88 120 )) 89 121 ->setColumnClasses( 90 122 array( 123 + 'nudgeright', 91 124 'threads', 92 125 'graph-status', 93 126 null, ··· 95 128 )); 96 129 } 97 130 131 + private function isParentTask(ManiphestTask $task) { 132 + $map = $this->getSeedMap(ManiphestTaskDependedOnByTaskEdgeType::EDGECONST); 133 + return isset($map[$task->getPHID()]); 134 + } 135 + 136 + private function isChildTask(ManiphestTask $task) { 137 + $map = $this->getSeedMap(ManiphestTaskDependsOnTaskEdgeType::EDGECONST); 138 + return isset($map[$task->getPHID()]); 139 + } 140 + 141 + private function getSeedMap($type) { 142 + if (!isset($this->seedMaps[$type])) { 143 + $maps = $this->getEdges($type); 144 + $phids = idx($maps, $this->getSeedPHID(), array()); 145 + $phids = array_fuse($phids); 146 + $this->seedMaps[$type] = $phids; 147 + } 148 + 149 + return $this->seedMaps[$type]; 150 + } 98 151 }
+4
src/infrastructure/graph/PhabricatorObjectGraph.php
··· 50 50 )); 51 51 } 52 52 53 + final public function getSeedPHID() { 54 + return $this->seedPHID; 55 + } 56 + 53 57 final public function isEmpty() { 54 58 return (count($this->getNodes()) <= 2); 55 59 }
+2 -2
webroot/rsrc/css/aphront/table-view.css
··· 228 228 position: static; 229 229 } 230 230 231 - .aphront-table-view tr.closed td.object-link, 232 - .aphront-table-view tr.alt-closed td.object-link { 231 + .aphront-table-view tr.closed td.object-link .object-name, 232 + .aphront-table-view tr.alt-closed td.object-link .object-name { 233 233 text-decoration: line-through; 234 234 color: rgba({$alphablack}, 0.5); 235 235 }