AbstractFieldset.php
2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
namespace Nextend\Framework\Form;
use Nextend\Framework\Form\Insert\AbstractInsert;
abstract class AbstractFieldset implements ContainerContainedInterface {
use TraitFieldset;
/**
* @var ContainedInterface;
*/
private $previous, $next;
public function getPrevious() {
return $this->previous;
}
public function setPrevious($element = null) {
$this->previous = $element;
}
public function getNext() {
return $this->next;
}
public function setNext($element = null) {
$this->next = $element;
if ($element) {
$element->setPrevious($this);
}
}
public function remove() {
$this->getParent()
->removeElement($this);
}
/**
* @var ContainerInterface
*/
protected $parent;
protected $name = '';
protected $label = '';
protected $controlName = '';
protected $class = '';
/**
* Container constructor.
*
* @param ContainerInterface|AbstractInsert $insertAt
* @param $name
* @param boolean|string $label
* @param array $parameters
*/
public function __construct($insertAt, $name, $label = false, $parameters = array()) {
$this->name = $name;
$this->label = $label;
if ($insertAt instanceof ContainerInterface) {
$this->parent = $insertAt;
$this->parent->addElement($this);
} else if ($insertAt instanceof AbstractInsert) {
$this->parent = $insertAt->insert($this);
}
$this->controlName = $this->parent->getControlName();
foreach ($parameters as $option => $value) {
$option = 'set' . $option;
$this->{$option}($value);
}
}
public function render() {
$this->renderContainer();
}
/**
* @param AbstractField $element
*
* @return string
*/
public function decorateElement($element) {
ob_start();
$element->displayElement();
return ob_get_clean();
}
/**
* @return bool
*/
public function hasLabel() {
return !empty($this->label);
}
/**
* @return string
*/
public function getName() {
return $this->name;
}
/**
* @return Form
*/
public function getForm() {
return $this->parent->getForm();
}
/**
* @return string
*/
public function getControlName() {
return $this->controlName;
}
/**
* @param string $controlName
*/
public function setControlName($controlName) {
$this->controlName = $controlName;
}
public function hasFields() {
return !empty($this->flattenElements);
}
/**
* @param string $class
*/
public function setClass($class) {
$this->class = $class;
}
}