[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class NuanceSourceViewController extends NuanceController { 4 5 private $sourceID; 6 7 public function setSourceID($source_id) { 8 $this->sourceID = $source_id; 9 return $this; 10 } 11 public function getSourceID() { 12 return $this->sourceID; 13 } 14 15 public function willProcessRequest(array $data) { 16 $this->setSourceID($data['id']); 17 } 18 19 public function processRequest() { 20 $request = $this->getRequest(); 21 $viewer = $request->getUser(); 22 23 $source_id = $this->getSourceID(); 24 $source = id(new NuanceSourceQuery()) 25 ->setViewer($viewer) 26 ->withIDs(array($source_id)) 27 ->executeOne(); 28 29 if (!$source) { 30 return new Aphront404Response(); 31 } 32 33 $source_phid = $source->getPHID(); 34 $xactions = id(new NuanceSourceTransactionQuery()) 35 ->setViewer($viewer) 36 ->withObjectPHIDs(array($source_phid)) 37 ->execute(); 38 39 $engine = id(new PhabricatorMarkupEngine()) 40 ->setViewer($viewer); 41 42 $timeline = id(new PhabricatorApplicationTransactionView()) 43 ->setUser($viewer) 44 ->setObjectPHID($source_phid) 45 ->setMarkupEngine($engine) 46 ->setTransactions($xactions); 47 48 $title = pht('%s', $source->getName()); 49 $crumbs = $this->buildApplicationCrumbs(); 50 $crumbs->addTextCrumb($title); 51 52 $header = $this->buildHeaderView($source); 53 $actions = $this->buildActionView($source); 54 $properties = $this->buildPropertyView($source, $actions); 55 56 $box = id(new PHUIObjectBoxView()) 57 ->setHeader($header) 58 ->addPropertyList($properties); 59 60 return $this->buildApplicationPage( 61 array( 62 $crumbs, 63 $box, 64 $timeline, 65 ), 66 array( 67 'title' => $title, 68 )); 69 70 } 71 72 73 private function buildHeaderView(NuanceSource $source) { 74 $viewer = $this->getRequest()->getUser(); 75 76 $header = id(new PHUIHeaderView()) 77 ->setUser($viewer) 78 ->setHeader($source->getName()) 79 ->setPolicyObject($source); 80 81 return $header; 82 } 83 84 private function buildActionView(NuanceSource $source) { 85 $viewer = $this->getRequest()->getUser(); 86 $id = $source->getID(); 87 88 $actions = id(new PhabricatorActionListView()) 89 ->setObjectURI($source->getURI()) 90 ->setUser($viewer); 91 92 $can_edit = PhabricatorPolicyFilter::hasCapability( 93 $viewer, 94 $source, 95 PhabricatorPolicyCapability::CAN_EDIT); 96 97 $actions->addAction( 98 id(new PhabricatorActionView()) 99 ->setName(pht('Edit Source')) 100 ->setIcon('fa-pencil') 101 ->setHref($this->getApplicationURI("source/edit/{$id}/")) 102 ->setDisabled(!$can_edit) 103 ->setWorkflow(!$can_edit)); 104 105 return $actions; 106 } 107 108 private function buildPropertyView( 109 NuanceSource $source, 110 PhabricatorActionListView $actions) { 111 $viewer = $this->getRequest()->getUser(); 112 113 $properties = id(new PHUIPropertyListView()) 114 ->setUser($viewer) 115 ->setObject($source) 116 ->setActionList($actions); 117 118 $definition = NuanceSourceDefinition::getDefinitionForSource($source); 119 $properties->addProperty( 120 pht('Source Type'), 121 $definition->getName()); 122 123 $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( 124 $viewer, 125 $source); 126 127 $properties->addProperty( 128 pht('Editable By'), 129 $descriptions[PhabricatorPolicyCapability::CAN_EDIT]); 130 131 return $properties; 132 } 133 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |