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

Allow comment panel to be stuck/unstuck to the bottom of the display

Summary:
See T303. Enable comment panel haunting.

I hid the preview for the sticky panel, which I think is reasonable?

Test Plan:
https://secure.phabricator.com/file/view/PHID-FILE-64713fa8a7c2a22e5b93/
Reviewed By: broofa
Reviewers: broofa, jungejason, aran, tomo, tuomaspelkonen
CC: aran, broofa
Differential Revision: 615
This commit is contained in:
epriestley 2011-07-08 13:00:30 -07:00
parent 57097c2874
commit c9acc5b8e9
6 changed files with 60 additions and 2 deletions

View file

@ -238,9 +238,17 @@ class DifferentialRevisionViewController extends DifferentialController {
$this->updateViewTime($user->getPHID(), $revision->getPHID()); $this->updateViewTime($user->getPHID(), $revision->getPHID());
$pane_id = celerity_generate_unique_node_id();
Javelin::initBehavior(
'differential-keyboard-navigation',
array(
'haunt' => $pane_id,
));
return $this->buildStandardPageResponse( return $this->buildStandardPageResponse(
id(new DifferentialPrimaryPaneView()) id(new DifferentialPrimaryPaneView())
->setLineWidthFromChangesets($changesets) ->setLineWidthFromChangesets($changesets)
->setID($pane_id)
->appendChild( ->appendChild(
$revision_detail->render(). $revision_detail->render().
$comment_view->render(). $comment_view->render().

View file

@ -32,6 +32,7 @@ phutil_require_module('phabricator', 'applications/phid/handle/data');
phutil_require_module('phabricator', 'applications/repository/constants/repositorytype'); phutil_require_module('phabricator', 'applications/repository/constants/repositorytype');
phutil_require_module('phabricator', 'infrastructure/celerity/api'); phutil_require_module('phabricator', 'infrastructure/celerity/api');
phutil_require_module('phabricator', 'infrastructure/env'); phutil_require_module('phabricator', 'infrastructure/env');
phutil_require_module('phabricator', 'infrastructure/javelin/api');
phutil_require_module('phabricator', 'view/form/error'); phutil_require_module('phabricator', 'view/form/error');
phutil_require_module('phutil', 'markup'); phutil_require_module('phutil', 'markup');

View file

@ -136,8 +136,6 @@ class DifferentialChangesetListView extends AphrontView {
)); ));
} }
Javelin::initBehavior('differential-keyboard-navigation', array());
return return
'<div class="differential-review-stage" id="differential-review-stage">'. '<div class="differential-review-stage" id="differential-review-stage">'.
implode("\n", $output). implode("\n", $output).

View file

@ -19,12 +19,18 @@
final class DifferentialPrimaryPaneView extends AphrontView { final class DifferentialPrimaryPaneView extends AphrontView {
private $lineWidth = 80; private $lineWidth = 80;
private $id;
public function setLineWidth($width) { public function setLineWidth($width) {
$this->lineWidth = $width; $this->lineWidth = $width;
return $this; return $this;
} }
public function setID($id) {
$this->id = $id;
return $this;
}
public function setLineWidthFromChangesets(array $changesets) { public function setLineWidthFromChangesets(array $changesets) {
if (empty($changesets)) { if (empty($changesets)) {
return; return;
@ -67,6 +73,7 @@ final class DifferentialPrimaryPaneView extends AphrontView {
array( array(
'class' => 'differential-primary-pane', 'class' => 'differential-primary-pane',
'style' => "max-width: {$width}px", 'style' => "max-width: {$width}px",
'id' => $this->id,
), ),
$style_tag.$this->renderChildren()); $style_tag.$this->renderChildren());
} }

View file

@ -17,6 +17,38 @@
max-width: 1162px; max-width: 1162px;
} }
/* Spooky haunted panel which floats on the bottom of the screen. */
.differential-haunted-panel .differential-add-comment-panel {
position: fixed;
width: 100%;
bottom: 0;
right: 0;
left: 0;
z-index: 5;
overflow: auto;
max-height: 375px;
max-width: none;
box-shadow: 0 0 4px #000;
-webkit-box-shadow: 0 0 4px #000;
-moz-box-shadow: 0 0 4px #000;
}
.differential-haunted-panel .differential-add-comment-panel h1 {
display: none;
}
.differential-haunted-panel .aphront-panel-preview {
display: none;
}
.differential-haunted-panel {
padding-bottom: 250px;
}
.differential-comment-list .anchor-target { .differential-comment-list .anchor-target {
background-color: #ffffdd; background-color: #ffffdd;
border-color: #ffff00; border-color: #ffff00;
@ -172,3 +204,4 @@
border-bottom: 1px solid #dddddd; border-bottom: 1px solid #dddddd;
color: #666666; color: #666666;
} }

View file

@ -118,6 +118,13 @@ JX.behavior('differential-keyboard-navigation', function(config) {
manager.focusOn(selected, extent); manager.focusOn(selected, extent);
} }
var is_haunted = false;
function haunt() {
is_haunted = !is_haunted;
var haunt = JX.$(config.haunt)
JX.DOM.alterClass(haunt, 'differential-haunted-panel', is_haunted);
}
new JX.KeyboardShortcut('j', 'Jump to next change.') new JX.KeyboardShortcut('j', 'Jump to next change.')
.setHandler(function(manager) { .setHandler(function(manager) {
jump(manager, 1); jump(manager, 1);
@ -130,5 +137,9 @@ JX.behavior('differential-keyboard-navigation', function(config) {
}) })
.register(); .register();
new JX.KeyboardShortcut('z', 'Haunt / unhaunt comment panel.')
.setHandler(haunt)
.register();
}); });