Ubiquity  2.0.0
php rapid development framework
Jquery.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Ubiquity\js;
4 
8 
14 class Jquery {
15  private static $codes=array ();
16  private static $condition=NULL;
17  private static $else=NULL;
18  private static $persists=false;
19 
20  private static function _prep_element($element) {
21  if (strrpos($element, 'this') === false && strrpos($element, 'event') === false) {
22  $element='"' . $element . '"';
23  }
24  return $element;
25  }
26 
27  private static function _prep_value($value) {
28  if (is_array($value)) {
29  $array=array_map("Ubiquity\js\self::_prep_value", $value);
30  $value=implode(",", $array);
31  } else if (strrpos($value, 'this') === false && strrpos($value, 'event') === false && is_numeric($value) === false) {
32  $value='"' . $value . '"';
33  }
34  return $value;
35  }
36 
40  private static function addToCodes($code) {
41  $codeObject=new JsCode($code);
42  self::$codes[]=$codeObject;
43  return $codeObject;
44  }
45 
46  private static function addScript($code) {
47  $code="$( document ).ready(function() {\n" . $code . "}\n);";
48  return preg_filter("/(<script[^>]*?>)?(.*)(<\/script>)?/si", "<script>$2 </script>\n", $code, 1);
49  }
50 
51  protected static function _getAjaxUrl($url, $attr) {
52  $url=self::_correctAjaxUrl($url);
53  $retour="url='" . $url . "';\n";
54  $slash="/";
55  if (UString::endsWith($url, "/"))
56  $slash="";
57  if (UString::isNotNull($attr)) {
58  if ($attr == "value")
59  $retour.="url=url+'" . $slash . "'+$(this).val();\n";
60  else if ($attr !== null && $attr !== "")
61  $retour.="url=url+'" . $slash . "'+($(this).attr('" . $attr . "')||'');\n";
62  }
63  return $retour;
64  }
65 
66  protected static function _getResponseElement($responseElement) {
67  if ($responseElement !== "") {
68  $responseElement=self::_prep_value($responseElement);
69  }
70  return $responseElement;
71  }
72 
73  protected static function _correctAjaxUrl($url) {
74  if (UString::endsWith($url, "/"))
75  $url=substr($url, 0, strlen($url) - 1);
76  if (strncmp($url, 'http://', 7) != 0 && strncmp($url, 'https://', 8) != 0) {
77  $url=Startup::getConfig()["siteUrl"] . $url;
78  }
79  return $url;
80  }
81 
82  public static function addParam($parameter, $params) {
83  $params=preg_filter("/[\{]?([^\\}]*)[\}]?/si", "$1", $params, 1);
84  $values=explode(",", $params);
85  $values[]=$parameter;
86  return "{" . implode(",", $values) . "}";
87  }
88 
92  public static function bindToElement($element, $event, $jsCode, $parameters=array()) {
93  $preventDefault=UArray::getDefaultValue($parameters, "preventDefault", true);
94  $stopPropagation=UArray::getDefaultValue($parameters, "stopPropagation", true);
95  $function="function(event){";
96  if ($preventDefault) {
97  $function.="event.preventDefault();";
98  }
99  if ($stopPropagation) {
100  $function.="event.stopPropagation();";
101  }
102  if (isset(self::$condition)) {
103  $jsCode="if(" . self::$condition . "){" . $jsCode . "}";
104  if (isset(self::$else)) {
105  $jsCode.=" else{" . self::$else . "}";
106  }
107  }
108  if (!self::$persists) {
109  self::$condition=NULL;
110  self::$else=NULL;
111  }
112  $function.=$jsCode . "}";
113  return self::addToCodes("$(" . self::_prep_element($element) . ").bind('" . $event . "'," . $function . ");");
114  }
115 
123  public static function executeOn($element, $event, $script, $parameters=array("preventDefault"=>false,"stopPropagation"=>false)) {
124  return self::bindToElement($element, $event, $script, $parameters);
125  }
126 
132  public static function execute($script) {
133  return self::addToCodes($script);
134  }
135 
142  protected static function _ajax($url, $responseElement="", $method="get", $parameters=array()) {
143  $jsCallback=UArray::getDefaultValue($parameters, "jsCallback", null);
144  $attr=UArray::getDefaultValue($parameters, "attr", "id");
145  $params=UArray::getDefaultValue($parameters, "params", "{}");
146 
147  $retour=self::_getAjaxUrl($url, $attr);
148 
149  $retour.="$." . $method . "(url," . $params . ").done(function( data ) {\n";
150  if ($responseElement !== "")
151  $retour.="\t$('" . $responseElement . "').html( data );\n";
152  $retour.="\t" . $jsCallback . "\n
153  });\n";
154  return $retour;
155  }
156 
163  public static function _get($url, $responseElement="", $parameters=array()) {
164  return self::_ajax($url, $responseElement, "get", $parameters);
165  }
166 
173  public static function get($url, $responseElement="", $parameters=array()) {
174  return self::addToCodes(self::_get($url, $responseElement, $parameters));
175  }
176 
183  public static function _post($url, $responseElement="", $parameters=array()) {
184  return self::_ajax($url, $responseElement, "post", $parameters);
185  }
186 
193  public static function post($url, $responseElement="", $parameters=array()) {
194  return self::addToCodes(self::_post($url, $responseElement, $parameters));
195  }
196 
204  public static function _postForm($url, $form, $responseElement, $parameters=array()) {
205  $jsCallback=UArray::getDefaultValue($parameters, "jsCallback", null);
206  $attr=UArray::getDefaultValue($parameters, "attr", "id");
207  $validation=UArray::getDefaultValue($parameters, "validation", false);
208 
209  $retour="url='" . $url . "';\n";
210  if ($attr == "value")
211  $retour.="url=url+'/'+$(this).val();\n";
212  else
213  $retour.="url=url+'/'+$(this).attr('" . $attr . "');\n";
214  $retour.="$.post(url,$(" . $form . ").serialize()).done(function( data ) {\n";
215  if ($responseElement !== "")
216  $retour.="\t$('" . $responseElement . "').html( data );\n";
217  $retour.="\t" . $jsCallback . "\n
218  });\n";
219  if ($validation) {
220  $retour="$('#" . $form . "').validate({submitHandler: function(form) {
221  " . $retour . "
222  }});\n";
223  $retour.="$('#" . $form . "').submit();\n";
224  }
225  return $retour;
226  }
227 
235  public static function postForm($url, $form, $responseElement, $parameters=array()) {
236  return self::addToCodes(self::_postForm($url, $form, $responseElement, $parameters));
237  }
238 
244  public static function _setVal($element, $value, $jsCallback="") {
245  return "$(" . self::_prep_element($element) . ").val(" . $value . ");\n" . $jsCallback;
246  }
247 
253  public static function setVal($element, $value, $jsCallback="") {
254  return self::addToCodes(self::_setVal($element, $value, $jsCallback));
255  }
256 
257  public static function _setHtml($element, $html="", $jsCallback="") {
258  return "$(" . self::_prep_element($element) . ").html('" . $html . "');\n" . $jsCallback;
259  }
260 
266  public static function setHtml($element, $html="", $jsCallback="") {
267  return self::addToCodes(self::_setHtml($element, $html, $jsCallback));
268  }
269 
270  private static function _setAttr($element, $attr, $value="", $jsCallback="") {
271  return "$('" . $element . "').attr('" . $attr . "'," . $value . ");\n" . $jsCallback;
272  }
273 
280  public static function setAttr($element, $attr, $value="", $jsCallback="") {
281  return self::addToCodes(self::_setAttr($element, $attr, $value, $jsCallback));
282  }
283 
291  public static function _doJquery($element, $someThing, $param="", $jsCallback="") {
292  return "$(" . self::_prep_element($element) . ")." . $someThing . "(" . self::_prep_value($param) . ");\n" . $jsCallback;
293  }
294 
302  public static function doJquery($element, $someThing, $param="", $jsCallback="") {
303  return self::addToCodes(self::_doJquery($element, $someThing, $param, $jsCallback));
304  }
305 
315  public static function getOn($event, $element, $url, $responseElement="", $parameters=array()) {
316  return self::bindToElement($element, $event, self::_get($url, $responseElement, $parameters), $parameters);
317  }
318 
328  public static function postOn($event, $element, $url, $responseElement="", $parameters=array()) {
329  return self::bindToElement($element, $event, self::_post($url, $responseElement, $parameters), $parameters);
330  }
331 
342  public static function postFormOn($event, $element, $url, $form, $responseElement="", $parameters=array()) {
343  return self::bindToElement($element, $event, self::_postForm($url, $form, $responseElement, $parameters), $parameters);
344  }
345 
355  public static function setOn($event, $element, $elementToModify, $value="", $parameters=array("preventDefault"=>false,"stopPropagation"=>false)) {
356  $jsCallback=UArray::getDefaultValue($parameters, "jsCallback", null);
357  return self::bindToElement($element, $event, self::_setVal($elementToModify, $value, $jsCallback), $parameters);
358  }
359 
369  public static function setHtmlOn($event, $element, $elementToModify, $value="", $jsCallback="") {
370  return self::bindToElement($element, $event, self::_setHtml($elementToModify, $value, $jsCallback));
371  }
372 
381  public static function doJqueryOn($element, $event, $elementToModify, $someThing, $param="", $jsCallback="") {
382  return self::bindToElement($element, $event, self::_doJquery($elementToModify, $someThing, $param, $jsCallback));
383  }
384 
385  public static function setChecked($elementPrefix, $values) {
386  $retour="";
387  if (is_array($values)) {
388  foreach ( $values as $value ) {
389  $retour.="$('#" . $elementPrefix . $value . "').attr('checked', true);\n";
390  }
391  } else
392  $retour="$('#" . $elementPrefix . "').attr('checked', " . UString::getBooleanStr($values) . ");\n";
393  return self::addToCodes($retour);
394  }
395 
400  public static function compile() {
401  $result="";
402  foreach ( self::$codes as $c ) {
403  $result.=$c->getCode();
404  }
405  return self::addScript($result);
406  }
407 
411  public static function clearCodes() {
412  self::$codes=array ();
413  }
414 
421  public static function startCondition($condition, $else=NULL, $persists=true) {
422  self::$condition=$condition;
423  self::$else=$else;
424  self::$persists=$persists;
425  }
426 
430  public static function endCondition() {
431  self::$condition=NULL;
432  self::$else=NULL;
433  self::$persists=false;
434  }
435 }
static _getResponseElement($responseElement)
Definition: Jquery.php:66
static executeOn($element, $event, $script, $parameters=array("preventDefault"=>false,"stopPropagation"=>false))
Exécute le script passé en paramètre, sur l&#39;évènement $event généré sur $element. ...
Definition: Jquery.php:123
static _getAjaxUrl($url, $attr)
Definition: Jquery.php:51
static clearCodes()
Efface les codes js à exécuter.
Definition: Jquery.php:411
static _setAttr($element, $attr, $value="", $jsCallback="")
Definition: Jquery.php:270
static addParam($parameter, $params)
Definition: Jquery.php:82
static _prep_value($value)
Definition: Jquery.php:27
Utilitaires d&#39;insertion de scripts côté client (JQuery)
Definition: Jquery.php:14
static postOn($event, $element, $url, $responseElement="", $parameters=array())
Effectue un post vers $url sur l&#39;évènement $event de $element en passant les paramètres $params puis ...
Definition: Jquery.php:328
static _postForm($url, $form, $responseElement, $parameters=array())
Effectue un POST d&#39;un formulaire en ajax.
Definition: Jquery.php:204
static compile()
Retourne l&#39;ensemble du code js à exécuter, entouré des balises script.
Definition: Jquery.php:400
static doJqueryOn($element, $event, $elementToModify, $someThing, $param="", $jsCallback="")
Appelle la méthode JQuery $someThing sur $elementToModify avec passage éventuel du paramètre $param...
Definition: Jquery.php:381
static setVal($element, $value, $jsCallback="")
Affecte une valeur à un élément HTML.
Definition: Jquery.php:253
static _post($url, $responseElement="", $parameters=array())
Effectue un POST en ajax.
Definition: Jquery.php:183
static setHtmlOn($event, $element, $elementToModify, $value="", $jsCallback="")
Modifie la valeur de $elementToModify et lui affecte $valeur sur l&#39;évènement $event de $element...
Definition: Jquery.php:369
static getDefaultValue($array, $key, $default)
Definition: UArray.php:20
static addToCodes($code)
Ajoute $code à la liste des codes à exécuter.
Definition: Jquery.php:40
static addScript($code)
Definition: Jquery.php:46
static setHtml($element, $html="", $jsCallback="")
Affecte du html à un élément.
Definition: Jquery.php:266
static post($url, $responseElement="", $parameters=array())
Effectue un POST en ajax.
Definition: Jquery.php:193
static postFormOn($event, $element, $url, $form, $responseElement="", $parameters=array())
Effectue un post vers $url sur l&#39;évènement $event de $element en passant les paramètres du formulaire...
Definition: Jquery.php:342
static setChecked($elementPrefix, $values)
Definition: Jquery.php:385
static _prep_element($element)
Definition: Jquery.php:20
static doJquery($element, $someThing, $param="", $jsCallback="")
Appelle la méthode JQuery $someThing sur $element avec passage éventuel du paramètre $param...
Definition: Jquery.php:302
static _setHtml($element, $html="", $jsCallback="")
Definition: Jquery.php:257
static getOn($event, $element, $url, $responseElement="", $parameters=array())
Effectue un get vers $url sur l&#39;évènement $event de $element en passant les paramètres $params puis a...
Definition: Jquery.php:315
static _doJquery($element, $someThing, $param="", $jsCallback="")
Appelle la méthode JQuery $someThing sur $element avec passage éventuel du paramètre $param...
Definition: Jquery.php:291
static $condition
Definition: Jquery.php:16
static setAttr($element, $attr, $value="", $jsCallback="")
Modifie l&#39;attribut $attr d&#39;un élément html.
Definition: Jquery.php:280
static _ajax($url, $responseElement="", $method="get", $parameters=array())
Effectue une requête en ajax (POST ou GET)
Definition: Jquery.php:142
static _get($url, $responseElement="", $parameters=array())
Effectue un GET en ajax.
Definition: Jquery.php:163
Code javascript.
Definition: JsCode.php:10
static getBooleanStr($value)
Definition: UString.php:20
static _correctAjaxUrl($url)
Definition: Jquery.php:73
static $persists
Definition: Jquery.php:18
static setOn($event, $element, $elementToModify, $value="", $parameters=array("preventDefault"=>false,"stopPropagation"=>false))
Modifie la valeur de $elementToModify et lui affecte $valeur sur l&#39;évènement $event de $element...
Definition: Jquery.php:355
static endCondition()
Désactive une condition activée avec l&#39;option $persists à true.
Definition: Jquery.php:430
static bindToElement($element, $event, $jsCode, $parameters=array())
Associe du code javascript à exécuter sur l&#39;évènement $event d&#39;un élément DOM $element.
Definition: Jquery.php:92
static postForm($url, $form, $responseElement, $parameters=array())
Effectue un POST d&#39;un formulaire en ajax.
Definition: Jquery.php:235
static startCondition($condition, $else=NULL, $persists=true)
Pose une condition sur l&#39;exécution du code associé à des évènements.
Definition: Jquery.php:421
static execute($script)
Exécute le script passé en paramètre.
Definition: Jquery.php:132
static _setVal($element, $value, $jsCallback="")
Affecte une valeur à un élément HTML.
Definition: Jquery.php:244