Page MenuHomePhabricator

D19293.id46174.diff
No OneTemporary

D19293.id46174.diff

diff --git a/src/applications/differential/controller/DifferentialRevisionViewController.php b/src/applications/differential/controller/DifferentialRevisionViewController.php
--- a/src/applications/differential/controller/DifferentialRevisionViewController.php
+++ b/src/applications/differential/controller/DifferentialRevisionViewController.php
@@ -869,17 +869,11 @@
$header = id(new PHUIHeaderView())
->setHeader(pht('Recent Similar Revisions'));
- $view = id(new DifferentialRevisionListView())
+ return id(new DifferentialRevisionListView())
+ ->setViewer($viewer)
->setRevisions($revisions)
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
- ->setNoBox(true)
- ->setUser($viewer);
-
- $phids = $view->getRequiredHandlePHIDs();
- $handles = $this->loadViewerHandles($phids);
- $view->setHandles($handles);
-
- return $view;
+ ->setNoBox(true);
}
diff --git a/src/applications/differential/query/DifferentialRevisionSearchEngine.php b/src/applications/differential/query/DifferentialRevisionSearchEngine.php
--- a/src/applications/differential/query/DifferentialRevisionSearchEngine.php
+++ b/src/applications/differential/query/DifferentialRevisionSearchEngine.php
@@ -148,7 +148,7 @@
$viewer = $this->requireViewer();
$template = id(new DifferentialRevisionListView())
- ->setUser($viewer)
+ ->setViewer($viewer)
->setNoBox($this->isPanelContext());
$bucket = $this->getResultBucket($query);
@@ -176,28 +176,16 @@
}
} else {
$views[] = id(clone $template)
- ->setRevisions($revisions)
- ->setHandles(array());
+ ->setRevisions($revisions);
}
if (!$views) {
$views[] = id(new DifferentialRevisionListView())
- ->setUser($viewer)
- ->setNoDataString(pht('No revisions found.'));
- }
-
- $phids = array_mergev(mpull($views, 'getRequiredHandlePHIDs'));
- if ($phids) {
- $handles = id(new PhabricatorHandleQuery())
->setViewer($viewer)
- ->withPHIDs($phids)
- ->execute();
- } else {
- $handles = array();
+ ->setNoDataString(pht('No revisions found.'));
}
foreach ($views as $view) {
- $view->setHandles($handles);
$view->setUnlandedDependencies($unlanded);
}
diff --git a/src/applications/differential/view/DifferentialRevisionListView.php b/src/applications/differential/view/DifferentialRevisionListView.php
--- a/src/applications/differential/view/DifferentialRevisionListView.php
+++ b/src/applications/differential/view/DifferentialRevisionListView.php
@@ -6,7 +6,6 @@
final class DifferentialRevisionListView extends AphrontView {
private $revisions = array();
- private $handles;
private $header;
private $noDataString;
private $noBox;
@@ -48,32 +47,43 @@
return $this;
}
- public function getRequiredHandlePHIDs() {
- $phids = array();
- foreach ($this->revisions as $revision) {
- $phids[] = array($revision->getAuthorPHID());
- $phids[] = $revision->getReviewerPHIDs();
- }
- return array_mergev($phids);
- }
-
- public function setHandles(array $handles) {
- assert_instances_of($handles, 'PhabricatorObjectHandle');
- $this->handles = $handles;
- return $this;
- }
-
public function render() {
$viewer = $this->getViewer();
$this->initBehavior('phabricator-tooltips', array());
$this->requireResource('aphront-tooltip-css');
- $list = new PHUIObjectItemListView();
+ $reviewer_limit = 7;
- foreach ($this->revisions as $revision) {
+ $reviewer_phids = array();
+ $reviewer_more = array();
+ $handle_phids = array();
+ foreach ($this->revisions as $key => $revision) {
+ $reviewers = $revision->getReviewers();
+ if (count($reviewers) > $reviewer_limit) {
+ $reviewers = array_slice($reviewers, 0, $reviewer_limit);
+ $reviewer_more[$key] = true;
+ } else {
+ $reviewer_more[$key] = false;
+ }
+
+ $phids = mpull($reviewers, 'getReviewerPHID');
+
+ $reviewer_phids[$key] = $phids;
+ foreach ($phids as $phid) {
+ $handle_phids[$phid] = $phid;
+ }
+
+ $author_phid = $revision->getAuthorPHID();
+ $handle_phids[$author_phid] = $author_phid;
+ }
+
+ $handles = $viewer->loadHandles($handle_phids);
+
+ $list = new PHUIObjectItemListView();
+ foreach ($this->revisions as $key => $revision) {
$item = id(new PHUIObjectItemView())
- ->setUser($viewer);
+ ->setViewer($viewer);
$icons = array();
@@ -89,21 +99,17 @@
'');
}
- if ($revision->getHasDraft($viewer)) {
- $icons['draft'] = true;
- }
-
$modified = $revision->getDateModified();
if (isset($icons['flag'])) {
$item->addHeadIcon($icons['flag']);
}
- $item->setObjectName('D'.$revision->getID());
+ $item->setObjectName($revision->getMonogram());
$item->setHeader($revision->getTitle());
- $item->setHref('/D'.$revision->getID());
+ $item->setHref($revision->getURI());
- if (isset($icons['draft'])) {
+ if ($revision->getHasDraft($viewer)) {
$draft = id(new PHUIIconView())
->setIcon('fa-comment yellow')
->addSigil('has-tooltip')
@@ -114,8 +120,7 @@
$item->addAttribute($draft);
}
- // Author
- $author_handle = $this->handles[$revision->getAuthorPHID()];
+ $author_handle = $handles[$revision->getAuthorPHID()];
$item->addByline(pht('Author: %s', $author_handle->renderLink()));
$unlanded = idx($this->unlandedDependencies, $phid);
@@ -128,17 +133,26 @@
));
}
- $reviewers = array();
- foreach ($revision->getReviewerPHIDs() as $reviewer) {
- $reviewers[] = $this->handles[$reviewer]->renderLink();
+ $more = null;
+ if ($reviewer_more[$key]) {
+ $more = pht(', ...');
+ } else {
+ $more = null;
}
- if (!$reviewers) {
- $reviewers = phutil_tag('em', array(), pht('None'));
+
+ if ($reviewer_phids[$key]) {
+ $item->addAttribute(
+ array(
+ pht('Reviewers:'),
+ ' ',
+ $viewer->renderHandleList($reviewer_phids[$key])
+ ->setAsInline(true),
+ $more,
+ ));
} else {
- $reviewers = phutil_implode_html(', ', $reviewers);
+ $item->addAttribute(phutil_tag('em', array(), pht('No Reviewers')));
}
- $item->addAttribute(pht('Reviewers: %s', $reviewers));
$item->setEpoch($revision->getDateModified());
if ($revision->isClosed()) {
diff --git a/src/applications/diffusion/controller/DiffusionBrowseController.php b/src/applications/diffusion/controller/DiffusionBrowseController.php
--- a/src/applications/diffusion/controller/DiffusionBrowseController.php
+++ b/src/applications/diffusion/controller/DiffusionBrowseController.php
@@ -1754,14 +1754,10 @@
->setHeader(pht('Recently Open Revisions'));
$list = id(new DifferentialRevisionListView())
+ ->setViewer($viewer)
->setRevisions($revisions)
- ->setUser($viewer)
->setNoBox(true);
- $phids = $list->getRequiredHandlePHIDs();
- $handles = $this->loadViewerHandles($phids);
- $list->setHandles($handles);
-
$view = id(new PHUIObjectBoxView())
->setHeader($header)
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php b/src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php
@@ -63,15 +63,11 @@
->execute();
$list = id(new DifferentialRevisionListView())
- ->setUser($viewer)
+ ->setViewer($viewer)
->setNoBox(true)
->setRevisions($revisions)
->setNoDataString(pht('No recent revisions.'));
- $object_phids = $list->getRequiredHandlePHIDs();
- $handles = $this->loadViewerHandles($object_phids);
- $list->setHandles($handles);
-
$view = id(new PHUIObjectBoxView())
->setHeaderText(pht('Recent Revisions'))
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 21, 6:12 AM (4 d, 11 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7715077
Default Alt Text
D19293.id46174.diff (8 KB)

Event Timeline