Path: blob/master/src/applications/config/controller/module/PhabricatorConfigModuleController.php
12263 views
<?php12final class PhabricatorConfigModuleController3extends PhabricatorConfigController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();7$key = $request->getURIData('module');89$all_modules = PhabricatorConfigModule::getAllModules();1011if ($key === null || !strlen($key)) {12$key = head_key($all_modules);13}1415if (empty($all_modules[$key])) {16return new Aphront404Response();17}1819$module = $all_modules[$key];20$content = $module->renderModuleStatus($request);21$title = $module->getModuleName();2223$nav = new AphrontSideNavFilterView();24$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));2526$modules_uri = $this->getApplicationURI('module/');2728$modules = PhabricatorConfigModule::getAllModules();2930foreach ($modules as $module_key => $module) {31$nav->newLink($module_key)32->setName($module->getModuleName())33->setHref(urisprintf('%s%s/', $modules_uri, $module_key))34->setIcon('fa-puzzle-piece');35}3637$nav->selectFilter($key);38$header = $this->buildHeaderView($title);3940if ($content instanceof AphrontTableView) {41$view = $this->buildConfigBoxView($title, $content);42} else {43$view = $content;44}4546$crumbs = $this->buildApplicationCrumbs()47->addTextCrumb(pht('Extensions/Modules'), $modules_uri)48->addTextCrumb($title)49->setBorder(true);5051$content = id(new PHUITwoColumnView())52->setHeader($header)53->setFooter($view);5455return $this->newPage()56->setTitle($title)57->setCrumbs($crumbs)58->setNavigation($nav)59->appendChild($content);60}6162}636465