Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/view/formation/PHUIFormationFlankView.php
12249 views
1
<?php
2
3
final class PHUIFormationFlankView
4
extends PHUIFormationColumnDynamicView {
5
6
private $isFixed;
7
8
private $head;
9
private $body;
10
private $tail;
11
12
private $headID;
13
private $bodyID;
14
private $tailID;
15
16
private $headerText;
17
18
public function setIsFixed($fixed) {
19
$this->isFixed = $fixed;
20
return $this;
21
}
22
23
public function getIsFixed() {
24
return $this->isFixed;
25
}
26
27
public function setHead($head) {
28
$this->head = $head;
29
return $this;
30
}
31
32
public function setBody($body) {
33
$this->body = $body;
34
return $this;
35
}
36
37
public function setTail($tail) {
38
$this->tail = $tail;
39
return $this;
40
}
41
42
public function getHeadID() {
43
if (!$this->headID) {
44
$this->headID = celerity_generate_unique_node_id();
45
}
46
return $this->headID;
47
}
48
49
public function getBodyID() {
50
if (!$this->bodyID) {
51
$this->bodyID = celerity_generate_unique_node_id();
52
}
53
return $this->bodyID;
54
}
55
56
public function getTailID() {
57
if (!$this->tailID) {
58
$this->tailID = celerity_generate_unique_node_id();
59
}
60
return $this->tailID;
61
}
62
63
public function setHeaderText($header_text) {
64
$this->headerText = $header_text;
65
return $this;
66
}
67
68
public function getHeaderText() {
69
return $this->headerText;
70
}
71
72
public function newClientProperties() {
73
return array(
74
'type' => 'flank',
75
'nodeID' => $this->getID(),
76
'isFixed' => (bool)$this->getIsFixed(),
77
'headID' => $this->getHeadID(),
78
'bodyID' => $this->getBodyID(),
79
'tailID' => $this->getTailID(),
80
);
81
}
82
83
public function render() {
84
require_celerity_resource('phui-formation-view-css');
85
86
$width = $this->getWidth();
87
88
$style = array();
89
$style[] = sprintf('width: %dpx;', $width);
90
91
$classes = array();
92
$classes[] = 'phui-flank-view';
93
94
if ($this->getIsFixed()) {
95
$classes[] = 'phui-flank-view-fixed';
96
}
97
98
$head_id = $this->getHeadID();
99
$body_id = $this->getBodyID();
100
$tail_id = $this->getTailID();
101
102
$header = phutil_tag(
103
'div',
104
array(
105
'class' => 'phui-flank-header',
106
),
107
array(
108
phutil_tag(
109
'div',
110
array(
111
'class' => 'phui-flank-header-text',
112
),
113
$this->getHeaderText()),
114
$this->newHideButton(),
115
));
116
117
$content = phutil_tag(
118
'div',
119
array(
120
'id' => $this->getID(),
121
'class' => implode(' ', $classes),
122
'style' => implode(' ', $style),
123
),
124
array(
125
phutil_tag(
126
'div',
127
array(
128
'id' => $head_id,
129
'class' => 'phui-flank-view-head',
130
),
131
array(
132
$header,
133
$this->head,
134
)),
135
phutil_tag(
136
'div',
137
array(
138
'id' => $body_id,
139
'class' => 'phui-flank-view-body',
140
),
141
$this->body),
142
phutil_tag(
143
'div',
144
array(
145
'id' => $tail_id,
146
'class' => 'phui-flank-view-tail',
147
),
148
$this->tail),
149
));
150
151
return $content;
152
}
153
154
private function newHideButton() {
155
$item = $this->getColumnItem();
156
$is_right = $item->getIsRightAligned();
157
158
$hide_classes = array();
159
$hide_classes[] = 'phui-flank-header-hide';
160
161
if ($is_right) {
162
$hide_icon = id(new PHUIIconView())
163
->setIcon('fa-chevron-right grey');
164
$hide_classes[] = 'phui-flank-header-hide-right';
165
} else {
166
$hide_icon = id(new PHUIIconView())
167
->setIcon('fa-chevron-left grey');
168
$hide_classes[] = 'phui-flank-header-hide-left';
169
}
170
171
return javelin_tag(
172
'div',
173
array(
174
'sigil' => 'phui-flank-header-hide',
175
'class' => implode(' ', $hide_classes),
176
),
177
$hide_icon);
178
}
179
180
}
181
182