@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
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at upstream/main 109 lines 2.8 kB view raw
1<?php 2 3final class NuanceItemManageController extends NuanceController { 4 5 public function handleRequest(AphrontRequest $request) { 6 $viewer = $this->getViewer(); 7 $id = $request->getURIData('id'); 8 9 $item = id(new NuanceItemQuery()) 10 ->setViewer($viewer) 11 ->withIDs(array($id)) 12 ->executeOne(); 13 if (!$item) { 14 return new Aphront404Response(); 15 } 16 17 $title = pht('Item %d', $item->getID()); 18 19 $crumbs = $this->buildApplicationCrumbs(); 20 $crumbs->addTextCrumb( 21 pht('Items'), 22 $this->getApplicationURI('item/')); 23 $crumbs->addTextCrumb( 24 $title, 25 $item->getURI()); 26 $crumbs->addTextCrumb(pht('Manage')); 27 $crumbs->setBorder(true); 28 29 $properties = $this->buildPropertyView($item); 30 $curtain = $this->buildCurtain($item); 31 32 $header = id(new PHUIHeaderView()) 33 ->setHeader($title); 34 35 $timeline = $this->buildTransactionTimeline( 36 $item, 37 new NuanceItemTransactionQuery()); 38 $timeline->setShouldTerminate(true); 39 40 $view = id(new PHUITwoColumnView()) 41 ->setHeader($header) 42 ->setCurtain($curtain) 43 ->addPropertySection(pht('Details'), $properties) 44 ->setMainColumn($timeline); 45 46 return $this->newPage() 47 ->setTitle($title) 48 ->setCrumbs($crumbs) 49 ->appendChild($view); 50 } 51 52 private function buildPropertyView(NuanceItem $item) { 53 $viewer = $this->getViewer(); 54 55 $properties = id(new PHUIPropertyListView()) 56 ->setUser($viewer); 57 58 $properties->addProperty( 59 pht('Date Created'), 60 phabricator_datetime($item->getDateCreated(), $viewer)); 61 62 $requestor_phid = $item->getRequestorPHID(); 63 if ($requestor_phid) { 64 $requestor_view = $viewer->renderHandle($requestor_phid); 65 } else { 66 $requestor_view = phutil_tag('em', array(), pht('None')); 67 } 68 $properties->addProperty(pht('Requestor'), $requestor_view); 69 70 $properties->addProperty( 71 pht('Source'), 72 $viewer->renderHandle($item->getSourcePHID())); 73 74 $queue_phid = $item->getQueuePHID(); 75 if ($queue_phid) { 76 $queue_view = $viewer->renderHandle($queue_phid); 77 } else { 78 $queue_view = phutil_tag('em', array(), pht('None')); 79 } 80 $properties->addProperty(pht('Queue'), $queue_view); 81 82 $source = $item->getSource(); 83 $definition = $source->getDefinition(); 84 85 $definition->renderItemEditProperties( 86 $viewer, 87 $item, 88 $properties); 89 90 return $properties; 91 } 92 93 private function buildCurtain(NuanceItem $item) { 94 $viewer = $this->getViewer(); 95 $id = $item->getID(); 96 97 $curtain = $this->newCurtainView($item); 98 99 $curtain->addAction( 100 id(new PhabricatorActionView()) 101 ->setName(pht('View Item')) 102 ->setIcon('fa-eye') 103 ->setHref($item->getURI())); 104 105 return $curtain; 106 } 107 108 109}