@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 76 lines 2.2 kB view raw
1<?php 2 3final 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 (!$source_type || !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}