3 final class NuanceSourceEditController
4 extends NuanceSourceController
{
6 public function handleRequest(AphrontRequest
$request) {
7 $engine = id(new NuanceSourceEditEngine())
8 ->setController($this);
10 $id = $request->getURIData('id');
12 $this->requireApplicationCapability(
13 NuanceSourceManageCapability
::CAPABILITY
);
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);
23 ->setSourceDefinition($map[$source_type])
24 ->addContextParameter('sourceType', $source_type);
27 return $engine->buildResponse();
30 private function buildSourceTypeResponse($cancel_uri) {
31 $viewer = $this->getViewer();
32 $request = $this->getRequest();
33 $map = NuanceSourceDefinition
::getAllDefinitions();
37 if ($request->isFormPost()) {
38 $errors[] = pht('You must choose a source type.');
39 $e_source = pht('Required');
42 $source_types = id(new AphrontFormRadioButtonControl())
43 ->setName('sourceType')
44 ->setLabel(pht('Source Type'));
46 foreach ($map as $type => $definition) {
47 $source_types->addButton(
49 $definition->getName(),
50 $definition->getSourceDescription());
53 $form = id(new AphrontFormView())
55 ->appendChild($source_types)
57 id(new AphrontFormSubmitControl())
58 ->setValue(pht('Continue'))
59 ->addCancelButton($cancel_uri));
61 $box = id(new PHUIObjectBoxView())
62 ->setFormErrors($errors)
63 ->setHeaderText(pht('Choose Source Type'))
66 $crumbs = $this->buildApplicationCrumbs();
67 $crumbs->addTextCrumb(pht('Sources'), $cancel_uri);
68 $crumbs->addTextCrumb(pht('New'));
70 return $this->newPage()
71 ->setTitle(pht('Choose Source Type'))