Skip to content

Commit b6875a9

Browse files
committed
documentation + defaultValueFunction
1 parent 3c0bc3b commit b6875a9

File tree

5 files changed

+85
-27
lines changed

5 files changed

+85
-27
lines changed

Ajax/common/Widget.php

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,13 +148,24 @@ public function addInToolbar($element,$callback=NULL){
148148
return $tb->addItem($element);
149149
}
150150

151+
/**
152+
* @param string $caption
153+
* @param string $icon
154+
* @param callable $callback function($element)
155+
* @return \Ajax\common\html\HtmlDoubleElement
156+
*/
151157
public function addItemInToolbar($caption,$icon=NULL,$callback=NULL){
152158
$result=$this->addInToolbar($caption,$callback);
153159
if(isset($icon))
154160
$result->addIcon($icon);
155161
return $result;
156162
}
157163

164+
/**
165+
* @param array $items
166+
* @param callable $callback function($element)
167+
* @return \Ajax\common\Widget
168+
*/
158169
public function addItemsInToolbar(array $items,$callback=NULL){
159170
if(JArray::isAssociative($items)){
160171
foreach ($items as $icon=>$item){
@@ -168,6 +179,12 @@ public function addItemsInToolbar(array $items,$callback=NULL){
168179
return $this;
169180
}
170181

182+
/**
183+
* @param string $value
184+
* @param array|NULL $items
185+
* @param callable $callback function($element)
186+
* @return \Ajax\common\html\HtmlDoubleElement
187+
*/
171188
public function addDropdownInToolbar($value,$items=NULL,$callback=NULL){
172189
$dd=$value;
173190
if (\is_string($value)) {
@@ -176,16 +193,34 @@ public function addDropdownInToolbar($value,$items=NULL,$callback=NULL){
176193
return $this->addInToolbar($dd,$callback);
177194
}
178195

196+
/**
197+
* @param unknown $caption
198+
* @param callable $callback function($element)
199+
* @return \Ajax\common\html\HtmlDoubleElement
200+
*/
179201
public function addButtonInToolbar($caption,$callback=NULL){
180202
$bt=new HtmlButton("",$caption);
181203
return $this->addInToolbar($bt,$callback);
182204
}
183205

206+
/**
207+
* @param array $captions
208+
* @param boolean $asIcon
209+
* @param callable $callback function($element)
210+
* @return \Ajax\common\html\HtmlDoubleElement
211+
*/
184212
public function addButtonsInToolbar(array $captions,$asIcon=false,$callback=NULL){
185213
$bts=new HtmlButtonGroups("",$captions,$asIcon);
186214
return $this->addInToolbar($bts,$callback);
187215
}
188216

217+
/**
218+
* @param string $caption
219+
* @param string $icon
220+
* @param boolean $before
221+
* @param boolean $labeled
222+
* @return \Ajax\common\html\HtmlDoubleElement
223+
*/
189224
public function addLabelledIconButtonInToolbar($caption,$icon,$before=true,$labeled=false){
190225
$bt=new HtmlButton("",$caption);
191226
$bt->addIcon($icon,$before,$labeled);
@@ -203,9 +238,24 @@ public function setCaptionCallback($captionCallback) {
203238
return $this;
204239
}
205240

206-
public function setEdition($_edition) {
241+
/**
242+
* Makes the input fields editable
243+
* @param boolean $_edition
244+
* @return \Ajax\common\Widget
245+
*/
246+
public function setEdition($_edition=true) {
207247
$this->_edition=$_edition;
208248
return $this;
209249
}
210250

251+
/**
252+
* Defines the default function which displays fields value
253+
* @param callable $defaultValueFunction
254+
* @return \Ajax\common\Widget
255+
*/
256+
public function setDefaultValueFunction($defaultValueFunction){
257+
$this->_instanceViewer->setDefaultValueFunction($defaultValueFunction);
258+
return $this;
259+
}
260+
211261
}

Ajax/semantic/widgets/base/FieldAsTrait.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,22 @@ trait FieldAsTrait{
2222
abstract protected function _getFieldIdentifier($prefix);
2323
abstract public function setValueFunction($index,$callback);
2424

25+
/**
26+
* @param HtmlFormField $element
27+
* @param array $attributes
28+
*/
29+
protected function _applyAttributes($element,&$attributes,$index){
30+
$this->_addRules($element, $attributes);
31+
if(isset($attributes["callback"])){
32+
$callback=$attributes["callback"];
33+
if(\is_callable($callback)){
34+
$callback($element,$this->_modelInstance,$index);
35+
unset($attributes["callback"]);
36+
}
37+
}
38+
$element->fromArray($attributes);
39+
}
40+
2541
private function _getLabelField($caption,$icon=NULL){
2642
$label=new HtmlLabel($this->_getFieldIdentifier("lbl"),$caption,$icon);
2743
return $label;
@@ -38,7 +54,7 @@ protected function _fieldAs($elementCallback,$index,$attributes=NULL,$prefix=nul
3854
$element=$elementCallback($this->_getFieldIdentifier($prefix),$name,$value,"");
3955
if(\is_array($attributes))
4056
$this->_applyAttributes($element, $attributes,$index);
41-
$element->setDisabled($this->_edition);
57+
$element->setDisabled(!$this->_edition);
4258
return $element;
4359
});
4460
return $this;

Ajax/semantic/widgets/base/InstanceViewer.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class InstanceViewer {
1212
protected $afterCompile;
1313
protected $captions;
1414
protected $captionCallback;
15+
protected $defaultValueFunction;
1516

1617

1718
public static $index=0;
@@ -24,6 +25,7 @@ public function __construct($identifier,$instance=NULL,$captions=NULL){
2425
$this->setInstance($instance);
2526
$this->setCaptions($captions);
2627
$this->captionCallback=NULL;
28+
$this->defaultValueFunction=function($name,$value,$index){return $value;};
2729
}
2830

2931
public function getValues(){
@@ -53,7 +55,8 @@ protected function _beforeAddProperty($index,&$field){
5355
}
5456

5557
protected function _getDefaultValue($name,$value,$index){
56-
return $value;
58+
$func=$this->defaultValueFunction;
59+
return $func($name,$value,$index);
5760
}
5861

5962
protected function _getValue($property,$index){
@@ -270,4 +273,10 @@ public function setCaptionCallback($captionCallback) {
270273
return $this;
271274
}
272275

276+
public function setDefaultValueFunction($defaultValueFunction) {
277+
$this->defaultValueFunction=$defaultValueFunction;
278+
return $this;
279+
}
280+
281+
273282
}

Ajax/semantic/widgets/dataform/FormFieldAsTrait.php

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
use Ajax\semantic\html\elements\HtmlLabel;
44
use Ajax\semantic\html\collections\form\HtmlFormRadio;
55
use Ajax\semantic\html\collections\form\HtmlFormTextarea;
6-
use Ajax\semantic\html\collections\form\HtmlFormField;
76
use Ajax\semantic\html\collections\form\HtmlFormInput;
87
use Ajax\semantic\html\collections\form\HtmlFormCheckbox;
98
use Ajax\semantic\html\collections\form\HtmlFormDropdown;
@@ -20,28 +19,13 @@ trait FormFieldAsTrait{
2019

2120
abstract protected function _getFieldIdentifier($prefix);
2221
abstract public function setValueFunction($index,$callback);
22+
abstract protected function _applyAttributes($element,&$attributes,$index);
2323

2424
private function _getLabelField($caption,$icon=NULL){
2525
$label=new HtmlLabel($this->_getFieldIdentifier("lbl"),$caption,$icon);
2626
return $label;
2727
}
2828

29-
/**
30-
* @param HtmlFormField $element
31-
* @param array $attributes
32-
*/
33-
protected function _applyAttributes($element,&$attributes,$index){
34-
$this->_addRules($element, $attributes);
35-
if(isset($attributes["callback"])){
36-
$callback=$attributes["callback"];
37-
if(\is_callable($callback)){
38-
$callback($element,$this->_modelInstance,$index);
39-
unset($attributes["callback"]);
40-
}
41-
}
42-
$element->fromArray($attributes);
43-
}
44-
4529
protected function _addRules($element,&$attributes){
4630
if(isset($attributes["rules"])){
4731
$rules=$attributes["rules"];

Ajax/semantic/widgets/dataform/FormInstanceViewer.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ class FormInstanceViewer extends InstanceViewer {
1212
public function __construct($identifier,$instance=NULL, $captions=NULL) {
1313
parent::__construct($identifier,$instance=NULL, $captions=NULL);
1414
$this->separators=[-1];
15+
$this->defaultValueFunction=function($name,$value,$index){
16+
$caption=$this->getCaption($index);
17+
$input=new HtmlFormInput($this->widgetIdentifier."-".$name,$caption,"text",$value);
18+
$input->setName($name);
19+
return $input;
20+
};
1521
}
1622

1723
protected function _beforeAddProperty($index,&$field){
@@ -24,13 +30,6 @@ protected function _beforeAddProperty($index,&$field){
2430
$field=\str_replace("\n", "", $field);
2531
}
2632

27-
protected function _getDefaultValue($name,$value,$index){
28-
$caption=$this->getCaption($index);
29-
$input=new HtmlFormInput($this->widgetIdentifier."-".$name,$caption,"text",$value);
30-
$input->setName($name);
31-
return $input;
32-
}
33-
3433
public function getFieldName($index){
3534
$property=$this->getProperty($index);
3635
if($property instanceof \ReflectionProperty){

0 commit comments

Comments
 (0)