Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/view/phui/PHUIBadgeView.php
12249 views
1
<?php
2
3
final class PHUIBadgeView extends AphrontTagView {
4
5
private $href;
6
private $icon;
7
private $quality;
8
private $source;
9
private $header;
10
private $subhead;
11
private $bylines = array();
12
13
public function setIcon($icon) {
14
$this->icon = $icon;
15
return $this;
16
}
17
18
public function setHref($href) {
19
$this->href = $href;
20
return $this;
21
}
22
23
public function setQuality($quality) {
24
$this->quality = $quality;
25
return $this;
26
}
27
28
private function getQualityColor() {
29
return PhabricatorBadgesQuality::getQualityColor($this->quality);
30
}
31
32
private function getQualityName() {
33
return PhabricatorBadgesQuality::getQualityName($this->quality);
34
}
35
36
public function setSource($source) {
37
$this->source = $source;
38
return $this;
39
}
40
41
public function setHeader($header) {
42
$this->header = $header;
43
return $this;
44
}
45
46
public function setSubhead($subhead) {
47
$this->subhead = $subhead;
48
return $this;
49
}
50
51
public function addByline($byline) {
52
$this->bylines[] = $byline;
53
return $this;
54
}
55
56
protected function getTagName() {
57
return 'span';
58
}
59
60
protected function getTagAttributes() {
61
require_celerity_resource('phui-badge-view-css');
62
$id = celerity_generate_unique_node_id();
63
64
Javelin::initBehavior('badge-view', array());
65
66
$classes = array();
67
$classes[] = 'phui-badge-view';
68
if ($this->quality) {
69
$color = $this->getQualityColor();
70
$classes[] = 'phui-badge-view-'.$color;
71
}
72
73
return array(
74
'class' => implode(' ', $classes),
75
'sigil' => 'jx-badge-view',
76
'id' => $id,
77
'meta' => array(
78
'map' => array(
79
$id => 'card-flipped',
80
),
81
),
82
);
83
}
84
85
protected function getTagContent() {
86
87
$icon = id(new PHUIIconView())
88
->setIcon($this->icon);
89
90
$illustration = phutil_tag_div('phui-badge-illustration', $icon);
91
92
$header = null;
93
if ($this->header) {
94
$header = phutil_tag(
95
($this->href) ? 'a' : 'span',
96
array(
97
'class' => 'phui-badge-view-header',
98
'href' => $this->href,
99
),
100
$this->header);
101
}
102
103
$subhead = null;
104
if ($this->subhead) {
105
$subhead = phutil_tag_div('phui-badge-view-subhead', $this->subhead);
106
}
107
108
$information = phutil_tag(
109
'div',
110
array(
111
'class' => 'phui-badge-view-information',
112
),
113
array($header, $subhead));
114
115
$quality = phutil_tag_div('phui-badge-quality', $this->getQualityName());
116
$source = phutil_tag_div('phui-badge-source', $this->source);
117
118
$bylines = array();
119
if ($this->bylines) {
120
foreach ($this->bylines as $byline) {
121
$bylines[] = phutil_tag_div('phui-badge-byline', $byline);
122
}
123
}
124
125
$card_front_1 = phutil_tag(
126
'div',
127
array(
128
'class' => 'phui-badge-inner-front',
129
),
130
array(
131
$illustration,
132
));
133
134
$card_front_2 = phutil_tag(
135
'div',
136
array(
137
'class' => 'phui-badge-inner-front',
138
),
139
array(
140
$information,
141
));
142
143
$back_info = phutil_tag(
144
'div',
145
array(
146
'class' => 'phui-badge-view-information',
147
),
148
array(
149
$quality,
150
$source,
151
$bylines,
152
));
153
154
$card_back = phutil_tag(
155
'div',
156
array(
157
'class' => 'phui-badge-inner-back',
158
),
159
array(
160
$back_info,
161
));
162
163
$inner_front = phutil_tag(
164
'div',
165
array(
166
'class' => 'phui-badge-front-view',
167
),
168
array(
169
$card_front_1,
170
$card_front_2,
171
));
172
173
$inner_back = phutil_tag_div('phui-badge-back-view', $card_back);
174
$front = phutil_tag_div('phui-badge-card-front', $inner_front);
175
$back = phutil_tag_div('phui-badge-card-back', $inner_back);
176
177
$card = phutil_tag(
178
'div',
179
array(
180
'class' => 'phui-badge-card',
181
),
182
array(
183
$front,
184
$back,
185
));
186
187
return phutil_tag(
188
'div',
189
array(
190
'class' => 'phui-badge-card-container',
191
),
192
$card);
193
194
}
195
196
}
197
198