Skip to content

Commit 489ec7e

Browse files
committed
Add interval functions
1 parent cb22e73 commit 489ec7e

File tree

5 files changed

+31
-5
lines changed

5 files changed

+31
-5
lines changed

Ajax/JsUtils.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -438,11 +438,11 @@ public function _add_event($element, $js, $event, $preventDefault=false, $stopPr
438438
}
439439
if (array_search($event, $this->jquery_events)===false)
440440
$event="\n\t$(".Javascript::prep_element($element).").bind('{$event}',function(event){\n\t\t{$js}\n\t});\n";
441-
else
442-
$event="\n\t$(".Javascript::prep_element($element).").{$event}(function(event){\n\t\t{$js}\n\t});\n";
443-
if($immediatly)
444-
$this->jquery_code_for_compile[]=$event;
445-
return $event;
441+
else
442+
$event="\n\t$(".Javascript::prep_element($element).").{$event}(function(event){\n\t\t{$js}\n\t});\n";
443+
if($immediatly)
444+
$this->jquery_code_for_compile[]=$event;
445+
return $event;
446446
}
447447

448448
public function getInjected() {

Ajax/common/traits/JsUtilsActionsTrait.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,4 +572,20 @@ public function asDropZone($element,$jsCallback="",$parameters=[]){
572572
$script.=$this->_add_event($element, Javascript::dropZone($jqueryDone,$jsCallback), "drop",true,$stopPropagation,$immediatly);
573573
return $script;
574574
}
575+
576+
public function interval($jsCode,$time,$globalName=null,$immediatly=true){
577+
if(!Javascript::isFunction($jsCode)){
578+
$jsCode="function(){\n".$jsCode."\n}";
579+
}
580+
if(isset($globalName)){
581+
$script="if(window.{$globalName}){clearInterval(window.{$globalName});}\nwindow.{$globalName}=setInterval({$jsCode},{$time});";
582+
}else{
583+
$script="setInterval({$jsCode},{$time});";
584+
}
585+
return $this->exec($script,$immediatly);
586+
}
587+
588+
public function clearInterval($globalName,$immediatly=true){
589+
return $this->exec("if(window.{$globalName}){clearInterval(window.{$globalName});}",$immediatly);
590+
}
575591
}

Ajax/common/traits/JsUtilsAjaxTrait.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ trait JsUtilsAjaxTrait {
1818

1919
abstract public function getUrl($url);
2020
abstract public function _add_event($element, $js, $event, $preventDefault=false, $stopPropagation=false,$immediatly=true);
21+
abstract public function interval($jsCode,$time,$globalName=null,$immediatly=true);
2122

2223
protected function _ajax($method,$url,$responseElement="",$parameters=[]) {
2324
if(isset($this->params["ajax"])){
@@ -228,6 +229,10 @@ public function ajax($method,$url, $responseElement="", $parameters=[]) {
228229
$parameters["immediatly"]=true;
229230
return $this->_ajax($method,$url,$responseElement,$parameters);
230231
}
232+
233+
public function ajaxInterval($method,$url, $interval,$globalName=null,$responseElement="", $parameters=[]){
234+
return $this->interval($this->ajaxDeferred($method, $url,$responseElement,$parameters), $interval,$globalName);
235+
}
231236

232237
/**
233238
* Performs a deferred ajax request

Ajax/common/traits/JsUtilsEventsTrait.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ trait JsUtilsEventsTrait {
1414
protected $jquery_events=array (
1515
"bind","blur","change","click","dblclick","delegate","die","error","focus","focusin","focusout","hover","keydown","keypress","keyup","live","load","mousedown","mousseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","off","on","one","ready","resize","scroll","select","submit","toggle","trigger","triggerHandler","undind","undelegate","unload"
1616
);
17+
1718

1819
abstract public function _add_event($element, $js, $event, $preventDefault=false, $stopPropagation=false,$immediatly=true);
1920

Ajax/service/Javascript.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ public static function dropZone($jqueryDone,$jsCallback=""){
1717
public static function containsCode($expression){
1818
return strrpos($expression, 'this')!==false||strrpos($expression, 'event')!==false||strrpos($expression, 'self')!==false;
1919
}
20+
21+
public static function isFunction($jsCode){
22+
return JString::startswith($jsCode, "function");
23+
}
2024

2125
/**
2226
* Puts HTML element in quotes for use in jQuery code

0 commit comments

Comments
 (0)