Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / nuance / controller / NuanceSourceEditController.php
blob76025b2eb9fc07d58be83edf345de29999eac0a0
1 <?php
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');
11 if (!$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);
22 $engine
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();
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');
42 $source_types = id(new AphrontFormRadioButtonControl())
43 ->setName('sourceType')
44 ->setLabel(pht('Source Type'));
46 foreach ($map as $type => $definition) {
47 $source_types->addButton(
48 $type,
49 $definition->getName(),
50 $definition->getSourceDescription());
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));
61 $box = id(new PHUIObjectBoxView())
62 ->setFormErrors($errors)
63 ->setHeaderText(pht('Choose Source Type'))
64 ->appendChild($form);
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'))
72 ->setCrumbs($crumbs)
73 ->appendChild($box);