@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
at upstream/main 111 lines 2.7 kB view raw
1<?php 2 3final class DiffusionDocumentRenderingEngine 4 extends PhabricatorDocumentRenderingEngine { 5 6 private $diffusionRequest; 7 8 public function setDiffusionRequest(DiffusionRequest $drequest) { 9 $this->diffusionRequest = $drequest; 10 return $this; 11 } 12 13 public function getDiffusionRequest() { 14 return $this->diffusionRequest; 15 } 16 17 protected function newRefViewURI( 18 PhabricatorDocumentRef $ref, 19 PhabricatorDocumentEngine $engine) { 20 21 $file = $ref->getFile(); 22 $engine_key = $engine->getDocumentEngineKey(); 23 $drequest = $this->getDiffusionRequest(); 24 25 return (string)$drequest->generateURI( 26 array( 27 'action' => 'browse', 28 'stable' => true, 29 'params' => array( 30 'as' => $engine_key, 31 ), 32 )); 33 } 34 35 protected function newRefRenderURI( 36 PhabricatorDocumentRef $ref, 37 PhabricatorDocumentEngine $engine) { 38 39 $engine_key = $engine->getDocumentEngineKey(); 40 41 $file = $ref->getFile(); 42 $file_phid = $file->getPHID(); 43 44 $drequest = $this->getDiffusionRequest(); 45 46 return (string)$drequest->generateURI( 47 array( 48 'action' => 'document', 49 'stable' => true, 50 'params' => array( 51 'as' => $engine_key, 52 'filePHID' => $file_phid, 53 ), 54 )); 55 } 56 57 protected function getSelectedDocumentEngineKey() { 58 return $this->getRequest()->getStr('as'); 59 } 60 61 protected function getSelectedLineRange() { 62 $range = $this->getDiffusionRequest()->getLine(); 63 return AphrontRequest::parseURILineRange($range, 1000); 64 } 65 66 protected function addApplicationCrumbs( 67 PHUICrumbsView $crumbs, 68 ?PhabricatorDocumentRef $ref = null) { 69 return; 70 } 71 72 protected function willStageRef(PhabricatorDocumentRef $ref) { 73 $drequest = $this->getDiffusionRequest(); 74 75 $blame_uri = (string)$drequest->generateURI( 76 array( 77 'action' => 'blame', 78 'stable' => true, 79 )); 80 81 $ref->setBlameURI($blame_uri); 82 } 83 84 protected function willRenderRef(PhabricatorDocumentRef $ref) { 85 $drequest = $this->getDiffusionRequest(); 86 87 $ref->setSymbolMetadata($this->getSymbolMetadata()); 88 89 $coverage = $drequest->loadCoverage(); 90 if (phutil_nonempty_string($coverage)) { 91 $ref->addCoverage($coverage); 92 } 93 } 94 95 private function getSymbolMetadata() { 96 $drequest = $this->getDiffusionRequest(); 97 98 $repo = $drequest->getRepository(); 99 $symbol_repos = nonempty($repo->getSymbolSources(), array()); 100 $symbol_repos[] = $repo->getPHID(); 101 102 $lang = last(explode('.', $drequest->getPath())); 103 104 return array( 105 'repositories' => $symbol_repos, 106 'lang' => $lang, 107 'path' => $drequest->getPath(), 108 ); 109 } 110 111}