@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
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 119 lines 3.3 kB view raw
1<?php 2 3final class PhabricatorCalendarImportEditController 4 extends PhabricatorCalendarController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $engine = id(new PhabricatorCalendarImportEditEngine()) 8 ->setController($this); 9 10 $id = $request->getURIData('id'); 11 if ($id) { 12 13 // edit a specific entry 14 15 $calendar_import = self::queryImportByID($request, $id); 16 if (!$calendar_import) { 17 return new Aphront404Response(); 18 } 19 20 // pass the correct import engine to build the response 21 $engine->setImportEngine($calendar_import->getEngine()); 22 23 } else { 24 25 // create an entry 26 27 $list_uri = $this->getApplicationURI('import/'); 28 29 $import_type = $request->getStr('importType'); 30 $import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); 31 if (empty($import_engines[$import_type])) { 32 return $this->buildEngineTypeResponse($list_uri); 33 } 34 35 $import_engine = $import_engines[$import_type]; 36 37 $engine 38 ->addContextParameter('importType', $import_type) 39 ->setImportEngine($import_engine); 40 } 41 42 return $engine->buildResponse(); 43 } 44 45 private static function queryImportByID(AphrontRequest $request, int $id) { 46 return id(new PhabricatorCalendarImportQuery()) 47 ->setViewer($request->getViewer()) 48 ->withIDs(array($id)) 49 ->requireCapabilities( 50 array( 51 PhabricatorPolicyCapability::CAN_VIEW, 52 PhabricatorPolicyCapability::CAN_EDIT, 53 )) 54 ->executeOne(); 55 } 56 57 private function buildEngineTypeResponse($cancel_uri) { 58 $import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); 59 60 $request = $this->getRequest(); 61 $viewer = $this->getViewer(); 62 63 $e_import = null; 64 $errors = array(); 65 if ($request->isFormPost()) { 66 $e_import = pht('Required'); 67 $errors[] = pht( 68 'To import events, you must select a source to import from.'); 69 } 70 71 $type_control = id(new AphrontFormRadioButtonControl()) 72 ->setLabel(pht('Import Type')) 73 ->setName('importType') 74 ->setError($e_import); 75 76 foreach ($import_engines as $import_engine) { 77 $type_control->addButton( 78 $import_engine->getImportEngineType(), 79 $import_engine->getImportEngineName(), 80 $import_engine->getImportEngineHint()); 81 } 82 83 $crumbs = $this->buildApplicationCrumbs(); 84 $crumbs->addTextCrumb(pht('New Import')); 85 $crumbs->setBorder(true); 86 87 $title = pht('Choose Import Type'); 88 $header = id(new PHUIHeaderView()) 89 ->setHeader(pht('New Import')) 90 ->setHeaderIcon('fa-upload'); 91 92 $form = id(new AphrontFormView()) 93 ->setUser($viewer) 94 ->appendChild($type_control) 95 ->appendChild( 96 id(new AphrontFormSubmitControl()) 97 ->setValue(pht('Continue')) 98 ->addCancelButton($cancel_uri)); 99 100 $box = id(new PHUIObjectBoxView()) 101 ->setFormErrors($errors) 102 ->setHeaderText(pht('Import')) 103 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 104 ->setForm($form); 105 106 $view = id(new PHUITwoColumnView()) 107 ->setHeader($header) 108 ->setFooter( 109 array( 110 $box, 111 )); 112 113 return $this->newPage() 114 ->setTitle($title) 115 ->setCrumbs($crumbs) 116 ->appendChild($view); 117 } 118 119}