diff --git a/src/applications/config/controller/PhabricatorConfigGroupController.php b/src/applications/config/controller/PhabricatorConfigGroupController.php index 2ab468540c..0239457729 100644 --- a/src/applications/config/controller/PhabricatorConfigGroupController.php +++ b/src/applications/config/controller/PhabricatorConfigGroupController.php @@ -53,12 +53,44 @@ final class PhabricatorConfigGroupController 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 PhabricatorObjectItemListView(); foreach ($options as $option) { + $current_value = PhabricatorEnv::getEnvConfig($option->getKey()); + $current_value = $this->prettyPrintJSON($current_value); + $current_value = phutil_render_tag( + 'div', + array( + 'class' => 'config-options-current-value', + ), + ''.pht('Current Value:').' '. + phutil_escape_html($current_value)); + + $item = id(new PhabricatorObjectItemView()) ->setHeader($option->getKey()) ->setHref('/config/edit/'.$option->getKey().'/') - ->addAttribute(phutil_escape_html($option->getSummary())); + ->addAttribute(phutil_escape_html($option->getSummary())) + ->appendChild($current_value); + + $db_value = idx($db_values, $option->getKey()); + if ($db_value && !$db_value->getIsDeleted()) { + $item->addIcon('edit', pht('Customized')); + } else { + $item->addIcon('edit-grey', pht('Default')); + } + $list->addItem($item); } diff --git a/webroot/rsrc/css/application/config/config-options.css b/webroot/rsrc/css/application/config/config-options.css index 87d54e3202..f7ba294c92 100644 --- a/webroot/rsrc/css/application/config/config-options.css +++ b/webroot/rsrc/css/application/config/config-options.css @@ -37,4 +37,11 @@ background: #e0e0e0; } +.config-options-current-value { + padding: 0 6px 2px; + white-space: pre-wrap; +} +.config-options-current-value span { + color: #666666; +}