[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DrydockResourceViewController extends DrydockResourceController { 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 $resource = id(new DrydockResourceQuery()) 16 ->setViewer($viewer) 17 ->withIDs(array($this->id)) 18 ->executeOne(); 19 if (!$resource) { 20 return new Aphront404Response(); 21 } 22 23 $title = 'Resource '.$resource->getID().' '.$resource->getName(); 24 25 $header = id(new PHUIHeaderView()) 26 ->setHeader($title); 27 28 $actions = $this->buildActionListView($resource); 29 $properties = $this->buildPropertyListView($resource, $actions); 30 31 $resource_uri = 'resource/'.$resource->getID().'/'; 32 $resource_uri = $this->getApplicationURI($resource_uri); 33 34 $leases = id(new DrydockLeaseQuery()) 35 ->setViewer($viewer) 36 ->withResourceIDs(array($resource->getID())) 37 ->execute(); 38 39 $lease_list = id(new DrydockLeaseListView()) 40 ->setUser($viewer) 41 ->setLeases($leases) 42 ->render(); 43 $lease_list->setNoDataString(pht('This resource has no leases.')); 44 45 $pager = new AphrontPagerView(); 46 $pager->setURI(new PhutilURI($resource_uri), 'offset'); 47 $pager->setOffset($request->getInt('offset')); 48 49 $logs = id(new DrydockLogQuery()) 50 ->setViewer($viewer) 51 ->withResourceIDs(array($resource->getID())) 52 ->executeWithOffsetPager($pager); 53 54 $log_table = id(new DrydockLogListView()) 55 ->setUser($viewer) 56 ->setLogs($logs) 57 ->render(); 58 $log_table->appendChild($pager); 59 60 $crumbs = $this->buildApplicationCrumbs(); 61 $crumbs->setActionList($actions); 62 $crumbs->addTextCrumb(pht('Resource %d', $resource->getID())); 63 64 $object_box = id(new PHUIObjectBoxView()) 65 ->setHeader($header) 66 ->addPropertyList($properties); 67 68 return $this->buildApplicationPage( 69 array( 70 $crumbs, 71 $object_box, 72 $lease_list, 73 $log_table, 74 ), 75 array( 76 'title' => $title, 77 )); 78 79 } 80 81 private function buildActionListView(DrydockResource $resource) { 82 $view = id(new PhabricatorActionListView()) 83 ->setUser($this->getRequest()->getUser()) 84 ->setObjectURI($this->getRequest()->getRequestURI()) 85 ->setObject($resource); 86 87 $can_close = ($resource->getStatus() == DrydockResourceStatus::STATUS_OPEN); 88 $uri = '/resource/'.$resource->getID().'/close/'; 89 $uri = $this->getApplicationURI($uri); 90 91 $view->addAction( 92 id(new PhabricatorActionView()) 93 ->setHref($uri) 94 ->setName(pht('Close Resource')) 95 ->setIcon('fa-times') 96 ->setWorkflow(true) 97 ->setDisabled(!$can_close)); 98 99 return $view; 100 } 101 102 private function buildPropertyListView( 103 DrydockResource $resource, 104 PhabricatorActionListView $actions) { 105 106 $view = new PHUIPropertyListView(); 107 $view->setActionList($actions); 108 109 $status = $resource->getStatus(); 110 $status = DrydockResourceStatus::getNameForStatus($status); 111 112 $view->addProperty( 113 pht('Status'), 114 $status); 115 116 $view->addProperty( 117 pht('Resource Type'), 118 $resource->getType()); 119 120 // TODO: Load handle. 121 $view->addProperty( 122 pht('Blueprint'), 123 $resource->getBlueprintPHID()); 124 125 $attributes = $resource->getAttributes(); 126 if ($attributes) { 127 $view->addSectionHeader(pht('Attributes')); 128 foreach ($attributes as $key => $value) { 129 $view->addProperty($key, $value); 130 } 131 } 132 133 return $view; 134 } 135 136 }
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 |