3 final class PonderAnswerCommentController
extends PonderController
{
5 public function handleRequest(AphrontRequest
$request) {
6 $viewer = $request->getViewer();
7 $id = $request->getURIData('id');
9 if (!$request->isFormPost()) {
10 return new Aphront400Response();
13 $answer = id(new PonderAnswerQuery())
18 return new Aphront404Response();
21 $is_preview = $request->isPreviewRequest();
23 $qid = $answer->getQuestion()->getID();
24 $aid = $answer->getID();
26 // TODO, this behaves badly when redirecting to the answer
27 $view_uri = "/Q{$qid}";
30 $xactions[] = id(new PonderAnswerTransaction())
31 ->setTransactionType(PhabricatorTransactions
::TYPE_COMMENT
)
33 id(new PonderAnswerTransactionComment())
34 ->setContent($request->getStr('comment')));
36 $editor = id(new PonderAnswerEditor())
38 ->setContinueOnNoEffect($request->isContinueRequest())
39 ->setContentSourceFromRequest($request)
40 ->setIsPreview($is_preview);
43 $xactions = $editor->applyTransactions($answer, $xactions);
44 } catch (PhabricatorApplicationTransactionNoEffectException
$ex) {
45 return id(new PhabricatorApplicationTransactionNoEffectResponse())
46 ->setCancelURI($view_uri)
51 if ($request->isAjax() && $is_preview) {
52 return id(new PhabricatorApplicationTransactionResponse())
55 ->setTransactions($xactions)
56 ->setIsPreview($is_preview);
58 return id(new AphrontRedirectResponse())