mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 16:52:41 +01:00
Fix error in PhabricatorSetupIssueView
Summary: - Move `prettyPrintJSON()` and make it static. - Use it from `PhabricatorSetupIssueView` - Update other `config/` places that use it to call it from the new class. This fixes a bug in `PhabricatorSetupIssueView` which showed up if the value was an array and couldn't be rendered by `phutil_escape_html()`. Test Plan: - Rendered some config options. - Went to /config/issue/config.unknown.phame.skins/ without error. Reviewers: epriestley, btrahan, chad Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2255 Differential Revision: https://secure.phabricator.com/D4411
This commit is contained in:
parent
08687c0b17
commit
76c10f497f
6 changed files with 27 additions and 20 deletions
|
@ -706,6 +706,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorConfigGroupController' => 'applications/config/controller/PhabricatorConfigGroupController.php',
|
'PhabricatorConfigGroupController' => 'applications/config/controller/PhabricatorConfigGroupController.php',
|
||||||
'PhabricatorConfigIssueListController' => 'applications/config/controller/PhabricatorConfigIssueListController.php',
|
'PhabricatorConfigIssueListController' => 'applications/config/controller/PhabricatorConfigIssueListController.php',
|
||||||
'PhabricatorConfigIssueViewController' => 'applications/config/controller/PhabricatorConfigIssueViewController.php',
|
'PhabricatorConfigIssueViewController' => 'applications/config/controller/PhabricatorConfigIssueViewController.php',
|
||||||
|
'PhabricatorConfigJSON' => 'applications/config/json/PhabricatorConfigJSON.php',
|
||||||
'PhabricatorConfigListController' => 'applications/config/controller/PhabricatorConfigListController.php',
|
'PhabricatorConfigListController' => 'applications/config/controller/PhabricatorConfigListController.php',
|
||||||
'PhabricatorConfigLocalSource' => 'infrastructure/env/PhabricatorConfigLocalSource.php',
|
'PhabricatorConfigLocalSource' => 'infrastructure/env/PhabricatorConfigLocalSource.php',
|
||||||
'PhabricatorConfigManagementSetWorkflow' => 'infrastructure/env/management/PhabricatorConfigManagementSetWorkflow.php',
|
'PhabricatorConfigManagementSetWorkflow' => 'infrastructure/env/management/PhabricatorConfigManagementSetWorkflow.php',
|
||||||
|
|
|
@ -21,20 +21,4 @@ abstract class PhabricatorConfigController extends PhabricatorController {
|
||||||
return $this->buildSideNavView(null, true)->getMenu();
|
return $this->buildSideNavView(null, true)->getMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Properly format a JSON value.
|
|
||||||
*
|
|
||||||
* @param wild Any value, but should be a raw value, not a string of JSON.
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public 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)) {
|
|
||||||
return id(new PhutilJSON())->encodeFormatted($value);
|
|
||||||
} else {
|
|
||||||
return json_encode($value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -330,7 +330,7 @@ final class PhabricatorConfigEditController
|
||||||
case 'list<string>':
|
case 'list<string>':
|
||||||
return implode("\n", nonempty($value, array()));
|
return implode("\n", nonempty($value, array()));
|
||||||
default:
|
default:
|
||||||
return $this->prettyPrintJSON($value);
|
return PhabricatorConfigJSON::prettyPrintJSON($value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,7 +462,8 @@ final class PhabricatorConfigEditController
|
||||||
if (!array_key_exists($option->getKey(), $value)) {
|
if (!array_key_exists($option->getKey(), $value)) {
|
||||||
$value = '<em>'.pht('(empty)').'</em>';
|
$value = '<em>'.pht('(empty)').'</em>';
|
||||||
} else {
|
} else {
|
||||||
$value = $this->prettyPrintJSON($value[$option->getKey()]);
|
$value = PhabricatorConfigJSON::prettyPrintJSON(
|
||||||
|
$value[$option->getKey()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$table[] = '<tr>';
|
$table[] = '<tr>';
|
||||||
|
|
|
@ -74,7 +74,8 @@ final class PhabricatorConfigGroupController
|
||||||
|
|
||||||
if (!$option->getHidden()) {
|
if (!$option->getHidden()) {
|
||||||
$current_value = PhabricatorEnv::getEnvConfig($option->getKey());
|
$current_value = PhabricatorEnv::getEnvConfig($option->getKey());
|
||||||
$current_value = $this->prettyPrintJSON($current_value);
|
$current_value = PhabricatorConfigJSON::prettyPrintJSON(
|
||||||
|
$current_value);
|
||||||
$current_value = phutil_render_tag(
|
$current_value = phutil_render_tag(
|
||||||
'div',
|
'div',
|
||||||
array(
|
array(
|
||||||
|
|
19
src/applications/config/json/PhabricatorConfigJSON.php
Normal file
19
src/applications/config/json/PhabricatorConfigJSON.php
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorConfigJSON {
|
||||||
|
/**
|
||||||
|
* Properly format a JSON value.
|
||||||
|
*
|
||||||
|
* @param wild Any value, but should be a raw value, not a string of JSON.
|
||||||
|
* @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)) {
|
||||||
|
return id(new PhutilJSON())->encodeFormatted($value);
|
||||||
|
} else {
|
||||||
|
return json_encode($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -133,7 +133,8 @@ final class PhabricatorSetupIssueView extends AphrontView {
|
||||||
} else if ($value === true) {
|
} else if ($value === true) {
|
||||||
$value = '<em>true</em>';
|
$value = '<em>true</em>';
|
||||||
} else {
|
} else {
|
||||||
$value = phutil_escape_html($value);
|
$value = phutil_escape_html(
|
||||||
|
PhabricatorConfigJSON::prettyPrintJSON($value));
|
||||||
}
|
}
|
||||||
|
|
||||||
$table[] = '<td>'.$value.'</td>';
|
$table[] = '<td>'.$value.'</td>';
|
||||||
|
|
Loading…
Reference in a new issue