1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-10 08:52:39 +01:00

Improve UI formatting of some configuration values

Summary: This just pretties up some config like `maniphest.custom-field-definitions` which I noticed was kind of hard to read while chasing down other stuff.

Test Plan: {F1014940}

Reviewers: chad

Reviewed By: chad

Differential Revision: https://secure.phabricator.com/D14679
This commit is contained in:
epriestley 2015-12-05 09:50:34 -08:00
parent 1fcdcddd5f
commit eb439cf577
2 changed files with 38 additions and 11 deletions

View file

@ -8,12 +8,34 @@ final class PhabricatorConfigJSON extends Phobject {
* @return string
*/
public static function prettyPrintJSON($value) {
// Check not only that it's an array, but that it's an "unnatural" array
// meaning that the keys aren't 0 -> size_of_array.
if (is_array($value) && array_keys($value) != range(0, count($value) - 1)) {
$result = id(new PhutilJSON())->encodeFormatted($value);
} else {
$result = json_encode($value);
// If the value is an array with keys "0, 1, 2, ..." then we want to
// show it as a list.
// If the value is an array with other keys, we want to show it as an
// object.
// Otherwise, just use the default encoder.
$type = null;
if (is_array($value)) {
$list_keys = range(0, count($value) - 1);
$actual_keys = array_keys($value);
if ($actual_keys === $list_keys) {
$type = 'list';
} else {
$type = 'object';
}
}
switch ($type) {
case 'list':
$result = id(new PhutilJSON())->encodeAsList($value);
break;
case 'object':
$result = id(new PhutilJSON())->encodeFormatted($value);
break;
default:
$result = json_encode($value);
break;
}
// For readability, unescape forward slashes. These are normally escaped

View file

@ -242,6 +242,15 @@ EOTEXT
$custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType';
$fields_example = array(
'mycompany.estimated-hours' => array(
'name' => pht('Estimated Hours'),
'type' => 'int',
'caption' => pht('Estimated number of hours this will take.'),
),
);
$fields_json = id(new PhutilJSON())->encodeFormatted($fields_example);
return array(
$this->newOption('maniphest.custom-field-definitions', 'wild', array())
->setSummary(pht('Custom Maniphest fields.'))
@ -250,11 +259,7 @@ EOTEXT
'Array of custom fields for Maniphest tasks. For details on '.
'adding custom fields to Maniphest, see "Configuring Custom '.
'Fields" in the documentation.'))
->addExample(
'{"mycompany:estimated-hours": {"name": "Estimated Hours", '.
'"type": "int", "caption": "Estimated number of hours this will '.
'take."}}',
pht('Valid Setting')),
->addExample($fields_json, pht('Valid setting')),
$this->newOption('maniphest.fields', $custom_field_type, $default_fields)
->setCustomData(id(new ManiphestTask())->getCustomFieldBaseClass())
->setDescription(pht('Select and reorder task fields.')),