Summary:
This is a full UI pass at a cleaner "Config" application. The main idea is to simplify the UI, center it, and have a different feel than other UI, a sort of "manage" UI theme for objects with loads of settings. Also adds a new minimalistic "WHITE_CONFIG" box type which may get re-used in Diffusion settings. This is a 90% pass, I'll have a few follow up diffs. Specifically:
- Build breadcrumbs as a flexible UI to go into headers.
- One click ObjectItemView option, for hover states.
- Sidenav doesn't always select (AphrontFilter issue)
- Mobile touchups, though it's pretty reasonable.
Test Plan:
Click through every page here, edit options, see new navigation UI. Test a few various setup issue layouts including fatals.
{F5163228}
{F5163229}
{F5163230}
{F5163231}
{F5163232}
{F5163233}
{F5163234}
Reviewers: epriestley
Reviewed By: epriestley
Spies: Korvin, epriestley
Differential Revision: https://secure.phabricator.com/D18519
79 lines
1.9 KiB
PHP
79 lines
1.9 KiB
PHP
<?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)
|
|
->setNavigation($nav)
|
|
->setFixed(true)
|
|
->setMainColumn($view);
|
|
|
|
return $this->newPage()
|
|
->setTitle($title)
|
|
->setCrumbs($crumbs)
|
|
->appendChild($content);
|
|
|
|
}
|
|
|
|
}
|