Completed
Push — master ( 772d83...24138a )
by Jean-Christophe
10:15
created
Ajax/semantic/widgets/datatable/DataTable.php 1 patch
Spacing   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -34,33 +34,33 @@  discard block
 block discarded – undo
34 34
 	protected $_visibleHover=false;
35 35
 	protected $_targetSelector;
36 36
 
37
-	public function __construct($identifier,$model,$modelInstance=NULL) {
38
-		parent::__construct($identifier, $model,$modelInstance);
39
-		$this->_init(new InstanceViewer($identifier), "table", new HtmlTable($identifier, 0,0), false);
37
+	public function __construct($identifier, $model, $modelInstance=NULL) {
38
+		parent::__construct($identifier, $model, $modelInstance);
39
+		$this->_init(new InstanceViewer($identifier), "table", new HtmlTable($identifier, 0, 0), false);
40 40
 		$this->_urls=[];
41 41
 	}
42 42
 
43
-	public function run(JsUtils $js){
44
-		if($this->_hasCheckboxes && isset($js)){
43
+	public function run(JsUtils $js) {
44
+		if ($this->_hasCheckboxes && isset($js)) {
45 45
 			$js->execOn("change", "#".$this->identifier." [name='selection[]']", "
46 46
 					var \$parentCheckbox=\$('#ck-main-ck-{$this->identifier}'),\$checkbox=\$('#{$this->identifier} [name=\"selection[]\"]'),allChecked=true,allUnchecked=true;
47 47
 					\$checkbox.each(function() {if($(this).prop('checked')){allUnchecked = false;}else{allChecked = false;}});
48 48
 					if(allChecked) {\$parentCheckbox.checkbox('set checked');}else if(allUnchecked){\$parentCheckbox.checkbox('set unchecked');}else{\$parentCheckbox.checkbox('set indeterminate');}");
49 49
 		}
50
-		if($this->_visibleHover){
51
-			$js->execOn("mouseover", "#".$this->identifier." tr", "$(event.target).closest('tr').find('.visibleover').css('visibility', 'visible');",["preventDefault"=>false,"stopPropagation"=>true]);
52
-			$js->execOn("mouseout", "#".$this->identifier." tr", "$(event.target).closest('tr').find('.visibleover').css('visibility', 'hidden');",["preventDefault"=>false,"stopPropagation"=>true]);
50
+		if ($this->_visibleHover) {
51
+			$js->execOn("mouseover", "#".$this->identifier." tr", "$(event.target).closest('tr').find('.visibleover').css('visibility', 'visible');", ["preventDefault"=>false, "stopPropagation"=>true]);
52
+			$js->execOn("mouseout", "#".$this->identifier." tr", "$(event.target).closest('tr').find('.visibleover').css('visibility', 'hidden');", ["preventDefault"=>false, "stopPropagation"=>true]);
53 53
 		}
54
-		if($this->_hasDelete)
54
+		if ($this->_hasDelete)
55 55
 			$this->_generateBehavior("delete", $js);
56
-		if($this->_hasEdit)
56
+		if ($this->_hasEdit)
57 57
 			$this->_generateBehavior("edit", $js);
58 58
 		return parent::run($js);
59 59
 	}
60 60
 
61
-	protected function _generateBehavior($op,JsUtils $js){
62
-		if(isset($this->_urls[$op]))
63
-			$js->getOnClick("#".$this->identifier." .".$op, $this->_urls[$op],$this->getTargetSelector(),["preventDefault"=>false,"attr"=>"data-ajax"]);
61
+	protected function _generateBehavior($op, JsUtils $js) {
62
+		if (isset($this->_urls[$op]))
63
+			$js->getOnClick("#".$this->identifier." .".$op, $this->_urls[$op], $this->getTargetSelector(), ["preventDefault"=>false, "attr"=>"data-ajax"]);
64 64
 	}
65 65
 
66 66
 	/**
@@ -72,67 +72,67 @@  discard block
 block discarded – undo
72 72
 	}
73 73
 
74 74
 
75
-	public function compile(JsUtils $js=NULL,&$view=NULL){
76
-		if(!$this->_generated){
75
+	public function compile(JsUtils $js=NULL, &$view=NULL) {
76
+		if (!$this->_generated) {
77 77
 			$this->_instanceViewer->setInstance($this->_model);
78 78
 			$captions=$this->_instanceViewer->getCaptions();
79 79
 
80 80
 			$table=$this->content["table"];
81 81
 
82
-			if($this->_hasCheckboxes){
82
+			if ($this->_hasCheckboxes) {
83 83
 				$this->_generateMainCheckbox($captions);
84 84
 			}
85 85
 
86 86
 			$table->setRowCount(0, \sizeof($captions));
87 87
 			$table->setHeaderValues($captions);
88
-			if(isset($this->_compileParts))
88
+			if (isset($this->_compileParts))
89 89
 				$table->setCompileParts($this->_compileParts);
90 90
 
91
-			if(isset($this->_searchField) && isset($js)){
92
-				if(isset($this->_urls["refresh"]))
93
-					$this->_searchField->postOn("change", $this->_urls["refresh"],"{'s':$(this).val()}","#".$this->identifier." tbody",["preventDefault"=>false,"jqueryDone"=>"replaceWith"]);
91
+			if (isset($this->_searchField) && isset($js)) {
92
+				if (isset($this->_urls["refresh"]))
93
+					$this->_searchField->postOn("change", $this->_urls["refresh"], "{'s':$(this).val()}", "#".$this->identifier." tbody", ["preventDefault"=>false, "jqueryDone"=>"replaceWith"]);
94 94
 			}
95 95
 
96 96
 			$this->_generateContent($table);
97 97
 
98
-			if($this->_hasCheckboxes && $table->hasPart("thead")){
99
-					$table->getHeader()->getCell(0, 0)->addToProperty("class","no-sort");
98
+			if ($this->_hasCheckboxes && $table->hasPart("thead")) {
99
+					$table->getHeader()->getCell(0, 0)->addToProperty("class", "no-sort");
100 100
 			}
101 101
 
102
-			if(isset($this->_pagination) && $this->_pagination->getVisible()){
102
+			if (isset($this->_pagination) && $this->_pagination->getVisible()) {
103 103
 				$this->_generatePagination($table);
104 104
 			}
105
-			if(isset($this->_toolbar)){
105
+			if (isset($this->_toolbar)) {
106 106
 				$this->_setToolbarPosition($table, $captions);
107 107
 			}
108
-			$this->content=JArray::sortAssociative($this->content, [PositionInTable::BEFORETABLE,"table",PositionInTable::AFTERTABLE]);
108
+			$this->content=JArray::sortAssociative($this->content, [PositionInTable::BEFORETABLE, "table", PositionInTable::AFTERTABLE]);
109 109
 			$this->_compileForm();
110 110
 			$this->_generated=true;
111 111
 		}
112
-		return parent::compile($js,$view);
112
+		return parent::compile($js, $view);
113 113
 	}
114 114
 
115
-	private function _generateMainCheckbox(&$captions){
116
-		$ck=new HtmlCheckbox("main-ck-".$this->identifier,"");
115
+	private function _generateMainCheckbox(&$captions) {
116
+		$ck=new HtmlCheckbox("main-ck-".$this->identifier, "");
117 117
 		$ck->setOnChecked("$('#".$this->identifier." [name=%quote%selection[]%quote%]').prop('checked',true);");
118 118
 		$ck->setOnUnchecked("$('#".$this->identifier." [name=%quote%selection[]%quote%]').prop('checked',false);");
119 119
 		\array_unshift($captions, $ck);
120 120
 	}
121 121
 
122
-	protected function _generateContent($table){
122
+	protected function _generateContent($table) {
123 123
 		$objects=$this->_modelInstance;
124
-		if(isset($this->_pagination)){
124
+		if (isset($this->_pagination)) {
125 125
 			$objects=$this->_pagination->getObjects($this->_modelInstance);
126 126
 		}
127 127
 		InstanceViewer::setIndex(0);
128 128
 		$table->fromDatabaseObjects($objects, function($instance) use($table){
129 129
 			$this->_instanceViewer->setInstance($instance);
130 130
 			InstanceViewer::$index++;
131
-			$values= $this->_instanceViewer->getValues();
132
-			if($this->_hasCheckboxes){
133
-				$ck=new HtmlCheckbox("ck-".$this->identifier,"");
131
+			$values=$this->_instanceViewer->getValues();
132
+			if ($this->_hasCheckboxes) {
133
+				$ck=new HtmlCheckbox("ck-".$this->identifier, "");
134 134
 				$field=$ck->getField();
135
-				$field->setProperty("value",$this->_instanceViewer->getIdentifier());
135
+				$field->setProperty("value", $this->_instanceViewer->getIdentifier());
136 136
 				$field->setProperty("name", "selection[]");
137 137
 				\array_unshift($values, $ck);
138 138
 			}
@@ -143,37 +143,37 @@  discard block
 block discarded – undo
143 143
 		});
144 144
 	}
145 145
 
146
-	private function _generatePagination($table){
146
+	private function _generatePagination($table) {
147 147
 		$footer=$table->getFooter();
148 148
 		$footer->mergeCol();
149
-		$menu=new HtmlPaginationMenu("pagination-".$this->identifier,$this->_pagination->getPagesNumbers());
149
+		$menu=new HtmlPaginationMenu("pagination-".$this->identifier, $this->_pagination->getPagesNumbers());
150 150
 		$menu->floatRight();
151 151
 		$menu->setActiveItem($this->_pagination->getPage()-1);
152 152
 		$footer->setValues($menu);
153
-		if(isset($this->_urls["refresh"]))
154
-			$menu->postOnClick($this->_urls["refresh"],"{'p':$(this).attr('data-page')}","#".$this->identifier." tbody",["preventDefault"=>false,"jqueryDone"=>"replaceWith"]);
153
+		if (isset($this->_urls["refresh"]))
154
+			$menu->postOnClick($this->_urls["refresh"], "{'p':$(this).attr('data-page')}", "#".$this->identifier." tbody", ["preventDefault"=>false, "jqueryDone"=>"replaceWith"]);
155 155
 	}
156 156
 
157
-	protected function _getFieldName($index){
157
+	protected function _getFieldName($index) {
158 158
 		return parent::_getFieldName($index)."[]";
159 159
 	}
160 160
 
161
-	protected function _getFieldCaption($index){
161
+	protected function _getFieldCaption($index) {
162 162
 		return null;
163 163
 	}
164 164
 
165
-	protected function _setToolbarPosition($table,$captions=NULL){
166
-		switch ($this->_toolbarPosition){
165
+	protected function _setToolbarPosition($table, $captions=NULL) {
166
+		switch ($this->_toolbarPosition) {
167 167
 			case PositionInTable::BEFORETABLE:
168 168
 			case PositionInTable::AFTERTABLE:
169
-				if(isset($this->_compileParts)===false){
169
+				if (isset($this->_compileParts)===false) {
170 170
 					$this->content[$this->_toolbarPosition]=$this->_toolbar;
171 171
 				}
172 172
 				break;
173 173
 			case PositionInTable::HEADER:
174 174
 			case PositionInTable::FOOTER:
175 175
 			case PositionInTable::BODY:
176
-				$this->addToolbarRow($this->_toolbarPosition,$table, $captions);
176
+				$this->addToolbarRow($this->_toolbarPosition, $table, $captions);
177 177
 				break;
178 178
 		}
179 179
 	}
@@ -185,23 +185,23 @@  discard block
 block discarded – undo
185 185
 	 * @param callable $callback function called after the field compilation
186 186
 	 * @return \Ajax\semantic\widgets\datatable\DataTable
187 187
 	 */
188
-	public function afterCompile($index,$callback){
189
-		$this->_instanceViewer->afterCompile($index,$callback);
188
+	public function afterCompile($index, $callback) {
189
+		$this->_instanceViewer->afterCompile($index, $callback);
190 190
 		return $this;
191 191
 	}
192 192
 
193
-	private function addToolbarRow($part,$table,$captions){
193
+	private function addToolbarRow($part, $table, $captions) {
194 194
 		$hasPart=$table->hasPart($part);
195
-		if($hasPart){
195
+		if ($hasPart) {
196 196
 			$row=$table->getPart($part)->addRow(\sizeof($captions));
197
-		}else{
197
+		} else {
198 198
 			$row=$table->getPart($part)->getRow(0);
199 199
 		}
200 200
 		$row->mergeCol();
201 201
 		$row->setValues([$this->_toolbar]);
202 202
 	}
203 203
 
204
-	public function getHtmlComponent(){
204
+	public function getHtmlComponent() {
205 205
 		return $this->content["table"];
206 206
 	}
207 207
 
@@ -215,18 +215,18 @@  discard block
 block discarded – undo
215 215
 	 * @return \Ajax\semantic\widgets\datatable\DataTable
216 216
 	 */
217 217
 	public function setUrls($urls) {
218
-		if(\is_array($urls)){
219
-			$this->_urls["refresh"]=JArray::getValue($urls, "refresh",0);
220
-			$this->_urls["edit"]=JArray::getValue($urls, "edit",1);
221
-			$this->_urls["delete"]=JArray::getValue($urls, "delete",2);
222
-		}else{
223
-			$this->_urls=["refresh"=>$urls,"edit"=>$urls,"delete"=>$urls];
218
+		if (\is_array($urls)) {
219
+			$this->_urls["refresh"]=JArray::getValue($urls, "refresh", 0);
220
+			$this->_urls["edit"]=JArray::getValue($urls, "edit", 1);
221
+			$this->_urls["delete"]=JArray::getValue($urls, "delete", 2);
222
+		} else {
223
+			$this->_urls=["refresh"=>$urls, "edit"=>$urls, "delete"=>$urls];
224 224
 		}
225 225
 		return $this;
226 226
 	}
227 227
 
228
-	public function paginate($items_per_page=10,$page=1){
229
-		$this->_pagination=new Pagination($items_per_page,4,$page);
228
+	public function paginate($items_per_page=10, $page=1) {
229
+		$this->_pagination=new Pagination($items_per_page, 4, $page);
230 230
 	}
231 231
 
232 232
 	public function getHasCheckboxes() {
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
 		return $this;
239 239
 	}
240 240
 
241
-	public function refresh($compileParts=["tbody"]){
241
+	public function refresh($compileParts=["tbody"]) {
242 242
 		$this->_compileParts=$compileParts;
243 243
 		return $this;
244 244
 	}
@@ -248,8 +248,8 @@  discard block
 block discarded – undo
248 248
 	 * @param boolean $visibleHover
249 249
 	 * @return callable
250 250
 	 */
251
-	private function getFieldButtonCallable($caption,$visibleHover=true,$callback=null){
252
-		return $this->getCallable("getFieldButton",[$caption,$visibleHover],$callback);
251
+	private function getFieldButtonCallable($caption, $visibleHover=true, $callback=null) {
252
+		return $this->getCallable("getFieldButton", [$caption, $visibleHover], $callback);
253 253
 	}
254 254
 
255 255
 	/**
@@ -258,19 +258,19 @@  discard block
 block discarded – undo
258 258
 	 * @param callable $callback
259 259
 	 * @return callable
260 260
 	 */
261
-	private function getCallable($thisCallback,$parameters,$callback=null){
262
-		$result=function($instance) use($thisCallback,$parameters,$callback){
263
-			$object=call_user_func_array(array($this,$thisCallback), $parameters);
264
-			if(isset($callback)){
265
-				if(\is_callable($callback)){
266
-					$callback($object,$instance);
261
+	private function getCallable($thisCallback, $parameters, $callback=null) {
262
+		$result=function($instance) use($thisCallback, $parameters, $callback){
263
+			$object=call_user_func_array(array($this, $thisCallback), $parameters);
264
+			if (isset($callback)) {
265
+				if (\is_callable($callback)) {
266
+					$callback($object, $instance);
267 267
 				}
268 268
 			}
269
-			if($object instanceof HtmlSemDoubleElement){
270
-				$object->setProperty("data-ajax",$this->_instanceViewer->getIdentifier());
271
-				if($object->propertyContains("class","visibleover")){
269
+			if ($object instanceof HtmlSemDoubleElement) {
270
+				$object->setProperty("data-ajax", $this->_instanceViewer->getIdentifier());
271
+				if ($object->propertyContains("class", "visibleover")) {
272 272
 					$this->_visibleHover=true;
273
-					$object->setProperty("style","visibility:hidden;");
273
+					$object->setProperty("style", "visibility:hidden;");
274 274
 				}
275 275
 			}
276 276
 			return $object;
@@ -282,9 +282,9 @@  discard block
 block discarded – undo
282 282
 	 * @param string $caption
283 283
 	 * @return HtmlButton
284 284
 	 */
285
-	private function getFieldButton($caption,$visibleHover=true){
286
-		$bt= new HtmlButton("",$caption);
287
-		if($visibleHover)
285
+	private function getFieldButton($caption, $visibleHover=true) {
286
+		$bt=new HtmlButton("", $caption);
287
+		if ($visibleHover)
288 288
 			$this->_visibleOver($bt);
289 289
 		return $bt;
290 290
 	}
@@ -296,8 +296,8 @@  discard block
 block discarded – undo
296 296
 	 * @param boolean $visibleHover
297 297
 	 * @return \Ajax\semantic\widgets\datatable\DataTable
298 298
 	 */
299
-	public function addFieldButton($caption,$visibleHover=true,$callback=null){
300
-		$this->addField($this->getCallable("getFieldButton",[$caption,$visibleHover],$callback));
299
+	public function addFieldButton($caption, $visibleHover=true, $callback=null) {
300
+		$this->addField($this->getCallable("getFieldButton", [$caption, $visibleHover], $callback));
301 301
 		return $this;
302 302
 	}
303 303
 
@@ -308,8 +308,8 @@  discard block
 block discarded – undo
308 308
 	 * @param callable $callback
309 309
 	 * @return \Ajax\semantic\widgets\datatable\DataTable
310 310
 	 */
311
-	public function insertFieldButton($index,$caption,$visibleHover=true,$callback=null){
312
-		$this->insertField($index, $this->getFieldButtonCallable($caption,$visibleHover,$callback));
311
+	public function insertFieldButton($index, $caption, $visibleHover=true, $callback=null) {
312
+		$this->insertField($index, $this->getFieldButtonCallable($caption, $visibleHover, $callback));
313 313
 		return $this;
314 314
 	}
315 315
 
@@ -320,64 +320,64 @@  discard block
 block discarded – undo
320 320
 	 * @param callable $callback
321 321
 	 * @return \Ajax\semantic\widgets\datatable\DataTable
322 322
 	 */
323
-	public function insertInFieldButton($index,$caption,$visibleHover=true,$callback=null){
324
-		$this->insertInField($index, $this->getFieldButtonCallable($caption,$visibleHover,$callback));
323
+	public function insertInFieldButton($index, $caption, $visibleHover=true, $callback=null) {
324
+		$this->insertInField($index, $this->getFieldButtonCallable($caption, $visibleHover, $callback));
325 325
 		return $this;
326 326
 	}
327 327
 
328
-	private function addDefaultButton($icon,$class=null,$visibleHover=true,$callback=null){
329
-		$this->addField($this->getCallable("getDefaultButton",[$icon,$class,$visibleHover],$callback));
328
+	private function addDefaultButton($icon, $class=null, $visibleHover=true, $callback=null) {
329
+		$this->addField($this->getCallable("getDefaultButton", [$icon, $class, $visibleHover], $callback));
330 330
 		return $this;
331 331
 	}
332 332
 
333
-	private function insertDefaultButtonIn($index,$icon,$class=null,$visibleHover=true,$callback=null){
334
-		$this->insertInField($index,$this->getCallable("getDefaultButton",[$icon,$class,$visibleHover],$callback));
333
+	private function insertDefaultButtonIn($index, $icon, $class=null, $visibleHover=true, $callback=null) {
334
+		$this->insertInField($index, $this->getCallable("getDefaultButton", [$icon, $class, $visibleHover], $callback));
335 335
 		return $this;
336 336
 	}
337 337
 
338
-	private function getDefaultButton($icon,$class=null,$visibleHover=true){
339
-		$bt=$this->getFieldButton("",$visibleHover);
338
+	private function getDefaultButton($icon, $class=null, $visibleHover=true) {
339
+		$bt=$this->getFieldButton("", $visibleHover);
340 340
 		$bt->asIcon($icon);
341
-		if(isset($class))
341
+		if (isset($class))
342 342
 			$bt->addToProperty("class", $class);
343 343
 		return $bt;
344 344
 	}
345 345
 
346
-	public function addDeleteButton($visibleHover=true,$generateBehavior=true,$callback=null){
346
+	public function addDeleteButton($visibleHover=true, $generateBehavior=true, $callback=null) {
347 347
 		$this->_hasDelete=$generateBehavior;
348
-		return $this->addDefaultButton("remove","delete red basic",$visibleHover,$callback);
348
+		return $this->addDefaultButton("remove", "delete red basic", $visibleHover, $callback);
349 349
 	}
350 350
 
351
-	public function addEditButton($visibleHover=true,$generateBehavior=true,$callback=null){
351
+	public function addEditButton($visibleHover=true, $generateBehavior=true, $callback=null) {
352 352
 		$this->_hasEdit=$generateBehavior;
353
-		return $this->addDefaultButton("edit","edit basic",$visibleHover,$callback);
353
+		return $this->addDefaultButton("edit", "edit basic", $visibleHover, $callback);
354 354
 	}
355 355
 
356
-	public function addEditDeleteButtons($visibleHover=true,$generateBehavior=true,$callbackEdit=null,$callbackDelete=null){
357
-		$this->addEditButton($visibleHover,$generateBehavior,$callbackEdit);
356
+	public function addEditDeleteButtons($visibleHover=true, $generateBehavior=true, $callbackEdit=null, $callbackDelete=null) {
357
+		$this->addEditButton($visibleHover, $generateBehavior, $callbackEdit);
358 358
 		$index=$this->_instanceViewer->visiblePropertiesCount()-1;
359
-		$this->insertDeleteButtonIn($index,$visibleHover,$generateBehavior,$callbackDelete);
359
+		$this->insertDeleteButtonIn($index, $visibleHover, $generateBehavior, $callbackDelete);
360 360
 		return $this;
361 361
 	}
362 362
 
363
-	public function insertDeleteButtonIn($index,$visibleHover=true,$generateBehavior=true,$callback=null){
363
+	public function insertDeleteButtonIn($index, $visibleHover=true, $generateBehavior=true, $callback=null) {
364 364
 		$this->_hasDelete=$generateBehavior;
365
-		return $this->insertDefaultButtonIn($index,"remove","delete red basic",$visibleHover,$callback);
365
+		return $this->insertDefaultButtonIn($index, "remove", "delete red basic", $visibleHover, $callback);
366 366
 	}
367 367
 
368
-	public function insertEditButtonIn($index,$visibleHover=true,$generateBehavior=true,$callback=null){
368
+	public function insertEditButtonIn($index, $visibleHover=true, $generateBehavior=true, $callback=null) {
369 369
 		$this->_hasEdit=$generateBehavior;
370
-		return $this->insertDefaultButtonIn($index,"edit","edit basic",$visibleHover,$callback);
370
+		return $this->insertDefaultButtonIn($index, "edit", "edit basic", $visibleHover, $callback);
371 371
 	}
372 372
 
373
-	public function addSearchInToolbar($position=Direction::RIGHT){
373
+	public function addSearchInToolbar($position=Direction::RIGHT) {
374 374
 		return $this->addInToolbar($this->getSearchField())->setPosition($position);
375 375
 	}
376 376
 
377
-	public function getSearchField(){
378
-		if(isset($this->_searchField)===false){
379
-			$this->_searchField=new HtmlInput("search-".$this->identifier,"search","","Search...");
380
-			$this->_searchField->addIcon("search",Direction::RIGHT);
377
+	public function getSearchField() {
378
+		if (isset($this->_searchField)===false) {
379
+			$this->_searchField=new HtmlInput("search-".$this->identifier, "search", "", "Search...");
380
+			$this->_searchField->addIcon("search", Direction::RIGHT);
381 381
 		}
382 382
 		return $this->_searchField;
383 383
 	}
@@ -393,7 +393,7 @@  discard block
 block discarded – undo
393 393
 		return $this;
394 394
 	}
395 395
 
396
-	public function asForm(){
396
+	public function asForm() {
397 397
 		return $this->getForm();
398 398
 	}
399 399
 
@@ -406,24 +406,24 @@  discard block
 block discarded – undo
406 406
 	 * @param array $attributes
407 407
 	 * @return \Ajax\semantic\widgets\datatable\DataTable
408 408
 	 */
409
-	public function fieldAsSubmit($index,$cssStyle=NULL,$url=NULL,$responseElement=NULL,$attributes=NULL){
410
-		return $this->_fieldAs(function($id,$name,$value,$caption) use ($url,$responseElement,$cssStyle,$index,$attributes){
411
-			$button=new HtmlButton($id,$value,$cssStyle);
412
-			$button->postOnClick($url,"$(event.target).closest('tr').find(':input').serialize()",$responseElement,$attributes["ajax"]);
413
-			if(!isset($attributes["visibleHover"]) || $attributes["visibleHover"])
409
+	public function fieldAsSubmit($index, $cssStyle=NULL, $url=NULL, $responseElement=NULL, $attributes=NULL) {
410
+		return $this->_fieldAs(function($id, $name, $value, $caption) use ($url, $responseElement, $cssStyle, $index, $attributes){
411
+			$button=new HtmlButton($id, $value, $cssStyle);
412
+			$button->postOnClick($url, "$(event.target).closest('tr').find(':input').serialize()", $responseElement, $attributes["ajax"]);
413
+			if (!isset($attributes["visibleHover"]) || $attributes["visibleHover"])
414 414
 				$this->_visibleOver($button);
415 415
 			return $button;
416
-		}, $index,$attributes);
416
+		}, $index, $attributes);
417 417
 	}
418 418
 
419
-	protected function _visibleOver($element){
419
+	protected function _visibleOver($element) {
420 420
 		$this->_visibleHover=true;
421
-		return $element->addToProperty("class", "visibleover")->setProperty("style","visibility:hidden;");
421
+		return $element->addToProperty("class", "visibleover")->setProperty("style", "visibility:hidden;");
422 422
 	}
423 423
 
424 424
 	protected function getTargetSelector() {
425 425
 		$result=$this->_targetSelector;
426
-		if(!isset($result))
426
+		if (!isset($result))
427 427
 			$result="#".$this->identifier;
428 428
 		return $result;
429 429
 	}
Please login to merge, or discard this patch.