Use modern two-stage markup cache (PhabricatorMarkupInterface) in Differential
Summary: See T1963 for discussion of the Facebook-specific hack. Differential currently uses a one-stage cache (render -> postprocess -> save in cache) rather than the two-stage cache (render -> save in cache -> postprocess) offered by `PhabricatorMarkupInteface`. This breaks Differential comments coming out of cache for the lightbox, and makes various other things suboptimal (status of handles like @mentions and embeds are not displayed accurately). Instead, use the modern stuff. Test Plan: - Created preview comments and inlines in Differential. - Edited a Differential inline. - Submitted main and inline Differential comments. - Viewed and edited Differential summary and test plan. - Created preview comments and inlines in Diffusion. - Submitted comments and inlines in Diffusion. - Verified Differential now loads and saves to the generalized markup cache (Diffusion is close, but main comments still hold a single-stage cache). - Verified old Differential comments work correctly with the lightbox. Reviewers: vrana, btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T1963 Differential Revision: https://secure.phabricator.com/D3804
This commit is contained in:
@@ -64,12 +64,11 @@ final class DiffusionDiffController extends DiffusionController {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
|
||||
$parser = new DifferentialChangesetParser();
|
||||
$parser->setUser($user);
|
||||
$parser->setChangeset($changeset);
|
||||
$parser->setRenderingReference($diff_query->getRenderingReference());
|
||||
$parser->setMarkupEngine(
|
||||
PhabricatorMarkupEngine::newDiffusionMarkupEngine());
|
||||
|
||||
$pquery = new DiffusionPathIDQuery(array($changeset->getFilename()));
|
||||
$ids = $pquery->loadPathIDs();
|
||||
@@ -98,6 +97,19 @@ final class DiffusionDiffController extends DiffusionController {
|
||||
$parser->setHandles($handles);
|
||||
}
|
||||
|
||||
$engine = new PhabricatorMarkupEngine();
|
||||
$engine->setViewer($user);
|
||||
|
||||
foreach ($inlines as $inline) {
|
||||
$engine->addObject(
|
||||
$inline,
|
||||
PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
|
||||
}
|
||||
|
||||
$engine->process();
|
||||
|
||||
$parser->setMarkupEngine($engine);
|
||||
|
||||
$spec = $request->getStr('range');
|
||||
list($range_s, $range_e, $mask) =
|
||||
DifferentialChangesetParser::parseRangeSpecification($spec);
|
||||
|
||||
Reference in New Issue
Block a user