Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/almanac/editor/AlmanacDeviceEditEngine.php
12256 views
1
<?php
2
3
final class AlmanacDeviceEditEngine
4
extends PhabricatorEditEngine {
5
6
const ENGINECONST = 'almanac.device';
7
8
public function isEngineConfigurable() {
9
return false;
10
}
11
12
public function getEngineName() {
13
return pht('Almanac Devices');
14
}
15
16
public function getSummaryHeader() {
17
return pht('Edit Almanac Device Configurations');
18
}
19
20
public function getSummaryText() {
21
return pht('This engine is used to edit Almanac devices.');
22
}
23
24
public function getEngineApplicationClass() {
25
return 'PhabricatorAlmanacApplication';
26
}
27
28
protected function newEditableObject() {
29
return AlmanacDevice::initializeNewDevice();
30
}
31
32
protected function newObjectQuery() {
33
return id(new AlmanacDeviceQuery())
34
->needProperties(true);
35
}
36
37
protected function getObjectCreateTitleText($object) {
38
return pht('Create Device');
39
}
40
41
protected function getObjectCreateButtonText($object) {
42
return pht('Create Device');
43
}
44
45
protected function getObjectEditTitleText($object) {
46
return pht('Edit Device: %s', $object->getName());
47
}
48
49
protected function getObjectEditShortText($object) {
50
return pht('Edit Device');
51
}
52
53
protected function getObjectCreateShortText() {
54
return pht('Create Device');
55
}
56
57
protected function getObjectName() {
58
return pht('Device');
59
}
60
61
protected function getEditorURI() {
62
return '/almanac/device/edit/';
63
}
64
65
protected function getObjectCreateCancelURI($object) {
66
return '/almanac/device/';
67
}
68
69
protected function getObjectViewURI($object) {
70
return $object->getURI();
71
}
72
73
protected function getCreateNewObjectPolicy() {
74
return $this->getApplication()->getPolicy(
75
AlmanacCreateDevicesCapability::CAPABILITY);
76
}
77
78
protected function buildCustomEditFields($object) {
79
$status_map = $this->getDeviceStatusMap($object);
80
81
return array(
82
id(new PhabricatorTextEditField())
83
->setKey('name')
84
->setLabel(pht('Name'))
85
->setDescription(pht('Name of the device.'))
86
->setTransactionType(AlmanacDeviceNameTransaction::TRANSACTIONTYPE)
87
->setIsRequired(true)
88
->setValue($object->getName()),
89
id(new PhabricatorSelectEditField())
90
->setKey('status')
91
->setLabel(pht('Status'))
92
->setDescription(pht('Device status.'))
93
->setTransactionType(AlmanacDeviceStatusTransaction::TRANSACTIONTYPE)
94
->setOptions($status_map)
95
->setValue($object->getStatus()),
96
);
97
}
98
99
100
private function getDeviceStatusMap(AlmanacDevice $device) {
101
$status_map = AlmanacDeviceStatus::getStatusMap();
102
103
// If the device currently has an unknown status, add it to the list for
104
// the dropdown.
105
$status_value = $device->getStatus();
106
if (!isset($status_map[$status_value])) {
107
$status_map = array(
108
$status_value => AlmanacDeviceStatus::newStatusFromValue($status_value),
109
) + $status_map;
110
}
111
112
$status_map = mpull($status_map, 'getName');
113
114
return $status_map;
115
}
116
117
}
118
119