Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/config/controller/module/PhabricatorConfigModuleController.php
12263 views
1
<?php
2
3
final class PhabricatorConfigModuleController
4
extends PhabricatorConfigController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $this->getViewer();
8
$key = $request->getURIData('module');
9
10
$all_modules = PhabricatorConfigModule::getAllModules();
11
12
if ($key === null || !strlen($key)) {
13
$key = head_key($all_modules);
14
}
15
16
if (empty($all_modules[$key])) {
17
return new Aphront404Response();
18
}
19
20
$module = $all_modules[$key];
21
$content = $module->renderModuleStatus($request);
22
$title = $module->getModuleName();
23
24
$nav = new AphrontSideNavFilterView();
25
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
26
27
$modules_uri = $this->getApplicationURI('module/');
28
29
$modules = PhabricatorConfigModule::getAllModules();
30
31
foreach ($modules as $module_key => $module) {
32
$nav->newLink($module_key)
33
->setName($module->getModuleName())
34
->setHref(urisprintf('%s%s/', $modules_uri, $module_key))
35
->setIcon('fa-puzzle-piece');
36
}
37
38
$nav->selectFilter($key);
39
$header = $this->buildHeaderView($title);
40
41
if ($content instanceof AphrontTableView) {
42
$view = $this->buildConfigBoxView($title, $content);
43
} else {
44
$view = $content;
45
}
46
47
$crumbs = $this->buildApplicationCrumbs()
48
->addTextCrumb(pht('Extensions/Modules'), $modules_uri)
49
->addTextCrumb($title)
50
->setBorder(true);
51
52
$content = id(new PHUITwoColumnView())
53
->setHeader($header)
54
->setFooter($view);
55
56
return $this->newPage()
57
->setTitle($title)
58
->setCrumbs($crumbs)
59
->setNavigation($nav)
60
->appendChild($content);
61
}
62
63
}
64
65