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); } }