@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 recaptime-dev/main 82 lines 2.0 kB view raw
1<?php 2 3final class AlmanacNetworkViewController 4 extends AlmanacNetworkController { 5 6 public function shouldAllowPublic() { 7 return true; 8 } 9 10 public function handleRequest(AphrontRequest $request) { 11 $viewer = $request->getViewer(); 12 13 $id = $request->getURIData('id'); 14 $network = id(new AlmanacNetworkQuery()) 15 ->setViewer($viewer) 16 ->withIDs(array($id)) 17 ->executeOne(); 18 if (!$network) { 19 return new Aphront404Response(); 20 } 21 22 $title = pht('Network %s', $network->getName()); 23 24 $curtain = $this->buildCurtain($network); 25 26 $header = id(new PHUIHeaderView()) 27 ->setUser($viewer) 28 ->setHeader($network->getName()) 29 ->setHeaderIcon('fa-globe') 30 ->setPolicyObject($network); 31 32 $crumbs = $this->buildApplicationCrumbs(); 33 $crumbs->addTextCrumb($network->getName()); 34 $crumbs->setBorder(true); 35 36 $timeline = $this->buildTransactionTimeline( 37 $network, 38 new AlmanacNetworkTransactionQuery()); 39 $timeline->setShouldTerminate(true); 40 41 $view = id(new PHUITwoColumnView()) 42 ->setHeader($header) 43 ->setCurtain($curtain) 44 ->setMainColumn(array( 45 $timeline, 46 )); 47 48 return $this->newPage() 49 ->setTitle($title) 50 ->setCrumbs($crumbs) 51 ->appendChild( 52 array( 53 $view, 54 )); 55 } 56 57 58 private function buildCurtain(AlmanacNetwork $network) { 59 $viewer = $this->getViewer(); 60 61 $can_edit = PhabricatorPolicyFilter::hasCapability( 62 $viewer, 63 $network, 64 PhabricatorPolicyCapability::CAN_EDIT); 65 66 $id = $network->getID(); 67 $edit_uri = $this->getApplicationURI("network/edit/{$id}/"); 68 69 $curtain = $this->newCurtainView($network); 70 71 $curtain->addAction( 72 id(new PhabricatorActionView()) 73 ->setIcon('fa-pencil') 74 ->setName(pht('Edit Network')) 75 ->setHref($edit_uri) 76 ->setWorkflow(!$can_edit) 77 ->setDisabled(!$can_edit)); 78 79 return $curtain; 80 } 81 82}