private function buildEngineTypeResponse($cancel_uri) { $import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); $request = $this->getRequest(); $viewer = $this->getViewer(); $e_import = null; $errors = array(); if ($request->isFormPost()) { $e_import = pht('Required'); $errors[] = pht('To import events, you must select a source to import from.'); } $type_control = id(new AphrontFormRadioButtonControl())->setLabel(pht('Import Type'))->setName('importType')->setError($e_import); foreach ($import_engines as $import_engine) { $type_control->addButton($import_engine->getImportEngineType(), $import_engine->getImportEngineName(), $import_engine->getImportEngineHint()); } $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('New Import')); $crumbs->setBorder(true); $title = pht('Choose Import Type'); $header = id(new PHUIHeaderView())->setHeader(pht('New Import'))->setHeaderIcon('fa-upload'); $form = id(new AphrontFormView())->setUser($viewer)->appendChild($type_control)->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Continue'))->addCancelButton($cancel_uri)); $box = id(new PHUIObjectBoxView())->setFormErrors($errors)->setHeaderText(pht('Import'))->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->setForm($form); $view = id(new PHUITwoColumnView())->setHeader($header)->setFooter(array($box)); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($view); }
protected function willFilterPage(array $page) { $engines = PhabricatorCalendarImportEngine::getAllImportEngines(); foreach ($page as $key => $import) { $engine_type = $import->getEngineType(); $engine = idx($engines, $engine_type); if (!$engine) { unset($page[$key]); $this->didRejectResult($import); continue; } $import->attachEngine(clone $engine); } return $page; }