Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/controller/DiffusionRepositoryEditController.php
12242 views
1
<?php
2
3
final class DiffusionRepositoryEditController
4
extends DiffusionRepositoryManageController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$engine = id(new DiffusionRepositoryEditEngine())
8
->setController($this);
9
10
$id = $request->getURIData('id');
11
if (!$id) {
12
$this->requireApplicationCapability(
13
DiffusionCreateRepositoriesCapability::CAPABILITY);
14
15
$vcs = $request->getStr('vcs');
16
$vcs_types = PhabricatorRepositoryType::getRepositoryTypeMap();
17
if (empty($vcs_types[$vcs])) {
18
return $this->buildVCSTypeResponse();
19
}
20
21
$engine
22
->addContextParameter('vcs', $vcs)
23
->setVersionControlSystem($vcs);
24
}
25
26
return $engine->buildResponse();
27
}
28
29
private function buildVCSTypeResponse() {
30
$vcs_types = PhabricatorRepositoryType::getRepositoryTypeMap();
31
32
$request = $this->getRequest();
33
$viewer = $this->getViewer();
34
35
$crumbs = $this->buildApplicationCrumbs();
36
$crumbs->addTextCrumb(pht('Create Repository'));
37
$crumbs->setBorder(true);
38
39
$title = pht('Choose Repository Type');
40
41
$layout = id(new AphrontMultiColumnView())
42
->setFluidLayout(true);
43
44
$create_uri = $request->getRequestURI();
45
46
foreach ($vcs_types as $vcs_key => $vcs_type) {
47
$image = idx($vcs_type, 'image');
48
$image = PhabricatorFile::loadBuiltin($viewer, $image);
49
$action = id(new PHUIActionPanelView())
50
->setImage($image->getBestURI())
51
->setHeader(idx($vcs_type, 'create.header'))
52
->setHref($create_uri->alter('vcs', $vcs_key))
53
->setSubheader(idx($vcs_type, 'create.subheader'));
54
55
$layout->addColumn($action);
56
}
57
58
$hints = id(new AphrontMultiColumnView())
59
->setFluidLayout(true);
60
61
$observe_href = PhabricatorEnv::getDoclink(
62
'Diffusion User Guide: Existing Repositories');
63
64
require_celerity_resource('diffusion-css');
65
66
$image = PhabricatorFile::loadBuiltin($viewer, 'repo/repo.png');
67
$hints->addColumn(
68
id(new PHUIActionPanelView())
69
->setImage($image->getBestURI())
70
->setHeader(pht('Import or Observe an Existing Repository'))
71
->setHref($observe_href)
72
->setSubheader(
73
pht(
74
'Review the documentation describing how to import or observe an '.
75
'existing repository.')));
76
77
$layout = id(new PHUIBoxView())
78
->addClass('diffusion-create-repo')
79
->appendChild($layout);
80
81
$launcher_view = id(new PHUILauncherView())
82
->appendChild(
83
array(
84
$layout,
85
$hints,
86
));
87
88
$view = id(new PHUITwoColumnView())
89
->setFooter($launcher_view);
90
91
return $this->newPage()
92
->setTitle($title)
93
->setCrumbs($crumbs)
94
->appendChild($view);
95
}
96
97
}
98
99