15 abstract public function _add_event($element, $js, $event, $preventDefault =
false, $stopPropagation =
false, $immediatly =
true, $listenerOn=
false);
31 protected function _showHideWithEffect($action, $element =
'this', $speed =
'', $callback =
'', $immediatly =
false) {
34 if ($callback !=
'') {
35 $callback =
", function(){\n{$callback}\n}";
37 $str =
"$({$element}).{$action}({$speed}{$callback});";
39 $this->jquery_code_for_compile [] = $str;
50 if (in_array ( $speed, array (
55 $speed =
'"' . $speed .
'"';
56 } elseif (preg_match (
"/[^0-9]/", $speed )) {
72 public function _genericCallValue($jQueryCall, $element =
'this', $param =
"", $immediatly =
false) {
74 if (isset ( $param )) {
76 $str =
"$({$element}).{$jQueryCall}({$param});";
78 $str =
"$({$element}).{$jQueryCall}();";
80 $this->jquery_code_for_compile [] = $str;
97 $str =
"$({$to}).{$jQueryCall}({$element});";
99 $this->jquery_code_for_compile [] = $str;
113 public function addClass($element =
'this', $class =
'', $immediatly =
false) {
126 public function after($to, $element, $immediatly =
false) {
139 public function before($to, $element, $immediatly =
false) {
152 public function attr($element =
'this', $attributeName =
'id', $value =
"", $immediatly =
false) {
154 if (isset ( $value )) {
156 $str =
"$({$element}).attr(\"$attributeName\",{$value});";
158 $str =
"$({$element}).attr(\"$attributeName\");";
160 $this->jquery_code_for_compile [] = $str;
172 public function val($element =
'this', $value =
'', $immediatly =
false) {
184 public function html($element =
'this', $value =
'', $immediatly =
false) {
201 public function animate($element =
'this', $params = array (), $speed =
'', $extra =
'', $immediatly =
false) {
205 $animations =
"\t\t\t";
206 if (\is_array ( $params )) {
207 foreach ( $params as $param => $value ) {
208 $animations .= $param .
': \'' . $value .
'\',
'; 211 $animations = substr ( $animations, 0, - 2 ); // remove the last ", " 214 $speed = ',
' . $speed; 218 $extra = ',
' . $extra; 221 $str = "$({$element}).animate({\n$animations\n\t\t}" . $speed . $extra . ");"; 224 $this->jquery_code_for_compile [] = $str; 237 public function append($to, $element, $immediatly = false) { 238 return $this->_genericCallElement ( 'append', $to, $element, $immediatly ); 250 public function prepend($to, $element, $immediatly = false) { 251 return $this->_genericCallElement ( 'prepend', $to, $element, $immediatly ); 267 public function fadeIn($element = 'this', $speed = '', $callback = '', $immediatly = false) { 268 return $this->_showHideWithEffect ( "fadeIn", $element, $speed, $callback, $immediatly ); 284 public function fadeOut($element = 'this', $speed = '', $callback = '', $immediatly = false) { 285 return $this->_showHideWithEffect ( "fadeOut", $element, $speed, $callback, $immediatly ); 301 public function slideUp($element = 'this', $speed = '', $callback = '', $immediatly = false) { 302 return $this->_showHideWithEffect ( "slideUp", $element, $speed, $callback, $immediatly ); 316 public function removeClass($element = 'this', $class = '', $immediatly = false) { 317 return $this->_genericCallValue ( 'removeClass', $element, $class, $immediatly ); 333 public function slideDown($element = 'this', $speed = '', $callback = '', $immediatly = false) { 334 return $this->_showHideWithEffect ( "slideDown", $element, $speed, $callback, $immediatly ); 350 public function slideToggle($element = 'this', $speed = '', $callback = '', $immediatly = false) { 351 return $this->_showHideWithEffect ( "slideToggle", $element, $speed, $callback, $immediatly ); 367 public function hide($element = 'this', $speed = '', $callback = '', $immediatly = false) { 368 return $this->_showHideWithEffect ( "hide", $element, $speed, $callback, $immediatly ); 384 public function toggle($element = 'this', $speed = '', $callback = '', $immediatly = false) { 385 return $this->_showHideWithEffect ( "toggle", $element, $speed, $callback, $immediatly ); 398 public function toggleClass($element = 'this', $class = '', $immediatly = false) { 399 return $this->_genericCallValue ( 'toggleClass', $element, $class, $immediatly ); 410 public function trigger($element = 'this', $event = 'click', $immediatly = false) { 411 $element = Javascript::prep_element ( $element ); 412 $str = "$({$element}).trigger(\"$event\");"; 415 $this->jquery_code_for_compile [] = $str; 432 public function show($element = 'this', $speed = '', $callback = '', $immediatly = false) { 433 return $this->_showHideWithEffect ( "show", $element, $speed, $callback, $immediatly ); 443 public function sortable($element, $options = array ()) { 444 if (count ( $options ) > 0) { 445 $sort_options = array (); 446 foreach ( $options as $k => $v ) { 447 $sort_options [] = "\n\t\t" . $k . ':
' . $v . ""; 449 $sort_options = implode ( ",", $sort_options ); 454 return "$(" . Javascript::prep_element ( $element ) . ").sortable({" . $sort_options . "\n\t});"; 466 public function tablesorter($table = '', $options = '') { 467 $this->jquery_code_for_compile [] = "\t$(" . Javascript::prep_element ( $table ) . ").tablesorter($options);\n"; 479 public function condition($condition, $jsCodeIfTrue, $jsCodeIfFalse = null, $immediatly = false) { 480 $str = "if(" . $condition . "){" . $jsCodeIfTrue . "}"; 481 if (isset ( $jsCodeIfFalse )) { 482 $str .= "else{" . $jsCodeIfFalse . "}"; 486 $this->jquery_code_for_compile [] = $str; 501 private function _doJQuery($element, $jqueryCall, $param = "", $jsCallback = "", $immediatly = false) { 502 $param = Javascript::prep_value ( $param ); 504 if ($jsCallback != "") 505 $callback = ", function(event){\n{$jsCallback}\n}"; 506 $script = "$(" . Javascript::prep_element ( $element ) . ")." . $jqueryCall . "(" . $param . $callback . ");\n"; 508 $this->jquery_code_for_compile [] = $script; 525 public function doJQuery($element, $jqueryCall, $param = "", $jsCallback = "") { 526 return $this->_doJQuery ( $element, $jqueryCall, $param, $jsCallback, true ); 542 public function doJQueryDeferred($element, $jqueryCall, $param = "", $jsCallback = "") { 543 return $this->_doJQuery ( $element, $jqueryCall, $param, $jsCallback, false ); 560 private function _doJQueryOn($event, $element, $elementToModify, $jqueryCall, $param = "", $preventDefault = false, $stopPropagation = false, $jsCallback = "", $immediatly = true) { 561 return $this->_add_event ( $element, $this->_doJQuery ( $elementToModify, $jqueryCall, $param, $jsCallback ), $event, $preventDefault, $stopPropagation, $immediatly ); 575 public function doJQueryOn($event, $element, $elementToModify, $jqueryCall, $param = "", $parameters = array ()) { 577 $stopPropagation = false; 578 $preventDefault = false; 580 extract ( $parameters ); 581 return $this->_doJQueryOn ( $event, $element, $elementToModify, $jqueryCall, $param, $preventDefault, $stopPropagation, $jsCallback, $immediatly ); 593 public function exec($js, $immediatly = false) { 594 $script = $js . "\n"; 596 $this->jquery_code_for_compile [] = $script; 609 public function execAtLast($js) { 610 $script = $js . "\n"; 611 $this->jquery_code_for_compile_at_last [] = $script; 626 public function execOn($event, $element, $js, $parameters = array ()) { 627 $stopPropagation = false; 628 $preventDefault = false; 630 extract ( $parameters ); 631 $script = $this->_add_event ( $element, $this->exec ( $js ), $event, $preventDefault, $stopPropagation, $immediatly ); 634 public function setJsonToElement($json, $elementClass = "_element", $immediatly = true) { 635 $retour = "var data={$json};" . "\n\tdata=($.isPlainObject(data))?data:JSON.parse(data);" . "\n\tvar pk=data['pk
'];var object=data['object'];" . "\n\tfor(var field in object){" . "\n\tif($('[data-field=
'+field+']
',$('._element[data-
ajax=
'+pk+']
')).length){" . "\n\t\t$('[data-field=
'+field+']
',$('._element[data-ajax=
'+pk+']
')).each(function(){" . "\n\t\t\tif($(this).is('[value]
')) { $(this).val(object[field]);} else { $(this).html(object[field]); }" . "\n\t});" . "\n}};\n"; 636 $retour .= "\t$(document).trigger('jsonReady
',[data]);\n"; 637 return $this->exec ( $retour, $immediatly ); 648 public function setDraggable($element, $parameters = [ ]) { 650 $preventDefault = false; 651 $stopPropagation = false; 653 extract ( $parameters ); 654 $script = $this->_add_event ( $element, Javascript::draggable ( $attr ), "dragstart", $preventDefault, $stopPropagation, $immediatly ); 668 public function asDropZone($element, $jsCallback = "", $parameters = [ ]) { 669 $stopPropagation = false; 671 $jqueryDone = "append"; 672 $script = $this->_add_event ( $element, '', "dragover", true, $stopPropagation, $immediatly ); 673 extract ( $parameters ); 674 $script .= $this->_add_event ( $element, Javascript::dropZone ( $jqueryDone, $jsCallback ), "drop", true, $stopPropagation, $immediatly ); 691 public function interval($jsCode, $time, $globalName = null, $immediatly = true) { 692 if (! Javascript::isFunction ( $jsCode )) { 693 $jsCode = "function(){\n" . $jsCode . "\n}"; 695 if (isset ( $globalName )) { 696 $script = "if(window.{$globalName}){clearInterval(window.{$globalName});}\nwindow.{$globalName}=setInterval({$jsCode},{$time});"; 698 $script = "setInterval({$jsCode},{$time});"; 700 return $this->exec ( $script, $immediatly ); 712 public function clearInterval($globalName, $immediatly = true) { 713 return $this->exec ( "if(window.{$globalName}){clearInterval(window.{$globalName});}", $immediatly ); 734 public function counter($counterSelector, $value = 0, $limit = 0, $globalName = null, $countDown = true, $immediatly = true) { 737 $stop = "if (--timer < " . $limit . ") {clearInterval(interval);display.trigger({type:'counter-end
',value: timer,limit:" . $limit . "});}"; 740 $stop = "if (++timer > " . $limit . ") {clearInterval(interval);display.trigger({type:'counter-end
',value: timer,limit:" . $limit . "});}"; 744 if (isset ( $globalName )) { 745 $global = "\nwindow.{$globalName}=interval;"; 747 $timer = "var startTimer=function(duration, display) {var timer = duration, days, hours, minutes, seconds; 748 var sh=function(disp,v){if(disp.is('[value]
')){disp.val(v);} else {disp.html(v);};}; 749 var shHide=function(v,k,kBefore){if(v==0 && display.find(k).closest('.timer
').is(':visible
') && (!kBefore || !display.find(kBefore).closest('.timer
').is(':visible
'))){display.find(k).closest('.timer
').hide();}else{sh(display.find(k),v);}}; 750 var pl=function(v,text){return (v>1)?v+' '+text+'s
':(v>0)?v+' '+text:'';}; 751 var d0=function(v){return v < 10 ? '0
' + v : v;}; 752 var shortSh=function(d,h,m,s){sh(display,pl(d,'day
')+' '+[h,m,s].join(':
'));}; 753 var longSh=function(d,h,m,s){shHide(d,'.day
');shHide(h,'.hour
','.day
');shHide(m,'.minute
','.hour
');shHide(s,'.second
','.minute
');}; 754 var mainSh=(display.find('.hour
').first().length)?longSh:shortSh; 755 display.trigger('counter-start
',timer); 757 var interval=setInterval(function () { 758 days = parseInt(timer / 86400, 10); 759 hours = d0(parseInt((timer%86400) / 3600, 10)); 760 minutes = d0(parseInt((timer%3600) / 60, 10)); 761 seconds = d0(parseInt(timer%60, 10)); 762 mainSh(days,hours,minutes,seconds); 767 $element = '$(
"' . $counterSelector . '")
'; 768 return $this->exec ( $timer . "\nstartTimer(" . $value . "," . $element . ");", $immediatly ); 790 public function counterOn($element, $event, $counterSelector, $value = 0, $limit = 0, $globalName = null, $countDown = true) { 791 return $this->execOn ( $event, $element, $this->counter ( $counterSelector, $value, $limit, $globalName, $countDown, false ) ); 805 public function activateLink($target, $property = 'href
', $href = null) { 806 return $this->execAtLast ( $this->_activateLink ( $target, $property, $href ) ); 820 public function _activateLink($target, $property = 'href
', $href = null) { 821 $js = '$(
"' . $target . ' [' . $property . ']").removeClass(
"active");
'; 822 if (isset ( $href )) { 823 $js .= 'var href=
"' . $href . '";
'; 825 $js .= 'var href=window.location.href;
'; 827 $js .= '$(
"' . $target . ' [' . $property . ']").each(
function(){
if(href.includes($(
this).attr(
"' . $property . '"))) $(
this).
addClass(
"active");});
'; removeClass($element='this', $class='', $immediatly=false)
Execute a javascript library removeClass action.
append($to, $element, $immediatly=false)
Insert content, specified by the parameter $element, to the end of each element in the set of matched...
prepend($to, $element, $immediatly=false)
Insert content, specified by the parameter $element, to the beginning of each element in the set of m...
_add_event($element, $js, $event, $preventDefault=false, $stopPropagation=false, $immediatly=true, $listenerOn=false)
counter($counterSelector, $value=0, $limit=0, $globalName=null, $countDown=true, $immediatly=true)
Associates a counter to the element designated by $counterSelector Triggers the events counter-start ...
toggleClass($element='this', $class='', $immediatly=false)
Execute a javascript library toggle class action.
_validate_speed($speed)
Ensures the speed parameter is valid for jQuery.
after($to, $element, $immediatly=false)
Insert content, specified by the parameter, after each element in the set of matched elements...
val($element='this', $value='', $immediatly=false)
Get or set the value of the first element in the set of matched elements or set one or more attribute...
addClass($element='this', $class='', $immediatly=false)
add class to element
_showHideWithEffect($action, $element='this', $speed='', $callback='', $immediatly=false)
show or hide with effect
static prep_element($element)
Puts HTML element in quotes for use in jQuery code unless the supplied element is the Javascript 'thi...
_genericCallElement($jQueryCall, $to='this', $element='', $immediatly=false)
Execute a generic jQuery call with 2 elements.
static prep_value($value)
Puts HTML values in quotes for use in jQuery code unless the supplied value contains the Javascript '...
ajax($method, $url, $responseElement='', $parameters=[])
Performs an ajax request.
click($element='this', $js='', $ret_false=TRUE, $preventDefault=false, $stopPropagation=false, $listenerOn=false)
Outputs a javascript library click event.
_genericCallValue($jQueryCall, $element='this', $param="", $immediatly=false)
Execute a generic jQuery call with a value.
attr($element='this', $attributeName='id', $value="", $immediatly=false)
Get or set the value of an attribute for the first element in the set of matched elements or set one ...
before($to, $element, $immediatly=false)
Insert content, specified by the parameter, before each element in the set of matched elements...
animate($element='this', $params=array(), $speed='', $extra='', $immediatly=false)
Outputs a javascript library animate event.
html($element='this', $value='', $immediatly=false)
Get or set the html of an attribute for the first element in the set of matched elements.