[BUGFIX] Restore SelectElement.php 73/36273/2
authorMathias Schreiber <mathias.schreiber@wmdb.de>
Mon, 26 Jan 2015 14:00:40 +0000 (15:00 +0100)
committerHelmut Hummel <helmut.hummel@typo3.org>
Mon, 26 Jan 2015 14:22:47 +0000 (15:22 +0100)
While backporting https://review.typo3.org/#/c/33328/ SelectElement.php
got deleted by error.

Resolves: #64507
Releases: 6.2
Change-Id: I8c5040fd6d935dc0086b39475dc746394a00c09e
Reviewed-on: http://review.typo3.org/36273
Reviewed-by: Alexander Opitz <opitz.alexander@googlemail.com>
Reviewed-by: Helmut Hummel <helmut.hummel@typo3.org>
Tested-by: Helmut Hummel <helmut.hummel@typo3.org>
typo3/sysext/form/Classes/Domain/Model/Element/SelectElement.php [new file with mode: 0644]

diff --git a/typo3/sysext/form/Classes/Domain/Model/Element/SelectElement.php b/typo3/sysext/form/Classes/Domain/Model/Element/SelectElement.php
new file mode 100644 (file)
index 0000000..f320b34
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+namespace TYPO3\CMS\Form\Domain\Model\Element;
+
+/**
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+/**
+ * Select model object
+ *
+ * @author Patrick Broens <patrick@patrickbroens.nl>
+ */
+class SelectElement extends \TYPO3\CMS\Form\Domain\Model\Element\ContainerElement {
+
+       /**
+        * Allowed attributes for this object
+        *
+        * @var array
+        */
+       protected $allowedAttributes = array(
+               'class' => '',
+               'disabled' => '',
+               'id' => '',
+               'lang' => '',
+               'multiple' => '',
+               'name' => '',
+               'size' => '',
+               'style' => '',
+               'tabindex' => '',
+               'title' => ''
+       );
+
+       /**
+        * Mandatory attributes for this object
+        *
+        * @var array
+        */
+       protected $mandatoryAttributes = array(
+               'name',
+               'id'
+       );
+
+       /**
+        * Add child object to this element
+        *
+        * @param \TYPO3\CMS\Form\Domain\Model\Element\OptionElement $element The child object
+        * @return \TYPO3\CMS\Form\Domain\Model\Element\SelectElement
+        */
+       public function addElement(\TYPO3\CMS\Form\Domain\Model\Element\OptionElement $element) {
+               $element->setParentName($this->getName());
+               $this->elements[] = $element;
+               return $this;
+       }
+
+       /**
+        * Set a specific attribute by name and value
+        *
+        * @param string $attribute Name of the attribute
+        * @param mixed $value Value of the attribute
+        * @return \TYPO3\CMS\Form\Domain\Model\Element\SelectElement
+        */
+       public function setAttribute($attribute, $value) {
+               if (array_key_exists($attribute, $this->allowedAttributes)) {
+                       $this->attributes->addAttribute($attribute, $value);
+               }
+               if (
+                       $attribute === 'name' && $this->attributes->hasAttribute('multiple') &&
+                       $this->attributes->getValue('multiple') === 'multiple' ||
+                       $attribute === 'multiple' && $this->attributes->hasAttribute('name')
+               ) {
+                       /** @var $nameAttribute \TYPO3\CMS\Form\Domain\Model\Attribute\NameAttribute */
+                       $nameAttribute = $this->attributes->getAttributeObjectByKey('name');
+                       $nameAttribute->setAddition('[]');
+               }
+               return $this;
+       }
+
+}