Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/owners/engineextension/PhabricatorOwnersHovercardEngineExtension.php
12256 views
1
<?php
2
3
final class PhabricatorOwnersHovercardEngineExtension
4
extends PhabricatorHovercardEngineExtension {
5
6
const EXTENSIONKEY = 'owners';
7
8
public function isExtensionEnabled() {
9
return PhabricatorApplication::isClassInstalled(
10
'PhabricatorOwnersApplication');
11
}
12
13
public function getExtensionName() {
14
return pht('Owner Packages');
15
}
16
17
public function canRenderObjectHovercard($object) {
18
return ($object instanceof PhabricatorOwnersPackage);
19
}
20
21
public function willRenderHovercards(array $objects) {
22
$viewer = $this->getViewer();
23
$phids = mpull($objects, 'getPHID');
24
25
$packages = id(new PhabricatorOwnersPackageQuery())
26
->setViewer($viewer)
27
->withPHIDs($phids)
28
->execute();
29
$packages = mpull($packages, null, 'getPHID');
30
31
return array(
32
'packages' => $packages,
33
);
34
}
35
36
public function renderHovercard(
37
PHUIHovercardView $hovercard,
38
PhabricatorObjectHandle $handle,
39
$object,
40
$data) {
41
42
$viewer = $this->getViewer();
43
44
$package = idx($data['packages'], $object->getPHID());
45
if (!$package) {
46
return;
47
}
48
49
$title = pht('%s: %s', 'O'.$package->getID(), $package->getName());
50
$hovercard->setTitle($title);
51
52
$dominion = $package->getDominion();
53
$dominion_map = PhabricatorOwnersPackage::getDominionOptionsMap();
54
$spec = idx($dominion_map, $dominion, array());
55
$name = idx($spec, 'short', $dominion);
56
$hovercard->addField(pht('Dominion'), $name);
57
58
$auto = $package->getAutoReview();
59
$autoreview_map = PhabricatorOwnersPackage::getAutoreviewOptionsMap();
60
$spec = idx($autoreview_map, $auto, array());
61
$name = idx($spec, 'name', $auto);
62
$hovercard->addField(pht('Auto Review'), $name);
63
64
if ($package->isArchived()) {
65
$tag = id(new PHUITagView())
66
->setName(pht('Archived'))
67
->setColor(PHUITagView::COLOR_INDIGO)
68
->setType(PHUITagView::TYPE_OBJECT);
69
$hovercard->addTag($tag);
70
}
71
72
$owner_phids = $package->getOwnerPHIDs();
73
74
$hovercard->addField(
75
pht('Owners'),
76
$viewer->renderHandleList($owner_phids)->setAsInline(true));
77
78
$description = $package->getDescription();
79
if (strlen($description)) {
80
$description = id(new PhutilUTF8StringTruncator())
81
->setMaximumGlyphs(120)
82
->truncateString($description);
83
84
$hovercard->addField(pht('Description'), $description);
85
}
86
87
}
88
89
}
90
91