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

Render an edit link in Diffusion directory views

Summary:
If the user has an editor configured, an Edit link appears next
to the History link.

Somewhat suboptimally, the column is still there if there are no edit
links, it's just empty. I don't know if it matters...

Test Plan: Load Diffusion pages while changing editor setting in preferences.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin, avivey

Maniphest Tasks: T1558

Differential Revision: https://secure.phabricator.com/D3124
This commit is contained in:
Alan Huang 2012-08-02 12:22:50 -07:00
parent 9a19cfb9de
commit ce8bcf887d
3 changed files with 41 additions and 0 deletions

View file

@ -85,6 +85,7 @@ final class DiffusionBrowseController extends DiffusionController {
$browse_table->setDiffusionRequest($drequest); $browse_table->setDiffusionRequest($drequest);
$browse_table->setHandles($handles); $browse_table->setHandles($handles);
$browse_table->setPaths($results); $browse_table->setPaths($results);
$browse_table->setUser($this->getRequest()->getUser());
$browse_panel = new AphrontPanelView(); $browse_panel = new AphrontPanelView();
$browse_panel->appendChild($browse_table); $browse_panel->appendChild($browse_table);

View file

@ -93,6 +93,7 @@ final class DiffusionRepositoryController extends DiffusionController {
$browse_table->setDiffusionRequest($drequest); $browse_table->setDiffusionRequest($drequest);
$browse_table->setHandles($handles); $browse_table->setHandles($handles);
$browse_table->setPaths($browse_results); $browse_table->setPaths($browse_results);
$browse_table->setUser($this->getRequest()->getUser());
$browse_panel = new AphrontPanelView(); $browse_panel = new AphrontPanelView();
$browse_panel->setHeader('Browse Repository'); $browse_panel->setHeader('Browse Repository');

View file

@ -20,6 +20,7 @@ final class DiffusionBrowseTableView extends DiffusionView {
private $paths; private $paths;
private $handles = array(); private $handles = array();
private $user;
public function setPaths(array $paths) { public function setPaths(array $paths) {
assert_instances_of($paths, 'DiffusionRepositoryPath'); assert_instances_of($paths, 'DiffusionRepositoryPath');
@ -46,6 +47,11 @@ final class DiffusionBrowseTableView extends DiffusionView {
return phutil_escape_html($name); return phutil_escape_html($name);
} }
public function setUser(PhabricatorUser $user) {
$this->user = $user;
return $this;
}
public static function renderLastModifiedColumns( public static function renderLastModifiedColumns(
PhabricatorRepository $repository, PhabricatorRepository $repository,
array $handles, array $handles,
@ -115,6 +121,7 @@ final class DiffusionBrowseTableView extends DiffusionView {
$need_pull = array(); $need_pull = array();
$rows = array(); $rows = array();
$show_edit = false;
foreach ($this->paths as $path) { foreach ($this->paths as $path) {
$dir_slash = null; $dir_slash = null;
@ -184,8 +191,26 @@ final class DiffusionBrowseTableView extends DiffusionView {
} }
} }
$editor_button = '';
if ($this->user) {
$editor_link = $this->user->loadEditorLink(
$base_path.$path->getPath(),
1,
$request->getRepository()->getCallsign());
if ($editor_link) {
$show_edit = true;
$editor_button = phutil_render_tag(
'a',
array(
'href' => $editor_link,
),
'Edit');
}
}
$rows[] = array( $rows[] = array(
$this->linkHistory($base_path.$path->getPath().$dir_slash), $this->linkHistory($base_path.$path->getPath().$dir_slash),
$editor_button,
$browse_link, $browse_link,
$dict['commit'], $dict['commit'],
$dict['date'], $dict['date'],
@ -204,6 +229,7 @@ final class DiffusionBrowseTableView extends DiffusionView {
$view->setHeaders( $view->setHeaders(
array( array(
'History', 'History',
'Edit',
'Path', 'Path',
'Modified', 'Modified',
'Date', 'Date',
@ -218,11 +244,24 @@ final class DiffusionBrowseTableView extends DiffusionView {
'', '',
'', '',
'', '',
'',
'right', 'right',
'', '',
'', '',
'wide', 'wide',
)); ));
$view->setColumnVisibility(
array(
true,
$show_edit,
true,
true,
true,
true,
true,
true,
true,
));
return $view->render(); return $view->render();
} }