From 459fcb7a1a0b229efe627c7772aa7c0b96d0c4b7 Mon Sep 17 00:00:00 2001 From: mark_story Date: Wed, 12 Aug 2009 09:24:23 -0400 Subject: [PATCH] Applying patch from 'evilbloodydemon'. Fixes JqueryEngine::request() when wrapCallbacks is true. Test cases added. Fixes #20 --- cake/libs/view/helpers/jquery_engine.php | 8 +++++++- .../cases/libs/view/helpers/jquery_engine.test.php | 10 ++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cake/libs/view/helpers/jquery_engine.php b/cake/libs/view/helpers/jquery_engine.php index 476327b9170..407eca62b53 100644 --- a/cake/libs/view/helpers/jquery_engine.php +++ b/cake/libs/view/helpers/jquery_engine.php @@ -240,7 +240,13 @@ function request($url, $options = array()) { } $options['url'] = $url; if (isset($options['update'])) { - $options['success'] = 'function (msg, status) {$("' . $options['update'] . '").html(msg);}'; + $wrapCallbacks = isset($options['wrapCallbacks']) ? $options['wrapCallbacks'] : true; + if ($wrapCallbacks) { + $success = '$("' . $options['update'] . '").html(data);'; + } else { + $success = 'function (data, textStatus) {$("' . $options['update'] . '").html(data);}'; + } + $options['success'] = $success; unset($options['update']); } $callbacks = array('success', 'error', 'beforeSend', 'complete'); diff --git a/cake/tests/cases/libs/view/helpers/jquery_engine.test.php b/cake/tests/cases/libs/view/helpers/jquery_engine.test.php index 65194a7df3d..0313f23d5f7 100644 --- a/cake/tests/cases/libs/view/helpers/jquery_engine.test.php +++ b/cake/tests/cases/libs/view/helpers/jquery_engine.test.php @@ -160,6 +160,12 @@ function testRequest() { $expected = '$.ajax({url:"\\/posts\\/view\\/1"});'; $this->assertEqual($result, $expected); + $result = $this->Jquery->request(array('controller' => 'posts', 'action' => 'view', 1), array( + 'update' => '#content' + )); + $expected = '$.ajax({success:function (data, textStatus) {$("#content").html(data);}, url:"\/posts\/view\/1"});'; + $this->assertEqual($result, $expected); + $result = $this->Jquery->request('/people/edit/1', array( 'method' => 'post', 'before' => 'doBefore', @@ -179,7 +185,7 @@ function testRequest() { 'method' => 'post', 'wrapCallbacks' => false )); - $expected = '$.ajax({success:function (msg, status) {$("#updated").html(msg);}, type:"post", url:"\\/people\\/edit\\/1"});'; + $expected = '$.ajax({success:function (data, textStatus) {$("#updated").html(data);}, type:"post", url:"\\/people\\/edit\\/1"});'; $this->assertEqual($result, $expected); $result = $this->Jquery->request('/people/edit/1', array( @@ -190,7 +196,7 @@ function testRequest() { 'data' => '$("#someId").serialize()', 'wrapCallbacks' => false )); - $expected = '$.ajax({data:$("#someId").serialize(), success:function (msg, status) {$("#updated").html(msg);}, type:"post", url:"\\/people\\/edit\\/1"});'; + $expected = '$.ajax({data:$("#someId").serialize(), success:function (data, textStatus) {$("#updated").html(data);}, type:"post", url:"\\/people\\/edit\\/1"});'; $this->assertEqual($result, $expected); $result = $this->Jquery->request('/people/edit/1', array(