49 if (isset($typoscript[self::PROPERTY_DisableContentElement])) {
52 $this->setLayoutHandler($typoscript);
53 $form = $this->createElement(
'form', $typoscript);
77 if (is_array($typoscript)) {
79 foreach ($keys as $key) {
80 $class = $typoscript[$key];
81 if ((
int)$key && strpos($key,
'.') === FALSE) {
82 if (isset($typoscript[$key .
'.'])) {
83 $elementArguments = $typoscript[$key .
'.'];
85 $elementArguments = array();
87 $this->setElementType($parentElement, $class, $elementArguments);
91 throw new \InvalidArgumentException(
'Container element with id=' . $parentElement->getElementId() .
' has no configuration which means no children.', 1333754854);
105 public function setElementType(\
TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $parentElement, $class, array $arguments) {
106 if (in_array($class, \
TYPO3\CMS\Form\Utility\FormUtility::getInstance()->getFormObjects())) {
107 $this->
addElement($parentElement, $class, $arguments);
108 } elseif ($this->disableContentElement === FALSE) {
109 if ($class[0] ===
'<') {
110 $key = trim(substr($class, 1));
113 $oldArguments = $arguments;
114 list($class, $arguments) = $typoscriptParser->getVal($key,
$GLOBALS[
'TSFE']->tmpl->setup);
115 if (is_array($oldArguments) && count($oldArguments)) {
116 $arguments = array_replace_recursive($arguments, $oldArguments);
119 $contentObject = array(
121 'cObj.' => $arguments
123 $this->
addElement($parentElement,
'content', $contentObject);
126 $contentObject = array(
128 'cObj.' => $arguments
130 $this->
addElement($parentElement,
'content', $contentObject);
143 public function addElement(\
TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $parentElement, $class, array $arguments = array()) {
144 $element = $this->createElement($class, $arguments);
145 if (method_exists($parentElement,
'addElement')) {
146 $parentElement->addElement($element);
159 public function createElement($class, array $arguments = array()) {
160 $class = strtolower((
string) $class);
161 if ($class ===
'form') {
162 $className =
'TYPO3\\CMS\\Form\\Domain\\Model\\' . ucfirst($class);
164 $className =
'TYPO3\\CMS\\Form\\Domain\\Model\\Element\\' . ucfirst($class) .
'Element';
169 $object->setData($arguments[
'cObj'], $arguments[
'cObj.']);
171 $object->setProperties($arguments);
173 $object->setData($arguments[
'data']);
176 throw new \InvalidArgumentException(
'Element type "' . $object->getElementType() .
'" is not supported.', 1333754878);
188 protected function reconstituteElement(\
TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments = array()) {
189 if (isset($arguments[
'value.'])) {
191 $arguments[
'value'] = $cObj->stdWrap($arguments[
'value'], $arguments[
'value.']);
196 if (isset($arguments[
'filters.'])) {
197 $this->
setFilters($element, $arguments[
'filters.']);
199 $element->setLayout($arguments[
'layout']);
200 $element->setValue($arguments[
'value']);
201 $element->setName($arguments[
'name']);
202 $element->setMessagesFromValidation();
203 $element->setErrorsFromValidation();
204 $element->checkFilterAndSetIncomingDataFromRequest();
217 public function setAttributes(\
TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments) {
218 if ($element->hasAllowedAttributes()) {
219 $attributes = $element->getAllowedAttributes();
220 $mandatoryAttributes = $element->getMandatoryAttributes();
221 foreach ($attributes as $attribute => $value) {
222 if (isset($arguments[$attribute]) || isset($arguments[$attribute .
'.']) || in_array($attribute, $mandatoryAttributes) || !empty($value)) {
223 if ((
string)$arguments[$attribute] !==
'') {
224 $value = $arguments[$attribute];
225 } elseif (!empty($arguments[($attribute .
'.')])) {
226 $value = $arguments[$attribute .
'.'];
229 $element->setAttribute($attribute, $value);
230 }
catch (\Exception $exception) {
231 throw new \RuntimeException(
'Cannot call user function for attribute ' . ucfirst($attribute), 1333754904);
236 throw new \InvalidArgumentException(
'The element with id=' . $element->getElementId() .
' has no default attributes set.', 1333754925);
249 public function setAdditionals(\
TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments) {
250 if (!empty($arguments)) {
251 if ($element->hasAllowedAdditionals()) {
252 $additionals = $element->getAllowedAdditionals();
253 foreach ($additionals as $additional) {
254 if (isset($arguments[$additional .
'.']) || isset($arguments[$additional])) {
255 if (isset($arguments[$additional]) && isset($arguments[$additional .
'.'])) {
256 $value = $arguments[$additional .
'.'];
257 $type = $arguments[$additional];
258 } elseif (isset($arguments[$additional .
'.'])) {
259 $value = $arguments[$additional .
'.'];
262 $value[
'value'] = $arguments[$additional];
266 $element->setAdditional($additional, $type, $value);
267 }
catch (\Exception $exception) {
268 throw new \RuntimeException(
'Cannot call user function for additional ' . ucfirst($additional), 1333754941);
271 if (isset($arguments[
'layout.'][$additional]) && $element->additionalIsSet($additional)) {
272 $layout = $arguments[
'layout.'][$additional];
273 $element->setAdditionalLayout($additional, $layout);
277 throw new \InvalidArgumentException(
'The element with id=' . $element->getElementId() .
' has no additionals set.', 1333754962);
289 protected function setFilters(\
TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments) {
291 foreach ($keys as $key) {
292 $class = $arguments[$key];
293 if ((
int)$key && strpos($key,
'.') === FALSE) {
294 $filterArguments = $arguments[$key .
'.'];
295 $filter = $element->makeFilter($class, $filterArguments);
296 $element->addFilter($filter);
307 public function setLayoutHandler(array $typoscript) {
311 return $layoutHandler;
322 return !empty($typoscript[
'layout.']) ? $typoscript[
'layout.'] : array();
331 public function setRequestHandler($typoscript) {
332 $prefix = isset($typoscript[
'prefix']) ? $typoscript[
'prefix'] :
'';
333 $method = isset($typoscript[
'method']) ? $typoscript[
'method'] :
'';
337 $requestHandler->setPrefix($prefix);
338 $requestHandler->setMethod($method);
339 $requestHandler->storeFiles();
340 return $requestHandler;
351 public function setRules(array $typoscript) {
352 $rulesTyposcript = isset($typoscript[
'rules.']) ? $typoscript[
'rules.'] : NULL;
356 if (is_array($rulesTyposcript)) {
358 foreach ($keys as $key) {
359 $class = $rulesTyposcript[$key];
360 if ((
int)$key && strpos($key,
'.') === FALSE) {
361 $elementArguments = $rulesTyposcript[$key .
'.'];
362 $rule = $rulesClass->createRule($class, $elementArguments);
363 $rule->setFieldName($elementArguments[
'element']);
364 $breakOnError = isset($elementArguments[
'breakOnError']) ? $elementArguments[
'breakOnError'] : FALSE;
365 $rulesClass->addRule($rule, $elementArguments[
'element'], $breakOnError);
378 if (!isset($this->localContentObject)) {
const PROPERTY_DisableContentElement
getLayoutFromTypoScript($typoscript)
setAttributes(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments)
static makeInstance($className)
setDisableContentElement($disableContentElement)
buildModelFromTyposcript(array $typoscript)
reconstituteElement(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments=array())
const ELEMENT_TYPE_CONTENT
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
setFilters(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments)
addElement(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $parentElement, $class, array $arguments=array())
getChildElementsByIntegerKey(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $parentElement, array $typoscript)
setAdditionals(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments)
static sortedKeyList($setupArr, $acceptOnlyProperties=FALSE)