From ea3aeb49623b13abfdd1e2a7a9cbb2430ccb4330 Mon Sep 17 00:00:00 2001 From: Bob Trahan Date: Thu, 14 Aug 2014 12:28:28 -0700 Subject: [PATCH] Add "View Email" action to application transactions Summary: Should help with debugging. In the web UI there is now a link to "View Email". This uses the same debugging output that `./bin/mail show-outbound` uses. Fixes T5768. Code is very defensive as I think these tables may be truncated eventually? Test Plan: viewed some emails and it worked! Reviewers: epriestley Reviewed By: epriestley Subscribers: epriestley, Korvin Maniphest Tasks: T5768 Differential Revision: https://secure.phabricator.com/D10244 --- ...icationTransactionCommentRawController.php | 33 +++++++++++++++++-- src/view/phui/PHUITimelineEventView.php | 17 ++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentRawController.php b/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentRawController.php index 79de3e9ae8..475b0196ca 100644 --- a/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentRawController.php +++ b/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentRawController.php @@ -38,10 +38,36 @@ final class PhabricatorApplicationTransactionCommentRawController ->withPHIDs(array($obj_phid)) ->executeOne(); + $title = pht('Raw Comment'); + $body = $xaction->getComment()->getContent(); + $addendum = null; + if ($request->getExists('email')) { + $content_source = $xaction->getContentSource(); + $source_email = PhabricatorContentSource::SOURCE_EMAIL; + if ($content_source->getSource() == $source_email) { + $source_id = $content_source->getParam('id'); + if ($source_id) { + $message = id(new PhabricatorMetaMTAReceivedMail())->loadOneWhere( + 'id = %d', + $source_id); + if ($message) { + $title = pht('Email Body Text'); + $body = $message->getRawTextBody(); + $details_text = pht( + 'For full details, run `/bin/mail show-outbound --id %d`', + $source_id); + $addendum = PhabricatorMarkupEngine::renderOneObject( + id(new PhabricatorMarkupOneOff())->setContent($details_text), + 'default', + $user); + } + } + } + } $dialog = id(new AphrontDialogView()) ->setUser($user) ->addCancelButton($obj_handle->getURI()) - ->setTitle(pht('Raw Comment')); + ->setTitle($title); $dialog ->addHiddenInput('anchor', $request->getStr('anchor')) @@ -51,7 +77,10 @@ final class PhabricatorApplicationTransactionCommentRawController ->appendChild( id(new AphrontFormTextAreaControl()) ->setReadOnly(true) - ->setValue($xaction->getComment()->getContent()))); + ->setValue($body))); + if ($addendum) { + $dialog->appendParagraph($addendum); + } return id(new AphrontDialogResponse())->setDialog($dialog); } diff --git a/src/view/phui/PHUITimelineEventView.php b/src/view/phui/PHUITimelineEventView.php index a55701f8fd..c1a026c6d7 100644 --- a/src/view/phui/PHUITimelineEventView.php +++ b/src/view/phui/PHUITimelineEventView.php @@ -539,6 +539,23 @@ final class PHUITimelineEventView extends AphrontView { array( 'anchor' => $anchor, )); + + $content_source = $this->getContentSource(); + $source_email = PhabricatorContentSource::SOURCE_EMAIL; + if ($content_source->getSource() == $source_email) { + $source_id = $content_source->getParam('id'); + if ($source_id) { + $items[] = id(new PhabricatorActionView()) + ->setIcon('fa-envelope-o') + ->setHref('/transactions/raw/'.$xaction_phid.'/?email') + ->setName(pht('View Email Body')) + ->addSigil('transaction-raw') + ->setMetadata( + array( + 'anchor' => $anchor, + )); + } + } } if ($this->getIsRemovable()) {