From 3fd16a9ba5536e2badd6a36dcb4a50598085d9f3 Mon Sep 17 00:00:00 2001 From: Bob Trahan Date: Thu, 13 Nov 2014 14:44:55 -0800 Subject: [PATCH] Transactions - introduce a buildTransactionTimeline function Summary: ...way way down in PhabricatorController. Use it on ManiphestTaskDetailController to test it. Ref T4712. I think the pager logic to be added as part of T4712 can safely reside entirely within this method. As I said earlier, 5 parameters is a lot, so I don't really want to add more. Next diff would do the pagination logic and the diff after that would deploy it everywhere. If while deploying it everywhere I find something off, that will be a different diff. Test Plan: viewed maniphest tasks and they looked as spiffy as ever. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T4712 Differential Revision: https://secure.phabricator.com/D10844 --- .../base/controller/PhabricatorController.php | 35 +++++++++++++++++++ .../ManiphestTaskDetailController.php | 24 +++---------- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/applications/base/controller/PhabricatorController.php b/src/applications/base/controller/PhabricatorController.php index 6a01e39b84..12d71357c6 100644 --- a/src/applications/base/controller/PhabricatorController.php +++ b/src/applications/base/controller/PhabricatorController.php @@ -526,4 +526,39 @@ abstract class PhabricatorController extends AphrontController { ->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 index 985d3163fe..1caba00d46 100644 --- a/src/applications/maniphest/controller/ManiphestTaskDetailController.php +++ b/src/applications/maniphest/controller/ManiphestTaskDetailController.php @@ -37,12 +37,6 @@ final class ManiphestTaskDetailController extends ManiphestController { ->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 @@ final class ManiphestTaskDetailController extends ManiphestController { $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 @@ final class ManiphestTaskDetailController extends ManiphestController { '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);