Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/nuance/controller/NuanceSourceEditController.php
12256 views
1
<?php
2
3
final class NuanceSourceEditController
4
extends NuanceSourceController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$engine = id(new NuanceSourceEditEngine())
8
->setController($this);
9
10
$id = $request->getURIData('id');
11
if (!$id) {
12
$this->requireApplicationCapability(
13
NuanceSourceManageCapability::CAPABILITY);
14
15
$cancel_uri = $this->getApplicationURI('source/');
16
$map = NuanceSourceDefinition::getAllDefinitions();
17
$source_type = $request->getStr('sourceType');
18
if (!isset($map[$source_type])) {
19
return $this->buildSourceTypeResponse($cancel_uri);
20
}
21
22
$engine
23
->setSourceDefinition($map[$source_type])
24
->addContextParameter('sourceType', $source_type);
25
}
26
27
return $engine->buildResponse();
28
}
29
30
private function buildSourceTypeResponse($cancel_uri) {
31
$viewer = $this->getViewer();
32
$request = $this->getRequest();
33
$map = NuanceSourceDefinition::getAllDefinitions();
34
35
$errors = array();
36
$e_source = null;
37
if ($request->isFormPost()) {
38
$errors[] = pht('You must choose a source type.');
39
$e_source = pht('Required');
40
}
41
42
$source_types = id(new AphrontFormRadioButtonControl())
43
->setName('sourceType')
44
->setLabel(pht('Source Type'));
45
46
foreach ($map as $type => $definition) {
47
$source_types->addButton(
48
$type,
49
$definition->getName(),
50
$definition->getSourceDescription());
51
}
52
53
$form = id(new AphrontFormView())
54
->setUser($viewer)
55
->appendChild($source_types)
56
->appendChild(
57
id(new AphrontFormSubmitControl())
58
->setValue(pht('Continue'))
59
->addCancelButton($cancel_uri));
60
61
$box = id(new PHUIObjectBoxView())
62
->setFormErrors($errors)
63
->setHeaderText(pht('Choose Source Type'))
64
->appendChild($form);
65
66
$crumbs = $this->buildApplicationCrumbs();
67
$crumbs->addTextCrumb(pht('Sources'), $cancel_uri);
68
$crumbs->addTextCrumb(pht('New'));
69
70
return $this->newPage()
71
->setTitle(pht('Choose Source Type'))
72
->setCrumbs($crumbs)
73
->appendChild($box);
74
}
75
76
}
77
78