diff --git a/src/applications/base/controller/PhabricatorController.php b/src/applications/base/controller/PhabricatorController.php --- a/src/applications/base/controller/PhabricatorController.php +++ b/src/applications/base/controller/PhabricatorController.php @@ -526,4 +526,39 @@ ->setSubmitURI($submit_uri); } + protected function buildTransactionTimeline( + PhabricatorLiskDAO $object, + PhabricatorApplicationTransactionQuery $query, + PhabricatorMarkupEngine $engine = null) { + + $viewer = $this->getRequest()->getUser(); + $xaction = $object->getApplicationTransactionTemplate(); + $view = $xaction->getApplicationTransactionViewObject(); + + $xactions = $query + ->setViewer($viewer) + ->withObjectPHIDs(array($object->getPHID())) + ->needComments(true) + ->execute(); + + if ($engine) { + foreach ($xactions as $xaction) { + if ($xaction->getComment()) { + $engine->addObject( + $xaction->getComment(), + PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); + } + } + $engine->process(); + $view->setMarkupEngine($engine); + } + + $timeline = $view + ->setUser($viewer) + ->setObjectPHID($object->getPHID()) + ->setTransactions($xactions); + + return $timeline; + } + } diff --git a/src/applications/maniphest/controller/ManiphestTaskDetailController.php b/src/applications/maniphest/controller/ManiphestTaskDetailController.php --- a/src/applications/maniphest/controller/ManiphestTaskDetailController.php +++ b/src/applications/maniphest/controller/ManiphestTaskDetailController.php @@ -37,12 +37,6 @@ ->executeOne(); } - $transactions = id(new ManiphestTransactionQuery()) - ->setViewer($user) - ->withObjectPHIDs(array($task->getPHID())) - ->needComments(true) - ->execute(); - $field_list = PhabricatorCustomField::getObjectFields( $task, PhabricatorCustomField::ROLE_VIEW); @@ -136,15 +130,11 @@ $engine = new PhabricatorMarkupEngine(); $engine->setViewer($user); $engine->addObject($task, ManiphestTask::MARKUP_FIELD_DESCRIPTION); - foreach ($transactions as $modern_xaction) { - if ($modern_xaction->getComment()) { - $engine->addObject( - $modern_xaction->getComment(), - PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); - } - } - $engine->process(); + $timeline = $this->buildTransactionTimeline( + $task, + new ManiphestTransactionQuery(), + $engine); $resolution_types = ManiphestTaskStatus::getTaskStatusMap(); @@ -337,12 +327,6 @@ 'aphront-panel-preview-loading-text', pht('Loading preview...')))); - $timeline = id(new PhabricatorApplicationTransactionView()) - ->setUser($user) - ->setObjectPHID($task->getPHID()) - ->setTransactions($transactions) - ->setMarkupEngine($engine); - $object_name = 'T'.$task->getID(); $actions = $this->buildActionView($task);