Move "Rendering References" to the DifferentialChangesetParser level
Summary: Separates changeset IDs from rendering. Now each changeset has a "rendering reference" which is basically a description of what the ajax endpoint should render. For Differential, it's in the form "id/vs". For Diffusion, "branch/path;commit". I believe this fixes pretty much all of the bugs related to "show more" breaking in various obscure ways, although I never got a great repro for T153. Test Plan: Clicked "show more" in diffusion change and commit views and differential diff, diff-of-diff, standalone-diff, standalone-diff-of-diff views. Verified refs and 'whitespace' were always sent correctly. Made inline comments on diffs and diffs-of-diffs. Used "Reply". Reviewed By: tuomaspelkonen Reviewers: tuomaspelkonen, jungejason, aran CC: aran, tuomaspelkonen, epriestley Differential Revision: 274
This commit is contained in:
@@ -24,9 +24,17 @@ class DifferentialChangesetViewController extends DifferentialController {
|
||||
|
||||
$author_phid = $request->getUser()->getPHID();
|
||||
|
||||
$id = $request->getStr('id');
|
||||
$vs = $request->getInt('vs');
|
||||
$rendering_reference = $request->getStr('ref');
|
||||
$parts = explode('/', $rendering_reference);
|
||||
if (count($parts) == 2) {
|
||||
list($id, $vs) = $parts;
|
||||
} else {
|
||||
$id = $parts[0];
|
||||
$vs = 0;
|
||||
}
|
||||
|
||||
$id = (int)$id;
|
||||
$vs = (int)$vs;
|
||||
|
||||
$changeset = id(new DifferentialChangeset())->load($id);
|
||||
if (!$changeset) {
|
||||
@@ -149,6 +157,7 @@ class DifferentialChangesetViewController extends DifferentialController {
|
||||
|
||||
$parser = new DifferentialChangesetParser();
|
||||
$parser->setChangeset($changeset);
|
||||
$parser->setRenderingReference($rendering_reference);
|
||||
$parser->setRenderCacheKey($render_cache_key);
|
||||
$parser->setRightSideCommentMapping($right_source, $right_new);
|
||||
$parser->setLeftSideCommentMapping($left_source, $left_new);
|
||||
|
||||
Reference in New Issue
Block a user