[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/almanac/controller/ -> AlmanacNetworkViewController.php (source)

   1  <?php
   2  
   3  final class AlmanacNetworkViewController
   4    extends AlmanacNetworkController {
   5  
   6    public function shouldAllowPublic() {
   7      return true;
   8    }
   9  
  10    public function handleRequest(AphrontRequest $request) {
  11      $viewer = $request->getViewer();
  12  
  13      $id = $request->getURIData('id');
  14  
  15      $network = id(new AlmanacNetworkQuery())
  16        ->setViewer($viewer)
  17        ->withIDs(array($id))
  18        ->executeOne();
  19      if (!$network) {
  20        return new Aphront404Response();
  21      }
  22  
  23      $title = pht('Network %s', $network->getName());
  24  
  25      $property_list = $this->buildPropertyList($network);
  26      $action_list = $this->buildActionList($network);
  27      $property_list->setActionList($action_list);
  28  
  29      $header = id(new PHUIHeaderView())
  30        ->setUser($viewer)
  31        ->setHeader($network->getName())
  32        ->setPolicyObject($network);
  33  
  34      $box = id(new PHUIObjectBoxView())
  35        ->setHeader($header)
  36        ->addPropertyList($property_list);
  37  
  38      $crumbs = $this->buildApplicationCrumbs();
  39      $crumbs->addTextCrumb($network->getName());
  40  
  41      $xactions = id(new AlmanacNetworkTransactionQuery())
  42        ->setViewer($viewer)
  43        ->withObjectPHIDs(array($network->getPHID()))
  44        ->execute();
  45  
  46      $xaction_view = id(new PhabricatorApplicationTransactionView())
  47        ->setUser($viewer)
  48        ->setObjectPHID($network->getPHID())
  49        ->setTransactions($xactions)
  50        ->setShouldTerminate(true);
  51  
  52      return $this->buildApplicationPage(
  53        array(
  54          $crumbs,
  55          $box,
  56          $xaction_view,
  57        ),
  58        array(
  59          'title' => $title,
  60        ));
  61    }
  62  
  63    private function buildPropertyList(AlmanacNetwork $network) {
  64      $viewer = $this->getViewer();
  65  
  66      $properties = id(new PHUIPropertyListView())
  67        ->setUser($viewer);
  68  
  69      return $properties;
  70    }
  71  
  72    private function buildActionList(AlmanacNetwork $network) {
  73      $viewer = $this->getViewer();
  74      $id = $network->getID();
  75  
  76      $can_edit = PhabricatorPolicyFilter::hasCapability(
  77        $viewer,
  78        $network,
  79        PhabricatorPolicyCapability::CAN_EDIT);
  80  
  81      $actions = id(new PhabricatorActionListView())
  82        ->setUser($viewer);
  83  
  84      $actions->addAction(
  85        id(new PhabricatorActionView())
  86          ->setIcon('fa-pencil')
  87          ->setName(pht('Edit Network'))
  88          ->setHref($this->getApplicationURI("network/edit/{$id}/"))
  89          ->setWorkflow(!$can_edit)
  90          ->setDisabled(!$can_edit));
  91  
  92      return $actions;
  93    }
  94  
  95  }


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