Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/almanac/controller/AlmanacPropertyDeleteController.php
12256 views
1
<?php
2
3
final class AlmanacPropertyDeleteController
4
extends AlmanacPropertyController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
9
$response = $this->loadPropertyObject();
10
if ($response) {
11
return $response;
12
}
13
14
$object = $this->getPropertyObject();
15
16
$key = $request->getStr('key');
17
if (!strlen($key)) {
18
return new Aphront404Response();
19
}
20
21
$cancel_uri = $object->getURI();
22
23
$builtins = $object->getAlmanacPropertyFieldSpecifications();
24
$is_builtin = isset($builtins[$key]);
25
26
if ($is_builtin) {
27
$title = pht('Reset Property');
28
$body = pht(
29
'Reset property "%s" to its default value?',
30
$key);
31
$submit_text = pht('Reset Property');
32
} else {
33
$title = pht('Delete Property');
34
$body = pht(
35
'Delete property "%s"?',
36
$key);
37
$submit_text = pht('Delete Property');
38
}
39
40
$validation_exception = null;
41
if ($request->isFormPost()) {
42
$xaction_type = $object->getAlmanacPropertyDeleteTransactionType();
43
44
$xaction = $object->getApplicationTransactionTemplate()
45
->setTransactionType($xaction_type)
46
->setMetadataValue('almanac.property', $key);
47
48
$editor = $object->getApplicationTransactionEditor()
49
->setActor($viewer)
50
->setContentSourceFromRequest($request)
51
->setContinueOnNoEffect(true)
52
->setContinueOnMissingFields(true);
53
54
try {
55
$editor->applyTransactions($object, array($xaction));
56
return id(new AphrontRedirectResponse())->setURI($cancel_uri);
57
} catch (PhabricatorApplicationTransactionValidationException $ex) {
58
$validation_exception = $ex;
59
}
60
}
61
62
return $this->newDialog()
63
->setTitle($title)
64
->setValidationException($validation_exception)
65
->addHiddenInput('objectPHID', $object->getPHID())
66
->addHiddenInput('key', $key)
67
->appendParagraph($body)
68
->addCancelButton($cancel_uri)
69
->addSubmitButton($submit_text);
70
}
71
72
}
73
74