Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/badges/view/PhabricatorBadgesRecipientsListView.php
12256 views
1
<?php
2
3
final class PhabricatorBadgesRecipientsListView extends AphrontView {
4
5
private $badge;
6
private $awards;
7
private $handles;
8
9
public function setBadge(PhabricatorBadgesBadge $badge) {
10
$this->badge = $badge;
11
return $this;
12
}
13
14
public function setAwards(array $awards) {
15
$this->awards = $awards;
16
return $this;
17
}
18
19
public function setHandles(array $handles) {
20
$this->handles = $handles;
21
return $this;
22
}
23
24
public function render() {
25
$viewer = $this->getViewer();
26
27
$badge = $this->badge;
28
$handles = $this->handles;
29
$awards = mpull($this->awards, null, 'getRecipientPHID');
30
31
$can_edit = PhabricatorPolicyFilter::hasCapability(
32
$viewer,
33
$badge,
34
PhabricatorPolicyCapability::CAN_EDIT);
35
36
$award_button = id(new PHUIButtonView())
37
->setTag('a')
38
->setIcon('fa-plus')
39
->setText(pht('Add Recipients'))
40
->setWorkflow(true)
41
->setDisabled(!$can_edit)
42
->setHref('/badges/recipients/'.$badge->getID().'/add/');
43
44
$header = id(new PHUIHeaderView())
45
->setHeader(pht('Recipients'))
46
->addActionLink($award_button);
47
48
$list = id(new PHUIObjectItemListView())
49
->setNoDataString(pht('This badge does not have any recipients.'))
50
->setFlush(true);
51
52
foreach ($handles as $handle) {
53
$remove_uri = '/badges/recipients/'.
54
$badge->getID().'/remove/?phid='.$handle->getPHID();
55
56
$award = $awards[$handle->getPHID()];
57
$awarder_handle = $viewer->renderHandle($award->getAwarderPHID());
58
$award_date = phabricator_date($award->getDateCreated(), $viewer);
59
$awarder_info = pht(
60
'Awarded by %s on %s',
61
$awarder_handle->render(),
62
$award_date);
63
64
$item = id(new PHUIObjectItemView())
65
->setHeader($handle->getFullName())
66
->setSubhead($awarder_info)
67
->setHref($handle->getURI())
68
->setImageURI($handle->getImageURI());
69
70
if ($can_edit) {
71
$item->addAction(
72
id(new PHUIListItemView())
73
->setIcon('fa-times')
74
->setName(pht('Remove'))
75
->setHref($remove_uri)
76
->setWorkflow(true));
77
}
78
79
$list->addItem($item);
80
}
81
82
$box = id(new PHUIObjectBoxView())
83
->setHeader($header)
84
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
85
->setObjectList($list);
86
87
return $box;
88
}
89
90
}
91
92