Page MenuHomePhabricator

D21138.id50335.diff
No OneTemporary

D21138.id50335.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -12,7 +12,7 @@
'core.pkg.css' => '86f155f9',
'core.pkg.js' => '705aec2c',
'differential.pkg.css' => '607c84be',
- 'differential.pkg.js' => 'd73a942b',
+ 'differential.pkg.js' => '99e2cb01',
'diffusion.pkg.css' => '42c75c37',
'diffusion.pkg.js' => 'a98c0bf7',
'maniphest.pkg.css' => '35995d6d',
@@ -377,9 +377,9 @@
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => 'a2ab19be',
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8',
- 'rsrc/js/application/diff/DiffChangeset.js' => '7ccc4153',
- 'rsrc/js/application/diff/DiffChangesetList.js' => '2e636e0a',
- 'rsrc/js/application/diff/DiffInline.js' => 'a4a14a94',
+ 'rsrc/js/application/diff/DiffChangeset.js' => '5a4e4a3b',
+ 'rsrc/js/application/diff/DiffChangesetList.js' => '4769cfe7',
+ 'rsrc/js/application/diff/DiffInline.js' => '16e97ebc',
'rsrc/js/application/diff/behavior-preview-link.js' => 'f51e9c17',
'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
'rsrc/js/application/differential/behavior-populate.js' => 'dfa1d313',
@@ -774,9 +774,9 @@
'phabricator-darklog' => '3b869402',
'phabricator-darkmessage' => '26cd4b73',
'phabricator-dashboard-css' => '5a205b9d',
- 'phabricator-diff-changeset' => '7ccc4153',
- 'phabricator-diff-changeset-list' => '2e636e0a',
- 'phabricator-diff-inline' => 'a4a14a94',
+ 'phabricator-diff-changeset' => '5a4e4a3b',
+ 'phabricator-diff-changeset-list' => '4769cfe7',
+ 'phabricator-diff-inline' => '16e97ebc',
'phabricator-drag-and-drop-file-upload' => '4370900d',
'phabricator-draggable-list' => '0169e425',
'phabricator-fatal-config-template-css' => '20babf50',
@@ -1029,6 +1029,9 @@
'javelin-stratcom',
'javelin-util',
),
+ '16e97ebc' => array(
+ 'javelin-dom',
+ ),
'1b6acc2a' => array(
'javelin-magical-init',
'javelin-util',
@@ -1169,10 +1172,6 @@
'javelin-util',
'javelin-stratcom',
),
- '2e636e0a' => array(
- 'javelin-install',
- 'phuix-button-view',
- ),
'2f1db1ed' => array(
'javelin-util',
),
@@ -1308,6 +1307,10 @@
'javelin-util',
'phabricator-busy',
),
+ '4769cfe7' => array(
+ 'javelin-install',
+ 'phuix-button-view',
+ ),
'47a0728b' => array(
'javelin-behavior',
'javelin-dom',
@@ -1441,6 +1444,17 @@
'javelin-util',
'javelin-magical-init',
),
+ '5a4e4a3b' => array(
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-install',
+ 'javelin-workflow',
+ 'javelin-router',
+ 'javelin-behavior-device',
+ 'javelin-vector',
+ 'phabricator-diff-inline',
+ ),
'5a6f6a06' => array(
'javelin-behavior',
'javelin-quicksand',
@@ -1612,17 +1626,6 @@
'javelin-install',
'javelin-dom',
),
- '7ccc4153' => array(
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
- 'javelin-workflow',
- 'javelin-router',
- 'javelin-behavior-device',
- 'javelin-vector',
- 'phabricator-diff-inline',
- ),
'80bff3af' => array(
'javelin-install',
'javelin-typeahead-source',
@@ -1828,9 +1831,6 @@
'javelin-stratcom',
'javelin-vector',
),
- 'a4a14a94' => array(
- 'javelin-dom',
- ),
'a4aa75c4' => array(
'phui-button-css',
'phui-button-simple-css',
diff --git a/src/applications/differential/controller/DifferentialChangesetViewController.php b/src/applications/differential/controller/DifferentialChangesetViewController.php
--- a/src/applications/differential/controller/DifferentialChangesetViewController.php
+++ b/src/applications/differential/controller/DifferentialChangesetViewController.php
@@ -205,8 +205,6 @@
->setRightSideCommentMapping($right_source, $right_new)
->setLeftSideCommentMapping($left_source, $left_new);
- $parser->readParametersFromRequest($request);
-
if ($left && $right) {
$parser->setOriginals($left, $right);
}
@@ -274,7 +272,7 @@
if ($request->isAjax()) {
// NOTE: We must render the changeset before we render coverage
// information, since it builds some caches.
- $rendered_changeset = $parser->renderChangeset();
+ $response = $parser->newChangesetResponse();
$mcov = $parser->renderModifiedCoverage();
@@ -282,10 +280,9 @@
'differential-mcoverage-'.md5($changeset->getFilename()) => $mcov,
);
- return id(new PhabricatorChangesetResponse())
- ->setRenderedChangeset($rendered_changeset)
- ->setCoverage($coverage_data)
- ->setUndoTemplates($parser->getRenderer()->renderUndoTemplates());
+ $response->setCoverage($coverage_data);
+
+ return $response;
}
$detail = id(new DifferentialChangesetListView())
diff --git a/src/applications/differential/parser/DifferentialChangesetParser.php b/src/applications/differential/parser/DifferentialChangesetParser.php
--- a/src/applications/differential/parser/DifferentialChangesetParser.php
+++ b/src/applications/differential/parser/DifferentialChangesetParser.php
@@ -44,7 +44,6 @@
private $highlightErrors;
private $disableCache;
private $renderer;
- private $characterEncoding;
private $highlightingDisabled;
private $showEditAndReplyLinks = true;
private $canMarkDone;
@@ -58,7 +57,6 @@
private $highlightEngine;
private $viewer;
- private $documentEngineKey;
private $viewState;
@@ -95,24 +93,12 @@
return $this->viewState;
}
- public function setCharacterEncoding($character_encoding) {
- $this->characterEncoding = $character_encoding;
- return $this;
- }
-
- public function getCharacterEncoding() {
- return $this->characterEncoding;
- }
-
public function setRenderer(DifferentialChangesetRenderer $renderer) {
$this->renderer = $renderer;
return $this;
}
public function getRenderer() {
- if (!$this->renderer) {
- return new DifferentialChangesetTwoUpRenderer();
- }
return $this->renderer;
}
@@ -161,53 +147,34 @@
return $this->viewer;
}
- public function setDocumentEngineKey($document_engine_key) {
- $this->documentEngineKey = $document_engine_key;
- return $this;
- }
-
- public function getDocumentEngineKey() {
- return $this->documentEngineKey;
- }
-
- public static function getDefaultRendererForViewer(PhabricatorUser $viewer) {
- $is_unified = $viewer->compareUserSetting(
- PhabricatorUnifiedDiffsSetting::SETTINGKEY,
- PhabricatorUnifiedDiffsSetting::VALUE_ALWAYS_UNIFIED);
-
- if ($is_unified) {
- return '1up';
- }
-
- return null;
- }
-
- public function readParametersFromRequest(AphrontRequest $request) {
- $this->setCharacterEncoding($request->getStr('encoding'));
- $this->setDocumentEngineKey($request->getStr('engine'));
+ private function newRenderer() {
+ $viewer = $this->getViewer();
+ $viewstate = $this->getViewstate();
- $renderer = null;
+ $renderer_key = $viewstate->getRendererKey();
- // If the viewer prefers unified diffs, always set the renderer to unified.
- // Otherwise, we leave it unspecified and the client will choose a
- // renderer based on the screen size.
+ if ($renderer_key === null) {
+ $is_unified = $viewer->compareUserSetting(
+ PhabricatorUnifiedDiffsSetting::SETTINGKEY,
+ PhabricatorUnifiedDiffsSetting::VALUE_ALWAYS_UNIFIED);
- if ($request->getStr('renderer')) {
- $renderer = $request->getStr('renderer');
- } else {
- $renderer = self::getDefaultRendererForViewer($request->getViewer());
+ if ($is_unified) {
+ $renderer_key = '1up';
+ } else {
+ $renderer_key = $viewstate->getDefaultDeviceRendererKey();
+ }
}
- switch ($renderer) {
+ switch ($renderer_key) {
case '1up':
- $this->setRenderer(new DifferentialChangesetOneUpRenderer());
+ $renderer = new DifferentialChangesetOneUpRenderer();
break;
default:
- $this->setRenderer(new DifferentialChangesetTwoUpRenderer());
+ $renderer = new DifferentialChangesetTwoUpRenderer();
break;
}
- return $this;
+ return $renderer;
}
const CACHE_VERSION = 14;
@@ -633,7 +600,8 @@
$skip_cache = true;
}
- if ($this->characterEncoding) {
+ $character_encoding = $viewstate->getCharacterEncoding();
+ if ($character_encoding !== null) {
$skip_cache = true;
}
@@ -782,6 +750,12 @@
$range_len = null,
$mask_force = array()) {
+ $renderer = $this->getRenderer();
+ if (!$renderer) {
+ $renderer = $this->newRenderer();
+ $this->setRenderer($renderer);
+ }
+
// "Top level" renders are initial requests for the whole file, versus
// requests for a specific range generated by clicking "show more". We
// generate property changes and "shield" UI elements only for toplevel
@@ -789,14 +763,18 @@
$this->isTopLevel = (($range_start === null) && ($range_len === null));
$this->highlightEngine = PhabricatorSyntaxHighlighter::newEngine();
+ $viewstate = $this->getViewState();
+
$encoding = null;
- if ($this->characterEncoding) {
+
+ $character_encoding = $viewstate->getCharacterEncoding();
+ if ($character_encoding) {
// We are forcing this changeset to be interpreted with a specific
// character encoding, so force all the hunks into that encoding and
// propagate it to the renderer.
- $encoding = $this->characterEncoding;
+ $encoding = $character_encoding;
foreach ($this->changeset->getHunks() as $hunk) {
- $hunk->forceEncoding($this->characterEncoding);
+ $hunk->forceEncoding($character_encoding);
}
} else {
// We're just using the default, so tell the renderer what that is
@@ -1794,7 +1772,9 @@
}
}
- $engine_key = $this->getDocumentEngineKey();
+ $viewstate = $this->getViewState();
+
+ $engine_key = $viewstate->getDocumentEngineKey();
if (strlen($engine_key)) {
if (isset($shared_engines[$engine_key])) {
$document_engine = $shared_engines[$engine_key];
@@ -1895,4 +1875,31 @@
return array($old_file, $new_file);
}
+ public function newChangesetResponse() {
+ // NOTE: This has to happen first because it has side effects. Yuck.
+ $rendered_changeset = $this->renderChangeset();
+
+ $renderer = $this->getRenderer();
+ $renderer_key = $renderer->getRendererKey();
+
+ $viewstate = $this->getViewState();
+
+ $undo_templates = $renderer->renderUndoTemplates();
+ foreach ($undo_templates as $key => $undo_template) {
+ $undo_templates[$key] = hsprintf('%s', $undo_template);
+ }
+
+ $state = array(
+ 'undoTemplates' => $undo_templates,
+ 'rendererKey' => $renderer_key,
+ 'highlight' => $viewstate->getHighlightLanguage(),
+ 'characterEncoding' => $viewstate->getCharacterEncoding(),
+ 'documentEngine' => $viewstate->getDocumentEngineKey(),
+ );
+
+ return id(new PhabricatorChangesetResponse())
+ ->setRenderedChangeset($rendered_changeset)
+ ->setChangesetState($state);
+ }
+
}
diff --git a/src/applications/differential/view/DifferentialChangesetDetailView.php b/src/applications/differential/view/DifferentialChangesetDetailView.php
--- a/src/applications/differential/view/DifferentialChangesetDetailView.php
+++ b/src/applications/differential/view/DifferentialChangesetDetailView.php
@@ -11,10 +11,9 @@
private $renderURI;
private $renderingRef;
private $autoload;
- private $loaded;
- private $renderer;
private $repository;
private $diff;
+ private $changesetResponse;
public function setAutoload($autoload) {
$this->autoload = $autoload;
@@ -25,22 +24,22 @@
return $this->autoload;
}
- public function setLoaded($loaded) {
- $this->loaded = $loaded;
+ public function setRenderingRef($rendering_ref) {
+ $this->renderingRef = $rendering_ref;
return $this;
}
- public function getLoaded() {
- return $this->loaded;
+ public function getRenderingRef() {
+ return $this->renderingRef;
}
- public function setRenderingRef($rendering_ref) {
- $this->renderingRef = $rendering_ref;
+ public function setChangesetResponse(PhabricatorChangesetResponse $response) {
+ $this->changesetResponse = $response;
return $this;
}
- public function getRenderingRef() {
- return $this->renderingRef;
+ public function getChangesetResponse() {
+ return $this->changesetResponse;
}
public function setRenderURI($render_uri) {
@@ -72,15 +71,6 @@
return $this;
}
- public function setRenderer($renderer) {
- $this->renderer = $renderer;
- return $this;
- }
-
- public function getRenderer() {
- return $this->renderer;
- }
-
public function getID() {
if (!$this->id) {
$this->id = celerity_generate_unique_node_id();
@@ -139,9 +129,6 @@
$icon = id(new PHUIIconView())
->setIcon($display_icon);
- $renderer = DifferentialChangesetHTMLRenderer::getHTMLRendererByKey(
- $this->getRenderer());
-
$changeset_id = $this->changeset->getID();
$vs_id = $this->getVsChangesetID();
@@ -180,6 +167,17 @@
),
$file_part);
+ $response = $this->getChangesetResponse();
+ if ($response) {
+ $is_loaded = true;
+ $changeset_markup = $response->getRenderedChangeset();
+ $changeset_state = $response->getChangesetState();
+ } else {
+ $is_loaded = false;
+ $changeset_markup = null;
+ $changeset_state = null;
+ }
+
return javelin_tag(
'div',
array(
@@ -188,12 +186,8 @@
'left' => $left_id,
'right' => $right_id,
'renderURI' => $this->getRenderURI(),
- 'highlight' => null,
- 'renderer' => $this->getRenderer(),
'ref' => $this->getRenderingRef(),
'autoload' => $this->getAutoload(),
- 'loaded' => $this->getLoaded(),
- 'undoTemplates' => hsprintf('%s', $renderer->renderUndoTemplates()),
'displayPath' => hsprintf('%s', $display_parts),
'path' => $display_filename,
'icon' => $display_icon,
@@ -201,6 +195,9 @@
'editorURI' => $this->getEditorURI(),
'editorConfigureURI' => $this->getEditorConfigureURI(),
+
+ 'loaded' => $is_loaded,
+ 'changesetState' => $changeset_state,
),
'class' => $class,
'id' => $id,
@@ -225,7 +222,10 @@
'class' => 'changeset-view-content',
'sigil' => 'changeset-view-content',
),
- $this->renderChildren()),
+ array(
+ $changeset_markup,
+ $this->renderChildren(),
+ )),
));
}
diff --git a/src/applications/differential/view/DifferentialChangesetListView.php b/src/applications/differential/view/DifferentialChangesetListView.php
--- a/src/applications/differential/view/DifferentialChangesetListView.php
+++ b/src/applications/differential/view/DifferentialChangesetListView.php
@@ -153,9 +153,6 @@
$changesets = $this->changesets;
- $renderer = DifferentialChangesetParser::getDefaultRendererForViewer(
- $viewer);
-
$repository = $this->getRepository();
$diff = $this->getDiff();
@@ -167,7 +164,7 @@
$ref = $this->references[$key];
$detail = id(new DifferentialChangesetDetailView())
- ->setUser($viewer);
+ ->setViewer($viewer);
if ($repository) {
$detail->setRepository($repository);
@@ -193,11 +190,11 @@
$detail->setRenderingRef($ref);
$detail->setRenderURI($this->renderURI);
- $detail->setRenderer($renderer);
- if ($this->getParser()) {
- $detail->appendChild($this->getParser()->renderChangeset());
- $detail->setLoaded(true);
+ $parser = $this->getParser();
+ if ($parser) {
+ $response = $parser->newChangesetResponse();
+ $detail->setChangesetResponse($response);
} else {
$detail->setAutoload(isset($this->visibleChangesets[$key]));
if (isset($this->visibleChangesets[$key])) {
diff --git a/src/applications/diffusion/controller/DiffusionDiffController.php b/src/applications/diffusion/controller/DiffusionDiffController.php
--- a/src/applications/diffusion/controller/DiffusionDiffController.php
+++ b/src/applications/diffusion/controller/DiffusionDiffController.php
@@ -79,8 +79,6 @@
'action' => 'rendering-ref',
)));
- $parser->readParametersFromRequest($request);
-
$coverage = $drequest->loadCoverage();
if ($coverage) {
$parser->setCoverage($coverage);
@@ -132,8 +130,6 @@
$parser->setRange($range_s, $range_e);
$parser->setMask($mask);
- return id(new PhabricatorChangesetResponse())
- ->setRenderedChangeset($parser->renderChangeset())
- ->setUndoTemplates($parser->getRenderer()->renderUndoTemplates());
+ return $parser->newChangesetResponse();
}
}
diff --git a/src/infrastructure/diff/PhabricatorChangesetResponse.php b/src/infrastructure/diff/PhabricatorChangesetResponse.php
--- a/src/infrastructure/diff/PhabricatorChangesetResponse.php
+++ b/src/infrastructure/diff/PhabricatorChangesetResponse.php
@@ -4,20 +4,19 @@
private $renderedChangeset;
private $coverage;
- private $undoTemplates;
+ private $changesetState;
public function setRenderedChangeset($rendered_changeset) {
$this->renderedChangeset = $rendered_changeset;
return $this;
}
- public function setCoverage($coverage) {
- $this->coverage = $coverage;
- return $this;
+ public function getRenderedChangeset() {
+ return $this->renderedChangeset;
}
- public function setUndoTemplates($undo_templates) {
- $this->undoTemplates = $undo_templates;
+ public function setCoverage($coverage) {
+ $this->coverage = $coverage;
return $this;
}
@@ -27,18 +26,23 @@
public function reduceProxyResponse() {
$content = array(
- 'changeset' => $this->renderedChangeset,
- );
+ 'changeset' => $this->getRenderedChangeset(),
+ ) + $this->getChangesetState();
if ($this->coverage) {
$content['coverage'] = $this->coverage;
}
- if ($this->undoTemplates) {
- $content['undoTemplates'] = $this->undoTemplates;
- }
-
return $this->getProxy()->setContent($content);
}
+ public function setChangesetState(array $state) {
+ $this->changesetState = $state;
+ return $this;
+ }
+
+ public function getChangesetState() {
+ return $this->changesetState;
+ }
+
}
diff --git a/src/infrastructure/diff/viewstate/PhabricatorChangesetViewState.php b/src/infrastructure/diff/viewstate/PhabricatorChangesetViewState.php
--- a/src/infrastructure/diff/viewstate/PhabricatorChangesetViewState.php
+++ b/src/infrastructure/diff/viewstate/PhabricatorChangesetViewState.php
@@ -4,6 +4,10 @@
extends Phobject {
private $highlightLanguage;
+ private $characterEncoding;
+ private $documentEngineKey;
+ private $rendererKey;
+ private $defaultDeviceRendererKey;
public function setHighlightLanguage($highlight_language) {
$this->highlightLanguage = $highlight_language;
@@ -14,4 +18,40 @@
return $this->highlightLanguage;
}
+ public function setCharacterEncoding($character_encoding) {
+ $this->characterEncoding = $character_encoding;
+ return $this;
+ }
+
+ public function getCharacterEncoding() {
+ return $this->characterEncoding;
+ }
+
+ public function setDocumentEngineKey($document_engine_key) {
+ $this->documentEngineKey = $document_engine_key;
+ return $this;
+ }
+
+ public function getDocumentEngineKey() {
+ return $this->documentEngineKey;
+ }
+
+ public function setRendererKey($renderer_key) {
+ $this->rendererKey = $renderer_key;
+ return $this;
+ }
+
+ public function getRendererKey() {
+ return $this->rendererKey;
+ }
+
+ public function setDefaultDeviceRendererKey($renderer_key) {
+ $this->defaultDeviceRendererKey = $renderer_key;
+ return $this;
+ }
+
+ public function getDefaultDeviceRendererKey() {
+ return $this->defaultDeviceRendererKey;
+ }
+
}
diff --git a/src/infrastructure/diff/viewstate/PhabricatorChangesetViewStateEngine.php b/src/infrastructure/diff/viewstate/PhabricatorChangesetViewStateEngine.php
--- a/src/infrastructure/diff/viewstate/PhabricatorChangesetViewStateEngine.php
+++ b/src/infrastructure/diff/viewstate/PhabricatorChangesetViewStateEngine.php
@@ -41,10 +41,25 @@
$this->setStorage($storage);
$highlight = $request->getStr('highlight');
- if ($highlight !== null && strlen($highlight)) {
+ if ($highlight !== null) {
$this->setChangesetProperty('highlight', $highlight);
}
+ $encoding = $request->getStr('encoding');
+ if ($encoding !== null) {
+ $this->setChangesetProperty('encoding', $encoding);
+ }
+
+ $engine = $request->getStr('engine');
+ if ($engine !== null) {
+ $this->setChangesetProperty('engine', $engine);
+ }
+
+ $renderer = $request->getStr('renderer');
+ if ($renderer !== null) {
+ $this->setChangesetProperty('renderer', $renderer);
+ }
+
$this->saveViewStateStorage();
$state = new PhabricatorChangesetViewState();
@@ -52,6 +67,23 @@
$highlight_language = $this->getChangesetProperty('highlight');
$state->setHighlightLanguage($highlight_language);
+ $encoding = $this->getChangesetProperty('encoding');
+ $state->setCharacterEncoding($encoding);
+
+ $document_engine = $this->getChangesetProperty('engine');
+ $state->setDocumentEngineKey($document_engine);
+
+ $renderer = $this->getChangesetProperty('renderer');
+ $state->setRendererKey($renderer);
+
+ // This is the client-selected default renderer based on viewport
+ // dimensions.
+
+ $device_key = $request->getStr('device');
+ if ($device_key !== null && strlen($device_key)) {
+ $state->setDefaultDeviceRendererKey($device_key);
+ }
+
return $state;
}
diff --git a/webroot/rsrc/js/application/diff/DiffChangeset.js b/webroot/rsrc/js/application/diff/DiffChangeset.js
--- a/webroot/rsrc/js/application/diff/DiffChangeset.js
+++ b/webroot/rsrc/js/application/diff/DiffChangeset.js
@@ -22,10 +22,6 @@
this._renderURI = data.renderURI;
this._ref = data.ref;
- this._renderer = data.renderer;
- this._highlight = data.highlight;
- this._documentEngine = data.documentEngine;
- this._encoding = data.encoding;
this._loaded = data.loaded;
this._treeNodeID = data.treeNodeID;
@@ -39,6 +35,10 @@
this._editorConfigureURI = data.editorConfigureURI;
this._inlines = [];
+
+ if (data.changesetState) {
+ this._loadChangesetState(data.changesetState);
+ }
},
members: {
@@ -49,10 +49,10 @@
_renderURI: null,
_ref: null,
- _renderer: null,
+ _rendererKey: null,
_highlight: null,
_documentEngine: null,
- _encoding: null,
+ _characterEncoding: null,
_undoTemplates: null,
_leftID: null,
@@ -187,11 +187,11 @@
*
* @return this
*/
- reload: function() {
+ reload: function(state) {
this._loaded = true;
this._sequence++;
- var params = this._getViewParameters();
+ var params = this._getViewParameters(state);
var pht = this.getChangesetList().getTranslations();
var workflow = new JX.Workflow(this._renderURI, params)
@@ -321,14 +321,17 @@
/**
* Get parameters which define the current rendering options.
*/
- _getViewParameters: function() {
- return {
+ _getViewParameters: function(state) {
+ var parameters = {
ref: this._ref,
- renderer: this.getRenderer() || '',
- highlight: this._highlight || '',
- engine: this._documentEngine || '',
- encoding: this._encoding || ''
+ device: this._getDefaultDeviceRenderer()
};
+
+ if (state) {
+ JX.copy(parameters, state);
+ }
+
+ return parameters;
},
/**
@@ -344,16 +347,11 @@
return JX.Router.getInstance().getRoutableByKey(this._getRoutableKey());
},
- setRenderer: function(renderer) {
- this._renderer = renderer;
- return this;
+ getRendererKey: function() {
+ return this._rendererKey;
},
- getRenderer: function() {
- if (this._renderer !== null) {
- return this._renderer;
- }
-
+ _getDefaultDeviceRenderer: function() {
// NOTE: If you load the page at one device resolution and then resize to
// a different one we don't re-render the diffs, because it's a
// complicated mess and you could lose inline comments, cursor positions,
@@ -365,28 +363,14 @@
return this._undoTemplates;
},
- setEncoding: function(encoding) {
- this._encoding = encoding;
- return this;
- },
-
- getEncoding: function() {
- return this._encoding;
- },
-
- setHighlight: function(highlight) {
- this._highlight = highlight;
- return this;
+ getCharacterEncoding: function() {
+ return this._characterEncoding;
},
getHighlight: function() {
return this._highlight;
},
- setDocumentEngine: function(engine) {
- this._documentEngine = engine;
- },
-
getDocumentEngine: function(engine) {
return this._documentEngine;
},
@@ -614,25 +598,34 @@
_onchangesetresponse: function(response) {
// Code shared by autoload and context responses.
- if (response.coverage) {
- for (var k in response.coverage) {
+ this._loadChangesetState(response);
+
+ JX.Stratcom.invoke('differential-inline-comment-refresh');
+
+ this._rebuildAllInlines();
+
+ JX.Stratcom.invoke('resize');
+ },
+
+ _loadChangesetState: function(state) {
+ if (state.coverage) {
+ for (var k in state.coverage) {
try {
- JX.DOM.replace(JX.$(k), JX.$H(response.coverage[k]));
+ JX.DOM.replace(JX.$(k), JX.$H(state.coverage[k]));
} catch (ignored) {
// Not terribly important.
}
}
}
- if (response.undoTemplates) {
- this._undoTemplates = response.undoTemplates;
+ if (state.undoTemplates) {
+ this._undoTemplates = state.undoTemplates;
}
- JX.Stratcom.invoke('differential-inline-comment-refresh');
-
- this._rebuildAllInlines();
-
- JX.Stratcom.invoke('resize');
+ this._rendererKey = state.rendererKey;
+ this._highlight = state.highlight;
+ this._characterEncoding = state.characterEncoding;
+ this._documentEngine = state.documentEngine;
},
_getContentFrame: function() {
diff --git a/webroot/rsrc/js/application/diff/DiffChangesetList.js b/webroot/rsrc/js/application/diff/DiffChangesetList.js
--- a/webroot/rsrc/js/application/diff/DiffChangesetList.js
+++ b/webroot/rsrc/js/application/diff/DiffChangesetList.js
@@ -798,15 +798,16 @@
}
}
- var renderer = changeset.getRenderer();
+ var renderer = changeset.getRendererKey();
if (renderer == '1up') {
renderer = '2up';
} else {
renderer = '1up';
}
- changeset.setRenderer(renderer);
+ changeset.reload({renderer: renderer});
+ } else {
+ changeset.reload();
}
- changeset.reload();
e.prevent();
menu.close();
@@ -818,13 +819,12 @@
.setName(pht('Change Text Encoding...'))
.setHandler(function(e) {
var params = {
- encoding: changeset.getEncoding()
+ encoding: changeset.getCharacterEncoding()
};
new JX.Workflow('/services/encoding/', params)
.setHandler(function(r) {
- changeset.setEncoding(r.encoding);
- changeset.reload();
+ changeset.reload({encoding: r.encoding});
})
.start();
@@ -843,8 +843,7 @@
new JX.Workflow('/services/highlight/', params)
.setHandler(function(r) {
- changeset.setHighlight(r.highlight);
- changeset.reload();
+ changeset.reload({highlight: r.highlight});
})
.start();
@@ -863,8 +862,7 @@
new JX.Workflow('/services/viewas/', params)
.setHandler(function(r) {
- changeset.setDocumentEngine(r.engine);
- changeset.reload();
+ changeset.reload({engine: r.engine});
})
.start();
@@ -917,7 +915,7 @@
engine_item.setDisabled(!changeset.isLoaded());
if (changeset.isLoaded()) {
- if (changeset.getRenderer() == '2up') {
+ if (changeset.getRendererKey() == '2up') {
up_item
.setIcon('fa-list-alt')
.setName(pht('View Unified'));
diff --git a/webroot/rsrc/js/application/diff/DiffInline.js b/webroot/rsrc/js/application/diff/DiffInline.js
--- a/webroot/rsrc/js/application/diff/DiffInline.js
+++ b/webroot/rsrc/js/application/diff/DiffInline.js
@@ -461,7 +461,7 @@
op: operation,
id: this._id,
on_right: ((this.getDisplaySide() == 'right') ? 1 : 0),
- renderer: this.getChangeset().getRenderer(),
+ renderer: this.getChangeset().getRendererKey(),
number: this.getLineNumber(),
length: this.getLineLength(),
is_new: this.isNewFile(),

File Metadata

Mime Type
text/plain
Expires
Fri, May 10, 6:09 AM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6281670
Default Alt Text
D21138.id50335.diff (29 KB)

Event Timeline