Page MenuHomePhabricator

D7457.diff

diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php
--- a/src/__celerity_resource_map__.php
+++ b/src/__celerity_resource_map__.php
@@ -1154,7 +1154,7 @@
),
'diffusion-source-css' =>
array(
- 'uri' => '/res/f4a2f867/rsrc/css/application/diffusion/diffusion-source.css',
+ 'uri' => '/res/5076c269/rsrc/css/application/diffusion/diffusion-source.css',
'type' => 'css',
'requires' =>
array(
diff --git a/src/applications/diffusion/controller/DiffusionBrowseFileController.php b/src/applications/diffusion/controller/DiffusionBrowseFileController.php
--- a/src/applications/diffusion/controller/DiffusionBrowseFileController.php
+++ b/src/applications/diffusion/controller/DiffusionBrowseFileController.php
@@ -548,35 +548,49 @@
++$line_number;
}
+ $request = $this->getRequest();
+ $viewer = $request->getUser();
+
$commits = array_filter(ipull($display, 'commit'));
if ($commits) {
- $commits = id(new PhabricatorAuditCommitQuery())
- ->withIdentifiers($drequest->getRepository()->getID(), $commits)
- ->needCommitData(true)
+ $commits = id(new DiffusionCommitQuery())
+ ->setViewer($viewer)
+ ->withRepositoryIDs(array($drequest->getRepository()->getID()))
+ ->withIdentifiers($commits)
->execute();
$commits = mpull($commits, null, 'getCommitIdentifier');
}
- $request = $this->getRequest();
- $user = $request->getUser();
-
$revision_ids = id(new DifferentialRevision())
->loadIDsByCommitPHIDs(mpull($commits, 'getPHID'));
$revisions = array();
if ($revision_ids) {
$revisions = id(new DifferentialRevisionQuery())
- ->setViewer($user)
+ ->setViewer($viewer)
->withIDs($revision_ids)
->execute();
}
+ $phids = array();
+ foreach ($commits as $commit) {
+ if ($commit->getAuthorPHID()) {
+ $phids[] = $commit->getAuthorPHID();
+ }
+ }
+ foreach ($revisions as $revision) {
+ if ($revision->getAuthorPHID()) {
+ $phids[] = $revision->getAuthorPHID();
+ }
+ }
+ $handles = $this->loadViewerHandles($phids);
+
Javelin::initBehavior('phabricator-oncopy', array());
$engine = null;
$inlines = array();
if ($this->getRequest()->getStr('lint') !== null && $this->lintMessages) {
$engine = new PhabricatorMarkupEngine();
- $engine->setViewer($user);
+ $engine->setViewer($viewer);
foreach ($this->lintMessages as $message) {
$inline = id(new PhabricatorAuditInlineComment())
@@ -624,15 +638,15 @@
if (idx($line, 'commit')) {
$commit = $line['commit'];
- $summary = 'Unknown';
if (idx($commits, $commit)) {
- $summary = $commits[$commit]->getCommitData()->getSummary();
+ $tooltip = $this->renderCommitTooltip(
+ $commits[$commit],
+ $handles,
+ $line['author']);
+ } else {
+ $tooltip = null;
}
- $tooltip = phabricator_date(
- $line['epoch'],
- $user)." \xC2\xB7 ".$summary;
-
Javelin::initBehavior('phabricator-tooltips', array());
require_celerity_resource('aphront-tooltip-css');
@@ -660,26 +674,21 @@
if ($revision_id) {
$revision = idx($revisions, $revision_id);
- if (!$revision) {
- $tooltip = pht('(Invalid revision)');
- } else {
- $tooltip =
- phabricator_date($revision->getDateModified(), $user).
- " \xC2\xB7 ".
- $revision->getTitle();
- }
- $revision_link = javelin_tag(
- 'a',
- array(
- 'href' => '/D'.$revision_id,
- 'sigil' => 'has-tooltip',
- 'meta' => array(
- 'tip' => $tooltip,
- 'align' => 'E',
- 'size' => 600,
+ if ($revision) {
+ $tooltip = $this->renderRevisionTooltip($revision, $handles);
+ $revision_link = javelin_tag(
+ 'a',
+ array(
+ 'href' => '/D'.$revision->getID(),
+ 'sigil' => 'has-tooltip',
+ 'meta' => array(
+ 'tip' => $tooltip,
+ 'align' => 'E',
+ 'size' => 600,
+ ),
),
- ),
- 'D'.$revision_id);
+ 'D'.$revision->getID());
+ }
}
$uri = $line_href->alter('before', $commit);
@@ -701,39 +710,29 @@
'th',
array(
'class' => 'diffusion-blame-link',
- 'style' => $style,
),
$before_link);
- $blame[] = phutil_tag(
- 'th',
- array(
- 'class' => 'diffusion-rev-link',
- 'style' => $style,
- ),
- $commit_link);
+ $object_links = array();
+ $object_links[] = $commit_link;
+ if ($revision_link) {
+ $object_links[] = phutil_tag('span', array(), '/');
+ $object_links[] = $revision_link;
+ }
$blame[] = phutil_tag(
'th',
array(
'class' => 'diffusion-rev-link',
- 'style' => $style,
- ),
- $revision_link);
-
- $blame[] = phutil_tag(
- 'th',
- array(
- 'class' => 'diffusion-author-link',
- 'style' => $style,
),
- idx($line, 'author'));
+ $object_links);
}
$line_link = phutil_tag(
'a',
array(
'href' => $line_href,
+ 'style' => $style,
),
$line['line']);
@@ -977,4 +976,36 @@
return head($parents);
}
+ private function renderRevisionTooltip(
+ DifferentialRevision $revision,
+ array $handles) {
+ $viewer = $this->getRequest()->getUser();
+
+ $date = phabricator_date($revision->getDateModified(), $viewer);
+ $id = $revision->getID();
+ $title = $revision->getTitle();
+ $header = "D{$id} {$title}";
+
+ $author = $handles[$revision->getAuthorPHID()]->getName();
+
+ return "{$header}\n{$date} \xC2\xB7 {$author}";
+ }
+
+ private function renderCommitTooltip(
+ PhabricatorRepositoryCommit $commit,
+ array $handles,
+ $author) {
+
+ $viewer = $this->getRequest()->getUser();
+
+ $date = phabricator_date($commit->getEpoch(), $viewer);
+ $summary = trim($commit->getSummary());
+
+ if ($commit->getAuthorPHID()) {
+ $author = $handles[$commit->getAuthorPHID()]->getName();
+ }
+
+ return "{$summary}\n{$date} \xC2\xB7 {$author}";
+ }
+
}
diff --git a/webroot/rsrc/css/application/diffusion/diffusion-source.css b/webroot/rsrc/css/application/diffusion/diffusion-source.css
--- a/webroot/rsrc/css/application/diffusion/diffusion-source.css
+++ b/webroot/rsrc/css/application/diffusion/diffusion-source.css
@@ -37,35 +37,35 @@
}
.diffusion-blame-link,
-.diffusion-rev-link,
-.diffusion-author-link {
+.diffusion-rev-link {
white-space: nowrap;
}
.diffusion-blame-link {
min-width: 28px;
}
-.diffusion-rev-link {
- min-width: 90px;
-}
-
-.diffusion-author-link {
- min-width: 120px;
+.diffusion-source th.diffusion-rev-link {
+ text-align: left;
+ min-width: 130px;
}
.diffusion-blame-link a,
.diffusion-rev-link a,
-.diffusion-author-link a,
.diffusion-line-link a {
color: {$darkbluetext};
}
.diffusion-rev-link a,
-.diffusion-author-link span,
-.diffusion-author-link a {
+.diffusion-rev-link span {
margin: 2px 8px 0;
- display: block;
+ display: inline-block;
+}
+
+.diffusion-rev-link span {
+ margin-right: -4px;
+ margin-left: -4px;
+ color: {$lightgreytext};
}
.diffusion-blame-link a,

File Metadata

Mime Type
text/x-diff
Storage Engine
amazon-s3
Storage Format
Raw Data
Storage Handle
phabricator/4v/iy/sbsfvm2dxkbby7qi
Default Alt Text
D7457.diff (7 KB)

Event Timeline