1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-24 22:40:55 +01:00

Publish inline comments in Asana notification stories

Summary: Ref T2852. Bleh, gross. Does what it says in the title.

Test Plan: {F54024}

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2852

Differential Revision: https://secure.phabricator.com/D6735
This commit is contained in:
epriestley 2013-08-13 10:16:56 -07:00
parent c7a84876c9
commit 796007a85e
3 changed files with 51 additions and 4 deletions

View file

@ -612,6 +612,10 @@ final class DifferentialCommentEditor extends PhabricatorEditor {
'action' => $comment->getAction(), 'action' => $comment->getAction(),
'feedback_content' => $comment->getContent(), 'feedback_content' => $comment->getContent(),
'actor_phid' => $actor_phid, 'actor_phid' => $actor_phid,
// NOTE: Don't use this, it will be removed after ApplicationTransactions.
// For now, it powers inline comment rendering over the Asana brdige.
'temporaryCommentID' => $comment->getID(),
); );
id(new PhabricatorFeedStoryPublisher()) id(new PhabricatorFeedStoryPublisher())

View file

@ -45,6 +45,11 @@ final class DifferentialInlineCommentQuery
return $this; return $this;
} }
public function withCommentIDs(array $comment_ids) {
$this->commentIDs = $comment_ids;
return $this;
}
public function execute() { public function execute() {
$table = new DifferentialInlineComment(); $table = new DifferentialInlineComment();
$conn_r = $table->establishConnection('r'); $conn_r = $table->establishConnection('r');
@ -111,6 +116,13 @@ final class DifferentialInlineCommentQuery
$this->draftsByAuthors); $this->draftsByAuthors);
} }
if ($this->commentIDs) {
$where[] = qsprintf(
$conn_r,
'commentID IN (%Ld)',
$this->commentIDs);
}
return $this->formatWhereClause($where); return $this->formatWhereClause($where);
} }

View file

@ -98,18 +98,49 @@ final class PhabricatorFeedStoryDifferential extends PhabricatorFeedStory {
$action = $this->getValue('action'); $action = $this->getValue('action');
$verb = DifferentialAction::getActionPastTenseVerb($action); $verb = DifferentialAction::getActionPastTenseVerb($action);
$engine = PhabricatorMarkupEngine::newMarkupEngine(array())
->setConfig('viewer', new PhabricatorUser())
->setMode(PhutilRemarkupEngine::MODE_TEXT);
$title = "{$author_name} {$verb} this revision."; $title = "{$author_name} {$verb} this revision.";
if (strlen($comment)) { if (strlen($comment)) {
$engine = PhabricatorMarkupEngine::newMarkupEngine(array())
->setConfig('viewer', new PhabricatorUser())
->setMode(PhutilRemarkupEngine::MODE_TEXT);
$comment = $engine->markupText($comment); $comment = $engine->markupText($comment);
$title .= "\n\n"; $title .= "\n\n";
$title .= $comment; $title .= $comment;
} }
// Roughly render inlines into the comment.
$comment_id = $data->getValue('temporaryCommentID');
if ($comment_id) {
$inlines = id(new DifferentialInlineCommentQuery())
->withCommentIDs(array($comment_id))
->execute();
if ($inlines) {
$title .= "\n\n";
$title .= pht('Inline Comments');
$title .= "\n";
$changeset_ids = mpull($inlines, 'getChangesetID');
$changesets = id(new DifferentialChangeset())->loadAllWhere(
'id IN (%Ld)',
$changeset_ids);
foreach ($inlines as $inline) {
$changeset = idx($changesets, $inline->getChangesetID());
if (!$changeset) {
continue;
}
$filename = $changeset->getDisplayFilename();
$linenumber = $inline->getLineNumber();
$inline_text = $engine->markupText($inline->getContent());
$inline_text = rtrim($inline_text);
$title .= "{$filename}:{$linenumber} {$inline_text}\n";
}
}
}
return $title; return $title;
} }