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

File view: Replace drop-down form with buttons for view options

Summary:
It always bothered me that adding/removing blame view takes two clicks.
Showing it like this saves a click for almost all transformations, and I think it feels nicer too.

I'm open to adding a user-setting for this (This form or the drop-down), but figured I'd ask first.

Test Plan:
Use buttons to switch modes - make sure text on button matches action.
Repeate with lines highlighted.

Reviewers: epriestley, vrana

Reviewed By: epriestley

CC: jungejason, Two9A, aran, Korvin

Differential Revision: https://secure.phabricator.com/D3499
This commit is contained in:
Aviv Eyal 2012-10-03 10:58:56 -07:00 committed by epriestley
parent b585146532
commit 52c68e1261
3 changed files with 105 additions and 64 deletions

View file

@ -512,7 +512,7 @@ celerity_register_resource_map(array(
), ),
'aphront-crumbs-view-css' => 'aphront-crumbs-view-css' =>
array( array(
'uri' => '/res/9009e6bd/rsrc/css/aphront/crumbs-view.css', 'uri' => '/res/699be12a/rsrc/css/aphront/crumbs-view.css',
'type' => 'css', 'type' => 'css',
'requires' => 'requires' =>
array( array(
@ -3003,7 +3003,7 @@ celerity_register_resource_map(array(
), array( ), array(
'packages' => 'packages' =>
array( array(
'19bef443' => '782b1e3f' =>
array( array(
'name' => 'core.pkg.css', 'name' => 'core.pkg.css',
'symbols' => 'symbols' =>
@ -3032,7 +3032,7 @@ celerity_register_resource_map(array(
21 => 'phabricator-flag-css', 21 => 'phabricator-flag-css',
22 => 'aphront-error-view-css', 22 => 'aphront-error-view-css',
), ),
'uri' => '/res/pkg/19bef443/core.pkg.css', 'uri' => '/res/pkg/782b1e3f/core.pkg.css',
'type' => 'css', 'type' => 'css',
), ),
'3a455e4f' => '3a455e4f' =>
@ -3199,20 +3199,20 @@ celerity_register_resource_map(array(
'reverse' => 'reverse' =>
array( array(
'aphront-attached-file-view-css' => '7839ae2d', 'aphront-attached-file-view-css' => '7839ae2d',
'aphront-crumbs-view-css' => '19bef443', 'aphront-crumbs-view-css' => '782b1e3f',
'aphront-dialog-view-css' => '19bef443', 'aphront-dialog-view-css' => '782b1e3f',
'aphront-error-view-css' => '19bef443', 'aphront-error-view-css' => '782b1e3f',
'aphront-form-view-css' => '19bef443', 'aphront-form-view-css' => '782b1e3f',
'aphront-headsup-action-list-view-css' => '2ba14b3d', 'aphront-headsup-action-list-view-css' => '2ba14b3d',
'aphront-headsup-view-css' => '19bef443', 'aphront-headsup-view-css' => '782b1e3f',
'aphront-list-filter-view-css' => '19bef443', 'aphront-list-filter-view-css' => '782b1e3f',
'aphront-pager-view-css' => '19bef443', 'aphront-pager-view-css' => '782b1e3f',
'aphront-panel-view-css' => '19bef443', 'aphront-panel-view-css' => '782b1e3f',
'aphront-side-nav-view-css' => '19bef443', 'aphront-side-nav-view-css' => '782b1e3f',
'aphront-table-view-css' => '19bef443', 'aphront-table-view-css' => '782b1e3f',
'aphront-tokenizer-control-css' => '19bef443', 'aphront-tokenizer-control-css' => '782b1e3f',
'aphront-tooltip-css' => '19bef443', 'aphront-tooltip-css' => '782b1e3f',
'aphront-typeahead-control-css' => '19bef443', 'aphront-typeahead-control-css' => '782b1e3f',
'differential-changeset-view-css' => '2ba14b3d', 'differential-changeset-view-css' => '2ba14b3d',
'differential-core-view-css' => '2ba14b3d', 'differential-core-view-css' => '2ba14b3d',
'differential-inline-comment-editor' => 'd05e3c0f', 'differential-inline-comment-editor' => 'd05e3c0f',
@ -3278,15 +3278,15 @@ celerity_register_resource_map(array(
'javelin-workflow' => '3a455e4f', 'javelin-workflow' => '3a455e4f',
'maniphest-task-summary-css' => '7839ae2d', 'maniphest-task-summary-css' => '7839ae2d',
'maniphest-transaction-detail-css' => '7839ae2d', 'maniphest-transaction-detail-css' => '7839ae2d',
'phabricator-app-buttons-css' => '19bef443', 'phabricator-app-buttons-css' => '782b1e3f',
'phabricator-content-source-view-css' => '2ba14b3d', 'phabricator-content-source-view-css' => '2ba14b3d',
'phabricator-core-buttons-css' => '19bef443', 'phabricator-core-buttons-css' => '782b1e3f',
'phabricator-core-css' => '19bef443', 'phabricator-core-css' => '782b1e3f',
'phabricator-directory-css' => '19bef443', 'phabricator-directory-css' => '782b1e3f',
'phabricator-drag-and-drop-file-upload' => 'd05e3c0f', 'phabricator-drag-and-drop-file-upload' => 'd05e3c0f',
'phabricator-dropdown-menu' => '3a455e4f', 'phabricator-dropdown-menu' => '3a455e4f',
'phabricator-flag-css' => '19bef443', 'phabricator-flag-css' => '782b1e3f',
'phabricator-jump-nav' => '19bef443', 'phabricator-jump-nav' => '782b1e3f',
'phabricator-keyboard-shortcut' => '3a455e4f', 'phabricator-keyboard-shortcut' => '3a455e4f',
'phabricator-keyboard-shortcut-manager' => '3a455e4f', 'phabricator-keyboard-shortcut-manager' => '3a455e4f',
'phabricator-menu-item' => '3a455e4f', 'phabricator-menu-item' => '3a455e4f',
@ -3294,11 +3294,11 @@ celerity_register_resource_map(array(
'phabricator-paste-file-upload' => '3a455e4f', 'phabricator-paste-file-upload' => '3a455e4f',
'phabricator-prefab' => '3a455e4f', 'phabricator-prefab' => '3a455e4f',
'phabricator-project-tag-css' => '7839ae2d', 'phabricator-project-tag-css' => '7839ae2d',
'phabricator-remarkup-css' => '19bef443', 'phabricator-remarkup-css' => '782b1e3f',
'phabricator-shaped-request' => 'd05e3c0f', 'phabricator-shaped-request' => 'd05e3c0f',
'phabricator-standard-page-view' => '19bef443', 'phabricator-standard-page-view' => '782b1e3f',
'phabricator-tooltip' => '3a455e4f', 'phabricator-tooltip' => '3a455e4f',
'phabricator-transaction-view-css' => '19bef443', 'phabricator-transaction-view-css' => '782b1e3f',
'syntax-highlighting-css' => '19bef443', 'syntax-highlighting-css' => '782b1e3f',
), ),
)); ));

View file

@ -267,41 +267,80 @@ final class DiffusionBrowseFileController extends DiffusionController {
} }
private function renderViewSelectPanel($selected) { private function renderViewSelectPanel($selected) {
$toggle_blame = array(
'highlighted' => 'blame',
'blame' => 'highlighted',
'plain' => 'plainblame',
'plainblame' => 'plain',
'raw' => 'raw', // not a real case.
);
$toggle_highlight = array(
'highlighted' => 'plain',
'blame' => 'plainblame',
'plain' => 'highlighted',
'plainblame' => 'blame',
'raw' => 'raw', // not a real case.
);
$request = $this->getRequest(); $user = $this->getRequest()->getUser();
$select = AphrontFormSelectControl::renderSelectTag( $blame_on = ($selected == 'blame' || $selected == 'plainblame');
$selected, if ($blame_on) {
array( $blame_text = pht('Disable Blame');
'highlighted' => 'View as Highlighted Text', } else {
'blame' => 'View as Highlighted Text with Blame', $blame_text = pht('Enable Blame');
'plain' => 'View as Plain Text', }
'plainblame' => 'View as Plain Text with Blame',
'raw' => 'View as raw document',
),
array(
'name' => 'view',
));
$view_select_panel = new AphrontPanelView(); $blame_button = $this->createViewAction(
$view_select_form = phabricator_render_form( $blame_text,
$request->getUser(), $toggle_blame[$selected],
array( $user);
'action' => $request->getRequestURI()->alter('view', null),
'method' => 'post',
'class' => 'diffusion-browse-type-form',
),
$select.
' <button>View</button> '.
$this->renderEditButton());
$view_select_panel->appendChild($view_select_form);
$view_select_panel->appendChild('<div style="clear: both;"></div>');
return $view_select_panel; $highlight_on = ($selected == 'blame' || $selected == 'highlighted');
if ($highlight_on) {
$highlight_text = pht('Disable Highlighting');
} else {
$highlight_text = pht('Enable Highlighting');
}
$highlight_button = $this->createViewAction(
$highlight_text,
$toggle_highlight[$selected],
$user);
$raw_button = $this->createViewAction(
pht('View Raw File'),
'raw',
$user,
'file');
$edit_button = $this->createEditAction();
return id(new PhabricatorActionListView())
->setUser($user)
->addAction($blame_button)
->addAction($highlight_button)
->addAction($raw_button)
->addAction($edit_button);
} }
private function renderEditButton() { private function createViewAction(
$localized_text,
$view_mode,
$user,
$icon = null) {
$base_uri = $this->getRequest()->getRequestURI();
return id(new PhabricatorActionView())
->setName($localized_text)
->setIcon($icon)
->setUser($user)
->setRenderAsForm(true)
->setHref($base_uri->alter('view', $view_mode));
}
private function createEditAction() {
$request = $this->getRequest(); $request = $this->getRequest();
$user = $request->getUser(); $user = $request->getUser();
@ -313,17 +352,15 @@ final class DiffusionBrowseFileController extends DiffusionController {
$callsign = $repository->getCallsign(); $callsign = $repository->getCallsign();
$editor_link = $user->loadEditorLink($path, $line, $callsign); $editor_link = $user->loadEditorLink($path, $line, $callsign);
if (!$editor_link) {
return null;
}
return phutil_render_tag( $action = id(new PhabricatorActionView())
'a', ->setName(pht('Open in Editor'))
array( ->setIcon('edit');
'href' => $editor_link,
'class' => 'button', $action->setHref($editor_link);
), $action->setDisabled(!$editor_link);
'Edit');
return $action;
} }
private function buildDisplayRows( private function buildDisplayRows(

View file

@ -16,3 +16,7 @@
padding: 0 .35em; padding: 0 .35em;
color: #888888; color: #888888;
} }
.device-desktop .aphront-crumbs-view {
width: 66%;
}