diff --git a/program/include/rcmail_output.php b/program/include/rcmail_output.php index aeff78bcd..f34c147e7 100644 --- a/program/include/rcmail_output.php +++ b/program/include/rcmail_output.php @@ -36,6 +36,7 @@ abstract class rcmail_output extends rcube_output protected $pagetitle = ''; protected $object_handlers = array(); + protected $devel_mode = false; /** @@ -44,6 +45,8 @@ abstract class rcmail_output extends rcube_output public function __construct($task = null, $framed = false) { parent::__construct(); + + $this->devel_mode = (bool) $this->config->get('devel_mode'); } /** diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php index 65302b179..7bca9561e 100644 --- a/program/include/rcmail_output_html.php +++ b/program/include/rcmail_output_html.php @@ -690,7 +690,7 @@ EOF; $parent = $this->framed || preg_match('/^parent\./', $method); foreach ($args as $i => $arg) { - $args[$i] = self::json_serialize($arg); + $args[$i] = self::json_serialize($arg, $this->devel_mode); } if ($parent) { @@ -1923,7 +1923,7 @@ EOF; return; } - $this->add_script('var images = ' . self::json_serialize($images) .'; + $this->add_script('var images = ' . self::json_serialize($images, $this->devel_mode) .'; for (var i=0; idevel_mode); } /** @@ -245,7 +245,7 @@ class rcmail_output_json extends rcmail_output foreach ($this->commands as $i => $args) { $method = array_shift($args); foreach ($args as $i => $arg) { - $args[$i] = self::json_serialize($arg); + $args[$i] = self::json_serialize($arg, $this->devel_mode); } $out .= sprintf( diff --git a/program/lib/Roundcube/rcube_output.php b/program/lib/Roundcube/rcube_output.php index 2d9c69521..905f8434e 100644 --- a/program/lib/Roundcube/rcube_output.php +++ b/program/lib/Roundcube/rcube_output.php @@ -265,16 +265,22 @@ abstract class rcube_output /** * Convert a variable into a javascript object notation * - * @param mixed Input value + * @param mixed $input Input value + * @param boolean $pretty Enable JSON formatting * * @return string Serialized JSON string */ - public static function json_serialize($input) + public static function json_serialize($input, $pretty = false) { - $input = rcube_charset::clean($input); + $input = rcube_charset::clean($input); + $options = 0; + + if ($pretty) { + $options |= JSON_PRETTY_PRINT; + } // sometimes even using rcube_charset::clean() the input contains invalid UTF-8 sequences // that's why we have @ here - return @json_encode($input); + return @json_encode($input, $options); } }