[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorProjectEditMainController 4 extends PhabricatorProjectController { 5 6 private $id; 7 8 public function willProcessRequest(array $data) { 9 $this->id = idx($data, 'id'); 10 } 11 12 public function processRequest() { 13 $request = $this->getRequest(); 14 $viewer = $request->getUser(); 15 16 $project = id(new PhabricatorProjectQuery()) 17 ->setViewer($viewer) 18 ->withIDs(array($this->id)) 19 ->needImages(true) 20 ->executeOne(); 21 if (!$project) { 22 return new Aphront404Response(); 23 } 24 25 $header = id(new PHUIHeaderView()) 26 ->setHeader(pht('Edit %s', $project->getName())) 27 ->setUser($viewer) 28 ->setPolicyObject($project) 29 ->setImage($project->getProfileImageURI()); 30 31 if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) { 32 $header->setStatus('fa-check', 'bluegrey', pht('Active')); 33 } else { 34 $header->setStatus('fa-ban', 'dark', pht('Archived')); 35 } 36 37 $actions = $this->buildActionListView($project); 38 $properties = $this->buildPropertyListView($project, $actions); 39 40 $crumbs = $this->buildApplicationCrumbs(); 41 $crumbs->addTextCrumb( 42 $project->getName(), 43 $this->getApplicationURI('view/'.$project->getID().'/')); 44 $crumbs->addTextCrumb(pht('Edit')); 45 $crumbs->setActionList($actions); 46 47 $object_box = id(new PHUIObjectBoxView()) 48 ->setHeader($header) 49 ->addPropertyList($properties); 50 51 $xactions = id(new PhabricatorProjectTransactionQuery()) 52 ->setViewer($viewer) 53 ->withObjectPHIDs(array($project->getPHID())) 54 ->execute(); 55 56 $timeline = id(new PhabricatorApplicationTransactionView()) 57 ->setUser($viewer) 58 ->setObjectPHID($project->getPHID()) 59 ->setShouldTerminate(true) 60 ->setTransactions($xactions); 61 62 return $this->buildApplicationPage( 63 array( 64 $crumbs, 65 $object_box, 66 $timeline, 67 ), 68 array( 69 'title' => $project->getName(), 70 )); 71 } 72 73 private function buildActionListView(PhabricatorProject $project) { 74 $request = $this->getRequest(); 75 $viewer = $request->getUser(); 76 77 $id = $project->getID(); 78 79 $view = id(new PhabricatorActionListView()) 80 ->setUser($viewer) 81 ->setObjectURI($request->getRequestURI()); 82 83 $can_edit = PhabricatorPolicyFilter::hasCapability( 84 $viewer, 85 $project, 86 PhabricatorPolicyCapability::CAN_EDIT); 87 88 $view->addAction( 89 id(new PhabricatorActionView()) 90 ->setName(pht('Edit Details')) 91 ->setIcon('fa-pencil') 92 ->setHref($this->getApplicationURI("details/{$id}/")) 93 ->setDisabled(!$can_edit) 94 ->setWorkflow(!$can_edit)); 95 96 $view->addAction( 97 id(new PhabricatorActionView()) 98 ->setName(pht('Edit Picture')) 99 ->setIcon('fa-picture-o') 100 ->setHref($this->getApplicationURI("picture/{$id}/")) 101 ->setDisabled(!$can_edit) 102 ->setWorkflow(!$can_edit)); 103 104 if ($project->isArchived()) { 105 $view->addAction( 106 id(new PhabricatorActionView()) 107 ->setName(pht('Unarchive Project')) 108 ->setIcon('fa-check') 109 ->setHref($this->getApplicationURI("archive/{$id}/")) 110 ->setDisabled(!$can_edit) 111 ->setWorkflow(true)); 112 } else { 113 $view->addAction( 114 id(new PhabricatorActionView()) 115 ->setName(pht('Archive Project')) 116 ->setIcon('fa-ban') 117 ->setHref($this->getApplicationURI("archive/{$id}/")) 118 ->setDisabled(!$can_edit) 119 ->setWorkflow(true)); 120 } 121 122 return $view; 123 } 124 125 private function buildPropertyListView( 126 PhabricatorProject $project, 127 PhabricatorActionListView $actions) { 128 $request = $this->getRequest(); 129 $viewer = $request->getUser(); 130 131 $view = id(new PHUIPropertyListView()) 132 ->setUser($viewer) 133 ->setObject($project) 134 ->setActionList($actions); 135 136 $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions( 137 $viewer, 138 $project); 139 140 $this->loadHandles(array($project->getPHID())); 141 142 $view->addProperty( 143 pht('Looks Like'), 144 $this->getHandle($project->getPHID())->renderTag()); 145 146 $view->addProperty( 147 pht('Visible To'), 148 $descriptions[PhabricatorPolicyCapability::CAN_VIEW]); 149 150 $view->addProperty( 151 pht('Editable By'), 152 $descriptions[PhabricatorPolicyCapability::CAN_EDIT]); 153 154 $view->addProperty( 155 pht('Joinable By'), 156 $descriptions[PhabricatorPolicyCapability::CAN_JOIN]); 157 158 return $view; 159 } 160 161 162 }
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 |