[FEATURE] Allow stdWrap on form-element-defaultvalues 90/12190/6
authorStefan Neufeind <typo3.neufeind@speedpartner.de>
Mon, 25 Mar 2013 21:11:12 +0000 (22:11 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Tue, 26 Mar 2013 20:02:07 +0000 (21:02 +0100)
Allow "value"-parameter (initial value) for a form-element
to be modified using stdWrap (fetch data from somewhere,
modify, ...).

Change-Id: Id1a4f25758bf7aa1632bdd3bd9b37761252b463a
Resolves: #38163
Releases: 6.1
Reviewed-on: https://review.typo3.org/12190
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/form/Classes/Domain/Factory/TypoScriptFactory.php
typo3/sysext/form/Tests/Unit/Domain/Factory/TypoScriptFactoryTest.php [new file with mode: 0644]

index 27eaeea..e2e0062 100644 (file)
@@ -193,6 +193,11 @@ class TypoScriptFactory implements \TYPO3\CMS\Core\SingletonInterface {
         * @return void
         */
        protected function reconstituteElement(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments = array()) {
+               if (isset($arguments['value.'])) {
+                       $cObj = $this->getLocalConentObject();
+                       $arguments['value'] = $cObj->stdWrap($arguments['value'], $arguments['value.']);
+               }
+
                $this->setAttributes($element, $arguments);
                $this->setAdditionals($element, $arguments);
                if (isset($arguments['filters.'])) {
diff --git a/typo3/sysext/form/Tests/Unit/Domain/Factory/TypoScriptFactoryTest.php b/typo3/sysext/form/Tests/Unit/Domain/Factory/TypoScriptFactoryTest.php
new file mode 100644 (file)
index 0000000..bf70097
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+namespace TYPO3\CMS\Form\Tests\Unit\Domain\Factory;
+
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2012-2013 Stefan Neufeind <info@speedpartner.de>, SpeedPartner GmbH
+*
+*  All rights reserved
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+/**
+ * Test case for class \TYPO3\CMS\Form\Domain\Factory\TypoScriptFactory
+ *
+ * @author Stefan Neufeind <info@speedpartner.de>
+ */
+class TypoScriptFactoryTest extends \TYPO3\CMS\Extbase\Tests\Unit\BaseTestCase {
+       /**
+        * @var tx_form_Domain_Factory_Typoscript
+        */
+       protected $fixture;
+
+       public function setUp() {
+               $this->fixture = new \TYPO3\CMS\Form\Domain\Factory\TypoScriptFactory();
+       }
+
+       public function tearDown() {
+               unset($this->fixture);
+       }
+
+       /**
+        * @test
+        */
+       public function stdWrapIsAppliedToElementValue() {
+               $input = array(
+                               'value' => 'something',
+                               'value.' => array(
+                                       'wrap' => 'ABC|DEF'
+                               )
+                       );
+               $inputStdWrapped = 'ABCsomethingDEF';
+
+               $element = $this->fixture->createElement('textline', $input);
+
+               $this->assertSame(
+                       $inputStdWrapped,
+                       $element->getValue()
+               );
+       }
+}
+?>
\ No newline at end of file