diff options
author | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-04-28 02:02:26 +0000 |
---|---|---|
committer | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-04-28 02:02:26 +0000 |
commit | 99b44ae2a37208819dbca47db4356601240fbfd0 (patch) | |
tree | 73e10de5965e70f00915226bab57df78fe23a00b | |
parent | 4239301a547601b5139076c9c8994b59f67e6b46 (diff) | |
download | elgg-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
-rw-r--r-- | engine/lib/actions.php | 19 |
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; |