Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/engineextension/DifferentialHovercardEngineExtension.php
12256 views
1
<?php
2
3
final class DifferentialHovercardEngineExtension
4
extends PhabricatorHovercardEngineExtension {
5
6
const EXTENSIONKEY = 'differential';
7
8
public function isExtensionEnabled() {
9
return PhabricatorApplication::isClassInstalled(
10
'PhabricatorDifferentialApplication');
11
}
12
13
public function getExtensionName() {
14
return pht('Differential Revisions');
15
}
16
17
public function canRenderObjectHovercard($object) {
18
return ($object instanceof DifferentialRevision);
19
}
20
21
public function willRenderHovercards(array $objects) {
22
$viewer = $this->getViewer();
23
$phids = mpull($objects, 'getPHID');
24
25
$revisions = id(new DifferentialRevisionQuery())
26
->setViewer($viewer)
27
->withPHIDs($phids)
28
->needReviewers(true)
29
->execute();
30
$revisions = mpull($revisions, null, 'getPHID');
31
32
return array(
33
'revisions' => $revisions,
34
);
35
}
36
37
public function renderHovercard(
38
PHUIHovercardView $hovercard,
39
PhabricatorObjectHandle $handle,
40
$object,
41
$data) {
42
43
$viewer = $this->getViewer();
44
45
$revision = idx($data['revisions'], $object->getPHID());
46
if (!$revision) {
47
return;
48
}
49
50
$hovercard->setTitle('D'.$revision->getID());
51
$hovercard->setDetail($revision->getTitle());
52
53
$hovercard->addField(
54
pht('Author'),
55
$viewer->renderHandle($revision->getAuthorPHID()));
56
57
$reviewer_phids = $revision->getReviewerPHIDs();
58
59
$hovercard->addField(
60
pht('Reviewers'),
61
$viewer->renderHandleList($reviewer_phids)->setAsInline(true));
62
63
$summary = $revision->getSummary();
64
if (strlen($summary)) {
65
$summary = id(new PhutilUTF8StringTruncator())
66
->setMaximumGlyphs(120)
67
->truncateString($summary);
68
69
$hovercard->addField(pht('Summary'), $summary);
70
}
71
72
}
73
74
}
75
76