1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 16:22:43 +01:00

When following a link to a particular line ("/example.txt$12"), scroll to that line

Summary:
Depends on D19349. Ref T13105. This was the behavior in Diffusion before with a little hard-coded snippet.

Remove that snippet ("diffusion-jump-to") and add a more general-purpose snippet to SourceView.

This is a tiny bit hacky still (and probably doesn't work quite right with Quicksand) but gets things working again and works in all of Files, Paste, and Diffusion.

Test Plan: Followed links to particular lines in Paste, Files and Diffusion; got scrolled to the right place.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13105

Differential Revision: https://secure.phabricator.com/D19350
This commit is contained in:
epriestley 2018-04-11 14:44:06 -07:00
parent 5b3a351852
commit 37a03402bc
4 changed files with 25 additions and 30 deletions

View file

@ -385,7 +385,6 @@ return array(
'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04', 'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04',
'rsrc/js/application/diffusion/behavior-commit-graph.js' => '75b83cbb', 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '75b83cbb',
'rsrc/js/application/diffusion/behavior-diffusion-browse-file.js' => '054a0f0b', 'rsrc/js/application/diffusion/behavior-diffusion-browse-file.js' => '054a0f0b',
'rsrc/js/application/diffusion/behavior-jump-to.js' => '73d09eef',
'rsrc/js/application/diffusion/behavior-locate-file.js' => '6d3e1947', 'rsrc/js/application/diffusion/behavior-locate-file.js' => '6d3e1947',
'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc', 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc',
'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '1db13e70', 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '1db13e70',
@ -471,7 +470,7 @@ return array(
'rsrc/js/core/behavior-keyboard-pager.js' => 'a8da01f0', 'rsrc/js/core/behavior-keyboard-pager.js' => 'a8da01f0',
'rsrc/js/core/behavior-keyboard-shortcuts.js' => '01fca1f0', 'rsrc/js/core/behavior-keyboard-shortcuts.js' => '01fca1f0',
'rsrc/js/core/behavior-lightbox-attachments.js' => '6b31879a', 'rsrc/js/core/behavior-lightbox-attachments.js' => '6b31879a',
'rsrc/js/core/behavior-line-linker.js' => '36165eb1', 'rsrc/js/core/behavior-line-linker.js' => '66a62306',
'rsrc/js/core/behavior-more.js' => 'a80d0378', 'rsrc/js/core/behavior-more.js' => 'a80d0378',
'rsrc/js/core/behavior-object-selector.js' => '77c1f0b0', 'rsrc/js/core/behavior-object-selector.js' => '77c1f0b0',
'rsrc/js/core/behavior-oncopy.js' => '2926fff2', 'rsrc/js/core/behavior-oncopy.js' => '2926fff2',
@ -601,7 +600,6 @@ return array(
'javelin-behavior-diffusion-browse-file' => '054a0f0b', 'javelin-behavior-diffusion-browse-file' => '054a0f0b',
'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04', 'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04',
'javelin-behavior-diffusion-commit-graph' => '75b83cbb', 'javelin-behavior-diffusion-commit-graph' => '75b83cbb',
'javelin-behavior-diffusion-jump-to' => '73d09eef',
'javelin-behavior-diffusion-locate-file' => '6d3e1947', 'javelin-behavior-diffusion-locate-file' => '6d3e1947',
'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc', 'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc',
'javelin-behavior-document-engine' => '0333c0b6', 'javelin-behavior-document-engine' => '0333c0b6',
@ -634,7 +632,7 @@ return array(
'javelin-behavior-phabricator-gesture-example' => '558829c2', 'javelin-behavior-phabricator-gesture-example' => '558829c2',
'javelin-behavior-phabricator-keyboard-pager' => 'a8da01f0', 'javelin-behavior-phabricator-keyboard-pager' => 'a8da01f0',
'javelin-behavior-phabricator-keyboard-shortcuts' => '01fca1f0', 'javelin-behavior-phabricator-keyboard-shortcuts' => '01fca1f0',
'javelin-behavior-phabricator-line-linker' => '36165eb1', 'javelin-behavior-phabricator-line-linker' => '66a62306',
'javelin-behavior-phabricator-nav' => '94b7c320', 'javelin-behavior-phabricator-nav' => '94b7c320',
'javelin-behavior-phabricator-notification-example' => '8ce821c5', 'javelin-behavior-phabricator-notification-example' => '8ce821c5',
'javelin-behavior-phabricator-object-selector' => '77c1f0b0', 'javelin-behavior-phabricator-object-selector' => '77c1f0b0',
@ -1098,12 +1096,6 @@ return array(
'javelin-dom', 'javelin-dom',
'javelin-vector', 'javelin-vector',
), ),
'36165eb1' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
'javelin-history',
),
'3ab51e2c' => array( '3ab51e2c' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-behavior-device', 'javelin-behavior-device',
@ -1395,6 +1387,12 @@ return array(
'phabricator-darklog', 'phabricator-darklog',
'phabricator-darkmessage', 'phabricator-darkmessage',
), ),
'66a62306' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
'javelin-history',
),
'66a6def1' => array( '66a6def1' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
@ -1471,11 +1469,6 @@ return array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
), ),
'73d09eef' => array(
'javelin-behavior',
'javelin-vector',
'javelin-dom',
),
'758b4758' => array( '758b4758' => array(
'javelin-install', 'javelin-install',
'javelin-workboard-card', 'javelin-workboard-card',

View file

@ -96,10 +96,15 @@ final class PhabricatorSourceCodeView extends AphrontView {
} }
$base_uri = (string)$this->uri; $base_uri = (string)$this->uri;
$wrote_anchor = false;
foreach ($lines as $line) { foreach ($lines as $line) {
$row_attributes = array(); $row_attributes = array();
if (isset($this->highlights[$line_number])) { if (isset($this->highlights[$line_number])) {
$row_attributes['class'] = 'phabricator-source-highlight'; $row_attributes['class'] = 'phabricator-source-highlight';
if (!$wrote_anchor) {
$row_attributes['id'] = 'phabricator-line-linker-anchor';
$wrote_anchor = true;
}
} }
if ($this->canClickHighlight) { if ($this->canClickHighlight) {

View file

@ -1,15 +0,0 @@
/**
* @provides javelin-behavior-diffusion-jump-to
* @requires javelin-behavior
* javelin-vector
* javelin-dom
*/
JX.behavior('diffusion-jump-to', function(config) {
setTimeout(function() {
var pos = JX.Vector.getPosWithScroll(JX.$(config.target));
JX.DOM.scrollToPosition(0, pos.y - 100);
}, 0);
});

View file

@ -176,4 +176,16 @@ JX.behavior('phabricator-line-linker', function() {
} }
}); });
// Try to jump to the highlighted lines if we don't have an explicit anchor
// in the URI.
if (!window.location.hash.length) {
try {
var anchor = JX.$('phabricator-line-linker-anchor');
JX.DOM.scrollToPosition(0, JX.$V(anchor).y - 60);
} catch (ex) {
// If we didn't hit an element on the page, just move on.
}
}
}); });