Page MenuHomePhorge

No OneTemporary

diff --git a/src/applications/differential/event/DifferentialHovercardEventListener.php b/src/applications/differential/event/DifferentialHovercardEventListener.php
index 82ec5565c1..5c53a533b1 100644
--- a/src/applications/differential/event/DifferentialHovercardEventListener.php
+++ b/src/applications/differential/event/DifferentialHovercardEventListener.php
@@ -1,80 +1,71 @@
<?php
final class DifferentialHovercardEventListener
extends PhabricatorEventListener {
public function register() {
$this->listen(PhabricatorEventType::TYPE_UI_DIDRENDERHOVERCARD);
}
public function handleEvent(PhutilEvent $event) {
switch ($event->getType()) {
case PhabricatorEventType::TYPE_UI_DIDRENDERHOVERCARD:
$this->handleHovercardEvent($event);
break;
}
}
private function handleHovercardEvent($event) {
$viewer = $event->getUser();
$hovercard = $event->getValue('hovercard');
$object_handle = $event->getValue('handle');
$phid = $object_handle->getPHID();
$rev = $event->getValue('object');
if (!($rev instanceof DifferentialRevision)) {
return;
}
$rev->loadRelationships();
$reviewer_phids = $rev->getReviewers();
$e_task = DifferentialRevisionHasTaskEdgeType::EDGECONST;
$edge_query = id(new PhabricatorEdgeQuery())
->withSourcePHIDs(array($phid))
->withEdgeTypes(
array(
$e_task,
));
$edge_query->execute();
$tasks = $edge_query->getDestinationPHIDs();
- $phids = array_merge(
- array(
- $rev->getAuthorPHID(),
- ),
- $reviewer_phids,
- $tasks);
-
- $handles = id(new PhabricatorHandleQuery())
- ->setViewer($viewer)
- ->withPHIDs($phids)
- ->execute();
-
$hovercard->setTitle('D'.$rev->getID());
$hovercard->setDetail($rev->getTitle());
- $hovercard->addField(pht('Author'),
- $handles[$rev->getAuthorPHID()]->renderLink());
+ $hovercard->addField(
+ pht('Author'),
+ $viewer->renderHandle($rev->getAuthorPHID()));
- $hovercard->addField(pht('Reviewers'),
- implode_selected_handle_links(', ', $handles, $reviewer_phids));
+ $hovercard->addField(
+ pht('Reviewers'),
+ $viewer->renderHandleList($reviewer_phids)->setAsInline(true));
if ($tasks) {
- $hovercard->addField(pht('%s Task(s)', new PhutilNumber(count($tasks))),
- implode_selected_handle_links(', ', $handles, $tasks));
+ $hovercard->addField(
+ pht('Tasks'),
+ $viewer->renderHandleList($tasks)->setAsInline(true));
}
if ($rev->getSummary()) {
$hovercard->addField(pht('Summary'),
id(new PhutilUTF8StringTruncator())
->setMaximumGlyphs(120)
->truncateString($rev->getSummary()));
}
$hovercard->addTag(
DifferentialRevisionDetailView::renderTagForRevision($rev));
$event->setValue('hovercard', $hovercard);
}
}
diff --git a/src/applications/maniphest/event/ManiphestHovercardEventListener.php b/src/applications/maniphest/event/ManiphestHovercardEventListener.php
index f1e747de16..a33a854bc6 100644
--- a/src/applications/maniphest/event/ManiphestHovercardEventListener.php
+++ b/src/applications/maniphest/event/ManiphestHovercardEventListener.php
@@ -1,101 +1,90 @@
<?php
final class ManiphestHovercardEventListener extends PhabricatorEventListener {
public function register() {
$this->listen(PhabricatorEventType::TYPE_UI_DIDRENDERHOVERCARD);
}
public function handleEvent(PhutilEvent $event) {
switch ($event->getType()) {
case PhabricatorEventType::TYPE_UI_DIDRENDERHOVERCARD:
$this->handleHovercardEvent($event);
break;
}
}
private function handleHovercardEvent(PhutilEvent $event) {
$viewer = $event->getUser();
$hovercard = $event->getValue('hovercard');
$handle = $event->getValue('handle');
$phid = $handle->getPHID();
$task = $event->getValue('object');
if (!($task instanceof ManiphestTask)) {
return;
}
$e_project = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST;
// Fun with "Unbeta Pholio", hua hua
$e_dep_on = ManiphestTaskDependsOnTaskEdgeType::EDGECONST;
$e_dep_by = ManiphestTaskDependedOnByTaskEdgeType::EDGECONST;
$edge_query = id(new PhabricatorEdgeQuery())
->withSourcePHIDs(array($phid))
->withEdgeTypes(
array(
$e_project,
$e_dep_on,
$e_dep_by,
));
$edges = idx($edge_query->execute(), $phid);
$edge_phids = $edge_query->getDestinationPHIDs();
$owner_phid = $task->getOwnerPHID();
- $phids = array_filter(array_merge(
- array($owner_phid),
- $edge_phids));
-
- $viewer_handles = $this->loadHandles($phids, $viewer);
-
- $hovercard->setTitle(pht('T%d', $task->getID()))
+ $hovercard
+ ->setTitle(pht('T%d', $task->getID()))
->setDetail($task->getTitle());
- $owner = phutil_tag('em', array(), pht('None'));
if ($owner_phid) {
- $owner = $viewer_handles[$owner_phid]->renderLink();
+ $owner = $viewer->renderHandle($owner_phid);
+ } else {
+ $owner = phutil_tag('em', array(), pht('None'));
}
-
- $hovercard->addField(pht('Assigned to'), $owner);
+ $hovercard->addField(pht('Assigned To'), $owner);
if ($edge_phids) {
$edge_types = array(
$e_project => pht('Projects'),
$e_dep_by => pht('Dependent Tasks'),
$e_dep_on => pht('Depends On'),
);
$max_count = 6;
foreach ($edge_types as $edge_type => $edge_name) {
if ($edges[$edge_type]) {
// TODO: This can be made more sophisticated. We still load all
// edges into memory. Only load the ones we need.
$edge_overflow = array();
if (count($edges[$edge_type]) > $max_count) {
$edges[$edge_type] = array_slice($edges[$edge_type], 0, 6, true);
$edge_overflow = ', ...';
}
$hovercard->addField(
$edge_name,
- implode_selected_handle_links(', ', $viewer_handles,
- array_keys($edges[$edge_type]))
- ->appendHTML($edge_overflow));
+ array(
+ $viewer->renderHandleList(array_keys($edges[$edge_type])),
+ $edge_overflow,
+ ));
}
}
}
$hovercard->addTag(ManiphestView::renderTagForTask($task));
$event->setValue('hovercard', $hovercard);
}
- protected function loadHandles(array $phids, $viewer) {
- return id(new PhabricatorHandleQuery())
- ->setViewer($viewer)
- ->withPHIDs($phids)
- ->execute();
- }
-
}
diff --git a/src/applications/phid/handle/view/render.php b/src/applications/phid/handle/view/render.php
deleted file mode 100644
index 49d18f95fe..0000000000
--- a/src/applications/phid/handle/view/render.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/**
- * Implodes selected handles from a pool of handles. Useful if you load handles
- * for various phids, but only render a few of them at a time.
- *
- * @return PhutilSafeHTML
- */
-function implode_selected_handle_links($glue, array $handles, array $phids) {
-
- $items = array();
- foreach ($phids as $phid) {
- $items[] = $handles[$phid]->renderLink();
- }
-
- return phutil_implode_html($glue, $items);
-}

File Metadata

Mime Type
text/x-diff
Expires
Jan 19 2025, 22:40 (6 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1129494
Default Alt Text
(7 KB)

Event Timeline