@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 81 lines 2.1 kB view raw
1<?php 2 3final class PhabricatorDaemonBulkJobViewController 4 extends PhabricatorDaemonBulkJobController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $this->getViewer(); 8 9 $job = id(new PhabricatorWorkerBulkJobQuery()) 10 ->setViewer($viewer) 11 ->withIDs(array($request->getURIData('id'))) 12 ->executeOne(); 13 if (!$job) { 14 return new Aphront404Response(); 15 } 16 17 $title = pht('Bulk Job %d', $job->getID()); 18 19 $crumbs = $this->buildApplicationCrumbs(); 20 $crumbs->addTextCrumb($title); 21 $crumbs->setBorder(true); 22 23 $properties = $this->renderProperties($job); 24 $curtain = $this->buildCurtainView($job); 25 26 $box = id(new PHUIObjectBoxView()) 27 ->setHeaderText(pht('Details')) 28 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 29 ->addPropertyList($properties); 30 31 $timeline = $this->buildTransactionTimeline( 32 $job, 33 new PhabricatorWorkerBulkJobTransactionQuery()); 34 $timeline->setShouldTerminate(true); 35 36 $header = id(new PHUIHeaderView()) 37 ->setHeader($title) 38 ->setHeaderIcon('fa-hourglass'); 39 40 $view = id(new PHUITwoColumnView()) 41 ->setHeader($header) 42 ->setCurtain($curtain) 43 ->setMainColumn(array( 44 $box, 45 $timeline, 46 )); 47 48 return $this->newPage() 49 ->setTitle($title) 50 ->setCrumbs($crumbs) 51 ->appendChild($view); 52 } 53 54 private function renderProperties(PhabricatorWorkerBulkJob $job) { 55 $viewer = $this->getViewer(); 56 57 $view = id(new PHUIPropertyListView()) 58 ->setUser($viewer) 59 ->setObject($job); 60 61 $view->addProperty( 62 pht('Author'), 63 $viewer->renderHandle($job->getAuthorPHID())); 64 65 $view->addProperty(pht('Status'), $job->getStatusName()); 66 67 return $view; 68 } 69 70 private function buildCurtainView(PhabricatorWorkerBulkJob $job) { 71 $viewer = $this->getViewer(); 72 $curtain = $this->newCurtainView($job); 73 74 foreach ($job->getCurtainActions($viewer) as $action) { 75 $curtain->addAction($action); 76 } 77 78 return $curtain; 79 } 80 81}