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) {
32 $element = Javascript::prep_element ( $element );
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) {
73 $element = Javascript::prep_element ( $element );
74 if (isset ( $param )) {
75 $param = Javascript::prep_value ( $param );
76 $str =
"$({$element}).{$jQueryCall}({$param});";
78 $str =
"$({$element}).{$jQueryCall}();";
80 $this->jquery_code_for_compile [] = $str;
95 $to = Javascript::prep_element ( $to );
96 $element = Javascript::prep_element ( $element );
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) {
153 $element = Javascript::prep_element ( $element );
154 if (isset ( $value )) {
155 $value = Javascript::prep_value ( $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) {
202 $element = Javascript::prep_element ( $element );
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");});
';
before($to, $element, $immediatly=false)
Insert content, specified by the parameter, before each element in the set of matched elements.
html($element='this', $value='', $immediatly=false)
Get or set the html of an attribute for the first element in the set of matched elements.
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 ...
after($to, $element, $immediatly=false)
Insert content, specified by the parameter, after each element in the set of matched elements.
append($to, $element, $immediatly=false)
Insert content, specified by the parameter $element, to the end of each element in the set of matched...
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 ...
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...
_add_event($element, $js, $event, $preventDefault=false, $stopPropagation=false, $immediatly=true, $listenerOn=false)
_showHideWithEffect($action, $element='this', $speed='', $callback='', $immediatly=false)
show or hide with effect
toggleClass($element='this', $class='', $immediatly=false)
Execute a javascript library toggle class action.
animate($element='this', $params=array(), $speed='', $extra='', $immediatly=false)
Outputs a javascript library animate event.
prepend($to, $element, $immediatly=false)
Insert content, specified by the parameter $element, to the beginning of each element in the set of m...
addClass($element='this', $class='', $immediatly=false)
add class to element
_genericCallValue($jQueryCall, $element='this', $param="", $immediatly=false)
Execute a generic jQuery call with a value.
_genericCallElement($jQueryCall, $to='this', $element='', $immediatly=false)
Execute a generic jQuery call with 2 elements.
_validate_speed($speed)
Ensures the speed parameter is valid for jQuery.
removeClass($element='this', $class='', $immediatly=false)
Execute a javascript library removeClass action.