Page MenuHomePhabricator

D20934.id49950.diff
No OneTemporary

D20934.id49950.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2799,9 +2799,7 @@
'PhabricatorConduitTokenQuery' => 'applications/conduit/query/PhabricatorConduitTokenQuery.php',
'PhabricatorConduitTokenTerminateController' => 'applications/conduit/controller/PhabricatorConduitTokenTerminateController.php',
'PhabricatorConduitTokensSettingsPanel' => 'applications/conduit/settings/PhabricatorConduitTokensSettingsPanel.php',
- 'PhabricatorConfigAllController' => 'applications/config/controller/PhabricatorConfigAllController.php',
'PhabricatorConfigApplication' => 'applications/config/application/PhabricatorConfigApplication.php',
- 'PhabricatorConfigApplicationController' => 'applications/config/controller/PhabricatorConfigApplicationController.php',
'PhabricatorConfigCacheController' => 'applications/config/controller/services/PhabricatorConfigCacheController.php',
'PhabricatorConfigClusterDatabasesController' => 'applications/config/controller/services/PhabricatorConfigClusterDatabasesController.php',
'PhabricatorConfigClusterNotificationsController' => 'applications/config/controller/services/PhabricatorConfigClusterNotificationsController.php',
@@ -2810,6 +2808,7 @@
'PhabricatorConfigCollectorsModule' => 'applications/config/module/PhabricatorConfigCollectorsModule.php',
'PhabricatorConfigColumnSchema' => 'applications/config/schema/PhabricatorConfigColumnSchema.php',
'PhabricatorConfigConfigPHIDType' => 'applications/config/phid/PhabricatorConfigConfigPHIDType.php',
+ 'PhabricatorConfigConsoleController' => 'applications/config/controller/PhabricatorConfigConsoleController.php',
'PhabricatorConfigConstants' => 'applications/config/constants/PhabricatorConfigConstants.php',
'PhabricatorConfigController' => 'applications/config/controller/PhabricatorConfigController.php',
'PhabricatorConfigCoreSchemaSpec' => 'applications/config/schema/PhabricatorConfigCoreSchemaSpec.php',
@@ -2821,24 +2820,21 @@
'PhabricatorConfigDefaultSource' => 'infrastructure/env/PhabricatorConfigDefaultSource.php',
'PhabricatorConfigDictionarySource' => 'infrastructure/env/PhabricatorConfigDictionarySource.php',
'PhabricatorConfigEdgeModule' => 'applications/config/module/PhabricatorConfigEdgeModule.php',
- 'PhabricatorConfigEditController' => 'applications/config/controller/PhabricatorConfigEditController.php',
+ 'PhabricatorConfigEditController' => 'applications/config/controller/settings/PhabricatorConfigEditController.php',
'PhabricatorConfigEditor' => 'applications/config/editor/PhabricatorConfigEditor.php',
'PhabricatorConfigEntry' => 'applications/config/storage/PhabricatorConfigEntry.php',
'PhabricatorConfigEntryDAO' => 'applications/config/storage/PhabricatorConfigEntryDAO.php',
'PhabricatorConfigEntryQuery' => 'applications/config/query/PhabricatorConfigEntryQuery.php',
'PhabricatorConfigFileSource' => 'infrastructure/env/PhabricatorConfigFileSource.php',
'PhabricatorConfigGroupConstants' => 'applications/config/constants/PhabricatorConfigGroupConstants.php',
- 'PhabricatorConfigGroupController' => 'applications/config/controller/PhabricatorConfigGroupController.php',
'PhabricatorConfigHTTPParameterTypesModule' => 'applications/config/module/PhabricatorConfigHTTPParameterTypesModule.php',
- 'PhabricatorConfigHistoryController' => 'applications/config/controller/PhabricatorConfigHistoryController.php',
- 'PhabricatorConfigIgnoreController' => 'applications/config/controller/PhabricatorConfigIgnoreController.php',
- 'PhabricatorConfigIssueListController' => 'applications/config/controller/PhabricatorConfigIssueListController.php',
- 'PhabricatorConfigIssuePanelController' => 'applications/config/controller/PhabricatorConfigIssuePanelController.php',
- 'PhabricatorConfigIssueViewController' => 'applications/config/controller/PhabricatorConfigIssueViewController.php',
+ 'PhabricatorConfigIgnoreController' => 'applications/config/controller/issue/PhabricatorConfigIgnoreController.php',
+ 'PhabricatorConfigIssueListController' => 'applications/config/controller/issue/PhabricatorConfigIssueListController.php',
+ 'PhabricatorConfigIssuePanelController' => 'applications/config/controller/issue/PhabricatorConfigIssuePanelController.php',
+ 'PhabricatorConfigIssueViewController' => 'applications/config/controller/issue/PhabricatorConfigIssueViewController.php',
'PhabricatorConfigJSON' => 'applications/config/json/PhabricatorConfigJSON.php',
'PhabricatorConfigJSONOptionType' => 'applications/config/custom/PhabricatorConfigJSONOptionType.php',
'PhabricatorConfigKeySchema' => 'applications/config/schema/PhabricatorConfigKeySchema.php',
- 'PhabricatorConfigListController' => 'applications/config/controller/PhabricatorConfigListController.php',
'PhabricatorConfigLocalSource' => 'infrastructure/env/PhabricatorConfigLocalSource.php',
'PhabricatorConfigManagementDeleteWorkflow' => 'applications/config/management/PhabricatorConfigManagementDeleteWorkflow.php',
'PhabricatorConfigManagementDoneWorkflow' => 'applications/config/management/PhabricatorConfigManagementDoneWorkflow.php',
@@ -2849,12 +2845,12 @@
'PhabricatorConfigManagementWorkflow' => 'applications/config/management/PhabricatorConfigManagementWorkflow.php',
'PhabricatorConfigManualActivity' => 'applications/config/storage/PhabricatorConfigManualActivity.php',
'PhabricatorConfigModule' => 'applications/config/module/PhabricatorConfigModule.php',
- 'PhabricatorConfigModuleController' => 'applications/config/controller/PhabricatorConfigModuleController.php',
+ 'PhabricatorConfigModuleController' => 'applications/config/controller/module/PhabricatorConfigModuleController.php',
'PhabricatorConfigOption' => 'applications/config/option/PhabricatorConfigOption.php',
'PhabricatorConfigOptionType' => 'applications/config/custom/PhabricatorConfigOptionType.php',
'PhabricatorConfigPHIDModule' => 'applications/config/module/PhabricatorConfigPHIDModule.php',
'PhabricatorConfigProxySource' => 'infrastructure/env/PhabricatorConfigProxySource.php',
- 'PhabricatorConfigPurgeCacheController' => 'applications/config/controller/PhabricatorConfigPurgeCacheController.php',
+ 'PhabricatorConfigPurgeCacheController' => 'applications/config/controller/services/PhabricatorConfigPurgeCacheController.php',
'PhabricatorConfigRegexOptionType' => 'applications/config/custom/PhabricatorConfigRegexOptionType.php',
'PhabricatorConfigRemarkupRule' => 'infrastructure/markup/rule/PhabricatorConfigRemarkupRule.php',
'PhabricatorConfigRequestExceptionHandlerModule' => 'applications/config/module/PhabricatorConfigRequestExceptionHandlerModule.php',
@@ -2863,6 +2859,9 @@
'PhabricatorConfigSchemaSpec' => 'applications/config/schema/PhabricatorConfigSchemaSpec.php',
'PhabricatorConfigServerSchema' => 'applications/config/schema/PhabricatorConfigServerSchema.php',
'PhabricatorConfigServicesController' => 'applications/config/controller/services/PhabricatorConfigServicesController.php',
+ 'PhabricatorConfigSettingsController' => 'applications/config/controller/settings/PhabricatorConfigSettingsController.php',
+ 'PhabricatorConfigSettingsHistoryController' => 'applications/config/controller/settings/PhabricatorConfigSettingsHistoryController.php',
+ 'PhabricatorConfigSettingsListController' => 'applications/config/controller/settings/PhabricatorConfigSettingsListController.php',
'PhabricatorConfigSetupCheckModule' => 'applications/config/module/PhabricatorConfigSetupCheckModule.php',
'PhabricatorConfigSiteModule' => 'applications/config/module/PhabricatorConfigSiteModule.php',
'PhabricatorConfigSiteSource' => 'infrastructure/env/PhabricatorConfigSiteSource.php',
@@ -2874,7 +2873,6 @@
'PhabricatorConfigTransactionQuery' => 'applications/config/query/PhabricatorConfigTransactionQuery.php',
'PhabricatorConfigType' => 'applications/config/type/PhabricatorConfigType.php',
'PhabricatorConfigValidationException' => 'applications/config/exception/PhabricatorConfigValidationException.php',
- 'PhabricatorConfigVersionController' => 'applications/config/controller/PhabricatorConfigVersionController.php',
'PhabricatorConpherenceApplication' => 'applications/conpherence/application/PhabricatorConpherenceApplication.php',
'PhabricatorConpherenceColumnMinimizeSetting' => 'applications/settings/setting/PhabricatorConpherenceColumnMinimizeSetting.php',
'PhabricatorConpherenceColumnVisibleSetting' => 'applications/settings/setting/PhabricatorConpherenceColumnVisibleSetting.php',
@@ -9134,9 +9132,7 @@
'PhabricatorConduitTokenQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhabricatorConduitTokenTerminateController' => 'PhabricatorConduitController',
'PhabricatorConduitTokensSettingsPanel' => 'PhabricatorSettingsPanel',
- 'PhabricatorConfigAllController' => 'PhabricatorConfigController',
'PhabricatorConfigApplication' => 'PhabricatorApplication',
- 'PhabricatorConfigApplicationController' => 'PhabricatorConfigController',
'PhabricatorConfigCacheController' => 'PhabricatorConfigServicesController',
'PhabricatorConfigClusterDatabasesController' => 'PhabricatorConfigServicesController',
'PhabricatorConfigClusterNotificationsController' => 'PhabricatorConfigServicesController',
@@ -9145,6 +9141,7 @@
'PhabricatorConfigCollectorsModule' => 'PhabricatorConfigModule',
'PhabricatorConfigColumnSchema' => 'PhabricatorConfigStorageSchema',
'PhabricatorConfigConfigPHIDType' => 'PhabricatorPHIDType',
+ 'PhabricatorConfigConsoleController' => 'PhabricatorConfigController',
'PhabricatorConfigConstants' => 'Phobject',
'PhabricatorConfigController' => 'PhabricatorController',
'PhabricatorConfigCoreSchemaSpec' => 'PhabricatorConfigSchemaSpec',
@@ -9156,7 +9153,7 @@
'PhabricatorConfigDefaultSource' => 'PhabricatorConfigProxySource',
'PhabricatorConfigDictionarySource' => 'PhabricatorConfigSource',
'PhabricatorConfigEdgeModule' => 'PhabricatorConfigModule',
- 'PhabricatorConfigEditController' => 'PhabricatorConfigController',
+ 'PhabricatorConfigEditController' => 'PhabricatorConfigSettingsController',
'PhabricatorConfigEditor' => 'PhabricatorApplicationTransactionEditor',
'PhabricatorConfigEntry' => array(
'PhabricatorConfigEntryDAO',
@@ -9167,9 +9164,7 @@
'PhabricatorConfigEntryQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhabricatorConfigFileSource' => 'PhabricatorConfigProxySource',
'PhabricatorConfigGroupConstants' => 'PhabricatorConfigConstants',
- 'PhabricatorConfigGroupController' => 'PhabricatorConfigController',
'PhabricatorConfigHTTPParameterTypesModule' => 'PhabricatorConfigModule',
- 'PhabricatorConfigHistoryController' => 'PhabricatorConfigController',
'PhabricatorConfigIgnoreController' => 'PhabricatorConfigController',
'PhabricatorConfigIssueListController' => 'PhabricatorConfigController',
'PhabricatorConfigIssuePanelController' => 'PhabricatorConfigController',
@@ -9177,7 +9172,6 @@
'PhabricatorConfigJSON' => 'Phobject',
'PhabricatorConfigJSONOptionType' => 'PhabricatorConfigOptionType',
'PhabricatorConfigKeySchema' => 'PhabricatorConfigStorageSchema',
- 'PhabricatorConfigListController' => 'PhabricatorConfigController',
'PhabricatorConfigLocalSource' => 'PhabricatorConfigProxySource',
'PhabricatorConfigManagementDeleteWorkflow' => 'PhabricatorConfigManagementWorkflow',
'PhabricatorConfigManagementDoneWorkflow' => 'PhabricatorConfigManagementWorkflow',
@@ -9202,6 +9196,9 @@
'PhabricatorConfigSchemaSpec' => 'Phobject',
'PhabricatorConfigServerSchema' => 'PhabricatorConfigStorageSchema',
'PhabricatorConfigServicesController' => 'PhabricatorConfigController',
+ 'PhabricatorConfigSettingsController' => 'PhabricatorConfigController',
+ 'PhabricatorConfigSettingsHistoryController' => 'PhabricatorConfigSettingsController',
+ 'PhabricatorConfigSettingsListController' => 'PhabricatorConfigSettingsController',
'PhabricatorConfigSetupCheckModule' => 'PhabricatorConfigModule',
'PhabricatorConfigSiteModule' => 'PhabricatorConfigModule',
'PhabricatorConfigSiteSource' => 'PhabricatorConfigProxySource',
@@ -9213,7 +9210,6 @@
'PhabricatorConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhabricatorConfigType' => 'Phobject',
'PhabricatorConfigValidationException' => 'Exception',
- 'PhabricatorConfigVersionController' => 'PhabricatorConfigController',
'PhabricatorConpherenceApplication' => 'PhabricatorApplication',
'PhabricatorConpherenceColumnMinimizeSetting' => 'PhabricatorInternalSetting',
'PhabricatorConpherenceColumnVisibleSetting' => 'PhabricatorInternalSetting',
diff --git a/src/applications/almanac/controller/AlmanacConsoleController.php b/src/applications/almanac/controller/AlmanacConsoleController.php
--- a/src/applications/almanac/controller/AlmanacConsoleController.php
+++ b/src/applications/almanac/controller/AlmanacConsoleController.php
@@ -10,7 +10,7 @@
$viewer = $request->getViewer();
$menu = id(new PHUIObjectItemListView())
- ->setUser($viewer)
+ ->setViewer($viewer)
->setBig(true);
$menu->addItem(
@@ -84,7 +84,6 @@
->setTitle(pht('Almanac Console'))
->setCrumbs($crumbs)
->appendChild($view);
-
}
}
diff --git a/src/applications/config/application/PhabricatorConfigApplication.php b/src/applications/config/application/PhabricatorConfigApplication.php
--- a/src/applications/config/application/PhabricatorConfigApplication.php
+++ b/src/applications/config/application/PhabricatorConfigApplication.php
@@ -37,13 +37,12 @@
public function getRoutes() {
return array(
'/config/' => array(
- '' => 'PhabricatorConfigListController',
+ '' => 'PhabricatorConfigConsoleController',
'application/' => 'PhabricatorConfigApplicationController',
'all/' => 'PhabricatorConfigAllController',
'history/' => 'PhabricatorConfigHistoryController',
'edit/(?P<key>[\w\.\-]+)/' => 'PhabricatorConfigEditController',
'group/(?P<key>[^/]+)/' => 'PhabricatorConfigGroupController',
- 'version/' => 'PhabricatorConfigVersionController',
'database/'.
'(?:(?P<ref>[^/]+)/'.
'(?:(?P<database>[^/]+)/'.
@@ -71,6 +70,12 @@
'repositories/' => 'PhabricatorConfigClusterRepositoriesController',
'search/' => 'PhabricatorConfigClusterSearchController',
),
+ 'settings/' => array(
+ '' => 'PhabricatorConfigSettingsListController',
+ '(?P<filter>advanced|all)/'
+ => 'PhabricatorConfigSettingsListController',
+ 'history/' => 'PhabricatorConfigSettingsHistoryController',
+ ),
),
);
}
diff --git a/src/applications/config/check/PhabricatorAuthSetupCheck.php b/src/applications/config/check/PhabricatorAuthSetupCheck.php
--- a/src/applications/config/check/PhabricatorAuthSetupCheck.php
+++ b/src/applications/config/check/PhabricatorAuthSetupCheck.php
@@ -53,20 +53,23 @@
"\n\n".
'Leaving your authentication provider configuration unlocked '.
'increases the damage that a compromised administrator account can '.
- 'do to your install, by, for example, changing the authentication '.
- 'provider to a server they control and intercepting usernames and '.
+ 'do to your install. For example, an attacker who compromises an '.
+ 'administrator account can change authentication providers to point '.
+ 'at a server they control and attempt to intercept usernames and '.
'passwords.'.
"\n\n".
- 'To prevent this attack, you should configure your authentication '.
- 'providers, and then lock the configuration by doing `%s` '.
- 'from the command line. This will prevent changing the '.
- 'authentication provider config without first doing `%s`.',
- 'bin/auth lock',
- 'bin/auth unlock');
+ 'To prevent this attack, you should configure authentication, and '.
+ 'then lock the configuration by running "bin/auth lock" from the '.
+ 'command line. This will prevent changing the authentication config '.
+ 'without first running "bin/auth unlock".');
$this
->newIssue('auth.config-unlocked')
->setShortName(pht('Auth Config Unlocked'))
- ->setName(pht('Authenticaton Provider Configuration Unlocked'))
+ ->setName(pht('Authenticaton Configuration Unlocked'))
+ ->setSummary(
+ pht(
+ 'Authentication configuration is currently unlocked. Once you '.
+ 'finish configuring authentication, you should lock it.'))
->setMessage($message)
->addRelatedPhabricatorConfig('auth.lock-config')
->addCommand(
diff --git a/src/applications/config/check/PhabricatorSecuritySetupCheck.php b/src/applications/config/check/PhabricatorSecuritySetupCheck.php
--- a/src/applications/config/check/PhabricatorSecuritySetupCheck.php
+++ b/src/applications/config/check/PhabricatorSecuritySetupCheck.php
@@ -58,8 +58,7 @@
->setName(pht('Alternate File Domain Not Configured'))
->setSummary(
pht(
- 'Increase security (and improve performance) by configuring '.
- 'a CDN or alternate file domain.'))
+ 'Improve security by configuring an alternate file domain.'))
->setMessage(
pht(
'Phabricator is currently configured to serve user uploads '.
diff --git a/src/applications/config/controller/PhabricatorConfigAllController.php b/src/applications/config/controller/PhabricatorConfigAllController.php
deleted file mode 100644
--- a/src/applications/config/controller/PhabricatorConfigAllController.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-final class PhabricatorConfigAllController
- extends PhabricatorConfigController {
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
-
- $db_values = id(new PhabricatorConfigEntry())
- ->loadAllWhere('namespace = %s', 'default');
- $db_values = mpull($db_values, null, 'getConfigKey');
-
- $rows = array();
- $options = PhabricatorApplicationConfigOptions::loadAllOptions();
- ksort($options);
- foreach ($options as $option) {
- $key = $option->getKey();
-
- if ($option->getHidden()) {
- $value = phutil_tag('em', array(), pht('Hidden'));
- } else {
- $value = PhabricatorEnv::getEnvConfig($key);
- $value = PhabricatorConfigJSON::prettyPrintJSON($value);
- }
-
- $db_value = idx($db_values, $key);
- $rows[] = array(
- phutil_tag(
- 'a',
- array(
- 'href' => $this->getApplicationURI('edit/'.$key.'/'),
- ),
- $key),
- $value,
- $db_value && !$db_value->getIsDeleted() ? pht('Customized') : '',
- );
- }
- $table = id(new AphrontTableView($rows))
- ->setColumnClasses(
- array(
- '',
- 'wide',
- ))
- ->setHeaders(
- array(
- pht('Key'),
- pht('Value'),
- pht('Customized'),
- ));
-
- $title = pht('Current Settings');
- $header = $this->buildHeaderView($title);
-
- $nav = $this->buildSideNavView();
- $nav->selectFilter('all/');
-
- $view = $this->buildConfigBoxView(
- pht('All Settings'),
- $table);
-
- $crumbs = $this->buildApplicationCrumbs()
- ->addTextCrumb($title)
- ->setBorder(true);
-
- $content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($view);
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($nav)
- ->appendChild($content);
-
- }
-
-}
diff --git a/src/applications/config/controller/PhabricatorConfigApplicationController.php b/src/applications/config/controller/PhabricatorConfigApplicationController.php
deleted file mode 100644
--- a/src/applications/config/controller/PhabricatorConfigApplicationController.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-final class PhabricatorConfigApplicationController
- extends PhabricatorConfigController {
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
-
- $nav = $this->buildSideNavView();
- $nav->selectFilter('application/');
-
- $groups = PhabricatorApplicationConfigOptions::loadAll();
- $apps_list = $this->buildConfigOptionsList($groups, 'apps');
- $apps_list = $this->buildConfigBoxView(pht('Applications'), $apps_list);
-
- $title = pht('Application Settings');
- $header = $this->buildHeaderView($title);
-
- $content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($apps_list);
-
- $crumbs = $this->buildApplicationCrumbs()
- ->addTextCrumb($title)
- ->setBorder(true);
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($nav)
- ->appendChild($content);
- }
-
- private function buildConfigOptionsList(array $groups, $type) {
- assert_instances_of($groups, 'PhabricatorApplicationConfigOptions');
-
- $list = new PHUIObjectItemListView();
- $list->setBig(true);
- $groups = msort($groups, 'getName');
- foreach ($groups as $group) {
- if ($group->getGroup() == $type) {
- $icon = id(new PHUIIconView())
- ->setIcon($group->getIcon())
- ->setBackground('bg-violet');
- $item = id(new PHUIObjectItemView())
- ->setHeader($group->getName())
- ->setHref('/config/group/'.$group->getKey().'/')
- ->addAttribute($group->getDescription())
- ->setImageIcon($icon);
- $list->addItem($item);
- }
- }
-
- return $list;
- }
-
-}
diff --git a/src/applications/config/controller/PhabricatorConfigVersionController.php b/src/applications/config/controller/PhabricatorConfigConsoleController.php
rename from src/applications/config/controller/PhabricatorConfigVersionController.php
rename to src/applications/config/controller/PhabricatorConfigConsoleController.php
--- a/src/applications/config/controller/PhabricatorConfigVersionController.php
+++ b/src/applications/config/controller/PhabricatorConfigConsoleController.php
@@ -1,92 +1,139 @@
<?php
-final class PhabricatorConfigVersionController
+final class PhabricatorConfigConsoleController
extends PhabricatorConfigController {
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
- $title = pht('Version Information');
- $versions = $this->renderModuleStatus($viewer);
-
- $nav = $this->buildSideNavView();
- $nav->selectFilter('version/');
- $header = $this->buildHeaderView($title);
-
- $view = $this->buildConfigBoxView(
- pht('Installed Versions'),
- $versions);
+ $menu = id(new PHUIObjectItemListView())
+ ->setViewer($viewer)
+ ->setBig(true);
+
+ $menu->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader(pht('Settings'))
+ ->setHref($this->getApplicationURI('settings/'))
+ ->setImageIcon('fa-wrench')
+ ->setClickable(true)
+ ->addAttribute(
+ pht(
+ 'Review and modify configuration settings.')));
+
+ $menu->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader(pht('Setup Issues'))
+ ->setHref($this->getApplicationURI('issue/'))
+ ->setImageIcon('fa-exclamation-triangle')
+ ->setClickable(true)
+ ->addAttribute(
+ pht(
+ 'Show unresolved issues with setup and configuration.')));
+
+ $menu->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader(pht('Services'))
+ ->setHref($this->getApplicationURI('cluster/databases/'))
+ ->setImageIcon('fa-server')
+ ->setClickable(true)
+ ->addAttribute(
+ pht(
+ 'View status information for databases, caches, repositories, '.
+ 'and other services.')));
+
+ $menu->addItem(
+ id(new PHUIObjectItemView())
+ ->setHeader(pht('Extensions/Modules'))
+ ->setHref($this->getApplicationURI('module/'))
+ ->setImageIcon('fa-gear')
+ ->setClickable(true)
+ ->addAttribute(
+ pht(
+ 'Show installed extensions and modules.')));
$crumbs = $this->buildApplicationCrumbs()
- ->addTextCrumb($title)
+ ->addTextCrumb(pht('Console'))
->setBorder(true);
- $content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($view);
+ $box = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Phabricator Configuation'))
+ ->setBackground(PHUIObjectBoxView::WHITE_CONFIG)
+ ->setObjectList($menu);
+
+ $versions = $this->newLibraryVersionTable($viewer);
+ $binary_versions = $this->newBinaryVersionTable();
+
+ $launcher_view = id(new PHUILauncherView())
+ ->appendChild($box)
+ ->appendChild($versions)
+ ->appendChild($binary_versions);
+
+ $view = id(new PHUITwoColumnView())
+ ->setFooter($launcher_view);
return $this->newPage()
- ->setTitle($title)
+ ->setTitle(pht('Phabricator Configuation'))
->setCrumbs($crumbs)
- ->setNavigation($nav)
- ->appendChild($content);
+ ->appendChild($view);
}
- public function renderModuleStatus($viewer) {
+ public function newLibraryVersionTable() {
+ $viewer = $this->getViewer();
+
$versions = $this->loadVersions($viewer);
- $version_property_list = id(new PHUIPropertyListView());
+ $rows = array();
foreach ($versions as $name => $info) {
- $version = $info['version'];
-
- if ($info['branchpoint']) {
- $display = pht(
- '%s (branched from %s on %s)',
- $version,
- $info['branchpoint'],
- $info['upstream']);
+ $branchpoint = $info['branchpoint'];
+ if (strlen($branchpoint)) {
+ $branchpoint = substr($branchpoint, 0, 12);
} else {
- $display = $version;
+ $branchpoint = null;
}
- $version_property_list->addProperty($name, $display);
- }
-
- $phabricator_root = dirname(phutil_get_library_root('phabricator'));
- $version_path = $phabricator_root.'/conf/local/VERSION';
- if (Filesystem::pathExists($version_path)) {
- $version_from_file = Filesystem::readFile($version_path);
- $version_property_list->addProperty(
- pht('Local Version'),
- $version_from_file);
- }
+ $version = $info['hash'];
+ if (strlen($version)) {
+ $version = substr($version, 0, 12);
+ } else {
+ $version = pht('Unknown');
+ }
- $version_property_list->addProperty('php', phpversion());
- $binaries = PhutilBinaryAnalyzer::getAllBinaries();
- foreach ($binaries as $binary) {
- if (!$binary->isBinaryAvailable()) {
- $binary_info = pht('Not Available');
+ $epoch = $info['epoch'];
+ if ($epoch) {
+ $epoch = phabricator_date($epoch, $viewer);
} else {
- $version = $binary->getBinaryVersion();
- $path = $binary->getBinaryPath();
- if ($path === null && $version === null) {
- $binary_info = pht('-');
- } else if ($path === null) {
- $binary_info = $version;
- } else if ($version === null) {
- $binary_info = pht('- at %s', $path);
- } else {
- $binary_info = pht('%s at %s', $version, $path);
- }
+ $epoch = null;
}
- $version_property_list->addProperty(
- $binary->getBinaryName(),
- $binary_info);
+ $rows[] = array(
+ $name,
+ $version,
+ $epoch,
+ $branchpoint,
+ );
}
- return $version_property_list;
+ $table_view = id(new AphrontTableView($rows))
+ ->setHeaders(
+ array(
+ pht('Library'),
+ pht('Version'),
+ pht('Date'),
+ pht('Branchpoint'),
+ ))
+ ->setColumnClasses(
+ array(
+ 'pri',
+ null,
+ null,
+ 'wide',
+ ));
+
+ return id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Phabricator Version Information'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->appendChild($table_view);
}
private function loadVersions(PhabricatorUser $viewer) {
@@ -207,13 +254,14 @@
list($err, $stdout) = $future->resolve();
if (!$err) {
list($hash, $epoch) = explode(' ', $stdout);
- $version = pht('%s (%s)', $hash, phabricator_date($epoch, $viewer));
} else {
- $version = pht('Unknown');
+ $hash = null;
+ $epoch = null;
}
$result = array(
- 'version' => $version,
+ 'hash' => $hash,
+ 'epoch' => $epoch,
'upstream' => null,
'branchpoint' => null,
);
@@ -239,4 +287,51 @@
return $results;
}
+ private function newBinaryVersionTable() {
+ $rows = array();
+
+ $rows[] = array(
+ 'php',
+ phpversion(),
+ php_sapi_name(),
+ );
+
+ $binaries = PhutilBinaryAnalyzer::getAllBinaries();
+ foreach ($binaries as $binary) {
+ if (!$binary->isBinaryAvailable()) {
+ $binary_version = pht('Not Available');
+ $binary_path = null;
+ } else {
+ $binary_version = $binary->getBinaryVersion();
+ $binary_path = $binary->getBinaryPath();
+ }
+
+ $rows[] = array(
+ $binary->getBinaryName(),
+ $binary_version,
+ $binary_path,
+ );
+ }
+
+ $table_view = id(new AphrontTableView($rows))
+ ->setHeaders(
+ array(
+ pht('Binary'),
+ pht('Version'),
+ pht('Path'),
+ ))
+ ->setColumnClasses(
+ array(
+ 'pri',
+ null,
+ 'wide',
+ ));
+
+ return id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Other Version Information'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->appendChild($table_view);
+ }
+
+
}
diff --git a/src/applications/config/controller/PhabricatorConfigController.php b/src/applications/config/controller/PhabricatorConfigController.php
--- a/src/applications/config/controller/PhabricatorConfigController.php
+++ b/src/applications/config/controller/PhabricatorConfigController.php
@@ -6,33 +6,6 @@
return true;
}
- public function buildSideNavView($filter = null, $for_app = false) {
- $guide_href = new PhutilURI('/guides/');
- $nav = new AphrontSideNavFilterView();
- $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
- $nav->addFilter('/',
- pht('Core Settings'), null, 'fa-gear');
- $nav->addFilter('application/',
- pht('Application Settings'), null, 'fa-globe');
- $nav->addFilter('history/',
- pht('Settings History'), null, 'fa-history');
- $nav->addFilter('version/',
- pht('Version Information'), null, 'fa-download');
- $nav->addFilter('all/',
- pht('All Settings'), null, 'fa-list-ul');
- $nav->addLabel(pht('Setup'));
- $nav->addFilter('issue/',
- pht('Setup Issues'), null, 'fa-warning');
- $nav->addFilter(null,
- pht('Installation Guide'), $guide_href, 'fa-book');
-
- return $nav;
- }
-
- public function buildApplicationMenu() {
- return $this->buildSideNavView(null, true)->getMenu();
- }
-
public function buildHeaderView($text, $action = null) {
$viewer = $this->getViewer();
diff --git a/src/applications/config/controller/PhabricatorConfigGroupController.php b/src/applications/config/controller/PhabricatorConfigGroupController.php
deleted file mode 100644
--- a/src/applications/config/controller/PhabricatorConfigGroupController.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-final class PhabricatorConfigGroupController
- extends PhabricatorConfigController {
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
- $group_key = $request->getURIData('key');
-
- $groups = PhabricatorApplicationConfigOptions::loadAll();
- $options = idx($groups, $group_key);
- if (!$options) {
- return new Aphront404Response();
- }
-
- $group_uri = PhabricatorConfigGroupConstants::getGroupFullURI(
- $options->getGroup());
- $group_name = PhabricatorConfigGroupConstants::getGroupShortName(
- $options->getGroup());
-
- $nav = $this->buildSideNavView();
- $nav->selectFilter($group_uri);
-
- $title = pht('%s Configuration', $options->getName());
- $header = $this->buildHeaderView($title);
- $list = $this->buildOptionList($options->getOptions());
- $group_url = phutil_tag('a', array('href' => $group_uri), $group_name);
-
- $box_header = pht("%s \xC2\xBB %s", $group_url, $options->getName());
- $view = $this->buildConfigBoxView($box_header, $list);
-
- $crumbs = $this->buildApplicationCrumbs()
- ->addTextCrumb($group_name, $group_uri)
- ->addTextCrumb($options->getName())
- ->setBorder(true);
-
- $content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($view);
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($nav)
- ->appendChild($content);
- }
-
- private function buildOptionList(array $options) {
- assert_instances_of($options, 'PhabricatorConfigOption');
-
- require_celerity_resource('config-options-css');
-
- $db_values = array();
- if ($options) {
- $db_values = id(new PhabricatorConfigEntry())->loadAllWhere(
- 'configKey IN (%Ls) AND namespace = %s',
- mpull($options, 'getKey'),
- 'default');
- $db_values = mpull($db_values, null, 'getConfigKey');
- }
-
- $list = new PHUIObjectItemListView();
- $list->setBig(true);
- foreach ($options as $option) {
- $summary = $option->getSummary();
-
- $item = id(new PHUIObjectItemView())
- ->setHeader($option->getKey())
- ->setHref('/config/edit/'.$option->getKey().'/')
- ->addAttribute($summary);
-
- $color = null;
- $db_value = idx($db_values, $option->getKey());
- if ($db_value && !$db_value->getIsDeleted()) {
- $item->setEffect('visited');
- $color = 'violet';
- }
-
- if ($option->getHidden()) {
- $item->setStatusIcon('fa-eye-slash grey', pht('Hidden'));
- $item->setDisabled(true);
- } else if ($option->getLocked()) {
- $item->setStatusIcon('fa-lock '.$color, pht('Locked'));
- } else if ($color) {
- $item->setStatusIcon('fa-pencil '.$color, pht('Editable'));
- } else {
- $item->setStatusIcon('fa-pencil-square-o '.$color, pht('Editable'));
- }
-
- if (!$option->getHidden()) {
- $current_value = PhabricatorEnv::getEnvConfig($option->getKey());
- $current_value = PhabricatorConfigJSON::prettyPrintJSON(
- $current_value);
- $current_value = phutil_tag(
- 'div',
- array(
- 'class' => 'config-options-current-value '.$color,
- ),
- array(
- $current_value,
- ));
-
- $item->setSideColumn($current_value);
- }
-
- $list->addItem($item);
- }
-
- return $list;
- }
-
-}
diff --git a/src/applications/config/controller/PhabricatorConfigListController.php b/src/applications/config/controller/PhabricatorConfigListController.php
deleted file mode 100644
--- a/src/applications/config/controller/PhabricatorConfigListController.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-final class PhabricatorConfigListController
- extends PhabricatorConfigController {
-
- public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
-
- $nav = $this->buildSideNavView();
- $nav->selectFilter('/');
-
- $groups = PhabricatorApplicationConfigOptions::loadAll();
- $core_list = $this->buildConfigOptionsList($groups, 'core');
- $core_list = $this->buildConfigBoxView(pht('Core'), $core_list);
-
- $title = pht('Core Settings');
- $header = $this->buildHeaderView($title);
-
- $crumbs = $this->buildApplicationCrumbs()
- ->addTextCrumb($title)
- ->setBorder(true);
-
- $content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($core_list);
-
- return $this->newPage()
- ->setTitle($title)
- ->setCrumbs($crumbs)
- ->setNavigation($nav)
- ->appendChild($content);
- }
-
- private function buildConfigOptionsList(array $groups, $type) {
- assert_instances_of($groups, 'PhabricatorApplicationConfigOptions');
-
- $list = new PHUIObjectItemListView();
- $list->setBig(true);
- $groups = msort($groups, 'getName');
- foreach ($groups as $group) {
- if ($group->getGroup() == $type) {
- $icon = id(new PHUIIconView())
- ->setIcon($group->getIcon())
- ->setBackground('bg-blue');
- $item = id(new PHUIObjectItemView())
- ->setHeader($group->getName())
- ->setHref('/config/group/'.$group->getKey().'/')
- ->addAttribute($group->getDescription())
- ->setImageIcon($icon);
- $list->addItem($item);
- }
- }
-
- return $list;
- }
-
-}
diff --git a/src/applications/config/controller/PhabricatorConfigIgnoreController.php b/src/applications/config/controller/issue/PhabricatorConfigIgnoreController.php
rename from src/applications/config/controller/PhabricatorConfigIgnoreController.php
rename to src/applications/config/controller/issue/PhabricatorConfigIgnoreController.php
diff --git a/src/applications/config/controller/PhabricatorConfigIssueListController.php b/src/applications/config/controller/issue/PhabricatorConfigIssueListController.php
rename from src/applications/config/controller/PhabricatorConfigIssueListController.php
rename to src/applications/config/controller/issue/PhabricatorConfigIssueListController.php
--- a/src/applications/config/controller/PhabricatorConfigIssueListController.php
+++ b/src/applications/config/controller/issue/PhabricatorConfigIssueListController.php
@@ -6,9 +6,6 @@
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
- $nav = $this->buildSideNavView();
- $nav->selectFilter('issue/');
-
$engine = new PhabricatorSetupEngine();
$response = $engine->execute();
if ($response) {
@@ -34,7 +31,6 @@
'fa-question-circle');
$title = pht('Setup Issues');
- $header = $this->buildHeaderView($title);
if (!$issues) {
$issue_list = id(new PHUIInfoView())
@@ -50,21 +46,24 @@
$other,
);
- $issue_list = $this->buildConfigBoxView(pht('Issues'), $issue_list);
+ $issue_list = $this->buildConfigBoxView(
+ pht('Unresolved Setup Issues'),
+ $issue_list);
}
$crumbs = $this->buildApplicationCrumbs()
->addTextCrumb($title)
->setBorder(true);
+ $launcher_view = id(new PHUILauncherView())
+ ->appendChild($issue_list);
+
$content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($issue_list);
+ ->setFooter($launcher_view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
- ->setNavigation($nav)
->appendChild($content);
}
@@ -76,27 +75,30 @@
$items = 0;
foreach ($issues as $issue) {
- if ($issue->getGroup() == $group) {
- $items++;
- $href = $this->getApplicationURI('/issue/'.$issue->getIssueKey().'/');
- $item = id(new PHUIObjectItemView())
- ->setHeader($issue->getName())
- ->setHref($href)
- ->addAttribute($issue->getSummary());
- if (!$issue->getIsIgnored()) {
- $icon = id(new PHUIIconView())
- ->setIcon($fonticon)
- ->setBackground('bg-sky');
- $item->setImageIcon($icon);
- $list->addItem($item);
- } else {
- $icon = id(new PHUIIconView())
- ->setIcon('fa-eye-slash')
- ->setBackground('bg-grey');
- $item->setDisabled(true);
- $item->setImageIcon($icon);
- $ignored_items[] = $item;
- }
+ if ($issue->getGroup() != $group) {
+ continue;
+ }
+
+ $items++;
+ $href = $this->getApplicationURI('/issue/'.$issue->getIssueKey().'/');
+ $item = id(new PHUIObjectItemView())
+ ->setHeader($issue->getName())
+ ->setHref($href)
+ ->setClickable(true)
+ ->addAttribute($issue->getSummary());
+ if (!$issue->getIsIgnored()) {
+ $icon = id(new PHUIIconView())
+ ->setIcon($fonticon)
+ ->setBackground('bg-sky');
+ $item->setImageIcon($icon);
+ $list->addItem($item);
+ } else {
+ $icon = id(new PHUIIconView())
+ ->setIcon('fa-eye-slash')
+ ->setBackground('bg-grey');
+ $item->setDisabled(true);
+ $item->setImageIcon($icon);
+ $ignored_items[] = $item;
}
}
diff --git a/src/applications/config/controller/PhabricatorConfigIssuePanelController.php b/src/applications/config/controller/issue/PhabricatorConfigIssuePanelController.php
rename from src/applications/config/controller/PhabricatorConfigIssuePanelController.php
rename to src/applications/config/controller/issue/PhabricatorConfigIssuePanelController.php
diff --git a/src/applications/config/controller/PhabricatorConfigIssueViewController.php b/src/applications/config/controller/issue/PhabricatorConfigIssueViewController.php
rename from src/applications/config/controller/PhabricatorConfigIssueViewController.php
rename to src/applications/config/controller/issue/PhabricatorConfigIssueViewController.php
--- a/src/applications/config/controller/PhabricatorConfigIssueViewController.php
+++ b/src/applications/config/controller/issue/PhabricatorConfigIssueViewController.php
@@ -14,9 +14,6 @@
}
$issues = $engine->getIssues();
- $nav = $this->buildSideNavView();
- $nav->selectFilter('issue/');
-
if (empty($issues[$issue_key])) {
$content = id(new PHUIInfoView())
->setSeverity(PHUIInfoView::SEVERITY_NOTICE)
@@ -36,23 +33,21 @@
$title = $issue->getShortName();
}
- $header = $this->buildHeaderView($title);
-
$crumbs = $this
->buildApplicationCrumbs()
- ->setBorder(true)
->addTextCrumb(pht('Setup Issues'), $this->getApplicationURI('issue/'))
->addTextCrumb($title, $request->getRequestURI())
->setBorder(true);
+ $launcher_view = id(new PHUILauncherView())
+ ->appendChild($content);
+
$content = id(new PHUITwoColumnView())
- ->setHeader($header)
- ->setFooter($content);
+ ->setFooter($launcher_view);
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
- ->setNavigation($nav)
->appendChild($content);
}
diff --git a/src/applications/config/controller/PhabricatorConfigModuleController.php b/src/applications/config/controller/module/PhabricatorConfigModuleController.php
rename from src/applications/config/controller/PhabricatorConfigModuleController.php
rename to src/applications/config/controller/module/PhabricatorConfigModuleController.php
diff --git a/src/applications/config/controller/PhabricatorConfigPurgeCacheController.php b/src/applications/config/controller/services/PhabricatorConfigPurgeCacheController.php
rename from src/applications/config/controller/PhabricatorConfigPurgeCacheController.php
rename to src/applications/config/controller/services/PhabricatorConfigPurgeCacheController.php
diff --git a/src/applications/config/controller/PhabricatorConfigEditController.php b/src/applications/config/controller/settings/PhabricatorConfigEditController.php
rename from src/applications/config/controller/PhabricatorConfigEditController.php
rename to src/applications/config/controller/settings/PhabricatorConfigEditController.php
--- a/src/applications/config/controller/PhabricatorConfigEditController.php
+++ b/src/applications/config/controller/settings/PhabricatorConfigEditController.php
@@ -1,7 +1,7 @@
<?php
final class PhabricatorConfigEditController
- extends PhabricatorConfigController {
+ extends PhabricatorConfigSettingsController {
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
@@ -30,11 +30,9 @@
->setDefault(null)
->setDescription($desc);
$group = null;
- $group_uri = $this->getApplicationURI();
} else {
$option = $options[$key];
$group = $option->getGroup();
- $group_uri = $this->getApplicationURI('group/'.$group->getKey().'/');
}
$issue = $request->getStr('issue');
@@ -42,7 +40,7 @@
// If the user came here from an open setup issue, send them back.
$done_uri = $this->getApplicationURI('issue/'.$issue.'/');
} else {
- $done_uri = $group_uri;
+ $done_uri = $this->getApplicationURI('settings/');
}
// Check if the config key is already stored in the database.
@@ -205,23 +203,10 @@
$title = $key;
$box_header = array();
- if ($group) {
- $box_header[] = phutil_tag(
- 'a',
- array(
- 'href' => $group_uri,
- ),
- $group->getName());
- $box_header[] = " \xC2\xBB ";
- }
$box_header[] = $key;
- $crumbs = $this->buildApplicationCrumbs();
- if ($group) {
- $crumbs->addTextCrumb($group->getName(), $group_uri);
- }
- $crumbs->addTextCrumb($key, '/config/edit/'.$key);
- $crumbs->setBorder(true);
+ $crumbs = $this->newCrumbs()
+ ->addTextCrumb($key, '/config/edit/'.$key);
$form_box = $this->buildConfigBoxView($box_header, $form, $tag);
@@ -230,9 +215,6 @@
new PhabricatorConfigTransactionQuery());
$timeline->setShouldTerminate(true);
- $nav = $this->buildSideNavView();
- $nav->selectFilter($group_uri);
-
$header = $this->buildHeaderView($title);
$view = id(new PHUITwoColumnView())
@@ -249,7 +231,6 @@
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
- ->setNavigation($nav)
->appendChild($view);
}
diff --git a/src/applications/config/controller/settings/PhabricatorConfigSettingsController.php b/src/applications/config/controller/settings/PhabricatorConfigSettingsController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/config/controller/settings/PhabricatorConfigSettingsController.php
@@ -0,0 +1,51 @@
+<?php
+
+abstract class PhabricatorConfigSettingsController
+ extends PhabricatorConfigController {
+
+ public function newNavigation($select_filter) {
+ $settings_uri = $this->getApplicationURI('settings/');
+
+ $nav = id(new AphrontSideNavFilterView())
+ ->setBaseURI(new PhutilURI($settings_uri));
+
+ $nav->addLabel(pht('Configuration'));
+
+ $nav->newLink('settings')
+ ->setName(pht('Core Settings'))
+ ->setIcon('fa-wrench')
+ ->setHref($settings_uri);
+
+ $nav->newLink('advanced')
+ ->setName(pht('Advanced Settings'))
+ ->setIcon('fa-cogs')
+ ->setHref(urisprintf('%s%s/', $settings_uri, 'advanced'));
+
+ $nav->newLink('all')
+ ->setName(pht('All Settings'))
+ ->setIcon('fa-list')
+ ->setHref(urisprintf('%s%s/', $settings_uri, 'all'));
+
+ $nav->addLabel(pht('History'));
+
+ $nav->newLink('history')
+ ->setName(pht('View History'))
+ ->setIcon('fa-history')
+ ->setHref(urisprintf('%s%s/', $settings_uri, 'history'));
+
+ if ($select_filter) {
+ $nav->selectFilter($select_filter);
+ }
+
+ return $nav;
+ }
+
+ public function newCrumbs() {
+ $settings_uri = $this->getApplicationURI('settings/');
+
+ return $this->buildApplicationCrumbs()
+ ->addTextCrumb(pht('Settings'), $settings_uri)
+ ->setBorder(true);
+ }
+
+}
diff --git a/src/applications/config/controller/PhabricatorConfigHistoryController.php b/src/applications/config/controller/settings/PhabricatorConfigSettingsHistoryController.php
rename from src/applications/config/controller/PhabricatorConfigHistoryController.php
rename to src/applications/config/controller/settings/PhabricatorConfigSettingsHistoryController.php
--- a/src/applications/config/controller/PhabricatorConfigHistoryController.php
+++ b/src/applications/config/controller/settings/PhabricatorConfigSettingsHistoryController.php
@@ -1,7 +1,7 @@
<?php
-final class PhabricatorConfigHistoryController
- extends PhabricatorConfigController {
+final class PhabricatorConfigSettingsHistoryController
+ extends PhabricatorConfigSettingsController {
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
@@ -27,12 +27,10 @@
$title = pht('Settings History');
$header = $this->buildHeaderView($title);
- $nav = $this->buildSideNavView();
- $nav->selectFilter('history/');
+ $nav = $this->newNavigation('history');
- $crumbs = $this->buildApplicationCrumbs()
- ->addTextCrumb($title)
- ->setBorder(true);
+ $crumbs = $this->newCrumbs()
+ ->addTextCrumb($title);
$content = id(new PHUITwoColumnView())
->setHeader($header)
diff --git a/src/applications/config/controller/settings/PhabricatorConfigSettingsListController.php b/src/applications/config/controller/settings/PhabricatorConfigSettingsListController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/config/controller/settings/PhabricatorConfigSettingsListController.php
@@ -0,0 +1,107 @@
+<?php
+
+final class PhabricatorConfigSettingsListController
+ extends PhabricatorConfigSettingsController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $request->getViewer();
+
+ $filter = $request->getURIData('filter');
+ if (!strlen($filter)) {
+ $filter = 'settings';
+ }
+
+ $is_core = ($filter === 'settings');
+ $is_advanced = ($filter === 'advanced');
+ $is_all = ($filter === 'all');
+
+ $show_core = ($is_core || $is_all);
+ $show_advanced = ($is_advanced || $is_all);
+
+ if ($is_core) {
+ $title = pht('Core Settings');
+ } else if ($is_advanced) {
+ $title = pht('Advanced Settings');
+ } else {
+ $title = pht('All Settings');
+ }
+
+ $db_values = id(new PhabricatorConfigEntry())
+ ->loadAllWhere('namespace = %s', 'default');
+ $db_values = mpull($db_values, null, 'getConfigKey');
+
+ $list = id(new PHUIObjectItemListView())
+ ->setBig(true)
+ ->setFlush(true);
+
+ $rows = array();
+ $options = PhabricatorApplicationConfigOptions::loadAllOptions();
+ ksort($options);
+ foreach ($options as $option) {
+ $key = $option->getKey();
+
+ $is_advanced = (bool)$option->getLocked();
+ if ($is_advanced && !$show_advanced) {
+ continue;
+ }
+
+ if (!$is_advanced && !$show_core) {
+ continue;
+ }
+
+ $db_value = idx($db_values, $key);
+
+ $item = $this->newConfigOptionView($option, $db_value);
+ $list->addItem($item);
+ }
+
+ $header = $this->buildHeaderView($title);
+
+ $crumbs = $this->newCrumbs()
+ ->addTextCrumb($title);
+
+ $content = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setFooter($list);
+
+ $nav = $this->newNavigation($filter);
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->setNavigation($nav)
+ ->appendChild($content);
+ }
+
+ private function newConfigOptionView(
+ PhabricatorConfigOption $option,
+ PhabricatorConfigEntry $stored_value = null) {
+
+ $summary = $option->getSummary();
+
+ $item = id(new PHUIObjectItemView())
+ ->setHeader($option->getKey())
+ ->setClickable(true)
+ ->setHref('/config/edit/'.$option->getKey().'/')
+ ->addAttribute($summary);
+
+ $color = null;
+ if ($stored_value && !$stored_value->getIsDeleted()) {
+ $item->setEffect('visited');
+ $color = 'violet';
+ }
+
+ if ($option->getHidden()) {
+ $item->setStatusIcon('fa-eye-slash', pht('Hidden'));
+ } else if ($option->getLocked()) {
+ $item->setStatusIcon('fa-lock '.$color, pht('Locked'));
+ } else if ($color) {
+ $item->setStatusIcon('fa-pencil '.$color, pht('Editable'));
+ } else {
+ $item->setStatusIcon('fa-circle-o grey', pht('Default'));
+ }
+
+ return $item;
+ }
+
+}
diff --git a/src/applications/notification/setup/PhabricatorAphlictSetupCheck.php b/src/applications/notification/setup/PhabricatorAphlictSetupCheck.php
--- a/src/applications/notification/setup/PhabricatorAphlictSetupCheck.php
+++ b/src/applications/notification/setup/PhabricatorAphlictSetupCheck.php
@@ -24,6 +24,10 @@
$this->newIssue('aphlict.connect')
->setShortName(pht('Notification Server Down'))
->setName(pht('Unable to Connect to Notification Server'))
+ ->setSummary(
+ pht(
+ 'Phabricator is configured to use a notification server, '.
+ 'but is not able to connect to it.'))
->setMessage($message)
->addRelatedPhabricatorConfig('notification.servers')
->addCommand(

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 29, 9:01 AM (2 w, 3 d ago)
Storage Engine
amazon-s3
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
phabricator/secure/jv/am/pozu46dxg6f4p52d
Default Alt Text
D20934.id49950.diff (52 KB)

Event Timeline