[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/flag/controller/ -> PhabricatorFlagEditController.php (source)

   1  <?php
   2  
   3  final class PhabricatorFlagEditController extends PhabricatorFlagController {
   4  
   5    private $phid;
   6  
   7    public function willProcessRequest(array $data) {
   8      $this->phid = $data['phid'];
   9    }
  10  
  11    public function processRequest() {
  12      $request = $this->getRequest();
  13      $user = $request->getUser();
  14  
  15      $phid = $this->phid;
  16      $handle = id(new PhabricatorHandleQuery())
  17        ->setViewer($user)
  18        ->withPHIDs(array($phid))
  19        ->executeOne();
  20  
  21      if (!$handle->isComplete()) {
  22        return new Aphront404Response();
  23      }
  24  
  25      $flag = PhabricatorFlagQuery::loadUserFlag($user, $phid);
  26  
  27      if (!$flag) {
  28        $flag = new PhabricatorFlag();
  29        $flag->setOwnerPHID($user->getPHID());
  30        $flag->setType($handle->getType());
  31        $flag->setObjectPHID($handle->getPHID());
  32        $flag->setReasonPHID($user->getPHID());
  33      }
  34  
  35      if ($request->isDialogFormPost()) {
  36        $flag->setColor($request->getInt('color'));
  37        $flag->setNote($request->getStr('note'));
  38        $flag->save();
  39  
  40        return id(new AphrontReloadResponse())->setURI('/flag/');
  41      }
  42  
  43      $type_name = $handle->getTypeName();
  44  
  45      $dialog = new AphrontDialogView();
  46      $dialog->setUser($user);
  47  
  48      $dialog->setTitle(pht('Flag %s', $type_name));
  49  
  50      require_celerity_resource('phabricator-flag-css');
  51  
  52      $form = new PHUIFormLayoutView();
  53  
  54      $is_new = !$flag->getID();
  55  
  56      if ($is_new) {
  57        $form
  58          ->appendChild(hsprintf(
  59            '<p>%s</p><br />',
  60            pht('You can flag this %s if you want to remember to look '.
  61              'at it later.',
  62              $type_name)));
  63      }
  64  
  65      $radio = new AphrontFormRadioButtonControl();
  66      foreach (PhabricatorFlagColor::getColorNameMap() as $color => $text) {
  67        $class = 'phabricator-flag-radio phabricator-flag-color-'.$color;
  68        $radio->addButton($color, $text, '', $class);
  69      }
  70  
  71      $form
  72        ->appendChild(
  73          $radio
  74            ->setName('color')
  75            ->setLabel(pht('Flag Color'))
  76            ->setValue($flag->getColor()))
  77        ->appendChild(
  78          id(new AphrontFormTextAreaControl())
  79            ->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_SHORT)
  80            ->setName('note')
  81            ->setLabel(pht('Note'))
  82            ->setValue($flag->getNote()));
  83  
  84      $dialog->appendChild($form);
  85  
  86      $dialog->addCancelButton($handle->getURI());
  87      $dialog->addSubmitButton(
  88        $is_new ? pht('Create Flag') : pht('Save'));
  89  
  90      return id(new AphrontDialogResponse())->setDialog($dialog);
  91    }
  92  
  93  }


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