Page MenuHomePhabricator

D14877.id35966.diff
No OneTemporary

D14877.id35966.diff

diff --git a/src/applications/differential/customfield/DifferentialAuthorField.php b/src/applications/differential/customfield/DifferentialAuthorField.php
--- a/src/applications/differential/customfield/DifferentialAuthorField.php
+++ b/src/applications/differential/customfield/DifferentialAuthorField.php
@@ -32,7 +32,7 @@
}
public function renderPropertyViewValue(array $handles) {
- return $handles[$this->getObject()->getAuthorPHID()]->renderLink();
+ return $handles[$this->getObject()->getAuthorPHID()]->renderHovercardLink();
}
}
diff --git a/src/applications/differential/view/DifferentialReviewersView.php b/src/applications/differential/view/DifferentialReviewersView.php
--- a/src/applications/differential/view/DifferentialReviewersView.php
+++ b/src/applications/differential/view/DifferentialReviewersView.php
@@ -120,7 +120,7 @@
}
- $item->setTarget($handle->renderLink());
+ $item->setTarget($handle->renderHovercardLink());
$view->addItem($item);
}
diff --git a/src/applications/maniphest/controller/ManiphestTaskDetailController.php b/src/applications/maniphest/controller/ManiphestTaskDetailController.php
--- a/src/applications/maniphest/controller/ManiphestTaskDetailController.php
+++ b/src/applications/maniphest/controller/ManiphestTaskDetailController.php
@@ -208,19 +208,26 @@
->setObject($task)
->setActionList($actions);
- $view->addProperty(
- pht('Assigned To'),
- $task->getOwnerPHID()
- ? $handles->renderHandle($task->getOwnerPHID())
- : phutil_tag('em', array(), pht('None')));
+ $owner_phid = $task->getOwnerPHID();
+ if ($owner_phid) {
+ $assigned_to = $handles
+ ->renderHandle($owner_phid)
+ ->setShowHovercard(true);
+ } else {
+ $assigned_to = phutil_tag('em', array(), pht('None'));
+ }
+
+ $view->addProperty(pht('Assigned To'), $assigned_to);
$view->addProperty(
pht('Priority'),
ManiphestTaskPriority::getTaskPriorityName($task->getPriority()));
- $view->addProperty(
- pht('Author'),
- $handles->renderHandle($task->getAuthorPHID()));
+ $author = $handles
+ ->renderHandle($task->getAuthorPHID())
+ ->setShowHovercard(true);
+
+ $view->addProperty(pht('Author'), $author);
$source = $task->getOriginalEmailSource();
if ($source) {
diff --git a/src/applications/phid/PhabricatorObjectHandle.php b/src/applications/phid/PhabricatorObjectHandle.php
--- a/src/applications/phid/PhabricatorObjectHandle.php
+++ b/src/applications/phid/PhabricatorObjectHandle.php
@@ -248,6 +248,23 @@
public function renderLink($name = null) {
+ return $this->renderLinkWithAttributes($name, array());
+ }
+
+ public function renderHovercardLink($name = null) {
+ Javelin::initBehavior('phabricator-hovercards');
+
+ $attributes = array(
+ 'sigil' => 'hovercard',
+ 'meta' => array(
+ 'hoverPHID' => $this->getPHID(),
+ ),
+ );
+
+ return $this->renderLinkWithAttributes($name, $attributes);
+ }
+
+ private function renderLinkWithAttributes($name, array $attributes) {
if ($name === null) {
$name = $this->getLinkName();
}
@@ -275,13 +292,15 @@
->setIconFont('fa-lock lightgreytext');
}
- return phutil_tag(
+ $attributes = $attributes + array(
+ 'href' => $uri,
+ 'class' => implode(' ', $classes),
+ 'title' => $title,
+ );
+
+ return javelin_tag(
$uri ? 'a' : 'span',
- array(
- 'href' => $uri,
- 'class' => implode(' ', $classes),
- 'title' => $title,
- ),
+ $attributes,
array($icon, $name));
}
diff --git a/src/applications/phid/view/PHUIHandleListView.php b/src/applications/phid/view/PHUIHandleListView.php
--- a/src/applications/phid/view/PHUIHandleListView.php
+++ b/src/applications/phid/view/PHUIHandleListView.php
@@ -34,9 +34,14 @@
}
protected function getTagContent() {
+ $list = $this->handleList;
$items = array();
- foreach ($this->handleList as $handle) {
- $items[] = $handle->renderLink();
+ foreach ($list as $handle) {
+ $view = $list->renderHandle($handle->getPHID());
+
+ $view->setShowHovercard(true);
+
+ $items[] = $view;
}
if ($this->getAsInline()) {
diff --git a/src/applications/phid/view/PHUIHandleTagListView.php b/src/applications/phid/view/PHUIHandleTagListView.php
--- a/src/applications/phid/view/PHUIHandleTagListView.php
+++ b/src/applications/phid/view/PHUIHandleTagListView.php
@@ -7,6 +7,7 @@
private $limit;
private $noDataString;
private $slim;
+ private $showHovercards;
public function setHandles(array $handles) {
$this->handles = $handles;
@@ -33,6 +34,11 @@
return $this;
}
+ public function setShowHovercards($show_hovercards) {
+ $this->showHovercards = $show_hovercards;
+ return $this;
+ }
+
protected function getTagName() {
return 'ul';
}
@@ -62,6 +68,9 @@
$list = array();
foreach ($handles as $handle) {
$tag = $handle->renderTag();
+ if ($this->showHovercards) {
+ $tag->setPHID($handle->getPHID());
+ }
if ($this->slim) {
$tag->setSlimShady(true);
}
diff --git a/src/applications/phid/view/PHUIHandleView.php b/src/applications/phid/view/PHUIHandleView.php
--- a/src/applications/phid/view/PHUIHandleView.php
+++ b/src/applications/phid/view/PHUIHandleView.php
@@ -15,6 +15,7 @@
private $handlePHID;
private $asTag;
private $useShortName;
+ private $showHovercard;
public function setHandleList(PhabricatorHandleList $list) {
$this->handleList = $list;
@@ -36,17 +37,37 @@
return $this;
}
+ public function setShowHovercard($hovercard) {
+ $this->showHovercard = $hovercard;
+ return $this;
+ }
+
public function render() {
$handle = $this->handleList[$this->handlePHID];
+
if ($this->asTag) {
- return $handle->renderTag();
- } else {
- if ($this->useShortName) {
- return $handle->renderLink($handle->getName());
- } else {
- return $handle->renderLink();
+ $tag = $handle->renderTag();
+
+ if ($this->showHovercard) {
+ $tag->setPHID($handle->getPHID());
}
+
+ return $tag;
}
+
+ if ($this->useShortName) {
+ $name = $handle->getName();
+ } else {
+ $name = null;
+ }
+
+ if ($this->showHovercard) {
+ $link = $handle->renderHovercardLink($name);
+ } else {
+ $link = $handle->renderLink($name);
+ }
+
+ return $link;
}
}
diff --git a/src/applications/project/events/PhabricatorProjectUIEventListener.php b/src/applications/project/events/PhabricatorProjectUIEventListener.php
--- a/src/applications/project/events/PhabricatorProjectUIEventListener.php
+++ b/src/applications/project/events/PhabricatorProjectUIEventListener.php
@@ -101,7 +101,8 @@
if ($handles) {
$list = id(new PHUIHandleTagListView())
->setHandles($handles)
- ->setAnnotations($annotations);
+ ->setAnnotations($annotations)
+ ->setShowHovercards(true);
} else {
$list = phutil_tag('em', array(), pht('None'));
}
diff --git a/src/applications/subscriptions/view/SubscriptionListStringBuilder.php b/src/applications/subscriptions/view/SubscriptionListStringBuilder.php
--- a/src/applications/subscriptions/view/SubscriptionListStringBuilder.php
+++ b/src/applications/subscriptions/view/SubscriptionListStringBuilder.php
@@ -57,7 +57,7 @@
// link. Instead, render "a, b, c, d" in this case, and then when we get one
// more render "a, b, c, and 2 others".
if ($subscribers_count <= ($show_count + 1)) {
- return phutil_implode_html(', ', mpull($handles, 'renderLink'));
+ return phutil_implode_html(', ', mpull($handles, 'renderHovercardLink'));
}
$show = array_slice($handles, 0, $show_count);
diff --git a/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php b/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php
--- a/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php
+++ b/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php
@@ -83,7 +83,7 @@
return null;
}
- $handles = mpull($handles, 'renderLink');
+ $handles = mpull($handles, 'renderHovercardLink');
$handles = phutil_implode_html(', ', $handles);
return $handles;
}

File Metadata

Mime Type
text/plain
Expires
Mar 7 2025, 11:38 AM (6 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7228439
Default Alt Text
D14877.id35966.diff (8 KB)

Event Timeline