2011-02-05 20:06:56 +01:00
|
|
|
/**
|
|
|
|
* @provides javelin-behavior-differential-show-all-comments
|
Bring Javelin into Phabricator via git submodule, not copy-and-paste
Summary:
Javelin is currently embedded in Phabricator via copy-and-paste of prebuilt
packages. This is not so great.
Pull it in as a submodule instead and make all the Phabriator resources declare
proper dependency trees. Add Javelin linting.
Test Plan:
I tried to run through pretty much all the JS functionality on the site. This is
still a high-risk change, but I did a pretty thorough test
Differential: inline comments, revealing diffs, list tokenizers, comment
preview, editing/deleting comments, add review action.
Maniphest: list tokenizer, comment actions
Herald: rule editing, tokenizers, add/remove rows
Reviewed By: tomo
Reviewers: aran, tomo, mroch, jungejason, tuomaspelkonen
CC: aran, tomo, epriestley
Differential Revision: 223
2011-05-04 00:11:55 +02:00
|
|
|
* @requires javelin-behavior
|
|
|
|
* javelin-stratcom
|
|
|
|
* javelin-dom
|
2011-02-05 20:06:56 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
JX.behavior('differential-show-all-comments', function(config) {
|
|
|
|
|
2011-05-31 19:23:31 +02:00
|
|
|
var shown = false;
|
|
|
|
function reveal(node) {
|
|
|
|
if (shown) {
|
2012-02-26 12:54:17 +01:00
|
|
|
return false;
|
2011-05-31 19:23:31 +02:00
|
|
|
}
|
|
|
|
shown = true;
|
|
|
|
node = node || JX.DOM.find(
|
|
|
|
document.body,
|
|
|
|
'div',
|
|
|
|
'differential-all-comments-container');
|
|
|
|
if (node) {
|
|
|
|
JX.DOM.setContent(node, JX.$H(config.markup));
|
|
|
|
}
|
2012-02-26 12:54:17 +01:00
|
|
|
return true;
|
2011-05-31 19:23:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Reveal the hidden comments if the user clicks "Show All Comments", or if
|
|
|
|
// there's an anchor in the URL, since we don't want to link to "#comment-3"
|
|
|
|
// and have it collapsed.
|
|
|
|
|
2013-05-06 20:44:15 +02:00
|
|
|
function at_comment_hash() {
|
|
|
|
return window.location.hash && window.location.hash.match(/comment/);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (at_comment_hash()) {
|
2011-05-31 19:23:31 +02:00
|
|
|
reveal();
|
|
|
|
} else {
|
|
|
|
JX.Stratcom.listen(
|
|
|
|
'hashchange',
|
|
|
|
null,
|
|
|
|
function(e) {
|
2013-05-06 20:44:15 +02:00
|
|
|
if (at_comment_hash() && reveal()) {
|
2012-02-26 12:54:17 +01:00
|
|
|
try {
|
|
|
|
var target = JX.$(window.location.hash.replace(/^#/, ''));
|
|
|
|
window.scrollTo(0, target.offsetTop);
|
2013-05-19 02:04:22 +02:00
|
|
|
} catch (ex) {
|
2012-02-26 12:54:17 +01:00
|
|
|
}
|
2011-05-31 19:23:31 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2011-02-05 20:06:56 +01:00
|
|
|
JX.Stratcom.listen(
|
|
|
|
'click',
|
|
|
|
'differential-show-all-comments',
|
|
|
|
function(e) {
|
2011-05-31 19:23:31 +02:00
|
|
|
reveal(e.getNode('differential-all-comments-container'));
|
2011-02-05 20:06:56 +01:00
|
|
|
e.kill();
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|