aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-04-28 02:02:26 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-04-28 02:02:26 +0000
commit99b44ae2a37208819dbca47db4356601240fbfd0 (patch)
tree73e10de5965e70f00915226bab57df78fe23a00b /engine
parent4239301a547601b5139076c9c8994b59f67e6b46 (diff)
downloadelgg-99b44ae2a37208819dbca47db4356601240fbfd0.tar.gz
elgg-99b44ae2a37208819dbca47db4356601240fbfd0.tar.bz2
Fixes #3127. Normalizing the json returned by the ajax action handler. Doing this in PHP.
git-svn-id: http://code.elgg.org/elgg/trunk@9039 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/actions.php19
1 files changed, 17 insertions, 2 deletions
diff --git a/engine/lib/actions.php b/engine/lib/actions.php
index 47e4dd4a4..df7c92de4 100644
--- a/engine/lib/actions.php
+++ b/engine/lib/actions.php
@@ -411,6 +411,16 @@ function elgg_is_xhr() {
*/
function ajax_forward_hook($hook, $type, $reason, $params) {
if (elgg_is_xhr()) {
+ // always pass the full structure to avoid boilerplate JS code.
+ $params = array(
+ 'output' => '',
+ 'status' => 0,
+ 'system_messages' => array(
+ 'error' => array(),
+ 'success' => array()
+ )
+ );
+
//grab any data echo'd in the action
$output = ob_get_clean();
@@ -423,9 +433,14 @@ function ajax_forward_hook($hook, $type, $reason, $params) {
}
//Grab any system messages so we can inject them via ajax too
- $params['system_messages'] = system_messages(NULL, "");
+ $system_messages = system_messages(NULL, "");
+
+ if (isset($system_messages['success'])) {
+ $params['system_messages']['success'] = $system_messages['success'];
+ }
- if (isset($params['system_messages']['error'])) {
+ if (isset($system_messages['error'])) {
+ $params['system_messages']['error'] = $system_messages['error'];
$params['status'] = -1;
} else {
$params['status'] = 0;