phpMv  -UI toolkit 2.4.12
jQuery, jQuery UI, Twitter Bootstrap and Semantic-UI library for php & php MVC Frameworks
SimpleComponent.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Ajax\common\components;
4 
5 
6 use Ajax\JsUtils;
13 abstract class SimpleComponent extends BaseComponent {
14  protected $attachTo;
15  protected $itemSelector;
16  protected $uiName;
17  protected $events;
18 
19  public function __construct(JsUtils $js=NULL) {
20  parent::__construct($js);
21  $this->events=array ();
22  }
23 
24  protected function compileEvents() {
25  foreach ( $this->events as $event => $jsCode ) {
27  if($event=="execute"){
28  $this->jquery_code_for_compile []=$jsCode;
29  }else if($event=="beforeExecute"){
30  \array_unshift($this->jquery_code_for_compile, $jsCode);
31  }else{
32  $selector=$this->_createSelector($itemSelector, $this->attachTo);
33  $this->jquery_code_for_compile []="$( \"".$selector."\" ).on(\"".$event."\" , function( event, data ) {".$jsCode."});";
34  }
35  }
36  }
37 
38  protected function _createSelector($itemSelector,$selector){
39  if(!isset($itemSelector))
41  if(isset($itemSelector) && $itemSelector!=="")
42  $selector.=" ".$itemSelector;
43  return $selector;
44  }
45 
46  protected function compileJQueryCode() {
47  $result=implode("\n", $this->jquery_code_for_compile);
48  $result=str_ireplace("\"%", "", $result);
49  $result=str_ireplace("%\"", "", $result);
50  $result=str_replace(array (
51  "\\n",
52  "\\r",
53  "\\t"
54  ), '', $result);
55  return $result;
56  }
57 
58  public function getScript() {
59  $allParams=$this->params;
60  $this->jquery_code_for_compile=array ();
61  $this->jquery_code_for_compile []="$( \"".$this->attachTo."\" ).{$this->uiName}(".$this->getParamsAsJSON($allParams).");";
62  $this->compileEvents();
63  return $this->compileJQueryCode();
64  }
65 
70  public function attach($identifier) {
71  $this->attachTo=$identifier;
72  }
73 
74  public function addEvent($event, $jsCode) {
75  return $this->setParam($event, "%function( event, ui ) {".$jsCode."}%");
76  }
77 
78  public function on($event, $jsCode) {
79  $this->events [$event]=$jsCode;
80  return $this;
81  }
82 
83  protected function setParamCtrl($key, $value, $typeCtrl) {
84  if (\is_array($typeCtrl)) {
85  if (array_search($value, $typeCtrl)===false)
86  throw new \Exception("La valeur passée a propriété `".$key."` pour le composant `".$this->uiName."` ne fait pas partie des valeurs possibles : {".implode(",", $typeCtrl)."}");
87  } else {
88  if (!$typeCtrl($value)) {
89  throw new \Exception("La fonction ".$typeCtrl." a retourné faux pour l'affectation de la propriété ".$key." au composant ".$this->uiName);
90  }
91  }
92  return $this->setParam($key, $value);
93  }
94 
95  public function getAttachTo() {
96  return $this->attachTo;
97  }
98 
99  public function getItemSelector() {
100  return $this->itemSelector;
101  }
102 
103  public function setItemSelector($itemSelector) {
104  $this->itemSelector=$itemSelector;
105  return $this;
106  }
107 
108 }
static getValueBetween(&$str, $before="{{", $after="}}")
Definition: JString.php:57
Base component for JQuery UI visuals components.
Base component for JQuery UI visuals components.
JQuery PHP library.
Definition: JsUtils.php:23
_createSelector($itemSelector, $selector)
setParamCtrl($key, $value, $typeCtrl)