Differential D20930 Diff 49878 src/applications/config/controller/PhabricatorConfigModuleController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/config/controller/PhabricatorConfigModuleController.php
<?php | <?php | ||||
final class PhabricatorConfigModuleController | final class PhabricatorConfigModuleController | ||||
extends PhabricatorConfigController { | extends PhabricatorConfigController { | ||||
public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$key = $request->getURIData('module'); | $key = $request->getURIData('module'); | ||||
$all_modules = PhabricatorConfigModule::getAllModules(); | $all_modules = PhabricatorConfigModule::getAllModules(); | ||||
if (!strlen($key)) { | |||||
$key = head_key($all_modules); | |||||
} | |||||
if (empty($all_modules[$key])) { | if (empty($all_modules[$key])) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
$module = $all_modules[$key]; | $module = $all_modules[$key]; | ||||
$content = $module->renderModuleStatus($request); | $content = $module->renderModuleStatus($request); | ||||
$title = $module->getModuleName(); | $title = $module->getModuleName(); | ||||
$nav = $this->buildSideNavView(); | $nav = new AphrontSideNavFilterView(); | ||||
$nav->selectFilter('module/'.$key.'/'); | $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); | ||||
$modules_uri = $this->getApplicationURI('module/'); | |||||
$modules = PhabricatorConfigModule::getAllModules(); | |||||
foreach ($modules as $module_key => $module) { | |||||
$nav->newLink($module_key) | |||||
->setName($module->getModuleName()) | |||||
->setHref(urisprintf('%s%s/', $modules_uri, $module_key)) | |||||
->setIcon('fa-puzzle-piece'); | |||||
} | |||||
$nav->selectFilter($key); | |||||
$header = $this->buildHeaderView($title); | $header = $this->buildHeaderView($title); | ||||
$view = $this->buildConfigBoxView($title, $content); | $view = $this->buildConfigBoxView($title, $content); | ||||
$crumbs = $this->buildApplicationCrumbs() | $crumbs = $this->buildApplicationCrumbs() | ||||
->addTextCrumb(pht('Extensions/Modules'), $modules_uri) | |||||
->addTextCrumb($title) | ->addTextCrumb($title) | ||||
->setBorder(true); | ->setBorder(true); | ||||
$content = id(new PHUITwoColumnView()) | $content = id(new PHUITwoColumnView()) | ||||
->setHeader($header) | ->setHeader($header) | ||||
->setFooter($view); | ->setFooter($view); | ||||
return $this->newPage() | return $this->newPage() | ||||
->setTitle($title) | ->setTitle($title) | ||||
->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
->setNavigation($nav) | ->setNavigation($nav) | ||||
->appendChild($content); | ->appendChild($content); | ||||
} | } | ||||
} | } |