1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 08:42:41 +01:00

Hide inlines one-by-one, instead of in a big group

Summary:
Ref T12616. Fixes T12153. Currently, when you hide inlines, they hide completely and turn into a little bubble on the previous line.

Instead, collapse them to a single line one-by-one. Narrowly, this fixes T12153.

In the future, I plan to make these changes so this feature makes more sense:

  - Introduce global "hide everything" states (T8909) so you can completely hide stuff if you want, and this represents more of a halfway state between "nuke it" and "view it".
  - Make the actual rendering better, so it says "epriestley: blah blah..." instead of just "..." -- and looks less dumb.

The real goal here is to introduce `DiffInline` and continue moving stuff from the tangled jungle of a million top-level behaviors to sensible smooth statefulness.

Test Plan:
  - Hid and revealed inlines in unified and two-up modes.
  - These look pretty junk for now:

{F4948659}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12616, T12153

Differential Revision: https://secure.phabricator.com/D17861
This commit is contained in:
epriestley 2017-05-09 12:09:45 -07:00
parent fe44e987fb
commit 4fd4ec3d27
18 changed files with 250 additions and 217 deletions

View file

@ -12,8 +12,8 @@ return array(
'core.pkg.css' => 'd1bf3405',
'core.pkg.js' => '2ff7879f',
'darkconsole.pkg.js' => '1f9a31bc',
'differential.pkg.css' => '90b30783',
'differential.pkg.js' => '2de0157a',
'differential.pkg.css' => '58712637',
'differential.pkg.js' => '70685319',
'diffusion.pkg.css' => 'b93d9b8c',
'diffusion.pkg.js' => '84c8f8fd',
'favicon.ico' => '30672e08',
@ -66,7 +66,7 @@ return array(
'rsrc/css/application/differential/add-comment.css' => 'c47f8c40',
'rsrc/css/application/differential/changeset-view.css' => '41af6d25',
'rsrc/css/application/differential/core.css' => '5b7b8ff4',
'rsrc/css/application/differential/phui-inline-comment.css' => 'be663c95',
'rsrc/css/application/differential/phui-inline-comment.css' => '3fd8ca64',
'rsrc/css/application/differential/revision-comment.css' => '14b8565a',
'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
@ -390,16 +390,17 @@ return array(
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
'rsrc/js/application/diff/DiffChangeset.js' => '2cbf5575',
'rsrc/js/application/diff/DiffChangesetList.js' => '16c14b02',
'rsrc/js/application/diff/DiffChangeset.js' => '80ac3298',
'rsrc/js/application/diff/DiffChangesetList.js' => 'a34b9821',
'rsrc/js/application/diff/DiffInline.js' => 'f9e76f2d',
'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => '2e3f9738',
'rsrc/js/application/differential/behavior-comment-jump.js' => '4fdb476d',
'rsrc/js/application/differential/behavior-comment-preview.js' => 'b064af76',
'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
'rsrc/js/application/differential/behavior-edit-inline-comments.js' => 'c0f1c3b5',
'rsrc/js/application/differential/behavior-edit-inline-comments.js' => 'e7e9551e',
'rsrc/js/application/differential/behavior-keyboard-nav.js' => '92904457',
'rsrc/js/application/differential/behavior-populate.js' => '8991de30',
'rsrc/js/application/differential/behavior-populate.js' => '5e41c819',
'rsrc/js/application/differential/behavior-toggle-files.js' => 'ca3f91eb',
'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c93358e3',
@ -623,10 +624,10 @@ return array(
'javelin-behavior-diff-preview-link' => '051c7832',
'javelin-behavior-differential-comment-jump' => '4fdb476d',
'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
'javelin-behavior-differential-edit-inline-comments' => 'c0f1c3b5',
'javelin-behavior-differential-edit-inline-comments' => 'e7e9551e',
'javelin-behavior-differential-feedback-preview' => 'b064af76',
'javelin-behavior-differential-keyboard-navigation' => '92904457',
'javelin-behavior-differential-populate' => '8991de30',
'javelin-behavior-differential-populate' => '5e41c819',
'javelin-behavior-differential-toggle-files' => 'ca3f91eb',
'javelin-behavior-differential-user-select' => 'a8d8459d',
'javelin-behavior-diffusion-browse-file' => '054a0f0b',
@ -784,8 +785,9 @@ return array(
'phabricator-darklog' => 'c8e1ffe3',
'phabricator-darkmessage' => 'c48cccdd',
'phabricator-dashboard-css' => 'fe5b1869',
'phabricator-diff-changeset' => '2cbf5575',
'phabricator-diff-changeset-list' => '16c14b02',
'phabricator-diff-changeset' => '80ac3298',
'phabricator-diff-changeset-list' => 'a34b9821',
'phabricator-diff-inline' => 'f9e76f2d',
'phabricator-drag-and-drop-file-upload' => '58dea2fa',
'phabricator-draggable-list' => 'bea6e7f4',
'phabricator-fatal-config-template-css' => '8f18fa41',
@ -868,7 +870,7 @@ return array(
'phui-image-mask-css' => 'a8498f9c',
'phui-info-panel-css' => '27ea50a1',
'phui-info-view-css' => '6e217679',
'phui-inline-comment-view-css' => 'be663c95',
'phui-inline-comment-view-css' => '3fd8ca64',
'phui-invisible-character-view-css' => '6993d9f0',
'phui-lightbox-css' => '0a035e40',
'phui-list-view-css' => '12eb8ce6',
@ -1004,9 +1006,6 @@ return array(
'javelin-dom',
'javelin-history',
),
'16c14b02' => array(
'javelin-install',
),
'17bb8539' => array(
'javelin-behavior',
'javelin-stratcom',
@ -1116,16 +1115,6 @@ return array(
'javelin-install',
'javelin-event',
),
'2cbf5575' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
),
'2e3f9738' => array(
'javelin-dom',
'javelin-util',
@ -1388,6 +1377,14 @@ return array(
'phabricator-phtize',
'javelin-dom',
),
'5e41c819' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'phabricator-tooltip',
'phabricator-diff-changeset-list',
'phabricator-diff-changeset',
),
'5e9f347c' => array(
'javelin-behavior',
'multirow-row-manager',
@ -1538,6 +1535,17 @@ return array(
'javelin-vector',
'javelin-stratcom',
),
'80ac3298' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
'phabricator-diff-inline',
),
'834a1173' => array(
'javelin-behavior',
'javelin-scrollbar',
@ -1590,14 +1598,6 @@ return array(
'phabricator-draggable-list',
'javelin-workboard-column',
),
'8991de30' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'phabricator-tooltip',
'phabricator-diff-changeset-list',
'phabricator-diff-changeset',
),
'8a41885b' => array(
'javelin-install',
'javelin-dom',
@ -1719,6 +1719,9 @@ return array(
'javelin-dom',
'javelin-reactor-dom',
),
'a34b9821' => array(
'javelin-install',
),
'a3a63478' => array(
'phui-workcard-view-css',
),
@ -1932,14 +1935,6 @@ return array(
'javelin-install',
'javelin-dom',
),
'c0f1c3b5' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
'javelin-util',
'javelin-vector',
'differential-inline-comment-editor',
),
'c420b0b9' => array(
'javelin-behavior',
'javelin-behavior-device',
@ -2161,6 +2156,14 @@ return array(
'javelin-workflow',
'javelin-magical-init',
),
'e7e9551e' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
'javelin-util',
'javelin-vector',
'differential-inline-comment-editor',
),
'e9581f08' => array(
'javelin-behavior',
'javelin-stratcom',
@ -2225,6 +2228,9 @@ return array(
'javelin-install',
'javelin-dom',
),
'f9e76f2d' => array(
'javelin-dom',
),
'fbe497e7' => array(
'javelin-behavior',
'javelin-util',

View file

@ -41,8 +41,6 @@ final class DifferentialChangesetOneUpRenderer
$column_width = 4;
$hidden = new PHUIDiffRevealIconView();
$out = array();
foreach ($primitives as $k => $p) {
$type = $p['type'];
@ -53,27 +51,6 @@ final class DifferentialChangesetOneUpRenderer
case 'new-file':
$is_old = ($type == 'old' || $type == 'old-file');
$o_hidden = array();
$n_hidden = array();
for ($look = $k + 1; isset($primitives[$look]); $look++) {
$next = $primitives[$look];
switch ($next['type']) {
case 'inline':
$comment = $next['comment'];
if ($comment->isHidden()) {
if ($next['right']) {
$n_hidden[] = $comment;
} else {
$o_hidden[] = $comment;
}
}
break;
default:
break 2;
}
}
$cells = array();
if ($is_old) {
if ($p['htype']) {
@ -93,9 +70,6 @@ final class DifferentialChangesetOneUpRenderer
}
$line = $p['line'];
if ($o_hidden) {
$line = array($hidden, $line);
}
$cells[] = phutil_tag(
'th',
@ -122,9 +96,6 @@ final class DifferentialChangesetOneUpRenderer
}
$oline = $p['oline'];
if ($o_hidden) {
$oline = array($hidden, $oline);
}
$cells[] = phutil_tag('th', array('id' => $left_id), $oline);
}
@ -140,9 +111,6 @@ final class DifferentialChangesetOneUpRenderer
}
$line = $p['line'];
if ($n_hidden) {
$line = array($hidden, $line);
}
$cells[] = phutil_tag(
'th',

View file

@ -69,8 +69,6 @@ final class DifferentialChangesetTwoUpRenderer
$depths = $this->getDepths();
$mask = $this->getMask();
$hidden = new PHUIDiffRevealIconView();
for ($ii = $range_start; $ii < $range_start + $range_len; $ii++) {
if (empty($mask[$ii])) {
// If we aren't going to show this line, we've just entered a gap.
@ -241,9 +239,6 @@ final class DifferentialChangesetTwoUpRenderer
$new_comments = $this->getNewComments();
$scaffolds = array();
$o_hidden = array();
$n_hidden = array();
if ($o_num && isset($old_comments[$o_num])) {
foreach ($old_comments[$o_num] as $comment) {
$inline = $this->buildInlineComment(
@ -251,10 +246,6 @@ final class DifferentialChangesetTwoUpRenderer
$on_right = false);
$scaffold = $this->getRowScaffoldForInline($inline);
if ($comment->isHidden()) {
$o_hidden[] = $comment;
}
if ($n_num && isset($new_comments[$n_num])) {
foreach ($new_comments[$n_num] as $key => $new_comment) {
if ($comment->isCompatible($new_comment)) {
@ -262,10 +253,6 @@ final class DifferentialChangesetTwoUpRenderer
$new_comment,
$on_right = true);
if ($new_comment->isHidden()) {
$n_hidden = $new_comment;
}
$scaffold->addInlineView($companion);
unset($new_comments[$n_num][$key]);
break;
@ -284,22 +271,10 @@ final class DifferentialChangesetTwoUpRenderer
$comment,
$on_right = true);
if ($comment->isHidden()) {
$n_hidden[] = $comment;
}
$scaffolds[] = $this->getRowScaffoldForInline($inline);
}
}
if ($o_hidden) {
$o_num = array($hidden, $o_num);
}
if ($n_hidden) {
$n_num = array($hidden, $n_num);
}
// NOTE: This is a unicode zero-width space, which we use as a hint when
// intercepting 'copy' events to make sure sensible text ends up on the
// clipboard. See the 'phabricator-oncopy' behavior.

View file

@ -166,7 +166,7 @@ final class DifferentialChangesetDetailView extends AphrontView {
'ref' => $this->getRenderingRef(),
'autoload' => $this->getAutoload(),
'loaded' => $this->getLoaded(),
'undoTemplates' => $renderer->renderUndoTemplates(),
'undoTemplates' => hsprintf('%s', $renderer->renderUndoTemplates()),
),
'class' => $class,
'id' => $id,

View file

@ -146,11 +146,6 @@ final class DifferentialChangesetListView extends AphrontView {
foreach ($changesets as $key => $changeset) {
$file = $changeset->getFilename();
$class = 'differential-changeset';
if (!$this->inlineURI) {
$class .= ' differential-changeset-noneditable';
}
$ref = $this->references[$key];
$detail = id(new DifferentialChangesetDetailView())
@ -219,6 +214,7 @@ final class DifferentialChangesetListView extends AphrontView {
'differential-populate',
array(
'changesetViewIDs' => $ids,
'inlineURI' => $this->inlineURI,
'pht' => array(
'Open in Editor' => pht('Open in Editor'),
'Show All Context' => pht('Show All Context'),
@ -247,7 +243,6 @@ final class DifferentialChangesetListView extends AphrontView {
Javelin::initBehavior('differential-edit-inline-comments', array(
'uri' => $this->inlineURI,
'stage' => 'differential-review-stage',
'revealIcon' => hsprintf('%s', new PHUIDiffRevealIconView()),
));
}

View file

@ -450,7 +450,20 @@ final class PHUIDiffInlineCommentDetailView
phutil_tag_div('phabricator-remarkup', $content)),
));
return $markup;
$summary = phutil_tag(
'div',
array(
'class' => 'differential-inline-summary',
),
// TODO: Render something a little more useful here as a hint about the
// inline content, like "alincoln: first line of text...".
pht('...'));
return array(
$markup,
$summary,
);
}
private function canHide() {

View file

@ -21,21 +21,28 @@ abstract class PHUIDiffInlineCommentRowScaffold extends AphrontView {
}
protected function getRowAttributes() {
// TODO: This is semantic information used by the JS when placing comments
// and using keyboard navigation; we should move it out of class names.
$style = null;
$is_hidden = false;
foreach ($this->getInlineViews() as $view) {
if ($view->isHidden()) {
$style = 'display: none';
$is_hidden = true;
}
}
return array(
'class' => 'inline',
$classes = array();
$classes[] = 'inline';
if ($is_hidden) {
$classes[] = 'inline-hidden';
}
$result = array(
'class' => implode(' ', $classes),
'sigil' => 'inline-row',
'style' => $style,
'meta' => array(
'hidden' => $is_hidden,
),
);
return $result;
}
}

View file

@ -9,6 +9,10 @@
final class PHUIDiffInlineCommentUndoView
extends PHUIDiffInlineCommentView {
public function isHideable() {
return false;
}
public function render() {
$link = javelin_tag(
'a',

View file

@ -21,4 +21,16 @@ abstract class PHUIDiffInlineCommentView extends AphrontView {
return false;
}
public function isHideable() {
return true;
}
public function newHiddenIcon() {
if ($this->isHideable()) {
return new PHUIDiffRevealIconView();
} else {
return null;
}
}
}

View file

@ -22,9 +22,17 @@ final class PHUIDiffOneUpInlineCommentRowScaffold
'id' => $inline->getScaffoldCellID(),
);
if ($inline->getIsOnRight()) {
$left_hidden = null;
$right_hidden = $inline->newHiddenIcon();
} else {
$left_hidden = $inline->newHiddenIcon();
$right_hidden = null;
}
$cells = array(
phutil_tag('th', array()),
phutil_tag('th', array()),
phutil_tag('th', array(), $left_hidden),
phutil_tag('th', array(), $right_hidden),
phutil_tag('td', $attrs, $inline),
);

View file

@ -8,7 +8,7 @@ final class PHUIDiffRevealIconView extends AphrontView {
->addSigil('has-tooltip')
->setMetadata(
array(
'tip' => pht('Show Hidden Comments'),
'tip' => pht('Show Hidden Comment'),
'align' => 'E',
'size' => 275,
));
@ -17,8 +17,8 @@ final class PHUIDiffRevealIconView extends AphrontView {
'a',
array(
'href' => '#',
'class' => 'reveal-inlines',
'sigil' => 'reveal-inlines',
'class' => 'reveal-inline',
'sigil' => 'reveal-inline',
'mustcapture' => true,
),
$icon);

View file

@ -27,9 +27,15 @@ final class PHUIDiffTwoUpInlineCommentRowScaffold
if ($inline->getIsOnRight()) {
$left_side = null;
$right_side = $inline;
$left_hidden = null;
$right_hidden = $inline->newHiddenIcon();
} else {
$left_side = $inline;
$right_side = null;
$left_hidden = $inline->newHiddenIcon();
$right_hidden = null;
}
} else {
list($u, $v) = $inlines;
@ -48,6 +54,9 @@ final class PHUIDiffTwoUpInlineCommentRowScaffold
$left_side = $v;
$right_side = $u;
}
$left_hidden = null;
$right_hidden = null;
}
$left_attrs = array(
@ -62,9 +71,9 @@ final class PHUIDiffTwoUpInlineCommentRowScaffold
);
$cells = array(
phutil_tag('th', array()),
phutil_tag('th', array(), $left_hidden),
phutil_tag('td', $left_attrs, $left_side),
phutil_tag('th', array()),
phutil_tag('th', array(), $right_hidden),
phutil_tag('td', $right_attrs, $right_side),
);

View file

@ -374,17 +374,36 @@
/* - Hiding Inlines ------------------------------------------------------------
*/
.reveal-inlines {
float: left;
margin-left: 4px;
.reveal-inline {
color: {$lightbluetext};
margin: 4px 0;
display: none;
}
.inline-hidden .reveal-inline {
display: block;
}
.inline-hidden .differential-inline-comment {
display: none;
}
.differential-inline-summary {
background: {$greybackground};
padding: 0 4px;
color: {$greytext};
display: none;
}
.inline-hidden .differential-inline-summary {
display: block;
}
.reveal-inline span.phui-icon-view {
color: {$lightbluetext};
}
.reveal-inlines span.phui-icon-view {
color: {$lightbluetext};
}
.reveal-inlines:hover span.phui-icon-view {
.reveal-inline:hover span.phui-icon-view {
color: {$darkbluetext};
}

View file

@ -8,6 +8,8 @@
* javelin-router
* javelin-behavior-device
* javelin-vector
* phabricator-diff-inline
* @javelin
*/
@ -24,6 +26,8 @@ JX.install('DiffChangeset', {
this._highlight = data.highlight;
this._encoding = data.encoding;
this._loaded = data.loaded;
this._inlines = [];
},
properties: {
@ -44,6 +48,7 @@ JX.install('DiffChangeset', {
_encoding: null,
_undoTemplates: null,
_inlines: null,
/**
* Has the content of this changeset been loaded?
@ -401,6 +406,20 @@ JX.install('DiffChangeset', {
_getRoutableKey: function() {
return 'changeset-view.' + this._ref + '.' + this._sequence;
},
getInlineForRow: function(node) {
var data = JX.Stratcom.getData(node);
if (!data.inline) {
var inline = new JX.DiffInline(node)
.setChangeset(this);
this._inlines.push(inline);
data.inline = inline;
}
return data.inline;
}
},

View file

@ -17,10 +17,17 @@ JX.install('DiffChangesetList', {
var onmenu = JX.bind(this, this._ifawake, this._onmenu);
JX.Stratcom.listen('click', 'differential-view-options', onmenu);
var onhide = JX.bind(this, this._ifawake, this._onhide);
JX.Stratcom.listen('click', 'hide-inline', onhide);
var onreveal = JX.bind(this, this._ifawake, this._onreveal);
JX.Stratcom.listen('click', 'reveal-inline', onreveal);
},
properties: {
translations: null
translations: null,
inlineURI: null
},
members: {
@ -309,10 +316,28 @@ JX.install('DiffChangesetList', {
data.menu = menu;
menu.open();
},
_onhide: function(e) {
this._onhidereveal(e, true);
},
_onreveal: function(e) {
this._onhidereveal(e, false);
},
_onhidereveal: function(e, is_hide) {
e.kill();
var node = e.getNode('differential-changeset');
var changeset = this.getChangesetForNode(node);
var inline_node = e.getNode('inline-row');
var inline = changeset.getInlineForRow(inline_node);
inline.setHidden(is_hide);
}
}
});

View file

@ -0,0 +1,56 @@
/**
* @provides phabricator-diff-inline
* @requires javelin-dom
* @javelin
*/
JX.install('DiffInline', {
construct : function(row) {
this._row = row;
var data = JX.Stratcom.getData(row);
this._hidden = data.hidden || false;
// TODO: Get smarter about this once we do more editing, this is pretty
// hacky.
var comment = JX.DOM.find(row, 'div', 'differential-inline-comment');
this._id = JX.Stratcom.getData(comment).id;
},
properties: {
changeset: null
},
members: {
_id: null,
_row: null,
_hidden: false,
setHidden: function(hidden) {
this._hidden = hidden;
JX.DOM.alterClass(this._row, 'inline-hidden', this._hidden);
var op;
if (hidden) {
op = 'hide';
} else {
op = 'show';
}
var inline_uri = this._getChangesetList().getInlineURI();
var comment_id = this._id;
new JX.Workflow(inline_uri, {op: op, ids: comment_id})
.setHandler(JX.bag)
.start();
},
_getChangesetList: function() {
var changeset = this.getChangeset();
return changeset.getChangesetList();
}
}
});

View file

@ -425,87 +425,4 @@ JX.behavior('differential-edit-inline-comments', function(config) {
handle_inline_action(data.node, data.op);
});
// Respond to the user clicking the "Hide Inline" button on an inline
// comment.
JX.Stratcom.listen('click', 'hide-inline', function(e) {
e.kill();
var row = e.getNode('inline-row');
JX.DOM.hide(row);
var prev = row.previousSibling;
while (prev && JX.Stratcom.hasSigil(prev, 'inline-row')) {
prev = prev.previousSibling;
}
if (!prev) {
return;
}
var comment = e.getNodeData('differential-inline-comment');
var slots = [];
for (var ii = 0; ii < prev.childNodes.length; ii++) {
if (JX.DOM.isType(prev.childNodes[ii], 'th')) {
slots.push(prev.childNodes[ii]);
}
}
// Select the right-hand side if the comment is on the right.
var slot = (comment.on_right && slots[1]) || slots[0];
var reveal = JX.DOM.scry(slot, 'a', 'reveal-inlines')[0];
if (!reveal) {
reveal = JX.$N(
'a',
{
className: 'reveal-inlines',
sigil: 'reveal-inlines'
},
JX.$H(config.revealIcon));
JX.DOM.prependContent(slot, reveal);
}
new JX.Workflow(config.uri, {op: 'hide', ids: comment.id})
.setHandler(JX.bag)
.start();
});
JX.Stratcom.listen('click', 'reveal-inlines', function(e) {
e.kill();
var row = e.getNode('tag:tr');
var next = row.nextSibling;
var ids = [];
var ii;
// Show any hidden inline comment rows directly below this one.
while (next && JX.Stratcom.hasSigil(next, 'inline-row')) {
JX.DOM.show(next);
var comments = JX.DOM.scry(next, 'div', 'differential-inline-comment');
for (ii = 0; ii < comments.length; ii++) {
var id = JX.Stratcom.getData(comments[ii]).id;
if (id) {
ids.push(id);
}
}
next = next.nextSibling;
}
// Remove any "reveal" icons on the row.
var reveals = JX.DOM.scry(row, 'a', 'reveal-inlines');
for (ii = 0; ii < reveals.length; ii++) {
JX.DOM.remove(reveals[ii]);
}
new JX.Workflow(config.uri, {op: 'show', ids: ids.join(',')})
.setHandler(JX.bag)
.start();
});
});

View file

@ -59,7 +59,8 @@ JX.behavior('differential-populate', function(config, statics) {
}
var changeset_list = new JX.DiffChangesetList()
.setTranslations(JX.phtize(config.pht));
.setTranslations(JX.phtize(config.pht))
.setInlineURI(config.inlineURI);
// Install and activate the current page.
var page_id = JX.Quicksand.getCurrentPageID();
@ -71,7 +72,6 @@ JX.behavior('differential-populate', function(config, statics) {
for (var ii = 0; ii < config.changesetViewIDs.length; ii++) {
var id = config.changesetViewIDs[ii];
var node = JX.$(id);
var changeset = changeset_list.newChangesetForNode(node);
if (changeset.shouldAutoload()) {
changeset.setStabilize(true).load();