[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/nuance/controller/ -> NuanceSourceViewController.php (source)

   1  <?php
   2  
   3  final class NuanceSourceViewController extends NuanceController {
   4  
   5    private $sourceID;
   6  
   7    public function setSourceID($source_id) {
   8      $this->sourceID = $source_id;
   9      return $this;
  10    }
  11    public function getSourceID() {
  12      return $this->sourceID;
  13    }
  14  
  15    public function willProcessRequest(array $data) {
  16      $this->setSourceID($data['id']);
  17    }
  18  
  19    public function processRequest() {
  20      $request = $this->getRequest();
  21      $viewer = $request->getUser();
  22  
  23      $source_id = $this->getSourceID();
  24      $source = id(new NuanceSourceQuery())
  25        ->setViewer($viewer)
  26        ->withIDs(array($source_id))
  27        ->executeOne();
  28  
  29      if (!$source) {
  30        return new Aphront404Response();
  31      }
  32  
  33      $source_phid = $source->getPHID();
  34      $xactions = id(new NuanceSourceTransactionQuery())
  35        ->setViewer($viewer)
  36        ->withObjectPHIDs(array($source_phid))
  37        ->execute();
  38  
  39      $engine = id(new PhabricatorMarkupEngine())
  40        ->setViewer($viewer);
  41  
  42      $timeline = id(new PhabricatorApplicationTransactionView())
  43        ->setUser($viewer)
  44        ->setObjectPHID($source_phid)
  45        ->setMarkupEngine($engine)
  46        ->setTransactions($xactions);
  47  
  48      $title = pht('%s', $source->getName());
  49      $crumbs = $this->buildApplicationCrumbs();
  50      $crumbs->addTextCrumb($title);
  51  
  52      $header = $this->buildHeaderView($source);
  53      $actions = $this->buildActionView($source);
  54      $properties = $this->buildPropertyView($source, $actions);
  55  
  56      $box = id(new PHUIObjectBoxView())
  57        ->setHeader($header)
  58        ->addPropertyList($properties);
  59  
  60      return $this->buildApplicationPage(
  61        array(
  62          $crumbs,
  63          $box,
  64          $timeline,
  65        ),
  66        array(
  67          'title' => $title,
  68        ));
  69  
  70    }
  71  
  72  
  73   private function buildHeaderView(NuanceSource $source) {
  74      $viewer = $this->getRequest()->getUser();
  75  
  76      $header = id(new PHUIHeaderView())
  77        ->setUser($viewer)
  78        ->setHeader($source->getName())
  79        ->setPolicyObject($source);
  80  
  81      return $header;
  82    }
  83  
  84    private function buildActionView(NuanceSource $source) {
  85      $viewer = $this->getRequest()->getUser();
  86      $id = $source->getID();
  87  
  88      $actions = id(new PhabricatorActionListView())
  89        ->setObjectURI($source->getURI())
  90        ->setUser($viewer);
  91  
  92      $can_edit = PhabricatorPolicyFilter::hasCapability(
  93        $viewer,
  94        $source,
  95        PhabricatorPolicyCapability::CAN_EDIT);
  96  
  97      $actions->addAction(
  98        id(new PhabricatorActionView())
  99          ->setName(pht('Edit Source'))
 100          ->setIcon('fa-pencil')
 101          ->setHref($this->getApplicationURI("source/edit/{$id}/"))
 102          ->setDisabled(!$can_edit)
 103          ->setWorkflow(!$can_edit));
 104  
 105      return $actions;
 106    }
 107  
 108    private function buildPropertyView(
 109      NuanceSource $source,
 110      PhabricatorActionListView $actions) {
 111      $viewer = $this->getRequest()->getUser();
 112  
 113      $properties = id(new PHUIPropertyListView())
 114        ->setUser($viewer)
 115        ->setObject($source)
 116        ->setActionList($actions);
 117  
 118      $definition = NuanceSourceDefinition::getDefinitionForSource($source);
 119      $properties->addProperty(
 120        pht('Source Type'),
 121        $definition->getName());
 122  
 123      $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions(
 124        $viewer,
 125        $source);
 126  
 127      $properties->addProperty(
 128        pht('Editable By'),
 129        $descriptions[PhabricatorPolicyCapability::CAN_EDIT]);
 130  
 131      return $properties;
 132    }
 133  }


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