Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/calendar/controller/PhabricatorCalendarImportEditController.php
12256 views
1
<?php
2
3
final 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
$list_uri = $this->getApplicationURI('import/');
13
14
$import_type = $request->getStr('importType');
15
$import_engines = PhabricatorCalendarImportEngine::getAllImportEngines();
16
if (empty($import_engines[$import_type])) {
17
return $this->buildEngineTypeResponse($list_uri);
18
}
19
20
$import_engine = $import_engines[$import_type];
21
22
$engine
23
->addContextParameter('importType', $import_type)
24
->setImportEngine($import_engine);
25
}
26
27
return $engine->buildResponse();
28
}
29
30
private function buildEngineTypeResponse($cancel_uri) {
31
$import_engines = PhabricatorCalendarImportEngine::getAllImportEngines();
32
33
$request = $this->getRequest();
34
$viewer = $this->getViewer();
35
36
$e_import = null;
37
$errors = array();
38
if ($request->isFormPost()) {
39
$e_import = pht('Required');
40
$errors[] = pht(
41
'To import events, you must select a source to import from.');
42
}
43
44
$type_control = id(new AphrontFormRadioButtonControl())
45
->setLabel(pht('Import Type'))
46
->setName('importType')
47
->setError($e_import);
48
49
foreach ($import_engines as $import_engine) {
50
$type_control->addButton(
51
$import_engine->getImportEngineType(),
52
$import_engine->getImportEngineName(),
53
$import_engine->getImportEngineHint());
54
}
55
56
$crumbs = $this->buildApplicationCrumbs();
57
$crumbs->addTextCrumb(pht('New Import'));
58
$crumbs->setBorder(true);
59
60
$title = pht('Choose Import Type');
61
$header = id(new PHUIHeaderView())
62
->setHeader(pht('New Import'))
63
->setHeaderIcon('fa-upload');
64
65
$form = id(new AphrontFormView())
66
->setUser($viewer)
67
->appendChild($type_control)
68
->appendChild(
69
id(new AphrontFormSubmitControl())
70
->setValue(pht('Continue'))
71
->addCancelButton($cancel_uri));
72
73
$box = id(new PHUIObjectBoxView())
74
->setFormErrors($errors)
75
->setHeaderText(pht('Import'))
76
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
77
->setForm($form);
78
79
$view = id(new PHUITwoColumnView())
80
->setHeader($header)
81
->setFooter(
82
array(
83
$box,
84
));
85
86
return $this->newPage()
87
->setTitle($title)
88
->setCrumbs($crumbs)
89
->appendChild($view);
90
}
91
92
}
93
94