[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DrydockBlueprintViewController extends DrydockBlueprintController { 4 5 private $id; 6 7 public function willProcessRequest(array $data) { 8 $this->id = $data['id']; 9 } 10 11 public function processRequest() { 12 $request = $this->getRequest(); 13 $viewer = $request->getUser(); 14 15 $blueprint = id(new DrydockBlueprintQuery()) 16 ->setViewer($viewer) 17 ->withIDs(array($this->id)) 18 ->executeOne(); 19 if (!$blueprint) { 20 return new Aphront404Response(); 21 } 22 23 $title = $blueprint->getBlueprintName(); 24 25 $header = id(new PHUIHeaderView()) 26 ->setHeader($title) 27 ->setUser($viewer) 28 ->setPolicyObject($blueprint); 29 30 $actions = $this->buildActionListView($blueprint); 31 $properties = $this->buildPropertyListView($blueprint, $actions); 32 33 $blueprint_uri = 'blueprint/'.$blueprint->getID().'/'; 34 $blueprint_uri = $this->getApplicationURI($blueprint_uri); 35 36 $resources = id(new DrydockResourceQuery()) 37 ->withBlueprintPHIDs(array($blueprint->getPHID())) 38 ->setViewer($viewer) 39 ->execute(); 40 41 $resource_list = id(new DrydockResourceListView()) 42 ->setUser($viewer) 43 ->setResources($resources) 44 ->render(); 45 $resource_list->setNoDataString(pht('This blueprint has no resources.')); 46 47 $pager = new AphrontPagerView(); 48 $pager->setURI(new PhutilURI($blueprint_uri), 'offset'); 49 $pager->setOffset($request->getInt('offset')); 50 51 $crumbs = $this->buildApplicationCrumbs(); 52 $crumbs->setActionList($actions); 53 $crumbs->addTextCrumb(pht('Blueprint %d', $blueprint->getID())); 54 55 $object_box = id(new PHUIObjectBoxView()) 56 ->setHeader($header) 57 ->addPropertyList($properties); 58 59 $xactions = id(new DrydockBlueprintTransactionQuery()) 60 ->setViewer($viewer) 61 ->withObjectPHIDs(array($blueprint->getPHID())) 62 ->execute(); 63 64 $field_list = PhabricatorCustomField::getObjectFields( 65 $blueprint, 66 PhabricatorCustomField::ROLE_VIEW); 67 $field_list 68 ->setViewer($viewer) 69 ->readFieldsFromStorage($blueprint); 70 71 $field_list->appendFieldsToPropertyList( 72 $blueprint, 73 $viewer, 74 $properties); 75 76 $engine = id(new PhabricatorMarkupEngine()) 77 ->setViewer($viewer); 78 79 $timeline = id(new PhabricatorApplicationTransactionView()) 80 ->setUser($viewer) 81 ->setObjectPHID($blueprint->getPHID()) 82 ->setTransactions($xactions) 83 ->setMarkupEngine($engine); 84 85 return $this->buildApplicationPage( 86 array( 87 $crumbs, 88 $object_box, 89 $resource_list, 90 $timeline, 91 ), 92 array( 93 'title' => $title, 94 )); 95 96 } 97 98 private function buildActionListView(DrydockBlueprint $blueprint) { 99 $viewer = $this->getRequest()->getUser(); 100 101 $view = id(new PhabricatorActionListView()) 102 ->setUser($viewer) 103 ->setObjectURI($this->getRequest()->getRequestURI()) 104 ->setObject($blueprint); 105 106 $uri = '/blueprint/edit/'.$blueprint->getID().'/'; 107 $uri = $this->getApplicationURI($uri); 108 109 $can_edit = PhabricatorPolicyFilter::hasCapability( 110 $viewer, 111 $blueprint, 112 PhabricatorPolicyCapability::CAN_EDIT); 113 114 $view->addAction( 115 id(new PhabricatorActionView()) 116 ->setHref($uri) 117 ->setName(pht('Edit Blueprint')) 118 ->setIcon('fa-pencil') 119 ->setWorkflow(!$can_edit) 120 ->setDisabled(!$can_edit)); 121 122 return $view; 123 } 124 125 private function buildPropertyListView( 126 DrydockBlueprint $blueprint, 127 PhabricatorActionListView $actions) { 128 129 $view = new PHUIPropertyListView(); 130 $view->setActionList($actions); 131 132 $view->addProperty( 133 pht('Type'), 134 $blueprint->getImplementation()->getBlueprintName()); 135 136 return $view; 137 } 138 139 }
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 |