Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/owners/editor/PhabricatorOwnersPackageEditEngine.php
12256 views
1
<?php
2
3
final class PhabricatorOwnersPackageEditEngine
4
extends PhabricatorEditEngine {
5
6
const ENGINECONST = 'owners.package';
7
8
public function getEngineName() {
9
return pht('Owners Packages');
10
}
11
12
public function getSummaryHeader() {
13
return pht('Configure Owners Package Forms');
14
}
15
16
public function getSummaryText() {
17
return pht('Configure forms for creating and editing packages in Owners.');
18
}
19
20
public function getEngineApplicationClass() {
21
return 'PhabricatorOwnersApplication';
22
}
23
24
protected function newEditableObject() {
25
return PhabricatorOwnersPackage::initializeNewPackage($this->getViewer());
26
}
27
28
protected function newObjectQuery() {
29
return id(new PhabricatorOwnersPackageQuery())
30
->needPaths(true);
31
}
32
33
protected function getObjectCreateTitleText($object) {
34
return pht('Create New Package');
35
}
36
37
protected function getObjectEditTitleText($object) {
38
return pht('Edit Package: %s', $object->getName());
39
}
40
41
protected function getObjectEditShortText($object) {
42
return pht('Package %d', $object->getID());
43
}
44
45
protected function getObjectCreateShortText() {
46
return pht('Create Package');
47
}
48
49
protected function getObjectName() {
50
return pht('Package');
51
}
52
53
protected function getObjectViewURI($object) {
54
return $object->getURI();
55
}
56
57
protected function buildCustomEditFields($object) {
58
59
$paths_help = pht(<<<EOTEXT
60
When updating the paths for a package, pass a list of dictionaries like
61
this as the `value` for the transaction:
62
63
```lang=json, name="Example Paths Value"
64
[
65
{
66
"repositoryPHID": "PHID-REPO-1234",
67
"path": "/path/to/directory/",
68
"excluded": false
69
},
70
{
71
"repositoryPHID": "PHID-REPO-1234",
72
"path": "/another/example/path/",
73
"excluded": false
74
}
75
]
76
```
77
78
This transaction will set the paths to the list you provide, overwriting any
79
previous paths.
80
81
Generally, you will call `owners.search` first to get a list of current paths
82
(which are provided in the same format), make changes, then update them by
83
applying a transaction of this type.
84
EOTEXT
85
);
86
87
$autoreview_map = PhabricatorOwnersPackage::getAutoreviewOptionsMap();
88
$autoreview_map = ipull($autoreview_map, 'name');
89
90
$dominion_map = PhabricatorOwnersPackage::getDominionOptionsMap();
91
$dominion_map = ipull($dominion_map, 'name');
92
93
$authority_map = PhabricatorOwnersPackage::getAuthorityOptionsMap();
94
$authority_map = ipull($authority_map, 'name');
95
96
return array(
97
id(new PhabricatorTextEditField())
98
->setKey('name')
99
->setLabel(pht('Name'))
100
->setDescription(pht('Name of the package.'))
101
->setTransactionType(
102
PhabricatorOwnersPackageNameTransaction::TRANSACTIONTYPE)
103
->setIsRequired(true)
104
->setValue($object->getName()),
105
id(new PhabricatorDatasourceEditField())
106
->setKey('owners')
107
->setLabel(pht('Owners'))
108
->setDescription(pht('Users and projects which own the package.'))
109
->setTransactionType(
110
PhabricatorOwnersPackageOwnersTransaction::TRANSACTIONTYPE)
111
->setDatasource(new PhabricatorProjectOrUserDatasource())
112
->setIsCopyable(true)
113
->setValue($object->getOwnerPHIDs()),
114
id(new PhabricatorSelectEditField())
115
->setKey('dominion')
116
->setLabel(pht('Dominion'))
117
->setDescription(
118
pht('Change package dominion rules.'))
119
->setTransactionType(
120
PhabricatorOwnersPackageDominionTransaction::TRANSACTIONTYPE)
121
->setIsCopyable(true)
122
->setValue($object->getDominion())
123
->setOptions($dominion_map),
124
id(new PhabricatorSelectEditField())
125
->setKey('authority')
126
->setLabel(pht('Authority'))
127
->setDescription(
128
pht('Change package authority rules.'))
129
->setTransactionType(
130
PhabricatorOwnersPackageAuthorityTransaction::TRANSACTIONTYPE)
131
->setIsCopyable(true)
132
->setValue($object->getAuthorityMode())
133
->setOptions($authority_map),
134
id(new PhabricatorSelectEditField())
135
->setKey('autoReview')
136
->setLabel(pht('Auto Review'))
137
->setDescription(
138
pht(
139
'Automatically trigger reviews for commits affecting files in '.
140
'this package.'))
141
->setTransactionType(
142
PhabricatorOwnersPackageAutoreviewTransaction::TRANSACTIONTYPE)
143
->setIsCopyable(true)
144
->setValue($object->getAutoReview())
145
->setOptions($autoreview_map),
146
id(new PhabricatorSelectEditField())
147
->setKey('auditing')
148
->setLabel(pht('Auditing'))
149
->setDescription(
150
pht(
151
'Automatically trigger audits for commits affecting files in '.
152
'this package.'))
153
->setTransactionType(
154
PhabricatorOwnersPackageAuditingTransaction::TRANSACTIONTYPE)
155
->setIsCopyable(true)
156
->setValue($object->getAuditingState())
157
->setOptions(PhabricatorOwnersAuditRule::newSelectControlMap()),
158
id(new PhabricatorRemarkupEditField())
159
->setKey('description')
160
->setLabel(pht('Description'))
161
->setDescription(pht('Human-readable description of the package.'))
162
->setTransactionType(
163
PhabricatorOwnersPackageDescriptionTransaction::TRANSACTIONTYPE)
164
->setValue($object->getDescription()),
165
id(new PhabricatorSelectEditField())
166
->setKey('status')
167
->setLabel(pht('Status'))
168
->setDescription(pht('Archive or enable the package.'))
169
->setTransactionType(
170
PhabricatorOwnersPackageStatusTransaction::TRANSACTIONTYPE)
171
->setIsFormField(false)
172
->setValue($object->getStatus())
173
->setOptions($object->getStatusNameMap()),
174
id(new PhabricatorCheckboxesEditField())
175
->setKey('ignored')
176
->setLabel(pht('Ignored Attributes'))
177
->setDescription(pht('Ignore paths with any of these attributes.'))
178
->setTransactionType(
179
PhabricatorOwnersPackageIgnoredTransaction::TRANSACTIONTYPE)
180
->setValue(array_keys($object->getIgnoredPathAttributes()))
181
->setOptions(
182
array(
183
'generated' => pht('Ignore generated files (review only).'),
184
)),
185
id(new PhabricatorConduitEditField())
186
->setKey('paths.set')
187
->setLabel(pht('Paths'))
188
->setIsFormField(false)
189
->setTransactionType(
190
PhabricatorOwnersPackagePathsTransaction::TRANSACTIONTYPE)
191
->setConduitDescription(
192
pht('Overwrite existing package paths with new paths.'))
193
->setConduitTypeDescription(
194
pht('List of dictionaries, each describing a path.'))
195
->setConduitDocumentation($paths_help),
196
);
197
}
198
199
}
200
201