Remove all "FileHasObject" edge reads and writes
[phabricator.git] / src / applications / config / controller / module / PhabricatorConfigModuleController.php
blob4f3f9c57cb66c25841f6e769fd9c0ceb86df787c
1 <?php
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();
12 if (!strlen($key)) {
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);
43 } else {
44 $view = $content;
47 $crumbs = $this->buildApplicationCrumbs()
48 ->addTextCrumb(pht('Extensions/Modules'), $modules_uri)
49 ->addTextCrumb($title)
50 ->setBorder(true);
52 $content = id(new PHUITwoColumnView())
53 ->setHeader($header)
54 ->setFooter($view);
56 return $this->newPage()
57 ->setTitle($title)
58 ->setCrumbs($crumbs)
59 ->setNavigation($nav)
60 ->appendChild($content);