Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/almanac/view/AlmanacInterfaceTableView.php
12256 views
1
<?php
2
3
final class AlmanacInterfaceTableView extends AphrontView {
4
5
private $interfaces;
6
private $canEdit;
7
8
public function setInterfaces(array $interfaces) {
9
$this->interfaces = $interfaces;
10
return $this;
11
}
12
13
public function getInterfaces() {
14
return $this->interfaces;
15
}
16
17
public function setCanEdit($can_edit) {
18
$this->canEdit = $can_edit;
19
return $this;
20
}
21
22
public function getCanEdit() {
23
return $this->canEdit;
24
}
25
26
public function render() {
27
$interfaces = $this->getInterfaces();
28
$viewer = $this->getUser();
29
30
$can_edit = $this->getCanEdit();
31
32
if ($can_edit) {
33
$button_class = 'small button button-grey';
34
} else {
35
$button_class = 'small button button-grey disabled';
36
}
37
38
$handles = $viewer->loadHandles(mpull($interfaces, 'getNetworkPHID'));
39
40
$rows = array();
41
foreach ($interfaces as $interface) {
42
$rows[] = array(
43
$interface->getID(),
44
$handles->renderHandle($interface->getNetworkPHID()),
45
$interface->getAddress(),
46
$interface->getPort(),
47
javelin_tag(
48
'a',
49
array(
50
'class' => $button_class,
51
'href' => '/almanac/interface/edit/'.$interface->getID().'/',
52
'sigil' => ($can_edit ? null : 'workflow'),
53
),
54
pht('Edit')),
55
javelin_tag(
56
'a',
57
array(
58
'class' => $button_class,
59
'href' => '/almanac/interface/delete/'.$interface->getID().'/',
60
'sigil' => 'workflow',
61
),
62
pht('Delete')),
63
);
64
}
65
66
$table = id(new AphrontTableView($rows))
67
->setHeaders(
68
array(
69
pht('ID'),
70
pht('Network'),
71
pht('Address'),
72
pht('Port'),
73
null,
74
null,
75
))
76
->setColumnClasses(
77
array(
78
'',
79
'wide',
80
'',
81
'',
82
'action',
83
'action',
84
));
85
86
return $table;
87
}
88
89
}
90
91