[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

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

   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  }


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