3 final class PhabricatorConfigModuleController
4 extends PhabricatorConfigController
{
6 public function handleRequest(AphrontRequest
$request) {
7 $viewer = $this->getViewer();
8 $key = $request->getURIData('module');
10 $all_modules = PhabricatorConfigModule
::getAllModules();
13 $key = head_key($all_modules);
16 if (empty($all_modules[$key])) {
17 return new Aphront404Response();
20 $module = $all_modules[$key];
21 $content = $module->renderModuleStatus($request);
22 $title = $module->getModuleName();
24 $nav = new AphrontSideNavFilterView();
25 $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
27 $modules_uri = $this->getApplicationURI('module/');
29 $modules = PhabricatorConfigModule
::getAllModules();
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');
38 $nav->selectFilter($key);
39 $header = $this->buildHeaderView($title);
41 if ($content instanceof AphrontTableView
) {
42 $view = $this->buildConfigBoxView($title, $content);
47 $crumbs = $this->buildApplicationCrumbs()
48 ->addTextCrumb(pht('Extensions/Modules'), $modules_uri)
49 ->addTextCrumb($title)
52 $content = id(new PHUITwoColumnView())
56 return $this->newPage()
60 ->appendChild($content);