Changeset View
Changeset View
Standalone View
Standalone View
src/applications/ponder/controller/PonderAnswerCommentController.php
Show All 13 Lines | $answer = id(new PonderAnswerQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withIDs(array($id)) | ->withIDs(array($id)) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$answer) { | if (!$answer) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$is_preview = $request->isPreviewRequest(); | $is_preview = $request->isPreviewRequest(); | ||||
// $draft = PhabricatorDraft::buildFromRequest($request); | |||||
$qid = $answer->getQuestion()->getID(); | $qid = $answer->getQuestion()->getID(); | ||||
$aid = $answer->getID(); | $aid = $answer->getID(); | ||||
$view_uri = "/Q{$qid}#A{$aid}"; | |||||
// TODO, this behaves badly when redirecting to the answer | |||||
$view_uri = "/Q{$qid}"; | |||||
$xactions = array(); | $xactions = array(); | ||||
$xactions[] = id(new PonderAnswerTransaction()) | $xactions[] = id(new PonderAnswerTransaction()) | ||||
->setTransactionType(PhabricatorTransactions::TYPE_COMMENT) | ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT) | ||||
->attachComment( | ->attachComment( | ||||
id(new PonderAnswerTransactionComment()) | id(new PonderAnswerTransactionComment()) | ||||
->setContent($request->getStr('comment'))); | ->setContent($request->getStr('comment'))); | ||||
$editor = id(new PonderAnswerEditor()) | $editor = id(new PonderAnswerEditor()) | ||||
->setActor($viewer) | ->setActor($viewer) | ||||
->setContinueOnNoEffect($request->isContinueRequest()) | ->setContinueOnNoEffect($request->isContinueRequest()) | ||||
->setContentSourceFromRequest($request) | ->setContentSourceFromRequest($request) | ||||
->setIsPreview($is_preview); | ->setIsPreview($is_preview); | ||||
try { | try { | ||||
$xactions = $editor->applyTransactions($answer, $xactions); | $xactions = $editor->applyTransactions($answer, $xactions); | ||||
} catch (PhabricatorApplicationTransactionNoEffectException $ex) { | } catch (PhabricatorApplicationTransactionNoEffectException $ex) { | ||||
return id(new PhabricatorApplicationTransactionNoEffectResponse()) | return id(new PhabricatorApplicationTransactionNoEffectResponse()) | ||||
->setCancelURI($view_uri) | ->setCancelURI($view_uri) | ||||
->setException($ex); | ->setException($ex); | ||||
} | } | ||||
// if ($draft) { | |||||
// $draft->replaceOrDelete(); | |||||
// } | |||||
if ($request->isAjax() && $is_preview) { | if ($request->isAjax() && $is_preview) { | ||||
return id(new PhabricatorApplicationTransactionResponse()) | return id(new PhabricatorApplicationTransactionResponse()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->setTransactions($xactions) | ->setTransactions($xactions) | ||||
->setIsPreview($is_preview); | ->setIsPreview($is_preview); | ||||
} else { | } else { | ||||
return id(new AphrontRedirectResponse()) | return id(new AphrontRedirectResponse()) | ||||
->setURI($view_uri); | ->setURI($view_uri); | ||||
} | } | ||||
} | } | ||||
} | } |