Skip to content

Commit d9189f3

Browse files
committed
ajax transitions
1 parent 55f351d commit d9189f3

File tree

8 files changed

+119
-74
lines changed

8 files changed

+119
-74
lines changed

Ajax/Jquery.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public function __construct($params,$jsUtils) {
5454
$this->params[$key]=$params[$key];
5555
}
5656
$this->jsUtils=$jsUtils;
57-
$this->setAjaxDataCall();
57+
if(isset($params["ajaxTransition"]))
58+
$this->ajaxTransition=$this->setAjaxDataCall($params["ajaxTransition"]);
5859
}
5960

6061
/**

Ajax/JsUtils.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
abstract class JsUtils{
2525
use JsUtilsEventsTrait,JsUtilsActionsTrait,JsUtilsAjaxTrait;
2626

27+
/**
28+
* @var Jquery
29+
*/
2730
protected $js;
2831
protected $cdns;
2932
protected $params;
@@ -164,12 +167,7 @@ public function config($config=NULL) {
164167
}
165168

166169
public function __construct($params=array(),$injected=NULL) {
167-
$defaults=array (
168-
'driver' => 'Jquery',
169-
'debug' => true,
170-
'defer' => false,
171-
'ajaxEffect'=>'fade'
172-
);
170+
$defaults=['driver'=>'Jquery','debug'=>true,'defer'=>false,'ajaxTransition'=>null];
173171
foreach ( $defaults as $key => $val ) {
174172
if (isset($params[$key])===false || $params[$key]==="") {
175173
$params[$key]=$defaults[$key];

Ajax/common/traits/JqueryAjaxTrait.php

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Ajax\service\JString;
66
use Ajax\service\Javascript;
7-
use Ajax\service\JQueryAjaxEffect;
7+
use Ajax\service\AjaxTransition;
88

99

1010
/**
@@ -14,7 +14,7 @@
1414
* @property array $params
1515
*/
1616
trait JqueryAjaxTrait {
17-
protected $ajaxDataCall;
17+
protected $ajaxTransition;
1818
protected $ajaxLoader='<span></span><span></span><span></span><span></span><span></span>';
1919

2020
abstract public function _add_event($element, $js, $event, $preventDefault=false, $stopPropagation=false,$immediatly=true);
@@ -30,14 +30,14 @@ protected function addLoading(&$retour, $responseElement) {
3030
$retour.="\t\t$({$responseElement}).prepend('{$loading_notifier}');\n";
3131
}
3232

33-
public function _get($url, $params="{}", $responseElement="", $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$immediatly=false) {
34-
return $this->_ajax("get", $url,$params,$responseElement,$jsCallback,$attr,$hasLoader,$jqueryDone,$immediatly);
33+
public function _get($url, $params="{}", $responseElement="", $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$ajaxTransition=null,$immediatly=false) {
34+
return $this->_ajax("get", $url,$params,$responseElement,$jsCallback,$attr,$hasLoader,$jqueryDone,$ajaxTransition,$immediatly);
3535
}
36-
public function _post($url, $params="{}", $responseElement="", $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$immediatly=false) {
37-
return $this->_ajax("post", $url,$params,$responseElement,$jsCallback,$attr,$hasLoader,$jqueryDone,$immediatly);
36+
public function _post($url, $params="{}", $responseElement="", $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$ajaxTransition=null,$immediatly=false) {
37+
return $this->_ajax("post", $url,$params,$responseElement,$jsCallback,$attr,$hasLoader,$jqueryDone,$ajaxTransition,$immediatly);
3838
}
3939

40-
protected function _ajax($method,$url, $params="{}", $responseElement="", $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$immediatly=false) {
40+
protected function _ajax($method,$url, $params="{}", $responseElement="", $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$ajaxTransition=null,$immediatly=false) {
4141
if(JString::isNull($params)){$params="{}";}
4242
$jsCallback=isset($jsCallback) ? $jsCallback : "";
4343
$retour=$this->_getAjaxUrl($url, $attr);
@@ -47,16 +47,20 @@ protected function _ajax($method,$url, $params="{}", $responseElement="", $jsCal
4747
$this->addLoading($retour, $responseElement);
4848
}
4949
$retour.="$.".$method."(url,".$params.").done(function( data ) {\n";
50-
$retour.=$this->_getOnAjaxDone($responseElement, $jqueryDone,$jsCallback)."});\n";
50+
$retour.=$this->_getOnAjaxDone($responseElement, $jqueryDone,$ajaxTransition,$jsCallback)."});\n";
5151
if ($immediatly)
5252
$this->jquery_code_for_compile[]=$retour;
5353
return $retour;
5454
}
5555

56-
protected function setAjaxDataCall(){
57-
$this->ajaxDataCall=function ($responseElement,$jqueryDone="html"){
58-
return JQueryAjaxEffect::{$this->params["ajaxEffect"]}($responseElement,$jqueryDone);
59-
};
56+
protected function setAjaxDataCall($params){
57+
$result=null;
58+
if(!\is_callable($params) && \method_exists("Ajax\service\AjaxTransition",$params)){
59+
$result=function ($responseElement,$jqueryDone="html") use($params){
60+
return AjaxTransition::{$params}($responseElement,$jqueryDone);
61+
};
62+
}
63+
return $result;
6064
}
6165

6266
protected function _getAjaxUrl($url,$attr){
@@ -76,10 +80,18 @@ protected function _getAjaxUrl($url,$attr){
7680
return $retour;
7781
}
7882

79-
protected function _getOnAjaxDone($responseElement,$jqueryDone,$jsCallback){
80-
$retour="";$call=$this->ajaxDataCall;
83+
protected function _getOnAjaxDone($responseElement,$jqueryDone,$ajaxTransition,$jsCallback){
84+
$retour="";$call=null;
8185
if ($responseElement!=="") {
82-
$retour=$call($responseElement,$jqueryDone);
86+
if(isset($ajaxTransition)){
87+
$call=$this->setAjaxDataCall($ajaxTransition);
88+
}elseif(isset($this->ajaxTransition)){
89+
$call=$this->ajaxTransition;
90+
}
91+
if(\is_callable($call))
92+
$retour="\t".$call($responseElement,$jqueryDone).";\n";
93+
else
94+
$retour="\t$({$responseElement}).{$jqueryDone}( data );\n";
8395
}
8496
$retour.="\t".$jsCallback."\n";
8597
return $retour;
@@ -192,7 +204,7 @@ public function _jsonArrayOn($event,$element, $maskSelector,$url,$parameters=arr
192204
return $this->_add_event($element, $this->_jsonArray($maskSelector,$url,$method, $params,$jsCallback, $attr, $context), $event, $preventDefault, $stopPropagation,$immediatly);
193205
}
194206

195-
public function _postForm($url, $form, $responseElement, $validation=false, $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$immediatly=false) {
207+
public function _postForm($url, $form, $responseElement, $validation=false, $jsCallback=NULL, $attr="id", $hasLoader=true,$jqueryDone="html",$ajaxTransition=null,$immediatly=false) {
196208
$jsCallback=isset($jsCallback) ? $jsCallback : "";
197209
$retour=$this->_getAjaxUrl($url, $attr);
198210
$retour.="\nvar params=$('#".$form."').serialize();\n";
@@ -202,7 +214,7 @@ public function _postForm($url, $form, $responseElement, $validation=false, $jsC
202214
$this->addLoading($retour, $responseElement);
203215
}
204216
$retour.="$.post(url,params).done(function( data ) {\n";
205-
$retour.=$this->_getOnAjaxDone($responseElement, $jqueryDone,$jsCallback)."});\n";
217+
$retour.=$this->_getOnAjaxDone($responseElement, $jqueryDone,$ajaxTransition,$jsCallback)."});\n";
206218

207219
if ($validation) {
208220
$retour="$('#".$form."').validate({submitHandler: function(form) {
@@ -223,7 +235,7 @@ public function _postForm($url, $form, $responseElement, $validation=false, $jsC
223235
* @param string $url
224236
* @param string $params queryString parameters (JSON format). default : {}
225237
* @param string $responseElement
226-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"jqueryDone"=>"html")
238+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"ajaxTransition"=>null,"jqueryDone"=>"html")
227239
*/
228240
public function _getOn($event,$element, $url, $params="{}", $responseElement="", $parameters=array()) {
229241
$preventDefault=true;
@@ -233,8 +245,9 @@ public function _getOn($event,$element, $url, $params="{}", $responseElement="",
233245
$hasLoader=true;
234246
$immediatly=true;
235247
$jqueryDone="html";
248+
$ajaxTransition=null;
236249
extract($parameters);
237-
return $this->_add_event($element, $this->_get($url, $params, $responseElement, $jsCallback, $attr,$hasLoader,$jqueryDone), $event, $preventDefault, $stopPropagation,$immediatly);
250+
return $this->_add_event($element, $this->_get($url, $params, $responseElement, $jsCallback, $attr,$hasLoader,$jqueryDone,$ajaxTransition), $event, $preventDefault, $stopPropagation,$immediatly);
238251
}
239252

240253
/**
@@ -245,7 +258,7 @@ public function _getOn($event,$element, $url, $params="{}", $responseElement="",
245258
* @param string $url
246259
* @param string $params queryString parameters (JSON format). default : {}
247260
* @param string $responseElement
248-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true)
261+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"ajaxTransition"=>null)
249262
*/
250263
public function _postOn($event,$element, $url, $params="{}", $responseElement="", $parameters=array()) {
251264
$preventDefault=true;
@@ -255,8 +268,9 @@ public function _postOn($event,$element, $url, $params="{}", $responseElement=""
255268
$hasLoader=true;
256269
$immediatly=true;
257270
$jqueryDone="html";
271+
$ajaxTransition=null;
258272
extract($parameters);
259-
return $this->_add_event($element, $this->_post($url, $params, $responseElement, $jsCallback, $attr,$hasLoader,$jqueryDone), $event, $preventDefault, $stopPropagation,$immediatly);
273+
return $this->_add_event($element, $this->_post($url, $params, $responseElement, $jsCallback, $attr,$hasLoader,$jqueryDone,$ajaxTransition), $event, $preventDefault, $stopPropagation,$immediatly);
260274
}
261275

262276
/**
@@ -267,7 +281,7 @@ public function _postOn($event,$element, $url, $params="{}", $responseElement=""
267281
* @param string $url
268282
* @param string $form
269283
* @param string $responseElement
270-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"validation"=>false,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true)
284+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"validation"=>false,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"ajaxTransition"=>null,"immediatly"=>true)
271285
*/
272286
public function _postFormOn($event,$element, $url, $form, $responseElement="", $parameters=array()) {
273287
$preventDefault=true;
@@ -278,7 +292,8 @@ public function _postFormOn($event,$element, $url, $form, $responseElement="", $
278292
$hasLoader=true;
279293
$immediatly=true;
280294
$jqueryDone="html";
295+
$ajaxTransition=null;
281296
extract($parameters);
282-
return $this->_add_event($element, $this->_postForm($url, $form, $responseElement, $validation, $jsCallback, $attr,$hasLoader,$jqueryDone), $event, $preventDefault, $stopPropagation,$immediatly);
297+
return $this->_add_event($element, $this->_postForm($url, $form, $responseElement, $validation, $jsCallback, $attr,$hasLoader,$jqueryDone,$ajaxTransition), $event, $preventDefault, $stopPropagation,$immediatly);
283298
}
284299
}

Ajax/common/traits/JsUtilsAjaxTrait.php

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
namespace Ajax\common\traits;
44

55
use Ajax\service\JArray;
6-
use Ajax\JsUtils;
6+
use Ajax\Jquery;
77

88
/**
99
* @author jc
10-
* @property JsUtils $js
10+
* @property Jquery $js
1111
*/
1212
trait JsUtilsAjaxTrait {
1313

@@ -23,9 +23,10 @@ public function setAjaxLoader($loader) {
2323
* @param string $jsCallback javascript code to execute after the request
2424
* @param boolean $hasLoader true for showing ajax loader. default : true
2525
* @param string $jqueryDone the jquery function call on ajax data. default:html
26+
* @param string|callable $ajaxTransition
2627
*/
27-
public function get($url, $responseElement="", $params="{}", $jsCallback=NULL,$hasLoader=true,$jqueryDone="html") {
28-
return $this->js->_get($url, $params, $responseElement, $jsCallback, NULL, $hasLoader,$jqueryDone,true);
28+
public function get($url, $responseElement="", $params="{}", $jsCallback=NULL,$hasLoader=true,$jqueryDone="html",$ajaxTransition=null) {
29+
return $this->js->_get($url, $params, $responseElement, $jsCallback, NULL, $hasLoader,$jqueryDone,$ajaxTransition,true);
2930
}
3031

3132
/**
@@ -105,9 +106,10 @@ public function jsonArrayOn($event,$element,$maskSelector, $url,$parameters=arra
105106
* @param string $jsCallback javascript code to execute after the request
106107
* @param string $attr the html attribute added to the request
107108
* @param string $jqueryDone the jquery function call on ajax data. default:html
109+
* @param string|callable $ajaxTransition
108110
*/
109-
public function getDeferred($url, $responseElement="", $params="{}", $jsCallback=NULL,$attr="id",$jqueryDone="html") {
110-
return $this->js->_get($url, $params, $responseElement, $jsCallback, $attr, false,$jqueryDone);
111+
public function getDeferred($url, $responseElement="", $params="{}", $jsCallback=NULL,$attr="id",$jqueryDone="html",$ajaxTransition=null) {
112+
return $this->js->_get($url, $params, $responseElement, $jsCallback, $attr, false,$jqueryDone,$ajaxTransition);
111113
}
112114

113115
/**
@@ -144,9 +146,10 @@ public function getOnClick($element, $url, $responseElement="", $parameters=arra
144146
* @param string $jsCallback javascript code to execute after the request
145147
* @param boolean $hasLoader true for showing ajax loader. default : true
146148
* @param string $jqueryDone the jquery function call on ajax data. default:html
149+
* @param string|callable $ajaxTransition
147150
*/
148-
public function post($url, $responseElement="", $params="{}", $jsCallback=NULL,$hasLoader=true,$jqueryDone="html") {
149-
return $this->js->_post($url, $params, $responseElement, $jsCallback, NULL, $hasLoader,$jqueryDone,true);
151+
public function post($url, $responseElement="", $params="{}", $jsCallback=NULL,$hasLoader=true,$jqueryDone="html",$ajaxTransition=null) {
152+
return $this->js->_post($url, $params, $responseElement, $jsCallback, NULL, $hasLoader,$jqueryDone,$ajaxTransition,true);
150153
}
151154

152155
/**
@@ -159,9 +162,10 @@ public function post($url, $responseElement="", $params="{}", $jsCallback=NULL,$
159162
* @param string $jsCallback javascript code to execute after the request
160163
* @param boolean $hasLoader true for showing ajax loader. default : true
161164
* @param string $jqueryDone the jquery function call on ajax data. default:html
165+
* @param string|callable $ajaxTransition
162166
*/
163-
public function postDeferred($url, $responseElement="", $params="{}", $jsCallback=NULL, $attr="id",$hasLoader=true,$jqueryDone="html") {
164-
return $this->js->_post($url, $params, $responseElement, $jsCallback, $attr, $hasLoader,$jqueryDone,false);
167+
public function postDeferred($url, $responseElement="", $params="{}", $jsCallback=NULL, $attr="id",$hasLoader=true,$jqueryDone="html",$ajaxTransition=null) {
168+
return $this->js->_post($url, $params, $responseElement, $jsCallback, $attr, $hasLoader,$jqueryDone,$ajaxTransition,false);
165169
}
166170

167171
/**
@@ -172,7 +176,7 @@ public function postDeferred($url, $responseElement="", $params="{}", $jsCallbac
172176
* @param string $url The url of the request
173177
* @param string $params The parameters to send
174178
* @param string $responseElement selector of the HTML element displaying the answer
175-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html")
179+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html","ajaxTransition"=>null)
176180
*/
177181
public function postOn($event, $element, $url, $params="{}", $responseElement="", $parameters=array()) {
178182
return $this->js->_postOn($event, $element, $url, $params, $responseElement, $parameters);
@@ -185,7 +189,7 @@ public function postOn($event, $element, $url, $params="{}", $responseElement=""
185189
* @param string $url The url of the request
186190
* @param string $params The parameters to send
187191
* @param string $responseElement selector of the HTML element displaying the answer
188-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html")
192+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html","ajaxTransition"=>null)
189193
*/
190194
public function postOnClick($element, $url, $params="{}", $responseElement="", $parameters=array()) {
191195
return $this->postOn("click", $element, $url, $params, $responseElement, $parameters);
@@ -199,9 +203,10 @@ public function postOnClick($element, $url, $params="{}", $responseElement="", $
199203
* @param string $jsCallback javascript code to execute after the request
200204
* @param boolean $hasLoader true for showing ajax loader. default : true
201205
* @param string $jqueryDone the jquery function call on ajax data. default:html
206+
* @param string|callable $ajaxTransition
202207
*/
203-
public function postForm($url, $form, $responseElement, $validation=false, $jsCallback=NULL,$hasLoader=true,$jqueryDone="html") {
204-
return $this->js->_postForm($url, $form, $responseElement, $validation, $jsCallback, NULL, $hasLoader,$jqueryDone,true);
208+
public function postForm($url, $form, $responseElement, $validation=false, $jsCallback=NULL,$hasLoader=true,$jqueryDone="html",$ajaxTransition=null) {
209+
return $this->js->_postForm($url, $form, $responseElement, $validation, $jsCallback, NULL, $hasLoader,$jqueryDone,$ajaxTransition,true);
205210
}
206211

207212
/**
@@ -214,9 +219,10 @@ public function postForm($url, $form, $responseElement, $validation=false, $jsCa
214219
* @param string $attr the html attribute added to the request
215220
* @param boolean $hasLoader true for showing ajax loader. default : true
216221
* @param string $jqueryDone the jquery function call on ajax data. default:html
222+
* @param string|callable $ajaxTransition
217223
*/
218-
public function postFormDeferred($url, $form, $responseElement, $validation=false, $jsCallback=NULL,$attr="id",$hasLoader=true,$jqueryDone="html") {
219-
return $this->js->_postForm($url, $form, $responseElement, $validation, $jsCallback, $attr, $hasLoader,$jqueryDone,false);
224+
public function postFormDeferred($url, $form, $responseElement, $validation=false, $jsCallback=NULL,$attr="id",$hasLoader=true,$jqueryDone="html",$ajaxTransition=null) {
225+
return $this->js->_postForm($url, $form, $responseElement, $validation, $jsCallback, $attr, $hasLoader,$jqueryDone,$ajaxTransition,false);
220226
}
221227

222228
/**
@@ -227,7 +233,7 @@ public function postFormDeferred($url, $form, $responseElement, $validation=fals
227233
* @param string $url
228234
* @param string $form
229235
* @param string $responseElement selector of the HTML element displaying the answer
230-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"validation"=>false,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html")
236+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"validation"=>false,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html","ajaxTransition"=>null)
231237
*/
232238
public function postFormOn($event, $element, $url, $form, $responseElement="", $parameters=array()) {
233239
return $this->js->_postFormOn($event,$element, $url, $form, $responseElement, $parameters);
@@ -240,7 +246,7 @@ public function postFormOn($event, $element, $url, $form, $responseElement="", $
240246
* @param string $url
241247
* @param string $form
242248
* @param string $responseElement selector of the HTML element displaying the answer
243-
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"validation"=>false,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html")
249+
* @param array $parameters default : array("preventDefault"=>true,"stopPropagation"=>true,"validation"=>false,"jsCallback"=>NULL,"attr"=>"id","hasLoader"=>true,"immediatly"=>true,"jqueryDone"=>"html","ajaxTransition"=>null)
244250
*/
245251
public function postFormOnClick($element, $url, $form, $responseElement="", $parameters=array()) {
246252
return $this->postFormOn("click", $element, $url, $form, $responseElement, $parameters);

0 commit comments

Comments
 (0)