diff --git a/src/applications/diffusion/controller/change/DiffusionChangeController.php b/src/applications/diffusion/controller/change/DiffusionChangeController.php index 862492783f..c11c05ea1d 100644 --- a/src/applications/diffusion/controller/change/DiffusionChangeController.php +++ b/src/applications/diffusion/controller/change/DiffusionChangeController.php @@ -1,74 +1,88 @@ <?php /* * Copyright 2012 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ final class DiffusionChangeController extends DiffusionController { public function processRequest() { $drequest = $this->diffusionRequest; $content = array(); $diff_query = DiffusionDiffQuery::newFromDiffusionRequest($drequest); $changeset = $diff_query->loadChangeset(); if (!$changeset) { // TODO: Refine this. return new Aphront404Response(); } + $callsign = $drequest->getRepository()->getCallsign(); + $changeset_view = new DifferentialChangesetListView(); $changeset_view->setChangesets( array( 0 => $changeset, )); $changeset_view->setRenderingReferences( array( 0 => $diff_query->getRenderingReference(), )); + + $raw_params = array( + 'action' => 'browse', + 'params' => array( + 'view' => 'raw', + ), + ); + $right_uri = $drequest->generateURI($raw_params); + $raw_params['params']['before'] = $drequest->getRawCommit(); + $left_uri = $drequest->generateURI($raw_params); + $changeset_view->setRawFileURIs($left_uri, $right_uri); + $changeset_view->setRenderURI( - '/diffusion/'.$drequest->getRepository()->getCallsign().'/diff/'); + '/diffusion/'.$callsign.'/diff/'); $changeset_view->setWhitespace( DifferentialChangesetParser::WHITESPACE_SHOW_ALL); $changeset_view->setUser($this->getRequest()->getUser()); $content[] = $this->buildCrumbs( array( 'branch' => true, 'path' => true, 'view' => 'change', )); // TODO: This is pretty awkward, unify the CSS between Diffusion and // Differential better. require_celerity_resource('differential-core-view-css'); $content[] = '<div class="differential-primary-pane">'. $changeset_view->render(). '</div>'; $nav = $this->buildSideNav('change', true); $nav->appendChild($content); return $this->buildStandardPageResponse( $nav, array( 'title' => 'Change', )); } }