mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 23:02:42 +01:00
Show small author portraits in Diffusion blame view
Summary: Depends on D18746. See PHI174. Adds small author portraits next to each blame line (this is similar to GitHub). Test Plan: My local test data isn't that great since I don't have commits from a lot of accounts, but looks functional: {F5251056} Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18747
This commit is contained in:
parent
90d0f8ac6c
commit
bde71324f8
3 changed files with 62 additions and 3 deletions
|
@ -73,7 +73,7 @@ return array(
|
||||||
'rsrc/css/application/diffusion/diffusion-icons.css' => '0c15255e',
|
'rsrc/css/application/diffusion/diffusion-icons.css' => '0c15255e',
|
||||||
'rsrc/css/application/diffusion/diffusion-readme.css' => '419dd5b6',
|
'rsrc/css/application/diffusion/diffusion-readme.css' => '419dd5b6',
|
||||||
'rsrc/css/application/diffusion/diffusion-repository.css' => 'ee6f20ec',
|
'rsrc/css/application/diffusion/diffusion-repository.css' => 'ee6f20ec',
|
||||||
'rsrc/css/application/diffusion/diffusion-source.css' => '3a1056d8',
|
'rsrc/css/application/diffusion/diffusion-source.css' => 'd96b3f9f',
|
||||||
'rsrc/css/application/diffusion/diffusion.css' => '45727264',
|
'rsrc/css/application/diffusion/diffusion.css' => '45727264',
|
||||||
'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
|
'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
|
||||||
'rsrc/css/application/files/global-drag-and-drop.css' => 'b556a948',
|
'rsrc/css/application/files/global-drag-and-drop.css' => 'b556a948',
|
||||||
|
@ -572,7 +572,7 @@ return array(
|
||||||
'diffusion-icons-css' => '0c15255e',
|
'diffusion-icons-css' => '0c15255e',
|
||||||
'diffusion-readme-css' => '419dd5b6',
|
'diffusion-readme-css' => '419dd5b6',
|
||||||
'diffusion-repository-css' => 'ee6f20ec',
|
'diffusion-repository-css' => 'ee6f20ec',
|
||||||
'diffusion-source-css' => '3a1056d8',
|
'diffusion-source-css' => 'd96b3f9f',
|
||||||
'diviner-shared-css' => '896f1d43',
|
'diviner-shared-css' => '896f1d43',
|
||||||
'font-fontawesome' => 'e838e088',
|
'font-fontawesome' => 'e838e088',
|
||||||
'font-lato' => 'c7ccd872',
|
'font-lato' => 'c7ccd872',
|
||||||
|
|
|
@ -969,6 +969,24 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||||
|
|
||||||
$handles = $viewer->loadHandles($phids);
|
$handles = $viewer->loadHandles($phids);
|
||||||
|
|
||||||
|
$author_phids = array();
|
||||||
|
$author_map = array();
|
||||||
|
foreach ($blame_commits as $commit) {
|
||||||
|
$commit_identifier = $commit->getCommitIdentifier();
|
||||||
|
|
||||||
|
$author_phid = '';
|
||||||
|
if (isset($revision_map[$commit_identifier])) {
|
||||||
|
$revision_id = $revision_map[$commit_identifier];
|
||||||
|
$revision = $revisions[$revision_id];
|
||||||
|
$author_phid = $revision->getAuthorPHID();
|
||||||
|
} else {
|
||||||
|
$author_phid = $commit->getAuthorPHID();
|
||||||
|
}
|
||||||
|
|
||||||
|
$author_map[$commit_identifier] = $author_phid;
|
||||||
|
$author_phids[$author_phid] = $author_phid;
|
||||||
|
}
|
||||||
|
|
||||||
$colors = array();
|
$colors = array();
|
||||||
if ($blame_commits) {
|
if ($blame_commits) {
|
||||||
$epochs = array();
|
$epochs = array();
|
||||||
|
@ -1113,6 +1131,7 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||||
// blame outputs.
|
// blame outputs.
|
||||||
$commit_links = $this->renderCommitLinks($blame_commits, $handles);
|
$commit_links = $this->renderCommitLinks($blame_commits, $handles);
|
||||||
$revision_links = $this->renderRevisionLinks($revisions, $handles);
|
$revision_links = $this->renderRevisionLinks($revisions, $handles);
|
||||||
|
$author_links = $this->renderAuthorLinks($author_map, $handles);
|
||||||
|
|
||||||
if ($this->coverage) {
|
if ($this->coverage) {
|
||||||
require_celerity_resource('differential-changeset-view-css');
|
require_celerity_resource('differential-changeset-view-css');
|
||||||
|
@ -1145,6 +1164,7 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||||
|
|
||||||
$revision_link = null;
|
$revision_link = null;
|
||||||
$commit_link = null;
|
$commit_link = null;
|
||||||
|
$author_link = null;
|
||||||
$before_link = null;
|
$before_link = null;
|
||||||
|
|
||||||
$style = 'background: '.$line['color'].';';
|
$style = 'background: '.$line['color'].';';
|
||||||
|
@ -1152,6 +1172,7 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||||
if ($identifier && !$line['duplicate']) {
|
if ($identifier && !$line['duplicate']) {
|
||||||
if (isset($commit_links[$identifier])) {
|
if (isset($commit_links[$identifier])) {
|
||||||
$commit_link = $commit_links[$identifier];
|
$commit_link = $commit_links[$identifier];
|
||||||
|
$author_link = $author_links[$author_map[$identifier]];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($revision_map[$identifier])) {
|
if (isset($revision_map[$identifier])) {
|
||||||
|
@ -1185,6 +1206,7 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||||
$before_link);
|
$before_link);
|
||||||
|
|
||||||
$object_links = array();
|
$object_links = array();
|
||||||
|
$object_links[] = $author_link;
|
||||||
$object_links[] = $commit_link;
|
$object_links[] = $commit_link;
|
||||||
if ($revision_link) {
|
if ($revision_link) {
|
||||||
$object_links[] = phutil_tag('span', array(), '/');
|
$object_links[] = phutil_tag('span', array(), '/');
|
||||||
|
@ -1772,6 +1794,33 @@ final class DiffusionBrowseController extends DiffusionController {
|
||||||
return array($identifiers, $commits);
|
return array($identifiers, $commits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function renderAuthorLinks(array $authors, $handles) {
|
||||||
|
$links = array();
|
||||||
|
|
||||||
|
foreach ($authors as $phid) {
|
||||||
|
if (!strlen($phid)) {
|
||||||
|
// This means we couldn't identify an author for the commit or the
|
||||||
|
// revision. We just render a blank for alignment.
|
||||||
|
$style = null;
|
||||||
|
$href = null;
|
||||||
|
} else {
|
||||||
|
$src = $handles[$phid]->getImageURI();
|
||||||
|
$style = 'background-image: url('.$src.');';
|
||||||
|
$href = $handles[$phid]->getURI();
|
||||||
|
}
|
||||||
|
|
||||||
|
$links[$phid] = javelin_tag(
|
||||||
|
$href ? 'a' : 'span',
|
||||||
|
array(
|
||||||
|
'class' => 'diffusion-author-link',
|
||||||
|
'style' => $style,
|
||||||
|
'href' => $href,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $links;
|
||||||
|
}
|
||||||
|
|
||||||
private function renderCommitLinks(array $commits, $handles) {
|
private function renderCommitLinks(array $commits, $handles) {
|
||||||
$links = array();
|
$links = array();
|
||||||
foreach ($commits as $identifier => $commit) {
|
foreach ($commits as $identifier => $commit) {
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
|
|
||||||
.diffusion-rev-link a,
|
.diffusion-rev-link a,
|
||||||
.diffusion-rev-link span {
|
.diffusion-rev-link span {
|
||||||
margin: 2px 8px 0;
|
margin: 0 8px 0 0;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,3 +90,13 @@
|
||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.diffusion-rev-link .diffusion-author-link {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0;
|
||||||
|
margin: 2px 4px -4px 4px;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue