[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DrydockLeaseViewController extends DrydockLeaseController { 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 $lease = id(new DrydockLeaseQuery()) 16 ->setViewer($viewer) 17 ->withIDs(array($this->id)) 18 ->executeOne(); 19 if (!$lease) { 20 return new Aphront404Response(); 21 } 22 23 $lease_uri = $this->getApplicationURI('lease/'.$lease->getID().'/'); 24 25 $title = pht('Lease %d', $lease->getID()); 26 27 $header = id(new PHUIHeaderView()) 28 ->setHeader($title); 29 30 $actions = $this->buildActionListView($lease); 31 $properties = $this->buildPropertyListView($lease, $actions); 32 33 $pager = new AphrontPagerView(); 34 $pager->setURI(new PhutilURI($lease_uri), 'offset'); 35 $pager->setOffset($request->getInt('offset')); 36 37 $logs = id(new DrydockLogQuery()) 38 ->setViewer($viewer) 39 ->withLeaseIDs(array($lease->getID())) 40 ->executeWithOffsetPager($pager); 41 42 $log_table = id(new DrydockLogListView()) 43 ->setUser($viewer) 44 ->setLogs($logs) 45 ->render(); 46 $log_table->appendChild($pager); 47 48 $crumbs = $this->buildApplicationCrumbs(); 49 $crumbs->setActionList($actions); 50 $crumbs->addTextCrumb($title, $lease_uri); 51 52 $object_box = id(new PHUIObjectBoxView()) 53 ->setHeader($header) 54 ->addPropertyList($properties); 55 56 return $this->buildApplicationPage( 57 array( 58 $crumbs, 59 $object_box, 60 $log_table, 61 ), 62 array( 63 'title' => $title, 64 )); 65 66 } 67 68 private function buildActionListView(DrydockLease $lease) { 69 $view = id(new PhabricatorActionListView()) 70 ->setUser($this->getRequest()->getUser()) 71 ->setObjectURI($this->getRequest()->getRequestURI()) 72 ->setObject($lease); 73 74 $id = $lease->getID(); 75 76 $can_release = ($lease->getStatus() == DrydockLeaseStatus::STATUS_ACTIVE); 77 78 $view->addAction( 79 id(new PhabricatorActionView()) 80 ->setName(pht('Release Lease')) 81 ->setIcon('fa-times') 82 ->setHref($this->getApplicationURI("/lease/{$id}/release/")) 83 ->setWorkflow(true) 84 ->setDisabled(!$can_release)); 85 86 return $view; 87 } 88 89 private function buildPropertyListView( 90 DrydockLease $lease, 91 PhabricatorActionListView $actions) { 92 93 $view = new PHUIPropertyListView(); 94 $view->setActionList($actions); 95 96 switch ($lease->getStatus()) { 97 case DrydockLeaseStatus::STATUS_ACTIVE: 98 $status = pht('Active'); 99 break; 100 case DrydockLeaseStatus::STATUS_RELEASED: 101 $status = pht('Released'); 102 break; 103 case DrydockLeaseStatus::STATUS_EXPIRED: 104 $status = pht('Expired'); 105 break; 106 case DrydockLeaseStatus::STATUS_PENDING: 107 $status = pht('Pending'); 108 break; 109 case DrydockLeaseStatus::STATUS_BROKEN: 110 $status = pht('Broken'); 111 break; 112 default: 113 $status = pht('Unknown'); 114 break; 115 } 116 117 $view->addProperty( 118 pht('Status'), 119 $status); 120 121 $view->addProperty( 122 pht('Resource Type'), 123 $lease->getResourceType()); 124 125 $view->addProperty( 126 pht('Resource'), 127 $lease->getResourceID()); 128 129 $attributes = $lease->getAttributes(); 130 if ($attributes) { 131 $view->addSectionHeader(pht('Attributes')); 132 foreach ($attributes as $key => $value) { 133 $view->addProperty($key, $value); 134 } 135 } 136 137 return $view; 138 } 139 140 }
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 |