[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorProjectColumnDetailController 4 extends PhabricatorProjectBoardController { 5 6 private $id; 7 private $projectID; 8 9 public function willProcessRequest(array $data) { 10 $this->projectID = $data['projectID']; 11 $this->id = idx($data, 'id'); 12 } 13 14 public function processRequest() { 15 $request = $this->getRequest(); 16 $viewer = $request->getUser(); 17 18 $project = id(new PhabricatorProjectQuery()) 19 ->setViewer($viewer) 20 ->requireCapabilities( 21 array( 22 PhabricatorPolicyCapability::CAN_VIEW, 23 )) 24 ->withIDs(array($this->projectID)) 25 ->executeOne(); 26 27 if (!$project) { 28 return new Aphront404Response(); 29 } 30 $this->setProject($project); 31 32 $column = id(new PhabricatorProjectColumnQuery()) 33 ->setViewer($viewer) 34 ->withIDs(array($this->id)) 35 ->requireCapabilities( 36 array( 37 PhabricatorPolicyCapability::CAN_VIEW, 38 )) 39 ->executeOne(); 40 if (!$column) { 41 return new Aphront404Response(); 42 } 43 44 $xactions = id(new PhabricatorProjectColumnTransactionQuery()) 45 ->setViewer($viewer) 46 ->withObjectPHIDs(array($column->getPHID())) 47 ->execute(); 48 49 $engine = id(new PhabricatorMarkupEngine()) 50 ->setViewer($viewer); 51 52 $timeline = id(new PhabricatorApplicationTransactionView()) 53 ->setUser($viewer) 54 ->setObjectPHID($column->getPHID()) 55 ->setTransactions($xactions); 56 57 $title = pht('%s', $column->getDisplayName()); 58 $crumbs = $this->buildApplicationCrumbs(); 59 $crumbs->addTextCrumb( 60 pht('Board'), 61 $this->getApplicationURI('board/'.$project->getID().'/')); 62 $crumbs->addTextCrumb($title); 63 64 $header = $this->buildHeaderView($column); 65 $actions = $this->buildActionView($column); 66 $properties = $this->buildPropertyView($column, $actions); 67 68 $box = id(new PHUIObjectBoxView()) 69 ->setHeader($header) 70 ->addPropertyList($properties); 71 72 return $this->buildApplicationPage( 73 array( 74 $crumbs, 75 $box, 76 $timeline, 77 ), 78 array( 79 'title' => $title, 80 )); 81 } 82 83 private function buildHeaderView(PhabricatorProjectColumn $column) { 84 $viewer = $this->getRequest()->getUser(); 85 86 $header = id(new PHUIHeaderView()) 87 ->setUser($viewer) 88 ->setHeader($column->getDisplayName()) 89 ->setPolicyObject($column); 90 91 if ($column->isHidden()) { 92 $header->setStatus('fa-ban', 'dark', pht('Hidden')); 93 } 94 95 return $header; 96 } 97 98 private function buildActionView(PhabricatorProjectColumn $column) { 99 $viewer = $this->getRequest()->getUser(); 100 101 $id = $column->getID(); 102 $project_id = $this->getProject()->getID(); 103 $base_uri = '/board/'.$project_id.'/'; 104 105 $actions = id(new PhabricatorActionListView()) 106 ->setObjectURI($this->getApplicationURI($base_uri.'column/'.$id.'/')) 107 ->setUser($viewer); 108 109 $can_edit = PhabricatorPolicyFilter::hasCapability( 110 $viewer, 111 $column, 112 PhabricatorPolicyCapability::CAN_EDIT); 113 114 $actions->addAction( 115 id(new PhabricatorActionView()) 116 ->setName(pht('Edit Column')) 117 ->setIcon('fa-pencil') 118 ->setHref($this->getApplicationURI($base_uri.'edit/'.$id.'/')) 119 ->setDisabled(!$can_edit) 120 ->setWorkflow(!$can_edit)); 121 122 return $actions; 123 } 124 125 private function buildPropertyView( 126 PhabricatorProjectColumn $column, 127 PhabricatorActionListView $actions) { 128 $viewer = $this->getRequest()->getUser(); 129 130 $properties = id(new PHUIPropertyListView()) 131 ->setUser($viewer) 132 ->setObject($column) 133 ->setActionList($actions); 134 135 $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( 136 $viewer, 137 $column); 138 139 $properties->addProperty( 140 pht('Editable By'), 141 $descriptions[PhabricatorPolicyCapability::CAN_EDIT]); 142 143 144 $limit = $column->getPointLimit(); 145 $properties->addProperty( 146 pht('Point Limit'), 147 $limit ? $limit : pht('No Limit')); 148 149 return $properties; 150 } 151 152 }
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 |