[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/drydock/controller/ -> DrydockLeaseViewController.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1