[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/project/controller/ -> PhabricatorProjectEditMainController.php (source)

   1  <?php
   2  
   3  final class PhabricatorProjectEditMainController
   4    extends PhabricatorProjectController {
   5  
   6    private $id;
   7  
   8    public function willProcessRequest(array $data) {
   9      $this->id = idx($data, 'id');
  10    }
  11  
  12    public function processRequest() {
  13      $request = $this->getRequest();
  14      $viewer = $request->getUser();
  15  
  16      $project = id(new PhabricatorProjectQuery())
  17        ->setViewer($viewer)
  18        ->withIDs(array($this->id))
  19        ->needImages(true)
  20        ->executeOne();
  21      if (!$project) {
  22        return new Aphront404Response();
  23      }
  24  
  25      $header = id(new PHUIHeaderView())
  26        ->setHeader(pht('Edit %s', $project->getName()))
  27        ->setUser($viewer)
  28        ->setPolicyObject($project)
  29        ->setImage($project->getProfileImageURI());
  30  
  31      if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) {
  32        $header->setStatus('fa-check', 'bluegrey', pht('Active'));
  33      } else {
  34        $header->setStatus('fa-ban', 'dark', pht('Archived'));
  35      }
  36  
  37      $actions = $this->buildActionListView($project);
  38      $properties = $this->buildPropertyListView($project, $actions);
  39  
  40      $crumbs = $this->buildApplicationCrumbs();
  41      $crumbs->addTextCrumb(
  42        $project->getName(),
  43        $this->getApplicationURI('view/'.$project->getID().'/'));
  44      $crumbs->addTextCrumb(pht('Edit'));
  45      $crumbs->setActionList($actions);
  46  
  47      $object_box = id(new PHUIObjectBoxView())
  48        ->setHeader($header)
  49        ->addPropertyList($properties);
  50  
  51      $xactions = id(new PhabricatorProjectTransactionQuery())
  52        ->setViewer($viewer)
  53        ->withObjectPHIDs(array($project->getPHID()))
  54        ->execute();
  55  
  56      $timeline = id(new PhabricatorApplicationTransactionView())
  57        ->setUser($viewer)
  58        ->setObjectPHID($project->getPHID())
  59        ->setShouldTerminate(true)
  60        ->setTransactions($xactions);
  61  
  62      return $this->buildApplicationPage(
  63        array(
  64          $crumbs,
  65          $object_box,
  66          $timeline,
  67        ),
  68        array(
  69          'title' => $project->getName(),
  70        ));
  71    }
  72  
  73    private function buildActionListView(PhabricatorProject $project) {
  74      $request = $this->getRequest();
  75      $viewer = $request->getUser();
  76  
  77      $id = $project->getID();
  78  
  79      $view = id(new PhabricatorActionListView())
  80        ->setUser($viewer)
  81        ->setObjectURI($request->getRequestURI());
  82  
  83      $can_edit = PhabricatorPolicyFilter::hasCapability(
  84        $viewer,
  85        $project,
  86        PhabricatorPolicyCapability::CAN_EDIT);
  87  
  88      $view->addAction(
  89        id(new PhabricatorActionView())
  90          ->setName(pht('Edit Details'))
  91          ->setIcon('fa-pencil')
  92          ->setHref($this->getApplicationURI("details/{$id}/"))
  93          ->setDisabled(!$can_edit)
  94          ->setWorkflow(!$can_edit));
  95  
  96      $view->addAction(
  97        id(new PhabricatorActionView())
  98          ->setName(pht('Edit Picture'))
  99          ->setIcon('fa-picture-o')
 100          ->setHref($this->getApplicationURI("picture/{$id}/"))
 101          ->setDisabled(!$can_edit)
 102          ->setWorkflow(!$can_edit));
 103  
 104      if ($project->isArchived()) {
 105        $view->addAction(
 106          id(new PhabricatorActionView())
 107            ->setName(pht('Unarchive Project'))
 108            ->setIcon('fa-check')
 109            ->setHref($this->getApplicationURI("archive/{$id}/"))
 110            ->setDisabled(!$can_edit)
 111            ->setWorkflow(true));
 112      } else {
 113        $view->addAction(
 114          id(new PhabricatorActionView())
 115            ->setName(pht('Archive Project'))
 116            ->setIcon('fa-ban')
 117            ->setHref($this->getApplicationURI("archive/{$id}/"))
 118            ->setDisabled(!$can_edit)
 119            ->setWorkflow(true));
 120      }
 121  
 122      return $view;
 123    }
 124  
 125    private function buildPropertyListView(
 126      PhabricatorProject $project,
 127      PhabricatorActionListView $actions) {
 128      $request = $this->getRequest();
 129      $viewer = $request->getUser();
 130  
 131      $view = id(new PHUIPropertyListView())
 132        ->setUser($viewer)
 133        ->setObject($project)
 134        ->setActionList($actions);
 135  
 136      $descriptions = PhabricatorPolicyQuery::renderPolicyDescriptions(
 137        $viewer,
 138        $project);
 139  
 140      $this->loadHandles(array($project->getPHID()));
 141  
 142      $view->addProperty(
 143        pht('Looks Like'),
 144        $this->getHandle($project->getPHID())->renderTag());
 145  
 146      $view->addProperty(
 147        pht('Visible To'),
 148        $descriptions[PhabricatorPolicyCapability::CAN_VIEW]);
 149  
 150      $view->addProperty(
 151        pht('Editable By'),
 152        $descriptions[PhabricatorPolicyCapability::CAN_EDIT]);
 153  
 154      $view->addProperty(
 155        pht('Joinable By'),
 156        $descriptions[PhabricatorPolicyCapability::CAN_JOIN]);
 157  
 158      return $view;
 159    }
 160  
 161  
 162  }


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