[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

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

   1  <?php
   2  
   3  final class PhabricatorProjectColumnHideController
   4    extends PhabricatorProjectBoardController {
   5  
   6    private $id;
   7    private $projectID;
   8  
   9    public function willProcessRequest(array $data) {
  10      $this->projectID = $data['projectID'];
  11      $this->id = idx($data, 'id');
  12    }
  13  
  14    public function processRequest() {
  15      $request = $this->getRequest();
  16      $viewer = $request->getUser();
  17      $project = id(new PhabricatorProjectQuery())
  18        ->setViewer($viewer)
  19        ->requireCapabilities(
  20          array(
  21            PhabricatorPolicyCapability::CAN_VIEW,
  22            PhabricatorPolicyCapability::CAN_EDIT,
  23          ))
  24        ->withIDs(array($this->projectID))
  25        ->executeOne();
  26  
  27      if (!$project) {
  28        return new Aphront404Response();
  29      }
  30      $this->setProject($project);
  31  
  32      $column = id(new PhabricatorProjectColumnQuery())
  33        ->setViewer($viewer)
  34        ->withIDs(array($this->id))
  35        ->requireCapabilities(
  36          array(
  37            PhabricatorPolicyCapability::CAN_VIEW,
  38            PhabricatorPolicyCapability::CAN_EDIT,
  39          ))
  40        ->executeOne();
  41      if (!$column) {
  42        return new Aphront404Response();
  43      }
  44  
  45      $column_phid = $column->getPHID();
  46  
  47      $view_uri = $this->getApplicationURI('/board/'.$this->projectID.'/');
  48      $view_uri = new PhutilURI($view_uri);
  49      foreach ($request->getPassthroughRequestData() as $key => $value) {
  50        $view_uri->setQueryParam($key, $value);
  51      }
  52  
  53      if ($column->isDefaultColumn()) {
  54        return $this->newDialog()
  55          ->setTitle(pht('Can Not Hide Default Column'))
  56          ->appendParagraph(
  57            pht('You can not hide the default/backlog column on a board.'))
  58          ->addCancelButton($view_uri, pht('Okay'));
  59      }
  60  
  61      if ($request->isFormPost()) {
  62        if ($column->isHidden()) {
  63          $new_status = PhabricatorProjectColumn::STATUS_ACTIVE;
  64        } else {
  65          $new_status = PhabricatorProjectColumn::STATUS_HIDDEN;
  66        }
  67  
  68        $type_status = PhabricatorProjectColumnTransaction::TYPE_STATUS;
  69        $xactions = array(id(new PhabricatorProjectColumnTransaction())
  70          ->setTransactionType($type_status)
  71          ->setNewValue($new_status),
  72        );
  73  
  74        $editor = id(new PhabricatorProjectColumnTransactionEditor())
  75          ->setActor($viewer)
  76          ->setContinueOnNoEffect(true)
  77          ->setContentSourceFromRequest($request)
  78          ->applyTransactions($column, $xactions);
  79  
  80        return id(new AphrontRedirectResponse())->setURI($view_uri);
  81      }
  82  
  83      if ($column->isHidden()) {
  84        $title = pht('Show Column');
  85      } else {
  86        $title = pht('Hide Column');
  87      }
  88  
  89      if ($column->isHidden()) {
  90        $body = pht(
  91          'Are you sure you want to show this column?');
  92      } else {
  93        $body = pht(
  94          'Are you sure you want to hide this column? It will no longer '.
  95          'appear on the workboard.');
  96      }
  97  
  98      $dialog = $this->newDialog()
  99        ->setWidth(AphrontDialogView::WIDTH_FORM)
 100        ->setTitle($title)
 101        ->appendChild($body)
 102        ->setDisableWorkflowOnCancel(true)
 103        ->addCancelButton($view_uri)
 104        ->addSubmitButton($title);
 105  
 106      foreach ($request->getPassthroughRequestData() as $key => $value) {
 107        $dialog->addHiddenInput($key, $value);
 108      }
 109  
 110      return $dialog;
 111    }
 112  }


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