[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

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

   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  }


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