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