public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $id = $request->getURIData('id'); $question = id(new PonderQuestionQuery())->setViewer($viewer)->withIDs(array($id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); if (!$question) { return new Aphront404Response(); } $view_uri = '/Q' . $question->getID(); $v_status = $question->getStatus(); if ($request->isFormPost()) { $v_status = $request->getStr('status'); $xactions = array(); $xactions[] = id(new PonderQuestionTransaction())->setTransactionType(PonderQuestionTransaction::TYPE_STATUS)->setNewValue($v_status); $editor = id(new PonderQuestionEditor())->setActor($viewer)->setContentSourceFromRequest($request); $editor->applyTransactions($question, $xactions); return id(new AphrontRedirectResponse())->setURI($view_uri); } $radio = id(new AphrontFormRadioButtonControl())->setLabel(pht('Status'))->setName('status')->setValue($v_status); foreach (PonderQuestionStatus::getQuestionStatusMap() as $value => $name) { $description = PonderQuestionStatus::getQuestionStatusDescription($value); $radio->addButton($value, $name, $description); } $form = id(new AphrontFormView())->setUser($viewer)->appendChild($radio); return $this->newDialog()->setTitle(pht('Change Question Status'))->appendChild($form->buildLayoutView())->addSubmitButton(pht('Submit'))->addCancelButton($view_uri); }