From 25ca17da46348d974ffa9bc451a0a81ed6babbcf Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 1 Jan 2013 14:11:39 -0800 Subject: [PATCH] Show current value in configuration list; show default vs non-default values Summary: - When viewing a config list, show the current effective value. - Add an icon showing default vs nondefault values. Test Plan: {F28475} Reviewers: btrahan, codeblock Reviewed By: codeblock CC: aran Maniphest Tasks: T2255 Differential Revision: https://secure.phabricator.com/D4313 --- .../PhabricatorConfigGroupController.php | 34 ++++++++++++++++++- .../css/application/config/config-options.css | 7 ++++ 2 files changed, 40 insertions(+), 1 deletion(-) 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; +}