@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 81 lines 2.0 kB view raw
1<?php 2 3final class AlmanacNamespaceViewController 4 extends AlmanacNamespaceController { 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 $namespace = id(new AlmanacNamespaceQuery()) 15 ->setViewer($viewer) 16 ->withIDs(array($id)) 17 ->executeOne(); 18 if (!$namespace) { 19 return new Aphront404Response(); 20 } 21 22 $title = pht('Namespace %s', $namespace->getName()); 23 24 $curtain = $this->buildCurtain($namespace); 25 26 $header = id(new PHUIHeaderView()) 27 ->setUser($viewer) 28 ->setHeader($namespace->getName()) 29 ->setPolicyObject($namespace) 30 ->setHeaderIcon('fa-asterisk'); 31 32 $crumbs = $this->buildApplicationCrumbs(); 33 $crumbs->addTextCrumb($namespace->getName()); 34 $crumbs->setBorder(true); 35 36 $timeline = $this->buildTransactionTimeline( 37 $namespace, 38 new AlmanacNamespaceTransactionQuery()); 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 private function buildCurtain(AlmanacNamespace $namespace) { 58 $viewer = $this->getViewer(); 59 60 $can_edit = PhabricatorPolicyFilter::hasCapability( 61 $viewer, 62 $namespace, 63 PhabricatorPolicyCapability::CAN_EDIT); 64 65 $id = $namespace->getID(); 66 $edit_uri = $this->getApplicationURI("namespace/edit/{$id}/"); 67 68 $curtain = $this->newCurtainView($namespace); 69 70 $curtain->addAction( 71 id(new PhabricatorActionView()) 72 ->setIcon('fa-pencil') 73 ->setName(pht('Edit Namespace')) 74 ->setHref($edit_uri) 75 ->setWorkflow(!$can_edit) 76 ->setDisabled(!$can_edit)); 77 78 return $curtain; 79 } 80 81}