[+BUGFIX] Fluid (Core): Now, it is possible to "unselect" checkboxes in editing forms...
authorSebastian Kurfürst <sebastian@typo3.org>
Tue, 15 Jun 2010 11:49:15 +0000 (11:49 +0000)
committerSebastian Kurfürst <sebastian@typo3.org>
Tue, 15 Jun 2010 11:49:15 +0000 (11:49 +0000)
typo3/sysext/extbase/Classes/Property/Mapper.php
typo3/sysext/extbase/Tests/SeleniumBaseTestCase.php [new file with mode: 0644]
typo3/sysext/extbase/ext_autoload.php

index 3dd40cd..64183f6 100644 (file)
@@ -198,10 +198,12 @@ class Tx_Extbase_Property_Mapper {
                                if ($targetClassSchema !== NULL && $targetClassSchema->hasProperty($propertyName)) {
                                        $propertyMetaData = $targetClassSchema->getProperty($propertyName);
 
-                                       if (in_array($propertyMetaData['type'], array('array', 'ArrayObject', 'Tx_Extbase_Persistence_ObjectStorage')) && strpos($propertyMetaData['elementType'], '_') !== FALSE) {
+                                       if (in_array($propertyMetaData['type'], array('array', 'ArrayObject', 'Tx_Extbase_Persistence_ObjectStorage')) && (strpos($propertyMetaData['elementType'], '_') !== FALSE || $propertyValue === '')) {
                                                $objects = array();
-                                               foreach ($propertyValue as $value) {
-                                                       $objects[] = $this->transformToObject($value, $propertyMetaData['elementType'], $propertyName);
+                                               if (is_array($propertyValue)) {
+                                                       foreach ($propertyValue as $value) {
+                                                               $objects[] = $this->transformToObject($value, $propertyMetaData['elementType'], $propertyName);
+                                                       }
                                                }
 
                                                        // make sure we hand out what is expected
diff --git a/typo3/sysext/extbase/Tests/SeleniumBaseTestCase.php b/typo3/sysext/extbase/Tests/SeleniumBaseTestCase.php
new file mode 100644 (file)
index 0000000..0054663
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Bastian Waidelich <bastian@typo3.org>
+*  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!
+***************************************************************/
+
+require_once(t3lib_extMgm::extPath('phpunit') . 'class.tx_phpunit_selenium_testcase.php');
+
+/**
+ * Base Selenium testcase for the Extbase extension.
+ */
+abstract class Tx_Extbase_SeleniumBaseTestCase extends tx_phpunit_selenium_testcase {
+
+}
+?>
index a1023e8..9a99fbb 100644 (file)
@@ -6,6 +6,7 @@ $extensionClassesPath = t3lib_extMgm::extPath('extbase') . 'Classes/';
 $extensionTestsPath = t3lib_extMgm::extPath('extbase') . 'Tests/';
 return array(
        'tx_extbase_basetestcase' => $extensionTestsPath . 'BaseTestCase.php',
+       'tx_extbase_seleniumbasetestcase' => $extensionTestsPath . 'SeleniumBaseTestCase.php',
        'tx_extbase_dispatcher' => $extensionClassesPath . 'Dispatcher.php',
        'tx_extbase_exception' => $extensionClassesPath . 'Exception.php',
        'tx_extbase_configuration_abstractconfigurationmanager' => $extensionClassesPath . 'Configuration/AbstractConfigurationManager.php',