Raised Extbase and Fluid to version 1.3.0
authorSebastian Kurfürst <sebastian.kurfuerst@typo3.org>
Wed, 26 Jan 2011 08:27:35 +0000 (08:27 +0000)
committerSebastian Kurfürst <sebastian.kurfuerst@typo3.org>
Wed, 26 Jan 2011 08:27:35 +0000 (08:27 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10324 709f56b5-9817-0410-a4d7-c38de5d9e867

70 files changed:
ChangeLog
typo3/sysext/extbase/ChangeLog.txt
typo3/sysext/extbase/Classes/DomainObject/AbstractDomainObject.php
typo3/sysext/extbase/Classes/DomainObject/AbstractEntity.php
typo3/sysext/extbase/Classes/DomainObject/DomainObjectInterface.php
typo3/sysext/extbase/Classes/MVC/Web/Routing/UriBuilder.php
typo3/sysext/extbase/Classes/Persistence/Backend.php
typo3/sysext/extbase/Classes/Persistence/LazyObjectStorage.php
typo3/sysext/extbase/Classes/Persistence/ObjectStorage.php
typo3/sysext/extbase/Classes/Utility/Cache.php
typo3/sysext/extbase/Classes/Utility/Extension.php
typo3/sysext/extbase/Tests/Unit/MVC/Web/Routing/UriBuilderTest.php
typo3/sysext/extbase/Tests/Unit/Utility/ExtensionTest.php
typo3/sysext/extbase/ext_emconf.php [changed mode: 0644->0755]
typo3/sysext/extbase/last_synched_target
typo3/sysext/fluid/ChangeLog.txt
typo3/sysext/fluid/Classes/Core/Parser/SyntaxTree/ViewHelperNode.php
typo3/sysext/fluid/Classes/ViewHelpers/FlashMessagesViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/EmailViewHelper.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/Interceptor/EscapeTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/ParsingStateTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/SyntaxTree/AbstractNodeTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/SyntaxTree/TextNodeTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/SyntaxTree/ViewHelperNodeComparatorTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/SyntaxTree/ViewHelperNodeTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/TemplateParserPatternTest.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/TemplateParserTest.php
typo3/sysext/fluid/Tests/Unit/Core/Rendering/RenderingContextTest.php
typo3/sysext/fluid/Tests/Unit/Core/TagBasedViewHelperTest.php [deleted file]
typo3/sysext/fluid/Tests/Unit/Core/TagBuilderTest.php [deleted file]
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractTagBasedViewHelperTest.php [new file with mode: 0644]
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ArgumentDefinitionTest.php
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/TagBuilderTest.php [new file with mode: 0644]
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/TemplateVariableContainerTest.php
typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/ViewHelperVariableContainerTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/AbstractWidgetControllerTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/AbstractWidgetViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/AjaxWidgetContextHolderTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetContextTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestHandlerTest.php
typo3/sysext/fluid/Tests/Unit/Core/Widget/WidgetRequestTest.php
typo3/sysext/fluid/Tests/Unit/View/AbstractTemplateViewTest.php
typo3/sysext/fluid/Tests/Unit/View/StandaloneViewTest.php
typo3/sysext/fluid/Tests/Unit/View/TemplateViewTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/CountViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/CheckboxViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/RadioViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/TextboxViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/FormViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/CropViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/CurrencyViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/DateViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/Nl2brViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/NumberViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/PaddingViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/PrintfViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Persistence/IdentityViewHelperTest.php [deleted file]
typo3/sysext/fluid/Tests/Unit/ViewHelpers/ViewHelperBaseTestcase.php
typo3/sysext/fluid/ext_autoload.php [changed mode: 0644->0755]
typo3/sysext/fluid/ext_emconf.php
typo3/sysext/fluid/last_synched_target

index 86c2b1b..599588b 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-26  Sebastian Kurfuerst  <sebastian@typo3.org>
+
+       * Raised Extbase and Fluid to version 1.3.0
+
 2011-01-26  Xavier Perseguers  <typo3@perseguers.ch>
 
        * Raised DBAL to version 1.2.1
index 37b6f66..4c78caa 100644 (file)
@@ -1,6 +1,31 @@
 ChangeLog for Extbase
 =====================
 
+Changes for 1.3.0:
+==================
+included in TYPO3 4.5.0 LTS.
+
+This release fixes an important bug in the persistence layer, which caused related objects not to be updated.
+
+Full Changes for 1.3.0:
+=======================
+
+[+BUGFIX] Extbase (Tests): reset added t3lib_div instances in UriBuilder & Extension tests
+[+BUGFIX] Extbase (Persistence): Fixed updating of related objects. Thanks to Björn Steinbrück and Bastian Waidelich for digging into this issue. Resolves #9270, #9182, #10211.
+       This is the second attempt after having reverted the first one in r3920. The patch includes some clean-up. Important additional changes:
+       * The objects within an ObjectStorage are now added to the queue. This is necessary to persist changes made to those contained objects without having changed the composition of objects.
+       * Moved the _memorizeCleanState() from the AbstractEntity to the AbstractDomainObject. In theory ValueObjects are immutable, but we need this as sometimes ValueObjects are stored in two steps (1. to get a UID, 2. to persist its properties). Maybe we have to recheck this for 1.4.
+       * Fixed some possible problems with detecting an ObjectStorage (namely SplObjectStorage->getUid()).
+[+TASK] Extbase (Persistence): Added two properties to describe a weird PHP behavior if calling current() on an ObjectStorage.
+[+BUGFIX] Extbase (MVC): Fixed argument order of Tx_Extbase_Utility_Extension::isActionCacheable() call in UriBuilder
+[+TASK] Extbase (DomainObject): Added setPid() and getPid() to the DomainObjectInterface and removed the "final" keyword.
+[~TASK] Extbase: Moved isActionCacheable() from UriBuilder to Utility/Extension helper class
+       Moved the protected method to a public static functions in Tx_Extbase_Utility_Extension
+       and added respective unit tests.
+       Note: We're not happy with all the public static functions in Utility/Extension.php
+       but that's currently the place for those helper functions.
+[+TASK] Extbase (Utility): implemented validation of arguments passed to sql statements in Tx_Extbase_Utility_Cache. (resolves #11978)
+
 Changes for 1.3.0 RC1:
 ======================
 included in TYPO3 4.5.0 RC1.
index abf4a72..37d16a9 100644 (file)
@@ -60,6 +60,11 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
        private $_isClone = FALSE;
 
        /**
+        * @var An array holding the clean property values. Set right after reconstitution of the object
+        */
+       private $_cleanProperties;
+
+       /**
         * This is the magic __wakeup() method. It's invoked by the unserialize statement in the reconstitution process
         * of the object. If you want to implement your own __wakeup() method in your Domain Object you have to call
         * parent::__wakeup() first!
@@ -91,7 +96,7 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
         *
         * @return void
         */
-       final public function setPid($pid) {
+       public function setPid($pid) {
                if ($pid === NULL) {
                        $this->pid = NULL;
                } else {
@@ -104,7 +109,7 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
         *
         * @return int The pid or NULL if none set yet.
         */
-       final public function getPid() {
+       public function getPid() {
                if ($this->pid === NULL) {
                        return NULL;
                } else {
@@ -144,7 +149,7 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
        public function _getProperties() {
                $properties = get_object_vars($this);
                foreach ($properties as $propertyName => $propertyValue) {
-                       if ($propertyName{0} === '_') {
+                       if (substr($propertyName, 0, 1) === '_') {
                                unset($properties[$propertyName]);
                        }
                }
@@ -172,23 +177,122 @@ abstract class Tx_Extbase_DomainObject_AbstractDomainObject implements Tx_Extbas
 
        /**
         * Register an object's clean state, e.g. after it has been reconstituted
-        * from the database
+        * from the database.
         *
+        * @param string $propertyName The name of the property to be memorized. If omitted all persistable properties are memorized.
         * @return void
         */
-       public function _memorizeCleanState() {
+       public function _memorizeCleanState($propertyName = NULL) {
+               if ($propertyName !== NULL) {
+                       $this->_memorizePropertyCleanState($propertyName);
+               } else {
+                       $this->_cleanProperties = array();
+                       $properties = get_object_vars($this);
+                       foreach ($properties as $propertyName => $propertyValue) {
+                               if (substr($propertyName, 0, 1) === '_') continue; // Do not memorize "internal" properties
+                               $this->_memorizePropertyCleanState($propertyName);
+                       }
+               }
+       }
+
+       /**
+        * Register an properties's clean state, e.g. after it has been reconstituted
+        * from the database.
+        *
+        * @param string $propertyName The name of the property to be memorized. If omittet all persistable properties are memorized.
+        * @return void
+        */
+       public function _memorizePropertyCleanState($propertyName) {
+               $propertyValue = $this->$propertyName;
+               if (!is_array($this->_cleanProperties)) {
+                       $this->_cleanProperties = array();
+               }
+               if (is_object($propertyValue)) {
+                       $this->_cleanProperties[$propertyName] = clone($propertyValue);
+
+                       // We need to make sure the clone and the original object
+                       // are identical when compared with == (see _isDirty()).
+                       // After the cloning, the Domain Object will have the property
+                       // "isClone" set to TRUE, so we manually have to set it to FALSE
+                       // again. Possible fix: Somehow get rid of the "isClone" property,
+                       // which is currently needed in Fluid.
+                       if ($propertyValue instanceof Tx_Extbase_DomainObject_AbstractDomainObject) {
+                               $this->_cleanProperties[$propertyName]->_setClone(FALSE);
+                       }
+               } else {
+                       $this->_cleanProperties[$propertyName] = $propertyValue;
+               }
+       }
+
+       /**
+        * Returns a hash map of clean properties and $values.
+        *
+        * @return array
+        */
+       public function _getCleanProperties() {
+               return $this->_cleanProperties;
+       }
+
+       /**
+        * Returns the clean value of the given property. The returned value will be NULL if the clean state was not memorized before, or
+        * if the clean value is NULL.
+        *
+        * @param string $propertyName The name of the property to be memorized. If omittet all persistable properties are memorized.
+        * @return mixed The clean property value or NULL
+        */
+       public function _getCleanProperty($propertyName) {
+               if (is_array($this->_cleanProperties)) {
+                       return isset($this->_cleanProperties[$propertyName]) ? $this->_cleanProperties[$propertyName] : NULL;
+               } else {
+                       return NULL;
+               }
        }
        
        /**
-        * Returns TRUE if the properties were modified after reconstitution. However, value objects can be never updated.
+        * Returns TRUE if the properties were modified after reconstitution
         *
+        * @param string $propertyName An optional name of a property to be checked if its value is dirty
         * @return boolean
         */
        public function _isDirty($propertyName = NULL) {
+               if ($this->uid !== NULL && is_array($this->_cleanProperties) && $this->uid != $this->_getCleanProperty('uid')) throw new Tx_Extbase_Persistence_Exception_TooDirty('The uid "' . $this->uid . '" has been modified, that is simply too much.', 1222871239);
+               if ($propertyName === NULL) {
+                       foreach ($this->_getCleanProperties() as $propertyName => $cleanPropertyValue) {
+                               if ($this->isPropertyDirty($cleanPropertyValue, $this->$propertyName) === TRUE) return TRUE;
+                       }
+               } else {
+                       if ($this->isPropertyDirty($this->_getCleanProperty($propertyName), $this->$propertyName) === TRUE) return TRUE;
+               }
                return FALSE;
        }
 
        /**
+        * Checks the $value against the $cleanState.
+        *
+        * @param mixed $previousValue
+        * @param mixed $currentValue
+        * @return boolan
+        */
+       protected function isPropertyDirty($previousValue, $currentValue) {
+               $result = FALSE;
+               // In case it is an object and it implements the ObjectMonitoringInterface, we call _isDirty() instead of a simple comparison of objects.
+               // We do this, because if the object itself contains a lazy loaded property, the comparison of the objects might fail even if the object didn't change
+               if (is_object($currentValue)) {
+                       if ($currentValue instanceof Tx_Extbase_DomainObject_DomainObjectInterface) {
+                               $result = !is_object($previousValue) || (get_class($previousValue) !== get_class($currentValue)) || ($currentValue->getUid() !== $previousValue->getUid());
+                       } elseif ($currentValue instanceof Tx_Extbase_Persistence_ObjectMonitoringInterface) {
+                               $result = !is_object($previousValue) || $currentValue->_isDirty() || (get_class($previousValue) !== get_class($currentValue));
+                       } else {
+                               // For all other objects we do only a simple comparison (!=) as we want cloned objects to return the same values.
+                               $result = ($previousValue != $currentValue);
+                       }
+               } else {
+                       $result = ($previousValue !== $currentValue);
+               }
+               return $result;
+       }
+       
+       /**
         * Returns TRUE if the object has been clonesd, cloned, FALSE otherwise.
         *
         * @return boolean TRUE if the object has been cloned
index 70a084d..29f694c 100644 (file)
  * @version $ID:$
  */
 abstract class Tx_Extbase_DomainObject_AbstractEntity extends Tx_Extbase_DomainObject_AbstractDomainObject {
-
-       /**
-        * @var An array holding the clean property values. Set right after reconstitution of the object
-        */
-       private $_cleanProperties;
-
-       /**
-        * Register an object's clean state, e.g. after it has been reconstituted
-        * from the database.
-        *
-        * @param string $propertyName The name of the property to be memorized. If omitted all persistable properties are memorized.
-        * @return void
-        */
-       public function _memorizeCleanState($propertyName = NULL) {
-               if ($propertyName !== NULL) {
-                       $this->_memorizePropertyCleanState($propertyName);
-               } else {
-                       $this->_cleanProperties = array();
-                       $properties = get_object_vars($this);
-                       foreach ($properties as $propertyName => $propertyValue) {
-                               if ($propertyName[0] === '_') continue; // Do not memorize "internal" properties
-                               $this->_memorizePropertyCleanState($propertyName);
-                       }
-               }
-       }
-
-       /**
-        * Register an properties's clean state, e.g. after it has been reconstituted
-        * from the database.
-        *
-        * @param string $propertyName The name of the property to be memorized. If omittet all persistable properties are memorized.
-        * @return void
-        */
-       public function _memorizePropertyCleanState($propertyName) {
-               $propertyValue = $this->$propertyName;
-               if (!is_array($this->_cleanProperties)) {
-                       $this->_cleanProperties = array();
-               }
-               if (is_object($propertyValue)) {
-                       $this->_cleanProperties[$propertyName] = clone($propertyValue);
-
-                       // We need to make sure the clone and the original object
-                       // are identical when compared with == (see _isDirty()).
-                       // After the cloning, the Domain Object will have the property
-                       // "isClone" set to TRUE, so we manually have to set it to FALSE
-                       // again. Possible fix: Somehow get rid of the "isClone" property,
-                       // which is currently needed in Fluid.
-                       if ($propertyValue instanceof Tx_Extbase_DomainObject_AbstractDomainObject) {
-                               $this->_cleanProperties[$propertyName]->_setClone(FALSE);
-                       }
-               } else {
-                       $this->_cleanProperties[$propertyName] = $propertyValue;
-               }
-       }
-
-       /**
-        * Returns a hash map of clean properties and $values.
-        *
-        * @return array
-        */
-       public function _getCleanProperties() {
-               return $this->_cleanProperties;
-       }
-
-       /**
-        * Returns the clean value of the given property. The returned value will be NULL if the clean state was not memorized before, or
-        * if the clean value is NULL.
-        *
-        * @param string $propertyName The name of the property to be memorized. If omittet all persistable properties are memorized.
-        * @return mixed The clean property value or NULL
-        */
-       public function _getCleanProperty($propertyName) {
-               if (is_array($this->_cleanProperties)) {
-                       return isset($this->_cleanProperties[$propertyName]) ? $this->_cleanProperties[$propertyName] : NULL;
-               } else {
-                       return NULL;
-               }
-       }
-
-       /**
-        * Returns TRUE if the properties were modified after reconstitution
-        *
-        * @param string $propertyName An optional name of a property to be checked if its value is dirty
-        * @return boolean
-        */
-       public function _isDirty($propertyName = NULL) {
-               if ($this->uid !== NULL && is_array($this->_cleanProperties) && $this->uid != $this->_getCleanProperty('uid')) throw new Tx_Extbase_Persistence_Exception_TooDirty('The uid "' . $this->uid . '" has been modified, that is simply too much.', 1222871239);
-               if ($propertyName === NULL) {
-                       foreach ($this->_getCleanProperties() as $propertyName => $cleanPropertyValue) {
-                               if ($this->isPropertyDirty($cleanPropertyValue, $this->$propertyName) === TRUE) return TRUE;
-                       }
-               } else {
-                       if ($this->isPropertyDirty($this->_getCleanProperty($propertyName), $this->$propertyName) === TRUE) return TRUE;
-               }
-               return FALSE;
-       }
-
-       /**
-        * Checks the $value against the $cleanState.
-        *
-        * @param mixed $previousValue
-        * @param mixed $currentValue
-        * @return boolan
-        */
-       protected function isPropertyDirty($previousValue, $currentValue) {
-               $result = FALSE;
-               // In case it is an object and it implements the ObjectMonitoringInterface, we call _isDirty() instead of a simple comparison of objects.
-               // We do this, because if the object itself contains a lazy loaded property, the comparison of the objects might fail even if the object didn't change
-               if (is_object($currentValue)) {
-                       if ($currentValue instanceof Tx_Extbase_Persistence_ObjectMonitoringInterface) {
-                               $result = !is_object($previousValue) || $currentValue->_isDirty() || (get_class($previousValue) !== get_class($currentValue));
-                       } else {
-                               // For all other objects we do only a simple comparison (!=) as we want cloned objects to return the same values.
-                               $result = ($previousValue != $currentValue);
-                       }
-               } else {
-                       $result = ($previousValue !== $currentValue);
-               }
-               return $result;
-       }
-
 }
 ?>
\ No newline at end of file
index 34c43dc..b4da515 100644 (file)
@@ -44,6 +44,20 @@ interface Tx_Extbase_DomainObject_DomainObjectInterface {
        public function getUid();
 
        /**
+        * Setter for the pid.
+        *
+        * @return void
+        */
+       public function setPid($pid);
+
+       /**
+        * Getter for the pid.
+        *
+        * @return int The pid or NULL if none set yet.
+        */
+       public function getPid();
+
+       /**
         * Returns TRUE if the object is new (the uid was not set, yet). Only for internal use
         *
         * @return boolean
index afa6427..402532e 100644 (file)
@@ -468,8 +468,8 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder {
                $this->arguments = t3lib_div::array_merge_recursive_overrule($this->arguments, $prefixedControllerArguments);
 
                if ($actionName !== NULL
-                       && $this->getUseCacheHash() === TRUE
-                       && !$this->isActionCacheable($actionName, $controllerArguments['controller'], $extensionName, $pluginName)) {
+                       && $this->useCacheHash === TRUE
+                       && !Tx_Extbase_Utility_Extension::isActionCacheable($extensionName, $pluginName, $controllerArguments['controller'], $actionName)) {
                                $this->setUseCacheHash(FALSE);
                }
 
@@ -647,31 +647,5 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder {
                return $result;
        }
 
-       /**
-        * Checks if the given action is cacheable or not.
-        *
-        * @param string $actionName Name of the action to be called
-        * @param string $controllerName Name of the target controller.
-        * @param string $extensionName Name of the target extension, without underscores.
-        * @param string $pluginName Name of the target plugin.
-        * @return boolean
-        */
-       protected function isActionCacheable($actionName, $controllerName, $extensionName, $pluginName) {
-               $frameworkConfiguration = $this->configurationManager->getConfiguration(
-                       Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK,
-                       $extensionName,
-                       $pluginName
-               );
-
-               if (isset($frameworkConfiguration['controllerConfiguration'][$controllerName])
-                       && is_array($frameworkConfiguration['controllerConfiguration'][$controllerName])
-                       && is_array($frameworkConfiguration['controllerConfiguration'][$controllerName]['nonCacheableActions'])
-                       && in_array($actionName, $frameworkConfiguration['controllerConfiguration'][$controllerName]['nonCacheableActions'])) {
-                               return FALSE;
-               }
-
-               return TRUE;
-       }
-
 }
 ?>
\ No newline at end of file
index 2856917..251f236 100644 (file)
@@ -360,96 +360,51 @@ class Tx_Extbase_Persistence_Backend implements Tx_Extbase_Persistence_BackendIn
        }
 
        /**
-        * Persists an object (instert, update) and its related objects (instert, update, delete).
+        * Persists the given object.
         *
         * @param Tx_Extbase_DomainObject_DomainObjectInterface $object The object to be inserted
-        * @param Tx_Extbase_DomainObject_DomainObjectInterface $parentObject The parent object
-        * @param string $parentPropertyName The name of the property the object is stored in
         * @return void
         */
        protected function persistObject(Tx_Extbase_DomainObject_DomainObjectInterface $object) {
                if (isset($this->visitedDuringPersistence[$object])) {
-                       return $this->visitedDuringPersistence[$object];
-               } else {
-                       $this->visitedDuringPersistence[$object] = $object->getUid();
+                       return;
                }
-
                $row = array();
                $queue = array();
-               $className = get_class($object);
-               $dataMap = $this->dataMapper->getDataMap($className);
-               $classSchema = $this->reflectionService->getClassSchema($className);
-
+               $dataMap = $this->dataMapper->getDataMap(get_class($object));
                $properties = $object->_getProperties();
                foreach ($properties as $propertyName => $propertyValue) {
                        if (!$dataMap->isPersistableProperty($propertyName) || $this->propertyValueIsLazyLoaded($propertyValue)) continue;
-
                        $columnMap = $dataMap->getColumnMap($propertyName);
-                       $propertyMetaData = $classSchema->getProperty($propertyName);
-                       $propertyType = $propertyMetaData['type'];
-                       // FIXME enable property-type check
-                       // $this->checkPropertyType($propertyType, $propertyValue);
-                       if (($propertyValue !== NULL) && ($propertyType === 'SplObjectStorage' || $propertyType === 'Tx_Extbase_Persistence_ObjectStorage')) {
-                               if ($object->_isNew() || $object->_isDirty($propertyName)) {
-                                       $this->persistObjectStorage($propertyValue, $object, $propertyName, $queue, $row);
-                                       foreach ($propertyValue as $containedObject) {
-                                               if ($containedObject instanceof Tx_Extbase_DomainObject_AbstractDomainObject) {
-                                                       $queue[] = $containedObject;
-                                               }
+                       if ($propertyValue instanceof Tx_Extbase_Persistence_ObjectStorage) {
+                               if ($object->_isNew() || $propertyValue->_isDirty()) {
+                                       $this->persistObjectStorage($propertyValue, $object, $propertyName, $row);
+                               }
+                               foreach ($propertyValue as $containedObject) {
+                                       if ($containedObject instanceof Tx_Extbase_DomainObject_DomainObjectInterface) {
+                                               $queue[] = $containedObject;
                                        }
                                }
                        } elseif ($propertyValue instanceof Tx_Extbase_DomainObject_DomainObjectInterface) {
                                if ($object->_isDirty($propertyName)) {
                                        if ($propertyValue->_isNew()) {
-                                               if ($propertyValue instanceof Tx_Extbase_DomainObject_AbstractEntity) {
-                                                       $this->insertObject($propertyValue);
-                                               } else {
-                                                       $this->persistValueObject($propertyValue);
-                                               }
+                                               $this->insertObject($propertyValue);
                                        }
                                        $row[$columnMap->getColumnName()] = $this->getPlainValue($propertyValue);
-                                       $queue[] = $propertyValue;
                                }
-                       } elseif ($object instanceof Tx_Extbase_DomainObject_AbstractValueObject || $object->_isNew() || $object->_isDirty($propertyName)) {
+                               $queue[] = $propertyValue;
+                       } elseif ($object->_isNew() || $object->_isDirty($propertyName)) {
                                $row[$columnMap->getColumnName()] = $this->getPlainValue($propertyValue);
                        }
                }
-
                if (count($row) > 0) {
                        $this->updateObject($object, $row);
-               }
-
-               if ($object instanceof Tx_Extbase_DomainObject_AbstractEntity) {
                        $object->_memorizeCleanState();
                }
-
+               $this->visitedDuringPersistence[$object] = $object->getUid();
                foreach ($queue as $queuedObject) {
                        $this->persistObject($queuedObject);
                }
-
-       }
-
-       /**
-        * Checks a value given against the expected type. If not matching, an
-        * UnexpectedTypeException is thrown. NULL is always considered valid.
-        *
-        * @param string $expectedType The expected type
-        * @param mixed $value The value to check
-        * @return void
-        * @throws Tx_Extbase_Persistence_Exception_UnexpectedType
-        */
-       protected function checkPropertyType($expectedType, $value) {
-               if ($value === NULL) {
-                       return;
-               }
-
-               if (is_object($value)) {
-                       if (!($value instanceof $expectedType)) {
-                               throw new Tx_Extbase_Persistence_Exception_UnexpectedTypeException('Expected property of type ' . $expectedType . ', but got ' . get_class($value), 1244465558);
-                       }
-               } elseif ($expectedType !== gettype($value)) {
-                       throw new Tx_Extbase_Persistence_Exception_UnexpectedTypeException('Expected property of type ' . $expectedType . ', but got ' . gettype($value), 1244465558);
-               }
        }
 
        /**
@@ -458,9 +413,9 @@ class Tx_Extbase_Persistence_Backend implements Tx_Extbase_Persistence_BackendIn
         * @param mixed $propertyValue The property value
         * @return bool
         */
-       public function propertyValueIsLazyLoaded($propertyValue) {
+       protected function propertyValueIsLazyLoaded($propertyValue) {
                if ($propertyValue instanceof Tx_Extbase_Persistence_LazyLoadingProxy) return TRUE;
-               if (is_object($propertyValue) && get_class($propertyValue) === 'Tx_Extbase_Persistence_LazyObjectStorage') {
+               if ($propertyValue instanceof Tx_Extbase_Persistence_LazyObjectStorage) {
                        if ($propertyValue->isInitialized() === FALSE) {
                                return TRUE;
                        }
@@ -469,55 +424,17 @@ class Tx_Extbase_Persistence_Backend implements Tx_Extbase_Persistence_BackendIn
        }
 
        /**
-        * Persists the given value object.
-        *
-        * @return void
-        */
-       protected function persistValueObject(Tx_Extbase_DomainObject_AbstractValueObject $object, $sortingPosition = 1) {
-               $result = $this->getUidOfAlreadyPersistedValueObject($object);
-               if ($result !== FALSE) {
-                       $object->_setProperty('uid', (int)$result);
-               } elseif ($object->_isNew()) {
-                       $row = array();
-                       $className = get_class($object);
-                       $dataMap = $this->dataMapper->getDataMap($className);
-                       $classSchema = $this->reflectionService->getClassSchema($className);
-
-                       $properties = $object->_getProperties();
-                       foreach ($properties as $propertyName => $propertyValue) {
-                               if (!$dataMap->isPersistableProperty($propertyName) || $this->propertyValueIsLazyLoaded($propertyValue)) continue;
-
-                               $columnMap = $dataMap->getColumnMap($propertyName);
-                               $propertyMetaData = $classSchema->getProperty($propertyName);
-                               $propertyType = $propertyMetaData['type'];
-                               // FIXME enable property-type check
-                               // $this->checkPropertyType($propertyType, $propertyValue);
-                               $row[$columnMap->getColumnName()] = $this->getPlainValue($propertyValue);
-                       }
-                       $this->insertObject($object, $row);
-               }
-       }
-
-       /**
-        * Tests, if the given Value Object already exists in the storage backend and if so, it returns the uid.
-        *
-        * @param Tx_Extbase_DomainObject_AbstractValueObject $object The object to be tested
-        */
-       protected function getUidOfAlreadyPersistedValueObject(Tx_Extbase_DomainObject_AbstractValueObject $object) {
-               return $this->storageBackend->getUidOfAlreadyPersistedValueObject($object);
-       }
-
-       /**
         * Persists a an object storage. Objects of a 1:n or m:n relation are queued and processed with the parent object. A 1:1 relation
         * gets persisted immediately. Objects which were removed from the property were detached from the parent object. They will not be
         * deleted by default. You have to annotate the property with "@cascade remove" if you want them to be deleted as well.
         *
-        * @param Tx_Extbase_DomainObject_DomainObjectInterface $object The object
-        * @param string $propertyName The name of the property the related objects are stored in
-        * @param mixed $propertyValue The property value
+        * @param Tx_Extbase_Persistence_ObjectStorage $objectStorage The object storage to be persisted.
+        * @param Tx_Extbase_DomainObject_DomainObjectInterface $parentObject The parent object. One of the properties holds the object storage.
+        * @param string $propertyName The name of the property holding the object storage.
+        * @param array $row The row array of the parent object to be persisted. It's passed by reference and gets filled with either a comma separated list of uids (csv) or the number of contained objects. 
         * @return void
         */
-       protected function persistObjectStorage(Tx_Extbase_Persistence_ObjectStorage $objectStorage, Tx_Extbase_DomainObject_DomainObjectInterface $parentObject, $propertyName, array &$queue, array &$row) {
+       protected function persistObjectStorage(Tx_Extbase_Persistence_ObjectStorage $objectStorage, Tx_Extbase_DomainObject_DomainObjectInterface $parentObject, $propertyName, array &$row) {
                $className = get_class($parentObject);
                $columnMap = $this->dataMapper->getDataMap($className)->getColumnMap($propertyName);
                $columnName = $columnMap->getColumnName();
@@ -539,11 +456,7 @@ class Tx_Extbase_Persistence_Backend implements Tx_Extbase_Persistence_BackendIn
                $sortingPosition = 1;
                foreach ($objectStorage as $object) {
                        if ($object->_isNew()) {
-                               if ($object instanceof Tx_Extbase_DomainObject_AbstractEntity) {
-                                       $this->insertObject($object);
-                               } else {
-                                       $this->persistValueObject($object, $sortingPosition);
-                               }
+                               $this->insertObject($object);
                        }
                        $currentUids[] = $object->getUid();
                        $this->attachObjectToParentObject($object, $parentObject, $propertyName, $sortingPosition);
@@ -671,8 +584,17 @@ class Tx_Extbase_Persistence_Backend implements Tx_Extbase_Persistence_BackendIn
         * @param Tx_Extbase_DomainObject_DomainObjectInterface $object The object to be insterted in the storage
         * @return void
         */
-       protected function insertObject(Tx_Extbase_DomainObject_DomainObjectInterface $object, array $row = array()) {
+       protected function insertObject(Tx_Extbase_DomainObject_DomainObjectInterface $object) {
+               if ($object instanceof Tx_Extbase_DomainObject_AbstractValueObject) {
+                       $result = $this->getUidOfAlreadyPersistedValueObject($object);
+                       if ($result !== FALSE) {
+                               $object->_setProperty('uid', (int)$result);
+                               return;
+                       }
+               }
+
                $dataMap = $this->dataMapper->getDataMap(get_class($object));
+               $row = array();
                $this->addCommonFieldsToRow($object, $row);
                if($dataMap->getLanguageIdColumnName() !== NULL) {
                        $row[$dataMap->getLanguageIdColumnName()] = -1;
@@ -690,6 +612,15 @@ class Tx_Extbase_Persistence_Backend implements Tx_Extbase_Persistence_BackendIn
        }
 
        /**
+        * Tests, if the given Value Object already exists in the storage backend and if so, it returns the uid.
+        *
+        * @param Tx_Extbase_DomainObject_AbstractValueObject $object The object to be tested
+        */
+       protected function getUidOfAlreadyPersistedValueObject(Tx_Extbase_DomainObject_AbstractValueObject $object) {
+               return $this->storageBackend->getUidOfAlreadyPersistedValueObject($object);
+       }
+
+       /**
         * Inserts mm-relation into a relation table
         *
         * @param Tx_Extbase_DomainObject_DomainObjectInterface $object The related object
index 65e5cba..779480c 100644 (file)
 class Tx_Extbase_Persistence_LazyObjectStorage extends Tx_Extbase_Persistence_ObjectStorage implements Tx_Extbase_Persistence_LoadingStrategyInterface {
 
        /**
+        * This field is only needed to make debugging easier:
+        * If you call current() on a class that implements Iterator, PHP will return the first field of the object
+        * instead of calling the current() method of the interface.
+        * We use this unusual behavior of PHP to return the warning below in this case.
+        *
+        * @var string
+        */
+       private $warning = 'You should never see this warning. If you do, you probably used PHP array functions like current() on the Tx_Extbase_Persistence_LazyObjectStorage. To retrieve the first result, you can use the getFirst() method.';
+
+       /**
         * @var Tx_Extbase_Persistence_DataMapper
         */
        protected $dataMapper;
index 4496ee8..5de0d4c 100644 (file)
@@ -25,7 +25,7 @@
 /**
  * The storage for objects. It ensures the uniqueness of an object in the storage. It's a remake of the
  * SplObjectStorage introduced in PHP 5.3.
- *
+ * 
  * Opposed to the SplObjectStorage the ObjectStorage does not implement the Serializable interface.
  *
  * @package Extbase
 class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, ArrayAccess, Tx_Extbase_Persistence_ObjectMonitoringInterface {
 
        /**
-        * An array holding the objects and the stored information. The key of the array items ist the
+        * This field is only needed to make debugging easier:
+        * If you call current() on a class that implements Iterator, PHP will return the first field of the object
+        * instead of calling the current() method of the interface.
+        * We use this unusual behavior of PHP to return the warning below in this case.
+        *
+        * @var string
+        */
+       private $warning = 'You should never see this warning. If you do, you probably used PHP array functions like current() on the Tx_Extbase_Persistence_ObjectStorage. To retrieve the first result, you can use the getFirst() method.';
+
+       /**
+        * An array holding the objects and the stored information. The key of the array items ist the 
         * spl_object_hash of the given object.
         *
         * array(
@@ -55,7 +65,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
         * @var bool
         */
        protected $isModified = FALSE;
-
+               
        /**
         * Rewind the iterator to the first storage element.
         *
@@ -75,7 +85,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
        }
 
        /**
-        * Returns the index at which the iterator currently is. This is different from the SplObjectStorage
+        * Returns the index at which the iterator currently is. This is different from the SplObjectStorage 
         * as the key in this implementation is the object hash.
         *
         * @return string The index corresponding to the position of the iterator.
@@ -113,7 +123,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
        }
 
        /**
-        * Associate data to an object in the storage. offsetSet() is an alias of attach().
+        * Associate data to an object in the storage. offsetSet() is an alias of attach(). 
         *
         * @param object $object The object to add.
         * @param mixed $information The data to associate with the object.
@@ -149,7 +159,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
         * Returns the data associated with an object in the storage.
         *
         * @param string $object The object to look for.
-        * @return mixed The data previously associated with the object in the storage.
+        * @return mixed The data previously associated with the object in the storage. 
         */
        public function offsetGet($object) {
                return $this->storage[spl_object_hash($object)]['inf'];
@@ -185,7 +195,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
        public function detach($object) {
                $this->offsetUnset($object);
        }
-
+       
        /**
         * Returns the data, or info, associated with the object pointed by the current iterator position.
         *
@@ -195,7 +205,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
                $item = current($this->storage);
                return $item['inf'];
        }
-
+       
        public function setInfo($data) {
                $this->isModified = TRUE;
                $key = key($this->storage);
@@ -225,7 +235,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
                        $this->detach($object);
                }
        }
-
+       
        /**
         * Returns this object storage as an array
         *
@@ -246,7 +256,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
        public function unserialize($serialized) {
                throw new RuntimeException('A ObjectStorage instance cannot be unserialized.', 1267700870);
        }
-
+       
        /**
         * Register an object's clean state, e.g. after it has been reconstituted
         * from the database
@@ -265,7 +275,7 @@ class Tx_Extbase_Persistence_ObjectStorage implements Countable, Iterator, Array
        public function _isDirty() {
                return $this->isModified;
        }
-
+       
 }
 
 ?>
\ No newline at end of file
index e9e535f..4899cbf 100644 (file)
@@ -67,7 +67,10 @@ class Tx_Extbase_Utility_Cache {
                                $pageCache->flush();
                        }
                } elseif ($pageIds !== NULL) {
-                       $GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_pages', 'page_id IN (' . implode(',', $pageIds) . ')');
+                       $GLOBALS['TYPO3_DB']->exec_DELETEquery(
+                               'cache_pages',
+                               'page_id IN (' . implode(',', $GLOBALS['TYPO3_DB']->cleanIntArray($pageIds)) . ')'
+                       );
                } else {
                        $GLOBALS['TYPO3_DB']->exec_TRUNCATEquery('cache_pages');
                }
@@ -91,7 +94,10 @@ class Tx_Extbase_Utility_Cache {
                                $pageSectionCache->flush();
                        }
                } elseif ($pageIds !== NULL) {
-                       $GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_pagesection', 'page_id IN (' . implode(',', $pageIds) . ')');
+                       $GLOBALS['TYPO3_DB']->exec_DELETEquery(
+                               'cache_pagesection',
+                               'page_id IN (' . implode(',', $GLOBALS['TYPO3_DB']->cleanIntArray($pageIds)) . ')'
+                       );
                } else {
                        $GLOBALS['TYPO3_DB']->exec_TRUNCATEquery('cache_pagesection');
                }
index 8ebcaf9..23a2ec5 100644 (file)
@@ -507,6 +507,29 @@ tt_content.' . $pluginSignature . ' {
        }
 
        /**
+        * Checks if the given action is cacheable or not.
+        *
+        * @param string $extensionName Name of the target extension, without underscores
+        * @param string $pluginName Name of the target plugin
+        * @param string $controllerName Name of the target controller
+        * @param string $actionName Name of the action to be called
+        * @return boolean TRUE if the specified plugin action is cacheable, otherwise FALSE
+        */
+       static public function isActionCacheable($extensionName, $pluginName, $controllerName, $actionName) {
+               $objectManager = t3lib_div::makeInstance('Tx_Extbase_Object_ObjectManager');
+               $configurationManager = $objectManager->get('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $frameworkConfiguration = $configurationManager->getConfiguration(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK, $extensionName, $pluginName);
+
+               if (isset($frameworkConfiguration['controllerConfiguration'][$controllerName])
+                       && is_array($frameworkConfiguration['controllerConfiguration'][$controllerName])
+                       && is_array($frameworkConfiguration['controllerConfiguration'][$controllerName]['nonCacheableActions'])
+                       && in_array($actionName, $frameworkConfiguration['controllerConfiguration'][$controllerName]['nonCacheableActions'])) {
+                               return FALSE;
+               }
+               return TRUE;
+       }
+
+       /**
         * Determines the target page of the specified plugin.
         * If plugin.tx_$pluginSignature.view.defaultPid is set, this value is used as target page id
         * If defaultPid is set to "auto", a the target pid is determined by loading the tt_content record that contains this plugin
index c65ce5a..21350d6 100644 (file)
@@ -178,6 +178,30 @@ class Tx_Extbase_Tests_Unit_MVC_Web_Routing_UriBuilderTest extends Tx_Extbase_Te
        /**
         * @test
         */
+       public function uriForDisablesCacheHashForNonCacheableActions() {
+               $mockConfiguration = array(
+                       'controllerConfiguration' => array(
+                               'SomeController' => array(
+                                       'nonCacheableActions' => array('someNonCacheableAction')
+                               )
+                       )
+               );
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($mockConfiguration));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->any())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $this->assertTrue($this->uriBuilder->getUseCacheHash());
+               $this->uriBuilder->uriFor('someNonCacheableAction', array(), 'SomeController', 'SomeExtension');
+               $this->assertFalse($this->uriBuilder->getUseCacheHash());
+
+               t3lib_div::purgeInstances();
+       }
+
+       /**
+        * @test
+        */
        public function buildBackendUriKeepsQueryParametersIfAddQueryStringIsSet() {
                t3lib_div::_GETset(array('M' => 'moduleKey', 'id' => 'pageId', 'foo' => 'bar'));
 
index 0e99ba8..4fb1cbc 100644 (file)
@@ -123,6 +123,7 @@ class Tx_Extbase_Tests_Unit_Utility_ExtensionTest extends tx_phpunit_testcase {
        public function tearDown() {
                $GLOBALS['TYPO3_CONF_VARS'] = $this->typo3ConfVars;
                $GLOBALS['TSFE'] = $this->tsfeBackup;
+               t3lib_div::purgeInstances();
        }
 
        /**
@@ -498,6 +499,42 @@ plugin.tx_myextension {
        /**
         * @test
         */
+       public function isActionCacheableReturnsTrueByDefault() {
+               $mockConfiguration = array();
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($mockConfiguration));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->any())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $actualResult = Tx_Extbase_Utility_Extension::isActionCacheable('SomeExtension', 'SomePlugin', 'SomeController', 'someAction');
+               $this->assertTrue($actualResult);
+       }
+
+       /**
+        * @test
+        */
+       public function isActionCacheableReturnsFalseIfActionIsNotCacheable() {
+               $mockConfiguration = array(
+                       'controllerConfiguration' => array(
+                               'SomeController' => array(
+                                       'nonCacheableActions' => array('someAction')
+                               )
+                       )
+               );
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($mockConfiguration));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->any())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $actualResult = Tx_Extbase_Utility_Extension::isActionCacheable('SomeExtension', 'SomePlugin', 'SomeController', 'someAction');
+               $this->assertFalse($actualResult);
+       }
+
+       /**
+        * @test
+        */
        public function getTargetPidByPluginSignatureReturnsNullIfConfigurationManagerIsNotInitialized() {
                $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
                $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(NULL));
old mode 100644 (file)
new mode 100755 (executable)
index 2259bc6..6a9ba8d
@@ -3,7 +3,7 @@
 ########################################################################
 # Extension Manager/Repository config file for ext "extbase".
 #
-# Auto generated 21-01-2011 14:41
+# Auto generated 26-01-2011 09:19
 #
 # Manual updates:
 # Only the data in the array - everything else is removed by next
@@ -29,7 +29,7 @@ $EM_CONF[$_EXTKEY] = array(
        'clearCacheOnLoad' => 1,
        'lockType' => '',
        'author_company' => '',
-       'version' => '1.3.0RC1',
+       'version' => '1.3.0',
        'constraints' => array(
                'depends' => array(
                        'php' => '5.2.0-0.0.0',
@@ -42,7 +42,7 @@ $EM_CONF[$_EXTKEY] = array(
        ),
        'suggests' => array(
        ),
-       '_md5_values_when_last_written' => 'a:303:{s:13:"ChangeLog.txt";s:4:"3389";s:16:"ext_autoload.php";s:4:"a485";s:12:"ext_icon.gif";s:4:"e922";s:17:"ext_localconf.php";s:4:"50dd";s:14:"ext_tables.php";s:4:"491e";s:14:"ext_tables.sql";s:4:"0c2f";s:24:"ext_typoscript_setup.txt";s:4:"2bf7";s:22:"Classes/Dispatcher.php";s:4:"c031";s:21:"Classes/Exception.php";s:4:"c346";s:54:"Classes/Configuration/AbstractConfigurationManager.php";s:4:"c4ea";s:53:"Classes/Configuration/BackendConfigurationManager.php";s:4:"ba7c";s:46:"Classes/Configuration/ConfigurationManager.php";s:4:"31cb";s:55:"Classes/Configuration/ConfigurationManagerInterface.php";s:4:"7a2b";s:35:"Classes/Configuration/Exception.php";s:4:"31e6";s:54:"Classes/Configuration/FrontendConfigurationManager.php";s:4:"7a7b";s:53:"Classes/Configuration/Exception/ContainerIsLocked.php";s:4:"113a";s:60:"Classes/Configuration/Exception/InvalidConfigurationType.php";s:4:"9379";s:46:"Classes/Configuration/Exception/NoSuchFile.php";s:4:"75ce";s:48:"Classes/Configuration/Exception/NoSuchOption.php";s:4:"f616";s:46:"Classes/Configuration/Exception/ParseError.php";s:4:"b75a";s:26:"Classes/Core/Bootstrap.php";s:4:"5e7e";s:37:"Classes/Domain/Model/FrontendUser.php";s:4:"7bb3";s:42:"Classes/Domain/Model/FrontendUserGroup.php";s:4:"794d";s:57:"Classes/Domain/Repository/FrontendUserGroupRepository.php";s:4:"0197";s:52:"Classes/Domain/Repository/FrontendUserRepository.php";s:4:"ce1e";s:45:"Classes/DomainObject/AbstractDomainObject.php";s:4:"4cdb";s:39:"Classes/DomainObject/AbstractEntity.php";s:4:"81ea";s:44:"Classes/DomainObject/AbstractValueObject.php";s:4:"42f0";s:46:"Classes/DomainObject/DomainObjectInterface.php";s:4:"2d94";s:23:"Classes/Error/Error.php";s:4:"4fa2";s:26:"Classes/MVC/Dispatcher.php";s:4:"fd5f";s:25:"Classes/MVC/Exception.php";s:4:"606f";s:23:"Classes/MVC/Request.php";s:4:"d652";s:39:"Classes/MVC/RequestHandlerInterface.php";s:4:"620c";s:38:"Classes/MVC/RequestHandlerResolver.php";s:4:"860e";s:32:"Classes/MVC/RequestInterface.php";s:4:"e830";s:24:"Classes/MVC/Response.php";s:4:"0069";s:33:"Classes/MVC/ResponseInterface.php";s:4:"0ab1";s:45:"Classes/MVC/Controller/AbstractController.php";s:4:"2130";s:43:"Classes/MVC/Controller/ActionController.php";s:4:"dcf2";s:35:"Classes/MVC/Controller/Argument.php";s:4:"56f6";s:40:"Classes/MVC/Controller/ArgumentError.php";s:4:"6c22";s:36:"Classes/MVC/Controller/Arguments.php";s:4:"cff5";s:45:"Classes/MVC/Controller/ArgumentsValidator.php";s:4:"ca84";s:44:"Classes/MVC/Controller/ControllerContext.php";s:4:"b24c";s:46:"Classes/MVC/Controller/ControllerInterface.php";s:4:"c450";s:40:"Classes/MVC/Controller/FlashMessages.php";s:4:"f28e";s:38:"Classes/MVC/Exception/InfiniteLoop.php";s:4:"5984";s:43:"Classes/MVC/Exception/InvalidActionName.php";s:4:"baec";s:45:"Classes/MVC/Exception/InvalidArgumentName.php";s:4:"55a6";s:45:"Classes/MVC/Exception/InvalidArgumentType.php";s:4:"0b9c";s:46:"Classes/MVC/Exception/InvalidArgumentValue.php";s:4:"a836";s:43:"Classes/MVC/Exception/InvalidController.php";s:4:"f0b0";s:47:"Classes/MVC/Exception/InvalidControllerName.php";s:4:"7b4c";s:46:"Classes/MVC/Exception/InvalidExtensionName.php";s:4:"865a";s:39:"Classes/MVC/Exception/InvalidMarker.php";s:4:"4a5e";s:48:"Classes/MVC/Exception/InvalidOrNoRequestHash.php";s:4:"beff";s:46:"Classes/MVC/Exception/InvalidRequestMethod.php";s:4:"508f";s:44:"Classes/MVC/Exception/InvalidRequestType.php";s:4:"def7";s:49:"Classes/MVC/Exception/InvalidTemplateResource.php";s:4:"bbb7";s:43:"Classes/MVC/Exception/InvalidUriPattern.php";s:4:"cee0";s:43:"Classes/MVC/Exception/InvalidViewHelper.php";s:4:"686d";s:38:"Classes/MVC/Exception/NoSuchAction.php";s:4:"1889";s:40:"Classes/MVC/Exception/NoSuchArgument.php";s:4:"1bec";s:42:"Classes/MVC/Exception/NoSuchController.php";s:4:"baa6";s:36:"Classes/MVC/Exception/StopAction.php";s:4:"7290";s:48:"Classes/MVC/Exception/UnsupportedRequestType.php";s:4:"27ce";s:33:"Classes/MVC/View/AbstractView.php";s:4:"3960";s:30:"Classes/MVC/View/EmptyView.php";s:4:"52f5";s:33:"Classes/MVC/View/NotFoundView.php";s:4:"5fe7";s:34:"Classes/MVC/View/ViewInterface.php";s:4:"dc07";s:42:"Classes/MVC/Web/AbstractRequestHandler.php";s:4:"a510";s:41:"Classes/MVC/Web/BackendRequestHandler.php";s:4:"31f7";s:42:"Classes/MVC/Web/FrontendRequestHandler.php";s:4:"33bd";s:27:"Classes/MVC/Web/Request.php";s:4:"93cc";s:34:"Classes/MVC/Web/RequestBuilder.php";s:4:"1d01";s:39:"Classes/MVC/Web/RequestBuilder.php.orig";s:4:"1d01";s:28:"Classes/MVC/Web/Response.php";s:4:"7156";s:38:"Classes/MVC/Web/Routing/UriBuilder.php";s:4:"6457";s:28:"Classes/Object/Exception.php";s:4:"2f66";s:26:"Classes/Object/Manager.php";s:4:"4026";s:32:"Classes/Object/ObjectManager.php";s:4:"c78d";s:41:"Classes/Object/ObjectManagerInterface.php";s:4:"9dd9";s:38:"Classes/Object/Container/ClassInfo.php";s:4:"3ddc";s:43:"Classes/Object/Container/ClassInfoCache.php";s:4:"f745";s:45:"Classes/Object/Container/ClassInfoFactory.php";s:4:"1355";s:38:"Classes/Object/Container/Container.php";s:4:"6fb5";s:43:"Classes/Object/Container/Container.php.orig";s:4:"3261";s:69:"Classes/Object/Container/Exception/CannotInitializeCacheException.php";s:4:"4258";s:70:"Classes/Object/Container/Exception/TooManyRecursionLevelsException.php";s:4:"cd39";s:61:"Classes/Object/Container/Exception/UnknownObjectException.php";s:4:"d18e";s:46:"Classes/Object/Exception/CannotBuildObject.php";s:4:"8070";s:53:"Classes/Object/Exception/CannotReconstituteObject.php";s:4:"e8cc";s:41:"Classes/Object/Exception/InvalidClass.php";s:4:"d226";s:42:"Classes/Object/Exception/InvalidObject.php";s:4:"cc16";s:55:"Classes/Object/Exception/InvalidObjectConfiguration.php";s:4:"e82a";s:52:"Classes/Object/Exception/ObjectAlreadyRegistered.php";s:4:"eecb";s:41:"Classes/Object/Exception/UnknownClass.php";s:4:"d10a";s:45:"Classes/Object/Exception/UnknownInterface.php";s:4:"22a4";s:51:"Classes/Object/Exception/UnresolvedDependencies.php";s:4:"7d47";s:39:"Classes/Object/Exception/WrongScope.php";s:4:"cc92";s:31:"Classes/Persistence/Backend.php";s:4:"d2cf";s:40:"Classes/Persistence/BackendInterface.php";s:4:"88db";s:33:"Classes/Persistence/Exception.php";s:4:"1713";s:35:"Classes/Persistence/IdentityMap.php";s:4:"6b90";s:40:"Classes/Persistence/LazyLoadingProxy.php";s:4:"1928";s:41:"Classes/Persistence/LazyObjectStorage.php";s:4:"faa1";s:48:"Classes/Persistence/LoadingStrategyInterface.php";s:4:"fa0d";s:31:"Classes/Persistence/Manager.php";s:4:"6e42";s:40:"Classes/Persistence/ManagerInterface.php";s:4:"17d8";s:49:"Classes/Persistence/ObjectMonitoringInterface.php";s:4:"6054";s:37:"Classes/Persistence/ObjectStorage.php";s:4:"a883";s:36:"Classes/Persistence/PropertyType.php";s:4:"f62a";s:29:"Classes/Persistence/Query.php";s:4:"203d";s:36:"Classes/Persistence/QueryFactory.php";s:4:"4ab8";s:45:"Classes/Persistence/QueryFactoryInterface.php";s:4:"900e";s:38:"Classes/Persistence/QueryInterface.php";s:4:"ebdb";s:35:"Classes/Persistence/QueryResult.php";s:4:"af68";s:44:"Classes/Persistence/QueryResultInterface.php";s:4:"843d";s:46:"Classes/Persistence/QuerySettingsInterface.php";s:4:"1e52";s:34:"Classes/Persistence/Repository.php";s:4:"8ee2";s:43:"Classes/Persistence/RepositoryInterface.php";s:4:"55e7";s:31:"Classes/Persistence/Session.php";s:4:"43b4";s:42:"Classes/Persistence/Typo3QuerySettings.php";s:4:"cd0d";s:56:"Classes/Persistence/Exception/CleanStateNotMemorized.php";s:4:"7689";s:51:"Classes/Persistence/Exception/IllegalObjectType.php";s:4:"73e7";s:46:"Classes/Persistence/Exception/InvalidClass.php";s:4:"761b";s:60:"Classes/Persistence/Exception/InvalidNumberOfConstraints.php";s:4:"3a38";s:53:"Classes/Persistence/Exception/InvalidPropertyType.php";s:4:"cd9a";s:48:"Classes/Persistence/Exception/MissingBackend.php";s:4:"1d0d";s:53:"Classes/Persistence/Exception/RepositoryException.php";s:4:"1aba";s:42:"Classes/Persistence/Exception/TooDirty.php";s:4:"3347";s:57:"Classes/Persistence/Exception/UnexpectedTypeException.php";s:4:"5b57";s:47:"Classes/Persistence/Exception/UnknownObject.php";s:4:"21a6";s:51:"Classes/Persistence/Exception/UnsupportedMethod.php";s:4:"9915";s:50:"Classes/Persistence/Exception/UnsupportedOrder.php";s:4:"f4b9";s:53:"Classes/Persistence/Exception/UnsupportedRelation.php";s:4:"6bc0";s:40:"Classes/Persistence/Mapper/ColumnMap.php";s:4:"fee9";s:38:"Classes/Persistence/Mapper/DataMap.php";s:4:"2b19";s:45:"Classes/Persistence/Mapper/DataMapFactory.php";s:4:"ab68";s:41:"Classes/Persistence/Mapper/DataMapper.php";s:4:"5358";s:40:"Classes/Persistence/QOM/AndInterface.php";s:4:"f72d";s:45:"Classes/Persistence/QOM/BindVariableValue.php";s:4:"454e";s:54:"Classes/Persistence/QOM/BindVariableValueInterface.php";s:4:"822e";s:38:"Classes/Persistence/QOM/Comparison.php";s:4:"74e7";s:47:"Classes/Persistence/QOM/ComparisonInterface.php";s:4:"f50a";s:38:"Classes/Persistence/QOM/Constraint.php";s:4:"6e7b";s:47:"Classes/Persistence/QOM/ConstraintInterface.php";s:4:"c106";s:42:"Classes/Persistence/QOM/DynamicOperand.php";s:4:"29d3";s:51:"Classes/Persistence/QOM/DynamicOperandInterface.php";s:4:"981b";s:45:"Classes/Persistence/QOM/EquiJoinCondition.php";s:4:"29b1";s:54:"Classes/Persistence/QOM/EquiJoinConditionInterface.php";s:4:"b9f5";s:32:"Classes/Persistence/QOM/Join.php";s:4:"d270";s:50:"Classes/Persistence/QOM/JoinConditionInterface.php";s:4:"63c8";s:41:"Classes/Persistence/QOM/JoinInterface.php";s:4:"c3a5";s:38:"Classes/Persistence/QOM/LogicalAnd.php";s:4:"4b22";s:38:"Classes/Persistence/QOM/LogicalNot.php";s:4:"aba3";s:37:"Classes/Persistence/QOM/LogicalOr.php";s:4:"3476";s:37:"Classes/Persistence/QOM/LowerCase.php";s:4:"15a8";s:46:"Classes/Persistence/QOM/LowerCaseInterface.php";s:4:"215c";s:40:"Classes/Persistence/QOM/NotInterface.php";s:4:"8d10";s:35:"Classes/Persistence/QOM/Operand.php";s:4:"a635";s:44:"Classes/Persistence/QOM/OperandInterface.php";s:4:"39ff";s:39:"Classes/Persistence/QOM/OrInterface.php";s:4:"b109";s:36:"Classes/Persistence/QOM/Ordering.php";s:4:"e7f4";s:45:"Classes/Persistence/QOM/OrderingInterface.php";s:4:"b9f9";s:41:"Classes/Persistence/QOM/PropertyValue.php";s:4:"96fb";s:50:"Classes/Persistence/QOM/PropertyValueInterface.php";s:4:"6526";s:62:"Classes/Persistence/QOM/QueryObjectModelConstantsInterface.php";s:4:"33bb";s:51:"Classes/Persistence/QOM/QueryObjectModelFactory.php";s:4:"e6fc";s:60:"Classes/Persistence/QOM/QueryObjectModelFactoryInterface.php";s:4:"3b53";s:36:"Classes/Persistence/QOM/Selector.php";s:4:"59cb";s:45:"Classes/Persistence/QOM/SelectorInterface.php";s:4:"e75c";s:43:"Classes/Persistence/QOM/SourceInterface.php";s:4:"a397";s:37:"Classes/Persistence/QOM/Statement.php";s:4:"c978";s:41:"Classes/Persistence/QOM/StaticOperand.php";s:4:"69f4";s:50:"Classes/Persistence/QOM/StaticOperandInterface.php";s:4:"4e9b";s:37:"Classes/Persistence/QOM/UpperCase.php";s:4:"6646";s:46:"Classes/Persistence/QOM/UpperCaseInterface.php";s:4:"ea6b";s:48:"Classes/Persistence/Storage/BackendInterface.php";s:4:"ad7b";s:46:"Classes/Persistence/Storage/Typo3DbBackend.php";s:4:"8e5f";s:51:"Classes/Persistence/Storage/Typo3DbBackend.php.orig";s:4:"b71f";s:55:"Classes/Persistence/Storage/Exception/BadConstraint.php";s:4:"3a87";s:50:"Classes/Persistence/Storage/Exception/SqlError.php";s:4:"850b";s:30:"Classes/Property/Exception.php";s:4:"8465";s:27:"Classes/Property/Mapper.php";s:4:"d709";s:35:"Classes/Property/MappingResults.php";s:4:"64c8";s:49:"Classes/Property/Exception/FormatNotSupported.php";s:4:"338e";s:46:"Classes/Property/Exception/InvalidDataType.php";s:4:"f280";s:44:"Classes/Property/Exception/InvalidFormat.php";s:4:"0bfa";s:46:"Classes/Property/Exception/InvalidProperty.php";s:4:"e6fb";s:44:"Classes/Property/Exception/InvalidSource.php";s:4:"ba13";s:44:"Classes/Property/Exception/InvalidTarget.php";s:4:"6cd9";s:38:"Classes/Reflection/ClassReflection.php";s:4:"913c";s:34:"Classes/Reflection/ClassSchema.php";s:4:"7ebc";s:39:"Classes/Reflection/DocCommentParser.php";s:4:"6357";s:32:"Classes/Reflection/Exception.php";s:4:"8625";s:39:"Classes/Reflection/MethodReflection.php";s:4:"26fc";s:35:"Classes/Reflection/ObjectAccess.php";s:4:"445e";s:42:"Classes/Reflection/ParameterReflection.php";s:4:"284d";s:41:"Classes/Reflection/PropertyReflection.php";s:4:"95b8";s:30:"Classes/Reflection/Service.php";s:4:"54c8";s:52:"Classes/Reflection/Exception/InvalidPropertyType.php";s:4:"02d6";s:63:"Classes/Reflection/Exception/PropertyNotAccessibleException.php";s:4:"0ddf";s:30:"Classes/Security/Exception.php";s:4:"2d15";s:47:"Classes/Security/Channel/RequestHashService.php";s:4:"afac";s:45:"Classes/Security/Cryptography/HashService.php";s:4:"e0aa";s:63:"Classes/Security/Exception/InvalidArgumentForHashGeneration.php";s:4:"856e";s:70:"Classes/Security/Exception/InvalidArgumentForRequestHashGeneration.php";s:4:"9f05";s:60:"Classes/Security/Exception/SyntacticallyWrongRequestHash.php";s:4:"89bd";s:26:"Classes/Utility/Arrays.php";s:4:"5dfd";s:25:"Classes/Utility/Cache.php";s:4:"9c29";s:31:"Classes/Utility/ClassLoader.php";s:4:"16a4";s:44:"Classes/Utility/ExtbaseRequirementsCheck.php";s:4:"a352";s:29:"Classes/Utility/Extension.php";s:4:"3c8d";s:37:"Classes/Utility/FrontendSimulator.php";s:4:"bd64";s:32:"Classes/Utility/Localization.php";s:4:"5c10";s:32:"Classes/Utility/TypeHandling.php";s:4:"d63e";s:30:"Classes/Utility/TypoScript.php";s:4:"c335";s:28:"Classes/Validation/Error.php";s:4:"247a";s:32:"Classes/Validation/Exception.php";s:4:"44f8";s:36:"Classes/Validation/PropertyError.php";s:4:"f0a7";s:40:"Classes/Validation/ValidatorResolver.php";s:4:"07a6";s:47:"Classes/Validation/Exception/InvalidSubject.php";s:4:"5040";s:63:"Classes/Validation/Exception/InvalidValidationConfiguration.php";s:4:"9cfa";s:57:"Classes/Validation/Exception/InvalidValidationOptions.php";s:4:"a3a8";s:48:"Classes/Validation/Exception/NoSuchValidator.php";s:4:"64f4";s:49:"Classes/Validation/Exception/NoValidatorFound.php";s:4:"be96";s:59:"Classes/Validation/Validator/AbstractCompositeValidator.php";s:4:"93b2";s:56:"Classes/Validation/Validator/AbstractObjectValidator.php";s:4:"fb77";s:50:"Classes/Validation/Validator/AbstractValidator.php";s:4:"c4ad";s:54:"Classes/Validation/Validator/AlphanumericValidator.php";s:4:"ae25";s:53:"Classes/Validation/Validator/ConjunctionValidator.php";s:4:"e2bc";s:50:"Classes/Validation/Validator/DateTimeValidator.php";s:4:"3716";s:53:"Classes/Validation/Validator/DisjunctionValidator.php";s:4:"95f8";s:54:"Classes/Validation/Validator/EmailAddressValidator.php";s:4:"e9de";s:47:"Classes/Validation/Validator/FloatValidator.php";s:4:"6e44";s:55:"Classes/Validation/Validator/GenericObjectValidator.php";s:4:"210d";s:49:"Classes/Validation/Validator/IntegerValidator.php";s:4:"f70f";s:50:"Classes/Validation/Validator/NotEmptyValidator.php";s:4:"92fa";s:53:"Classes/Validation/Validator/NumberRangeValidator.php";s:4:"33cb";s:48:"Classes/Validation/Validator/NumberValidator.php";s:4:"ab3d";s:57:"Classes/Validation/Validator/ObjectValidatorInterface.php";s:4:"aeea";s:45:"Classes/Validation/Validator/RawValidator.php";s:4:"2b76";s:59:"Classes/Validation/Validator/RegularExpressionValidator.php";s:4:"95aa";s:54:"Classes/Validation/Validator/StringLengthValidator.php";s:4:"6885";s:48:"Classes/Validation/Validator/StringValidator.php";s:4:"2231";s:46:"Classes/Validation/Validator/TextValidator.php";s:4:"d641";s:51:"Classes/Validation/Validator/ValidatorInterface.php";s:4:"1c82";s:24:"Documentation/README.txt";s:4:"35d4";s:43:"Resources/Private/Language/locallang_db.xml";s:4:"d03e";s:48:"Resources/Private/MVC/NotFoundView_Template.html";s:4:"d5a3";s:22:"Tests/BaseTestCase.php";s:4:"c7e5";s:30:"Tests/SeleniumBaseTestCase.php";s:4:"6769";s:27:"Tests/Unit/BaseTestCase.php";s:4:"c0ba";s:61:"Tests/Unit/Configuration/AbstractConfigurationManagerTest.php";s:4:"d475";s:60:"Tests/Unit/Configuration/BackendConfigurationManagerTest.php";s:4:"5d6c";s:61:"Tests/Unit/Configuration/FrontendConfigurationManagerTest.php";s:4:"6cdb";s:46:"Tests/Unit/DomainObject/AbstractEntityTest.php";s:4:"4539";s:30:"Tests/Unit/Fixtures/Entity.php";s:4:"09e9";s:33:"Tests/Unit/MVC/DispatcherTest.php";s:4:"17b7";s:52:"Tests/Unit/MVC/Controller/AbstractControllerTest.php";s:4:"5a51";s:50:"Tests/Unit/MVC/Controller/ActionControllerTest.php";s:4:"110f";s:42:"Tests/Unit/MVC/Controller/ArgumentTest.php";s:4:"4805";s:43:"Tests/Unit/MVC/Controller/ArgumentsTest.php";s:4:"f493";s:41:"Tests/Unit/MVC/Web/RequestBuilderTest.php";s:4:"a77a";s:34:"Tests/Unit/MVC/Web/RequestTest.php";s:4:"70cf";s:45:"Tests/Unit/MVC/Web/Routing/UriBuilderTest.php";s:4:"3b83";s:52:"Tests/Unit/Object/Container/ClassInfoFactoryTest.php";s:4:"e450";s:45:"Tests/Unit/Object/Container/ContainerTest.php";s:4:"f62e";s:50:"Tests/Unit/Object/Container/ContainerTest.php.orig";s:4:"3dd5";s:52:"Tests/Unit/Object/Container/Fixtures/Testclasses.php";s:4:"64ed";s:44:"Tests/Unit/Persistence/ObjectStorageTest.php";s:4:"f76b";s:42:"Tests/Unit/Persistence/QueryResultTest.php";s:4:"4681";s:36:"Tests/Unit/Persistence/QueryTest.php";s:4:"9df8";s:41:"Tests/Unit/Persistence/RepositoryTest.php";s:4:"1ca3";s:38:"Tests/Unit/Persistence/SessionTest.php";s:4:"908a";s:52:"Tests/Unit/Persistence/Mapper/DataMapFactoryTest.php";s:4:"1f05";s:53:"Tests/Unit/Persistence/Storage/Typo3DbBackendTest.php";s:4:"610a";s:42:"Tests/Unit/Reflection/ObjectAccessTest.php";s:4:"bbfc";s:37:"Tests/Unit/Reflection/ServiceTest.php";s:4:"135c";s:50:"Tests/Unit/Reflection/Fixture/ArrayAccessClass.php";s:4:"9afd";s:65:"Tests/Unit/Reflection/Fixture/DummyClassWithGettersAndSetters.php";s:4:"258b";s:54:"Tests/Unit/Security/Channel/RequestHashServiceTest.php";s:4:"a9be";s:52:"Tests/Unit/Security/Cryptography/HashServiceTest.php";s:4:"f27a";s:36:"Tests/Unit/Utility/ExtensionTest.php";s:4:"b3b1";s:39:"Tests/Unit/Utility/LocalizationTest.php";s:4:"e9f4";s:37:"Tests/Unit/Utility/TypoScriptTest.php";s:4:"4237";s:47:"Tests/Unit/Validation/ValidatorResolverTest.php";s:4:"4548";s:61:"Tests/Unit/Validation/Validator/AlphanumericValidatorTest.php";s:4:"0223";s:60:"Tests/Unit/Validation/Validator/ConjunctionValidatorTest.php";s:4:"4e82";s:57:"Tests/Unit/Validation/Validator/DateTimeValidatorTest.php";s:4:"1fd6";s:61:"Tests/Unit/Validation/Validator/EmailAddressValidatorTest.php";s:4:"7961";s:54:"Tests/Unit/Validation/Validator/FloatValidatorTest.php";s:4:"4b61";s:62:"Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php";s:4:"5743";s:56:"Tests/Unit/Validation/Validator/IntegerValidatorTest.php";s:4:"f9e9";s:57:"Tests/Unit/Validation/Validator/NotEmptyValidatorTest.php";s:4:"29d8";s:60:"Tests/Unit/Validation/Validator/NumberRangeValidatorTest.php";s:4:"0351";s:55:"Tests/Unit/Validation/Validator/NumberValidatorTest.php";s:4:"82bf";s:52:"Tests/Unit/Validation/Validator/RawValidatorTest.php";s:4:"03b1";s:66:"Tests/Unit/Validation/Validator/RegularExpressionValidatorTest.php";s:4:"18d0";s:61:"Tests/Unit/Validation/Validator/StringLengthValidatorTest.php";s:4:"4cf3";s:53:"Tests/Unit/Validation/Validator/TextValidatorTest.php";s:4:"eb32";}',
+       '_md5_values_when_last_written' => 'a:299:{s:13:"ChangeLog.txt";s:4:"baf2";s:16:"ext_autoload.php";s:4:"a485";s:12:"ext_icon.gif";s:4:"e922";s:17:"ext_localconf.php";s:4:"50dd";s:14:"ext_tables.php";s:4:"491e";s:14:"ext_tables.sql";s:4:"0c2f";s:24:"ext_typoscript_setup.txt";s:4:"2bf7";s:22:"Classes/Dispatcher.php";s:4:"c031";s:21:"Classes/Exception.php";s:4:"c346";s:54:"Classes/Configuration/AbstractConfigurationManager.php";s:4:"c4ea";s:53:"Classes/Configuration/BackendConfigurationManager.php";s:4:"ba7c";s:46:"Classes/Configuration/ConfigurationManager.php";s:4:"31cb";s:55:"Classes/Configuration/ConfigurationManagerInterface.php";s:4:"7a2b";s:35:"Classes/Configuration/Exception.php";s:4:"31e6";s:54:"Classes/Configuration/FrontendConfigurationManager.php";s:4:"7a7b";s:53:"Classes/Configuration/Exception/ContainerIsLocked.php";s:4:"113a";s:60:"Classes/Configuration/Exception/InvalidConfigurationType.php";s:4:"9379";s:46:"Classes/Configuration/Exception/NoSuchFile.php";s:4:"75ce";s:48:"Classes/Configuration/Exception/NoSuchOption.php";s:4:"f616";s:46:"Classes/Configuration/Exception/ParseError.php";s:4:"b75a";s:26:"Classes/Core/Bootstrap.php";s:4:"5e7e";s:37:"Classes/Domain/Model/FrontendUser.php";s:4:"7bb3";s:42:"Classes/Domain/Model/FrontendUserGroup.php";s:4:"794d";s:57:"Classes/Domain/Repository/FrontendUserGroupRepository.php";s:4:"0197";s:52:"Classes/Domain/Repository/FrontendUserRepository.php";s:4:"ce1e";s:45:"Classes/DomainObject/AbstractDomainObject.php";s:4:"c4d7";s:39:"Classes/DomainObject/AbstractEntity.php";s:4:"4b00";s:44:"Classes/DomainObject/AbstractValueObject.php";s:4:"42f0";s:46:"Classes/DomainObject/DomainObjectInterface.php";s:4:"d689";s:23:"Classes/Error/Error.php";s:4:"4fa2";s:26:"Classes/MVC/Dispatcher.php";s:4:"fd5f";s:25:"Classes/MVC/Exception.php";s:4:"606f";s:23:"Classes/MVC/Request.php";s:4:"d652";s:39:"Classes/MVC/RequestHandlerInterface.php";s:4:"620c";s:38:"Classes/MVC/RequestHandlerResolver.php";s:4:"860e";s:32:"Classes/MVC/RequestInterface.php";s:4:"e830";s:24:"Classes/MVC/Response.php";s:4:"0069";s:33:"Classes/MVC/ResponseInterface.php";s:4:"0ab1";s:45:"Classes/MVC/Controller/AbstractController.php";s:4:"2130";s:43:"Classes/MVC/Controller/ActionController.php";s:4:"dcf2";s:35:"Classes/MVC/Controller/Argument.php";s:4:"56f6";s:40:"Classes/MVC/Controller/ArgumentError.php";s:4:"6c22";s:36:"Classes/MVC/Controller/Arguments.php";s:4:"cff5";s:45:"Classes/MVC/Controller/ArgumentsValidator.php";s:4:"ca84";s:44:"Classes/MVC/Controller/ControllerContext.php";s:4:"b24c";s:46:"Classes/MVC/Controller/ControllerInterface.php";s:4:"c450";s:40:"Classes/MVC/Controller/FlashMessages.php";s:4:"f28e";s:38:"Classes/MVC/Exception/InfiniteLoop.php";s:4:"5984";s:43:"Classes/MVC/Exception/InvalidActionName.php";s:4:"baec";s:45:"Classes/MVC/Exception/InvalidArgumentName.php";s:4:"55a6";s:45:"Classes/MVC/Exception/InvalidArgumentType.php";s:4:"0b9c";s:46:"Classes/MVC/Exception/InvalidArgumentValue.php";s:4:"a836";s:43:"Classes/MVC/Exception/InvalidController.php";s:4:"f0b0";s:47:"Classes/MVC/Exception/InvalidControllerName.php";s:4:"7b4c";s:46:"Classes/MVC/Exception/InvalidExtensionName.php";s:4:"865a";s:39:"Classes/MVC/Exception/InvalidMarker.php";s:4:"4a5e";s:48:"Classes/MVC/Exception/InvalidOrNoRequestHash.php";s:4:"beff";s:46:"Classes/MVC/Exception/InvalidRequestMethod.php";s:4:"508f";s:44:"Classes/MVC/Exception/InvalidRequestType.php";s:4:"def7";s:49:"Classes/MVC/Exception/InvalidTemplateResource.php";s:4:"bbb7";s:43:"Classes/MVC/Exception/InvalidUriPattern.php";s:4:"cee0";s:43:"Classes/MVC/Exception/InvalidViewHelper.php";s:4:"686d";s:38:"Classes/MVC/Exception/NoSuchAction.php";s:4:"1889";s:40:"Classes/MVC/Exception/NoSuchArgument.php";s:4:"1bec";s:42:"Classes/MVC/Exception/NoSuchController.php";s:4:"baa6";s:36:"Classes/MVC/Exception/StopAction.php";s:4:"7290";s:48:"Classes/MVC/Exception/UnsupportedRequestType.php";s:4:"27ce";s:33:"Classes/MVC/View/AbstractView.php";s:4:"3960";s:30:"Classes/MVC/View/EmptyView.php";s:4:"52f5";s:33:"Classes/MVC/View/NotFoundView.php";s:4:"5fe7";s:34:"Classes/MVC/View/ViewInterface.php";s:4:"dc07";s:42:"Classes/MVC/Web/AbstractRequestHandler.php";s:4:"a510";s:41:"Classes/MVC/Web/BackendRequestHandler.php";s:4:"31f7";s:42:"Classes/MVC/Web/FrontendRequestHandler.php";s:4:"33bd";s:27:"Classes/MVC/Web/Request.php";s:4:"93cc";s:34:"Classes/MVC/Web/RequestBuilder.php";s:4:"1d01";s:28:"Classes/MVC/Web/Response.php";s:4:"7156";s:38:"Classes/MVC/Web/Routing/UriBuilder.php";s:4:"9269";s:28:"Classes/Object/Exception.php";s:4:"2f66";s:26:"Classes/Object/Manager.php";s:4:"4026";s:32:"Classes/Object/ObjectManager.php";s:4:"c78d";s:41:"Classes/Object/ObjectManagerInterface.php";s:4:"9dd9";s:38:"Classes/Object/Container/ClassInfo.php";s:4:"3ddc";s:43:"Classes/Object/Container/ClassInfoCache.php";s:4:"f745";s:45:"Classes/Object/Container/ClassInfoFactory.php";s:4:"1355";s:38:"Classes/Object/Container/Container.php";s:4:"6fb5";s:69:"Classes/Object/Container/Exception/CannotInitializeCacheException.php";s:4:"4258";s:70:"Classes/Object/Container/Exception/TooManyRecursionLevelsException.php";s:4:"cd39";s:61:"Classes/Object/Container/Exception/UnknownObjectException.php";s:4:"d18e";s:46:"Classes/Object/Exception/CannotBuildObject.php";s:4:"8070";s:53:"Classes/Object/Exception/CannotReconstituteObject.php";s:4:"e8cc";s:41:"Classes/Object/Exception/InvalidClass.php";s:4:"d226";s:42:"Classes/Object/Exception/InvalidObject.php";s:4:"cc16";s:55:"Classes/Object/Exception/InvalidObjectConfiguration.php";s:4:"e82a";s:52:"Classes/Object/Exception/ObjectAlreadyRegistered.php";s:4:"eecb";s:41:"Classes/Object/Exception/UnknownClass.php";s:4:"d10a";s:45:"Classes/Object/Exception/UnknownInterface.php";s:4:"22a4";s:51:"Classes/Object/Exception/UnresolvedDependencies.php";s:4:"7d47";s:39:"Classes/Object/Exception/WrongScope.php";s:4:"cc92";s:31:"Classes/Persistence/Backend.php";s:4:"c8e0";s:40:"Classes/Persistence/BackendInterface.php";s:4:"88db";s:33:"Classes/Persistence/Exception.php";s:4:"1713";s:35:"Classes/Persistence/IdentityMap.php";s:4:"6b90";s:40:"Classes/Persistence/LazyLoadingProxy.php";s:4:"1928";s:41:"Classes/Persistence/LazyObjectStorage.php";s:4:"1cbd";s:48:"Classes/Persistence/LoadingStrategyInterface.php";s:4:"fa0d";s:31:"Classes/Persistence/Manager.php";s:4:"6e42";s:40:"Classes/Persistence/ManagerInterface.php";s:4:"17d8";s:49:"Classes/Persistence/ObjectMonitoringInterface.php";s:4:"6054";s:37:"Classes/Persistence/ObjectStorage.php";s:4:"5dd6";s:36:"Classes/Persistence/PropertyType.php";s:4:"f62a";s:29:"Classes/Persistence/Query.php";s:4:"203d";s:36:"Classes/Persistence/QueryFactory.php";s:4:"4ab8";s:45:"Classes/Persistence/QueryFactoryInterface.php";s:4:"900e";s:38:"Classes/Persistence/QueryInterface.php";s:4:"ebdb";s:35:"Classes/Persistence/QueryResult.php";s:4:"af68";s:44:"Classes/Persistence/QueryResultInterface.php";s:4:"843d";s:46:"Classes/Persistence/QuerySettingsInterface.php";s:4:"1e52";s:34:"Classes/Persistence/Repository.php";s:4:"8ee2";s:43:"Classes/Persistence/RepositoryInterface.php";s:4:"55e7";s:31:"Classes/Persistence/Session.php";s:4:"43b4";s:42:"Classes/Persistence/Typo3QuerySettings.php";s:4:"cd0d";s:56:"Classes/Persistence/Exception/CleanStateNotMemorized.php";s:4:"7689";s:51:"Classes/Persistence/Exception/IllegalObjectType.php";s:4:"73e7";s:46:"Classes/Persistence/Exception/InvalidClass.php";s:4:"761b";s:60:"Classes/Persistence/Exception/InvalidNumberOfConstraints.php";s:4:"3a38";s:53:"Classes/Persistence/Exception/InvalidPropertyType.php";s:4:"cd9a";s:48:"Classes/Persistence/Exception/MissingBackend.php";s:4:"1d0d";s:53:"Classes/Persistence/Exception/RepositoryException.php";s:4:"1aba";s:42:"Classes/Persistence/Exception/TooDirty.php";s:4:"3347";s:57:"Classes/Persistence/Exception/UnexpectedTypeException.php";s:4:"5b57";s:47:"Classes/Persistence/Exception/UnknownObject.php";s:4:"21a6";s:51:"Classes/Persistence/Exception/UnsupportedMethod.php";s:4:"9915";s:50:"Classes/Persistence/Exception/UnsupportedOrder.php";s:4:"f4b9";s:53:"Classes/Persistence/Exception/UnsupportedRelation.php";s:4:"6bc0";s:40:"Classes/Persistence/Mapper/ColumnMap.php";s:4:"fee9";s:38:"Classes/Persistence/Mapper/DataMap.php";s:4:"2b19";s:45:"Classes/Persistence/Mapper/DataMapFactory.php";s:4:"ab68";s:41:"Classes/Persistence/Mapper/DataMapper.php";s:4:"5358";s:40:"Classes/Persistence/QOM/AndInterface.php";s:4:"f72d";s:45:"Classes/Persistence/QOM/BindVariableValue.php";s:4:"454e";s:54:"Classes/Persistence/QOM/BindVariableValueInterface.php";s:4:"822e";s:38:"Classes/Persistence/QOM/Comparison.php";s:4:"74e7";s:47:"Classes/Persistence/QOM/ComparisonInterface.php";s:4:"f50a";s:38:"Classes/Persistence/QOM/Constraint.php";s:4:"6e7b";s:47:"Classes/Persistence/QOM/ConstraintInterface.php";s:4:"c106";s:42:"Classes/Persistence/QOM/DynamicOperand.php";s:4:"29d3";s:51:"Classes/Persistence/QOM/DynamicOperandInterface.php";s:4:"981b";s:45:"Classes/Persistence/QOM/EquiJoinCondition.php";s:4:"29b1";s:54:"Classes/Persistence/QOM/EquiJoinConditionInterface.php";s:4:"b9f5";s:32:"Classes/Persistence/QOM/Join.php";s:4:"d270";s:50:"Classes/Persistence/QOM/JoinConditionInterface.php";s:4:"63c8";s:41:"Classes/Persistence/QOM/JoinInterface.php";s:4:"c3a5";s:38:"Classes/Persistence/QOM/LogicalAnd.php";s:4:"4b22";s:38:"Classes/Persistence/QOM/LogicalNot.php";s:4:"aba3";s:37:"Classes/Persistence/QOM/LogicalOr.php";s:4:"3476";s:37:"Classes/Persistence/QOM/LowerCase.php";s:4:"15a8";s:46:"Classes/Persistence/QOM/LowerCaseInterface.php";s:4:"215c";s:40:"Classes/Persistence/QOM/NotInterface.php";s:4:"8d10";s:35:"Classes/Persistence/QOM/Operand.php";s:4:"a635";s:44:"Classes/Persistence/QOM/OperandInterface.php";s:4:"39ff";s:39:"Classes/Persistence/QOM/OrInterface.php";s:4:"b109";s:36:"Classes/Persistence/QOM/Ordering.php";s:4:"e7f4";s:45:"Classes/Persistence/QOM/OrderingInterface.php";s:4:"b9f9";s:41:"Classes/Persistence/QOM/PropertyValue.php";s:4:"96fb";s:50:"Classes/Persistence/QOM/PropertyValueInterface.php";s:4:"6526";s:62:"Classes/Persistence/QOM/QueryObjectModelConstantsInterface.php";s:4:"33bb";s:51:"Classes/Persistence/QOM/QueryObjectModelFactory.php";s:4:"e6fc";s:60:"Classes/Persistence/QOM/QueryObjectModelFactoryInterface.php";s:4:"3b53";s:36:"Classes/Persistence/QOM/Selector.php";s:4:"59cb";s:45:"Classes/Persistence/QOM/SelectorInterface.php";s:4:"e75c";s:43:"Classes/Persistence/QOM/SourceInterface.php";s:4:"a397";s:37:"Classes/Persistence/QOM/Statement.php";s:4:"c978";s:41:"Classes/Persistence/QOM/StaticOperand.php";s:4:"69f4";s:50:"Classes/Persistence/QOM/StaticOperandInterface.php";s:4:"4e9b";s:37:"Classes/Persistence/QOM/UpperCase.php";s:4:"6646";s:46:"Classes/Persistence/QOM/UpperCaseInterface.php";s:4:"ea6b";s:48:"Classes/Persistence/Storage/BackendInterface.php";s:4:"ad7b";s:46:"Classes/Persistence/Storage/Typo3DbBackend.php";s:4:"8e5f";s:55:"Classes/Persistence/Storage/Exception/BadConstraint.php";s:4:"3a87";s:50:"Classes/Persistence/Storage/Exception/SqlError.php";s:4:"850b";s:30:"Classes/Property/Exception.php";s:4:"8465";s:27:"Classes/Property/Mapper.php";s:4:"d709";s:35:"Classes/Property/MappingResults.php";s:4:"64c8";s:49:"Classes/Property/Exception/FormatNotSupported.php";s:4:"338e";s:46:"Classes/Property/Exception/InvalidDataType.php";s:4:"f280";s:44:"Classes/Property/Exception/InvalidFormat.php";s:4:"0bfa";s:46:"Classes/Property/Exception/InvalidProperty.php";s:4:"e6fb";s:44:"Classes/Property/Exception/InvalidSource.php";s:4:"ba13";s:44:"Classes/Property/Exception/InvalidTarget.php";s:4:"6cd9";s:38:"Classes/Reflection/ClassReflection.php";s:4:"913c";s:34:"Classes/Reflection/ClassSchema.php";s:4:"7ebc";s:39:"Classes/Reflection/DocCommentParser.php";s:4:"6357";s:32:"Classes/Reflection/Exception.php";s:4:"8625";s:39:"Classes/Reflection/MethodReflection.php";s:4:"26fc";s:35:"Classes/Reflection/ObjectAccess.php";s:4:"445e";s:42:"Classes/Reflection/ParameterReflection.php";s:4:"284d";s:41:"Classes/Reflection/PropertyReflection.php";s:4:"95b8";s:30:"Classes/Reflection/Service.php";s:4:"54c8";s:52:"Classes/Reflection/Exception/InvalidPropertyType.php";s:4:"02d6";s:63:"Classes/Reflection/Exception/PropertyNotAccessibleException.php";s:4:"0ddf";s:30:"Classes/Security/Exception.php";s:4:"2d15";s:47:"Classes/Security/Channel/RequestHashService.php";s:4:"afac";s:45:"Classes/Security/Cryptography/HashService.php";s:4:"e0aa";s:63:"Classes/Security/Exception/InvalidArgumentForHashGeneration.php";s:4:"856e";s:70:"Classes/Security/Exception/InvalidArgumentForRequestHashGeneration.php";s:4:"9f05";s:60:"Classes/Security/Exception/SyntacticallyWrongRequestHash.php";s:4:"89bd";s:26:"Classes/Utility/Arrays.php";s:4:"5dfd";s:25:"Classes/Utility/Cache.php";s:4:"b9ee";s:31:"Classes/Utility/ClassLoader.php";s:4:"16a4";s:44:"Classes/Utility/ExtbaseRequirementsCheck.php";s:4:"a352";s:29:"Classes/Utility/Extension.php";s:4:"fc27";s:37:"Classes/Utility/FrontendSimulator.php";s:4:"bd64";s:32:"Classes/Utility/Localization.php";s:4:"5c10";s:32:"Classes/Utility/TypeHandling.php";s:4:"d63e";s:30:"Classes/Utility/TypoScript.php";s:4:"c335";s:28:"Classes/Validation/Error.php";s:4:"247a";s:32:"Classes/Validation/Exception.php";s:4:"44f8";s:36:"Classes/Validation/PropertyError.php";s:4:"f0a7";s:40:"Classes/Validation/ValidatorResolver.php";s:4:"07a6";s:47:"Classes/Validation/Exception/InvalidSubject.php";s:4:"5040";s:63:"Classes/Validation/Exception/InvalidValidationConfiguration.php";s:4:"9cfa";s:57:"Classes/Validation/Exception/InvalidValidationOptions.php";s:4:"a3a8";s:48:"Classes/Validation/Exception/NoSuchValidator.php";s:4:"64f4";s:49:"Classes/Validation/Exception/NoValidatorFound.php";s:4:"be96";s:59:"Classes/Validation/Validator/AbstractCompositeValidator.php";s:4:"93b2";s:56:"Classes/Validation/Validator/AbstractObjectValidator.php";s:4:"fb77";s:50:"Classes/Validation/Validator/AbstractValidator.php";s:4:"c4ad";s:54:"Classes/Validation/Validator/AlphanumericValidator.php";s:4:"ae25";s:53:"Classes/Validation/Validator/ConjunctionValidator.php";s:4:"e2bc";s:50:"Classes/Validation/Validator/DateTimeValidator.php";s:4:"3716";s:53:"Classes/Validation/Validator/DisjunctionValidator.php";s:4:"95f8";s:54:"Classes/Validation/Validator/EmailAddressValidator.php";s:4:"e9de";s:47:"Classes/Validation/Validator/FloatValidator.php";s:4:"6e44";s:55:"Classes/Validation/Validator/GenericObjectValidator.php";s:4:"210d";s:49:"Classes/Validation/Validator/IntegerValidator.php";s:4:"f70f";s:50:"Classes/Validation/Validator/NotEmptyValidator.php";s:4:"92fa";s:53:"Classes/Validation/Validator/NumberRangeValidator.php";s:4:"33cb";s:48:"Classes/Validation/Validator/NumberValidator.php";s:4:"ab3d";s:57:"Classes/Validation/Validator/ObjectValidatorInterface.php";s:4:"aeea";s:45:"Classes/Validation/Validator/RawValidator.php";s:4:"2b76";s:59:"Classes/Validation/Validator/RegularExpressionValidator.php";s:4:"95aa";s:54:"Classes/Validation/Validator/StringLengthValidator.php";s:4:"6885";s:48:"Classes/Validation/Validator/StringValidator.php";s:4:"2231";s:46:"Classes/Validation/Validator/TextValidator.php";s:4:"d641";s:51:"Classes/Validation/Validator/ValidatorInterface.php";s:4:"1c82";s:24:"Documentation/README.txt";s:4:"35d4";s:43:"Resources/Private/Language/locallang_db.xml";s:4:"d03e";s:48:"Resources/Private/MVC/NotFoundView_Template.html";s:4:"d5a3";s:22:"Tests/BaseTestCase.php";s:4:"c7e5";s:30:"Tests/SeleniumBaseTestCase.php";s:4:"6769";s:27:"Tests/Unit/BaseTestCase.php";s:4:"c0ba";s:61:"Tests/Unit/Configuration/AbstractConfigurationManagerTest.php";s:4:"d475";s:60:"Tests/Unit/Configuration/BackendConfigurationManagerTest.php";s:4:"5d6c";s:61:"Tests/Unit/Configuration/FrontendConfigurationManagerTest.php";s:4:"6cdb";s:46:"Tests/Unit/DomainObject/AbstractEntityTest.php";s:4:"4539";s:30:"Tests/Unit/Fixtures/Entity.php";s:4:"09e9";s:33:"Tests/Unit/MVC/DispatcherTest.php";s:4:"17b7";s:52:"Tests/Unit/MVC/Controller/AbstractControllerTest.php";s:4:"5a51";s:50:"Tests/Unit/MVC/Controller/ActionControllerTest.php";s:4:"110f";s:42:"Tests/Unit/MVC/Controller/ArgumentTest.php";s:4:"4805";s:43:"Tests/Unit/MVC/Controller/ArgumentsTest.php";s:4:"f493";s:41:"Tests/Unit/MVC/Web/RequestBuilderTest.php";s:4:"a77a";s:34:"Tests/Unit/MVC/Web/RequestTest.php";s:4:"70cf";s:45:"Tests/Unit/MVC/Web/Routing/UriBuilderTest.php";s:4:"d8e5";s:52:"Tests/Unit/Object/Container/ClassInfoFactoryTest.php";s:4:"e450";s:45:"Tests/Unit/Object/Container/ContainerTest.php";s:4:"f62e";s:52:"Tests/Unit/Object/Container/Fixtures/Testclasses.php";s:4:"64ed";s:44:"Tests/Unit/Persistence/ObjectStorageTest.php";s:4:"f76b";s:42:"Tests/Unit/Persistence/QueryResultTest.php";s:4:"4681";s:36:"Tests/Unit/Persistence/QueryTest.php";s:4:"9df8";s:41:"Tests/Unit/Persistence/RepositoryTest.php";s:4:"1ca3";s:38:"Tests/Unit/Persistence/SessionTest.php";s:4:"908a";s:52:"Tests/Unit/Persistence/Mapper/DataMapFactoryTest.php";s:4:"1f05";s:53:"Tests/Unit/Persistence/Storage/Typo3DbBackendTest.php";s:4:"610a";s:42:"Tests/Unit/Reflection/ObjectAccessTest.php";s:4:"bbfc";s:37:"Tests/Unit/Reflection/ServiceTest.php";s:4:"135c";s:50:"Tests/Unit/Reflection/Fixture/ArrayAccessClass.php";s:4:"9afd";s:65:"Tests/Unit/Reflection/Fixture/DummyClassWithGettersAndSetters.php";s:4:"258b";s:54:"Tests/Unit/Security/Channel/RequestHashServiceTest.php";s:4:"a9be";s:52:"Tests/Unit/Security/Cryptography/HashServiceTest.php";s:4:"f27a";s:36:"Tests/Unit/Utility/ExtensionTest.php";s:4:"99d2";s:39:"Tests/Unit/Utility/LocalizationTest.php";s:4:"e9f4";s:37:"Tests/Unit/Utility/TypoScriptTest.php";s:4:"4237";s:47:"Tests/Unit/Validation/ValidatorResolverTest.php";s:4:"4548";s:61:"Tests/Unit/Validation/Validator/AlphanumericValidatorTest.php";s:4:"0223";s:60:"Tests/Unit/Validation/Validator/ConjunctionValidatorTest.php";s:4:"4e82";s:57:"Tests/Unit/Validation/Validator/DateTimeValidatorTest.php";s:4:"1fd6";s:61:"Tests/Unit/Validation/Validator/EmailAddressValidatorTest.php";s:4:"7961";s:54:"Tests/Unit/Validation/Validator/FloatValidatorTest.php";s:4:"4b61";s:62:"Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php";s:4:"5743";s:56:"Tests/Unit/Validation/Validator/IntegerValidatorTest.php";s:4:"f9e9";s:57:"Tests/Unit/Validation/Validator/NotEmptyValidatorTest.php";s:4:"29d8";s:60:"Tests/Unit/Validation/Validator/NumberRangeValidatorTest.php";s:4:"0351";s:55:"Tests/Unit/Validation/Validator/NumberValidatorTest.php";s:4:"82bf";s:52:"Tests/Unit/Validation/Validator/RawValidatorTest.php";s:4:"03b1";s:66:"Tests/Unit/Validation/Validator/RegularExpressionValidatorTest.php";s:4:"18d0";s:61:"Tests/Unit/Validation/Validator/StringLengthValidatorTest.php";s:4:"4cf3";s:53:"Tests/Unit/Validation/Validator/TextValidatorTest.php";s:4:"eb32";}',
 );
 
 ?>
\ No newline at end of file
index 50b5012..3665533 100644 (file)
@@ -1 +1 @@
-https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/extbase/tags/1.3.0RC1/
+https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/extbase/tags/1.3.0/
index 6f50954..8ad8320 100644 (file)
@@ -1,6 +1,24 @@
 ChangeLog for Fluid
 ===================
 
+Changes for 1.3.0:
+==================
+included in TYPO3 4.5.0 LTS.
+
+Here, only smaller bugs and inconsistencies have been fixed. For a description of bigger features, see below to the versions where they were introduced.
+
+Full Changes for 1.3.0:
+=======================
+
+[+TASK] Fluid (ViewHelpers): fixed typo in doc comment examples of emailViewhelper
+[+BUGFIX] Fluid (Tests): Fixed CropViewHelper unit test
+[+BUGFIX] Fixed comparison of Objects
+       Objects in comparison expressions were compared lazily
+       with == before this change. Now, they are compared with
+       ===, which is the expected behavior on objects.
+[+TASK] Fluid (ViewHelpers): Extended inline documentation of FlashMessages ViewHelper
+[+BUGFIX] Fluid (Tests): Fixed Fluid unit tests!
+
 Changes for 1.3.0 RC1:
 ======================
 included in TYPO3 4.5.0 RC1.
index 18c8eef..df2e09a 100644 (file)
@@ -290,9 +290,15 @@ class Tx_Fluid_Core_Parser_SyntaxTree_ViewHelperNode extends Tx_Fluid_Core_Parse
        protected function evaluateComparator($comparator, $leftSide, $rightSide) {
                switch ($comparator) {
                        case '==':
+                               if (is_object($leftSide) && is_object($rightSide)) {
+                                       return ($leftSide === $rightSide);
+                               }
                                return ($leftSide == $rightSide);
                                break;
                        case '!=':
+                               if (is_object($leftSide) && is_object($rightSide)) {
+                                       return ($leftSide !== $rightSide);
+                               }
                                return ($leftSide != $rightSide);
                                break;
                        case '%':
index ccc87a3..c819c8e 100644 (file)
@@ -35,7 +35,7 @@
  * An ul-list of flash messages.
  * </output>
  *
- * <code title="Output with css class">
+ * <code title="Output with custom css class">
  * <f:flashMessages class="specialClass" />
  * </code>
  * <output>
  * </ul>
  * </output>
  *
+ * <code title="TYPO3 core style">
+ * <f:flashMessages renderMode="div" />
+ * </code>
+ * <output>
+ * <div class="typo3-messages">
+ *   <div class="typo3-message message-ok">
+ *     <div class="message-header">Some Message Header</div>
+ *     <div class="message-body">Some message body</div>
+ *   </div>
+ *   <div class="typo3-message message-notice">
+ *     <div class="message-body">Some notice message without header</div>
+ *   </div>
+ * </div>
+ * </output>
+ *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
  */
index 6eaa2b2..3b27041 100644 (file)
  * (depending on the current time)
  * </output>
  *
+ * <code title="Localized dates using strftime date format">
+ * <f:format.date format="%d. %B %Y">{dateObject}</f:format.date>
+ * </code>
+ * <output>
+ * 13. Dezember 1980
+ * (depending on the current date and defined locale. In the example you see the 1980-12-13 in a german locale)
+ * </output>
+ *
  * <code title="strtotime string">
  * <f:format.date format="d.m.Y - H:i:s">+1 week 2 days 4 hours 2 seconds</f:format.date>
  * </code>
index 9712473..e35395e 100644 (file)
@@ -31,7 +31,7 @@
  * </output>
  *
  * <code title="Email link with custom linktext">
- * <f:link.email email="foo@bar.tld">some custom content</f:emaillink>
+ * <f:link.email email="foo@bar.tld">some custom content</f:link.email>
  * </code>
  * <output>
  * <a href="javascript:linkTo_UnCryptMailto('ocknvq,hqqBdct0vnf');">some custom content</a>
index b7764d4..62ccdad 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_Interceptor_EscapeTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_Interceptor_EscapeTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 66f163c..048a71d 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_ParsingStateTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_ParsingStateTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * Parsing state
index 19e92c2..41bbae4 100644 (file)
@@ -23,7 +23,7 @@
 /**
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_AbstractNodeTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_AbstractNodeTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        protected $renderingContext;
 
index c374bec..2c3c8f8 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_TextNodeTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_TextNodeTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 2218446..114ff1a 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_ViewHelperNodeComparatorTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_ViewHelperNodeComparatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_Core_Parser_SyntaxTree_ViewHelperNode
@@ -276,6 +276,52 @@ class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_ViewHelperNodeComparatorTest ex
 
                $this->assertFalse($this->viewHelperNode->_call('evaluateBooleanExpression', $rootNode, $this->renderingContext));
        }
+
+       /**
+        * @test
+        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        */
+       public function objectsAreComparedStrictly() {
+               $object1 = new stdClass();
+               $object2 = new stdClass();
+
+               $rootNode = new Tx_Fluid_Core_Parser_SyntaxTree_RootNode();
+
+               $object1Node = $this->getMock('Tx_Fluid_Core_Parser_SyntaxTree_ObjectAccessorNode', array('evaluate'));
+               $object1Node->expects($this->any())->method('evaluate')->will($this->returnValue($object1));
+
+               $object2Node = $this->getMock('Tx_Fluid_Core_Parser_SyntaxTree_ObjectAccessorNode', array('evaluate'));
+               $object2Node->expects($this->any())->method('evaluate')->will($this->returnValue($object2));
+
+               $rootNode->addChildNode($object1Node);
+               $rootNode->addChildNode(new Tx_Fluid_Core_Parser_SyntaxTree_TextNode('=='));
+               $rootNode->addChildNode($object2Node);
+
+               $this->assertFalse($this->viewHelperNode->_call('evaluateBooleanExpression', $rootNode, $this->renderingContext));
+       }
+
+       /**
+        * @test
+        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        */
+       public function objectsAreComparedStrictlyInUnequalComparison() {
+               $object1 = new stdClass();
+               $object2 = new stdClass();
+
+               $rootNode = new Tx_Fluid_Core_Parser_SyntaxTree_RootNode();
+
+               $object1Node = $this->getMock('Tx_Fluid_Core_Parser_SyntaxTree_ObjectAccessorNode', array('evaluate'));
+               $object1Node->expects($this->any())->method('evaluate')->will($this->returnValue($object1));
+
+               $object2Node = $this->getMock('Tx_Fluid_Core_Parser_SyntaxTree_ObjectAccessorNode', array('evaluate'));
+               $object2Node->expects($this->any())->method('evaluate')->will($this->returnValue($object2));
+
+               $rootNode->addChildNode($object1Node);
+               $rootNode->addChildNode(new Tx_Fluid_Core_Parser_SyntaxTree_TextNode('!='));
+               $rootNode->addChildNode($object2Node);
+
+               $this->assertTrue($this->viewHelperNode->_call('evaluateBooleanExpression', $rootNode, $this->renderingContext));
+       }
 }
 
 ?>
\ No newline at end of file
index 1d6acfc..8733294 100644 (file)
@@ -28,7 +28,7 @@ require_once(dirname(__FILE__) . '/../../Fixtures/TestViewHelper.php');
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_ViewHelperNodeTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_ViewHelperNodeTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * Rendering Context
@@ -70,13 +70,13 @@ class Tx_Fluid_Tests_Unit_Core_Parser_SyntaxTree_ViewHelperNodeTest extends Tx_E
                $this->renderingContext->injectObjectManager($this->mockObjectManager);
 
                $this->templateVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer');
-               $this->renderingContext->injectTemplateVariableContainer($this->templateVariableContainer);
+               $this->renderingContext->setTemplateVariableContainer($this->templateVariableContainer);
 
                $this->controllerContext = $this->getMock('Tx_Extbase_MVC_Controller_ControllerContext', array(), array(), '', FALSE);
                $this->renderingContext->setControllerContext($this->controllerContext);
 
                $this->viewHelperVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer');
-               $this->renderingContext->injectViewHelperVariableContainer($this->viewHelperVariableContainer);
+               $this->renderingContext->setViewHelperVariableContainer($this->viewHelperVariableContainer);
        }
 
        /**
index 7b31c02..f03470b 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserPatternTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserPatternTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index c5ca879..8903b6f 100644 (file)
@@ -30,7 +30,7 @@ require_once(dirname(__FILE__) . '/Fixtures/PostParseFacetViewHelper.php');
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
@@ -169,9 +169,12 @@ class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserTest extends Tx_Extbase_Base
                $mockState->expects($this->once())->method('pushNodeToStack')->with($mockRootNode);
                $mockState->expects($this->once())->method('countNodeStack')->will($this->returnValue(1));
 
+               $mockTemplateVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer');
+
                $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
                $mockObjectManager->expects($this->at(0))->method('create')->with('Tx_Fluid_Core_Parser_ParsingState')->will($this->returnValue($mockState));
                $mockObjectManager->expects($this->at(1))->method('create')->with('Tx_Fluid_Core_Parser_SyntaxTree_RootNode')->will($this->returnValue($mockRootNode));
+               $mockObjectManager->expects($this->at(2))->method('create')->with('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer')->will($this->returnValue($mockTemplateVariableContainer));
 
                $templateParser = $this->getAccessibleMock('Tx_Fluid_Core_Parser_TemplateParser', array('dummy'));
                $templateParser->injectObjectManager($mockObjectManager);
@@ -190,9 +193,12 @@ class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserTest extends Tx_Extbase_Base
                $mockState = $this->getMock('Tx_Fluid_Core_Parser_ParsingState');
                $mockState->expects($this->once())->method('countNodeStack')->will($this->returnValue(2));
 
+               $mockTemplateVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer');
+
                $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
                $mockObjectManager->expects($this->at(0))->method('create')->with('Tx_Fluid_Core_Parser_ParsingState')->will($this->returnValue($mockState));
                $mockObjectManager->expects($this->at(1))->method('create')->with('Tx_Fluid_Core_Parser_SyntaxTree_RootNode')->will($this->returnValue($mockRootNode));
+               $mockObjectManager->expects($this->at(2))->method('create')->with('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer')->will($this->returnValue($mockTemplateVariableContainer));
 
                $templateParser = $this->getAccessibleMock('Tx_Fluid_Core_Parser_TemplateParser', array('dummy'));
                $templateParser->injectObjectManager($mockObjectManager);
@@ -206,11 +212,16 @@ class Tx_Fluid_Tests_Unit_Core_Parser_TemplateParserTest extends Tx_Extbase_Base
         */
        public function buildObjectTreeDelegatesHandlingOfTemplateElements() {
                $mockRootNode = $this->getMock('Tx_Fluid_Core_Parser_SyntaxTree_RootNode');
+
                $mockState = $this->getMock('Tx_Fluid_Core_Parser_ParsingState');
                $mockState->expects($this->once())->method('countNodeStack')->will($this->returnValue(1));
+
+               $mockTemplateVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer');
+
                $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
                $mockObjectManager->expects($this->at(0))->method('create')->with('Tx_Fluid_Core_Parser_ParsingState')->will($this->returnValue($mockState));
                $mockObjectManager->expects($this->at(1))->method('create')->with('Tx_Fluid_Core_Parser_SyntaxTree_RootNode')->will($this->returnValue($mockRootNode));
+               $mockObjectManager->expects($this->at(2))->method('create')->with('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer')->will($this->returnValue($mockTemplateVariableContainer));
 
                $templateParser = $this->getAccessibleMock('Tx_Fluid_Core_Parser_TemplateParser', array('textHandler', 'openingViewHelperTagHandler', 'closingViewHelperTagHandler', 'textAndShorthandSyntaxHandler'));
                $templateParser->injectObjectManager($mockObjectManager);
index e34ae48..b0e9c34 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Rendering_RenderingContextTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Rendering_RenderingContextTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * Parsing state
@@ -43,7 +43,7 @@ class Tx_Fluid_Tests_Unit_Core_Rendering_RenderingContextTest extends Tx_Extbase
         */
        public function templateVariableContainerCanBeReadCorrectly() {
                $templateVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer');
-               $this->renderingContext->injectTemplateVariableContainer($templateVariableContainer);
+               $this->renderingContext->setTemplateVariableContainer($templateVariableContainer);
                $this->assertSame($this->renderingContext->getTemplateVariableContainer(), $templateVariableContainer, 'Template Variable Container could not be read out again.');
        }
 
@@ -63,7 +63,7 @@ class Tx_Fluid_Tests_Unit_Core_Rendering_RenderingContextTest extends Tx_Extbase
         */
        public function viewHelperVariableContainerCanBeReadCorrectly() {
                $viewHelperVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer');
-               $this->renderingContext->injectViewHelperVariableContainer($viewHelperVariableContainer);
+               $this->renderingContext->setViewHelperVariableContainer($viewHelperVariableContainer);
                $this->assertSame($viewHelperVariableContainer, $this->renderingContext->getViewHelperVariableContainer());
        }
 }
diff --git a/typo3/sysext/fluid/Tests/Unit/Core/TagBasedViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/Core/TagBasedViewHelperTest.php
deleted file mode 100644 (file)
index ff4f281..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-/*                                                                        *
- * This script belongs to the FLOW3 package "Fluid".                      *
- *                                                                        *
- * It is free software; you can redistribute it and/or modify it under    *
- * the terms of the GNU Lesser General Public License as published by the *
- * Free Software Foundation, either version 3 of the License, or (at your *
- * option) any later version.                                             *
- *                                                                        *
- * This script is distributed in the hope that it will be useful, but     *
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
- * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
- * General Public License for more details.                               *
- *                                                                        *
- * You should have received a copy of the GNU Lesser General Public       *
- * License along with the script.                                         *
- * If not, see http://www.gnu.org/licenses/lgpl.html                      *
- *                                                                        *
- * The TYPO3 project - inspiring people to share!                         *
- *                                                                        */
-
-/**
- * Testcase for AbstractTagBasedViewHelper
- *
- * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
- */
-class Tx_Fluid_Tests_Unit_Core_AbstractTagBasedViewHelperTest extends Tx_Extbase_BaseTestCase {
-
-       public function setUp() {
-               $this->viewHelper = $this->getAccessibleMock('Tx_Fluid_Core_ViewHelper_AbstractTagBasedViewHelper', array('dummy'), array(), '', FALSE);
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function initializeResetsUnderlyingTagBuilder() {
-               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('reset'), array(), '', FALSE);
-               $mockTagBuilder->expects($this->once())->method('reset');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
-
-               $this->viewHelper->initialize();
-       }
-
-       /**
-        * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function oneTagAttributeIsRenderedCorrectly() {
-               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute'), array(), '', FALSE);
-               $mockTagBuilder->expects($this->once())->method('addAttribute')->with('foo', 'bar');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
-
-               $this->viewHelper->_call('registerTagAttribute', 'foo', 'string', 'Description', FALSE);
-               $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array('foo' => 'bar'));
-               $this->viewHelper->setArguments($arguments);
-               $this->viewHelper->initialize();
-       }
-
-       /**
-        * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function additionalTagAttributesAreRenderedCorrectly() {
-               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute'), array(), '', FALSE);
-               $mockTagBuilder->expects($this->once())->method('addAttribute')->with('foo', 'bar');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
-
-               $this->viewHelper->_call('registerTagAttribute', 'foo', 'string', 'Description', FALSE);
-               $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array('additionalAttributes' => array('foo' => 'bar')));
-               $this->viewHelper->setArguments($arguments);
-               $this->viewHelper->initialize();
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function standardTagAttributesAreRegistered() {
-               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute'), array(), '', FALSE);
-               $mockTagBuilder->expects($this->at(0))->method('addAttribute')->with('class', 'classAttribute');
-               $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('dir', 'dirAttribute');
-               $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('id', 'idAttribute');
-               $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('lang', 'langAttribute');
-               $mockTagBuilder->expects($this->at(4))->method('addAttribute')->with('style', 'styleAttribute');
-               $mockTagBuilder->expects($this->at(5))->method('addAttribute')->with('title', 'titleAttribute');
-               $mockTagBuilder->expects($this->at(6))->method('addAttribute')->with('accesskey', 'accesskeyAttribute');
-               $mockTagBuilder->expects($this->at(7))->method('addAttribute')->with('tabindex', 'tabindexAttribute');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
-
-               $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(
-                       array(
-                               'class' => 'classAttribute',
-                               'dir' => 'dirAttribute',
-                               'id' => 'idAttribute',
-                               'lang' => 'langAttribute',
-                               'style' => 'styleAttribute',
-                               'title' => 'titleAttribute',
-                               'accesskey' => 'accesskeyAttribute',
-                               'tabindex' => 'tabindexAttribute'
-                       )
-               );
-               $this->viewHelper->_call('registerUniversalTagAttributes');
-               $this->viewHelper->setArguments($arguments);
-               $this->viewHelper->initializeArguments();
-               $this->viewHelper->initialize();
-       }
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/fluid/Tests/Unit/Core/TagBuilderTest.php b/typo3/sysext/fluid/Tests/Unit/Core/TagBuilderTest.php
deleted file mode 100644 (file)
index ee287da..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?php
-
-/*                                                                        *
- * This script belongs to the FLOW3 package "Fluid".                      *
- *                                                                        *
- * It is free software; you can redistribute it and/or modify it under    *
- * the terms of the GNU Lesser General Public License as published by the *
- * Free Software Foundation, either version 3 of the License, or (at your *
- * option) any later version.                                             *
- *                                                                        *
- * This script is distributed in the hope that it will be useful, but     *
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
- * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
- * General Public License for more details.                               *
- *                                                                        *
- * You should have received a copy of the GNU Lesser General Public       *
- * License along with the script.                                         *
- * If not, see http://www.gnu.org/licenses/lgpl.html                      *
- *                                                                        *
- * The TYPO3 project - inspiring people to share!                         *
- *                                                                        */
-
-/**
- * Testcase for TagBuilder
- *
- * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
- */
-class Tx_Fluid_Tests_Unit_Core_TagBuilderTest extends Tx_Extbase_BaseTestCase {
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function constructorSetsTagName() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('someTagName');
-               $this->assertEquals('someTagName', $tagBuilder->getTagName());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function constructorSetsTagContent() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('', '<some text>');
-               $this->assertEquals('<some text>', $tagBuilder->getContent());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function setContentDoesNotEscapeValue() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
-               $tagBuilder->setContent('<to be escaped>', FALSE);
-               $this->assertEquals('<to be escaped>', $tagBuilder->getContent());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function hasContentReturnsTrueIfTagContainsText() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('', 'foo');
-               $this->assertTrue($tagBuilder->hasContent());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function hasContentReturnsFalseIfContentIsNull() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
-               $tagBuilder->setContent(NULL);
-               $this->assertFalse($tagBuilder->hasContent());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function hasContentReturnsFalseIfContentIsAnEmptyString() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
-               $tagBuilder->setContent('');
-               $this->assertFalse($tagBuilder->hasContent());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function renderReturnsEmptyStringByDefault() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
-               $this->assertEquals('', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function renderReturnsSelfClosingTagIfNoContentIsSpecified() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
-               $this->assertEquals('<tag />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function contentCanBeRemoved() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag', 'some content');
-               $tagBuilder->setContent(NULL);
-               $this->assertEquals('<tag />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function renderReturnsOpeningAndClosingTagIfNoContentIsSpecifiedButForceClosingTagIsTrue() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
-               $tagBuilder->forceClosingTag(TRUE);
-               $this->assertEquals('<tag></tag>', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function attributesAreProperlyRendered() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
-               $tagBuilder->addAttribute('attribute1', 'attribute1value');
-               $tagBuilder->addAttribute('attribute2', 'attribute2value');
-               $tagBuilder->addAttribute('attribute3', 'attribute3value');
-               $this->assertEquals('<tag attribute1="attribute1value" attribute2="attribute2value" attribute3="attribute3value" />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function attributeValuesAreEscapedByDefault() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
-               $tagBuilder->addAttribute('foo', '<to be escaped>');
-               $this->assertEquals('<tag foo="&lt;to be escaped&gt;" />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function attributeValuesAreNotEscapedIfDisabled() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
-               $tagBuilder->addAttribute('foo', '<not to be escaped>', FALSE);
-               $this->assertEquals('<tag foo="<not to be escaped>" />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function attributesCanBeRemoved() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
-               $tagBuilder->addAttribute('attribute1', 'attribute1value');
-               $tagBuilder->addAttribute('attribute2', 'attribute2value');
-               $tagBuilder->addAttribute('attribute3', 'attribute3value');
-               $tagBuilder->removeAttribute('attribute2');
-               $this->assertEquals('<tag attribute1="attribute1value" attribute3="attribute3value" />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function resetResetsTagBuilder() {
-               $tagBuilder = $this->getAccessibleMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('dummy'));
-               $tagBuilder->setTagName('tagName');
-               $tagBuilder->setContent('some content');
-               $tagBuilder->forceClosingTag(TRUE);
-               $tagBuilder->addAttribute('attribute1', 'attribute1value');
-               $tagBuilder->addAttribute('attribute2', 'attribute2value');
-               $tagBuilder->reset();
-
-               $this->assertEquals('', $tagBuilder->_get('tagName'));
-               $this->assertEquals('', $tagBuilder->_get('content'));
-               $this->assertEquals(array(), $tagBuilder->_get('attributes'));
-               $this->assertFalse($tagBuilder->_get('forceClosingTag'));
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function tagNameCanBeOverridden() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('foo');
-               $tagBuilder->setTagName('bar');
-               $this->assertEquals('<bar />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function tagContentCanBeOverridden() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('foo', 'some content');
-               $tagBuilder->setContent('');
-               $this->assertEquals('<foo />', $tagBuilder->render());
-       }
-
-       /**
-        * @test
-        * @author Bastian Waidelich <bastian@typo3.org>
-        */
-       public function tagIsNotRenderedIfTagNameIsEmpty() {
-               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('foo');
-               $tagBuilder->setTagName('');
-               $this->assertEquals('', $tagBuilder->render());
-       }
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractTagBasedViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/AbstractTagBasedViewHelperTest.php
new file mode 100644 (file)
index 0000000..03ef78e
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+
+/*                                                                        *
+ * This script belongs to the FLOW3 package "Fluid".                      *
+ *                                                                        *
+ * It is free software; you can redistribute it and/or modify it under    *
+ * the terms of the GNU Lesser General Public License as published by the *
+ * Free Software Foundation, either version 3 of the License, or (at your *
+ * option) any later version.                                             *
+ *                                                                        *
+ * This script is distributed in the hope that it will be useful, but     *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
+ * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
+ * General Public License for more details.                               *
+ *                                                                        *
+ * You should have received a copy of the GNU Lesser General Public       *
+ * License along with the script.                                         *
+ * If not, see http://www.gnu.org/licenses/lgpl.html                      *
+ *                                                                        *
+ * The TYPO3 project - inspiring people to share!                         *
+ *                                                                        */
+
+/**
+ * Testcase for AbstractTagBasedViewHelper
+ *
+ * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
+ */
+class Tx_Fluid_Tests_Unit_Core_ViewHelper_AbstractTagBasedViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
+       public function setUp() {
+               $this->viewHelper = $this->getAccessibleMock('Tx_Fluid_Core_ViewHelper_AbstractTagBasedViewHelper', array('dummy'), array(), '', FALSE);
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function initializeResetsUnderlyingTagBuilder() {
+               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('reset'), array(), '', FALSE);
+               $mockTagBuilder->expects($this->once())->method('reset');
+               $this->viewHelper->_set('tag', $mockTagBuilder);
+
+               $this->viewHelper->initialize();
+       }
+
+       /**
+        * @test
+        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function oneTagAttributeIsRenderedCorrectly() {
+               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute'), array(), '', FALSE);
+               $mockTagBuilder->expects($this->once())->method('addAttribute')->with('foo', 'bar');
+               $this->viewHelper->_set('tag', $mockTagBuilder);
+
+               $this->viewHelper->_call('registerTagAttribute', 'foo', 'string', 'Description', FALSE);
+               $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array('foo' => 'bar'));
+               $this->viewHelper->setArguments($arguments);
+               $this->viewHelper->initialize();
+       }
+
+       /**
+        * @test
+        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function additionalTagAttributesAreRenderedCorrectly() {
+               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute'), array(), '', FALSE);
+               $mockTagBuilder->expects($this->once())->method('addAttribute')->with('foo', 'bar');
+               $this->viewHelper->_set('tag', $mockTagBuilder);
+
+               $this->viewHelper->_call('registerTagAttribute', 'foo', 'string', 'Description', FALSE);
+               $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array('additionalAttributes' => array('foo' => 'bar')));
+               $this->viewHelper->setArguments($arguments);
+               $this->viewHelper->initialize();
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function standardTagAttributesAreRegistered() {
+               $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute'), array(), '', FALSE);
+               $mockTagBuilder->expects($this->at(0))->method('addAttribute')->with('class', 'classAttribute');
+               $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('dir', 'dirAttribute');
+               $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('id', 'idAttribute');
+               $mockTagBuilder->expects($this->at(3))->method('addAttribute')->with('lang', 'langAttribute');
+               $mockTagBuilder->expects($this->at(4))->method('addAttribute')->with('style', 'styleAttribute');
+               $mockTagBuilder->expects($this->at(5))->method('addAttribute')->with('title', 'titleAttribute');
+               $mockTagBuilder->expects($this->at(6))->method('addAttribute')->with('accesskey', 'accesskeyAttribute');
+               $mockTagBuilder->expects($this->at(7))->method('addAttribute')->with('tabindex', 'tabindexAttribute');
+               $this->viewHelper->_set('tag', $mockTagBuilder);
+
+               $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(
+                       array(
+                               'class' => 'classAttribute',
+                               'dir' => 'dirAttribute',
+                               'id' => 'idAttribute',
+                               'lang' => 'langAttribute',
+                               'style' => 'styleAttribute',
+                               'title' => 'titleAttribute',
+                               'accesskey' => 'accesskeyAttribute',
+                               'tabindex' => 'tabindexAttribute'
+                       )
+               );
+               $this->viewHelper->_call('registerUniversalTagAttributes');
+               $this->viewHelper->setArguments($arguments);
+               $this->viewHelper->initializeArguments();
+               $this->viewHelper->initialize();
+       }
+}
+?>
\ No newline at end of file
index d52af13..736142a 100644 (file)
@@ -27,7 +27,7 @@ require_once(dirname(__FILE__) . '/../Fixtures/TestViewHelper.php');
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_ViewHelper_AbstractViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_ViewHelper_AbstractViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
index 4cc8084..9032ac2 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_ViewHelper_ArgumentDefinitionTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_ViewHelper_ArgumentDefinitionTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
diff --git a/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/TagBuilderTest.php b/typo3/sysext/fluid/Tests/Unit/Core/ViewHelper/TagBuilderTest.php
new file mode 100644 (file)
index 0000000..1338bee
--- /dev/null
@@ -0,0 +1,220 @@
+<?php
+
+/*                                                                        *
+ * This script belongs to the FLOW3 package "Fluid".                      *
+ *                                                                        *
+ * It is free software; you can redistribute it and/or modify it under    *
+ * the terms of the GNU Lesser General Public License as published by the *
+ * Free Software Foundation, either version 3 of the License, or (at your *
+ * option) any later version.                                             *
+ *                                                                        *
+ * This script is distributed in the hope that it will be useful, but     *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
+ * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
+ * General Public License for more details.                               *
+ *                                                                        *
+ * You should have received a copy of the GNU Lesser General Public       *
+ * License along with the script.                                         *
+ * If not, see http://www.gnu.org/licenses/lgpl.html                      *
+ *                                                                        *
+ * The TYPO3 project - inspiring people to share!                         *
+ *                                                                        */
+
+/**
+ * Testcase for TagBuilder
+ *
+ * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
+ */
+class Tx_Fluid_Tests_Unit_Core_ViewHelper_TagBuilderTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function constructorSetsTagName() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('someTagName');
+               $this->assertEquals('someTagName', $tagBuilder->getTagName());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function constructorSetsTagContent() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('', '<some text>');
+               $this->assertEquals('<some text>', $tagBuilder->getContent());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function setContentDoesNotEscapeValue() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
+               $tagBuilder->setContent('<to be escaped>', FALSE);
+               $this->assertEquals('<to be escaped>', $tagBuilder->getContent());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function hasContentReturnsTrueIfTagContainsText() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('', 'foo');
+               $this->assertTrue($tagBuilder->hasContent());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function hasContentReturnsFalseIfContentIsNull() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
+               $tagBuilder->setContent(NULL);
+               $this->assertFalse($tagBuilder->hasContent());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function hasContentReturnsFalseIfContentIsAnEmptyString() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
+               $tagBuilder->setContent('');
+               $this->assertFalse($tagBuilder->hasContent());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function renderReturnsEmptyStringByDefault() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder();
+               $this->assertEquals('', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function renderReturnsSelfClosingTagIfNoContentIsSpecified() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
+               $this->assertEquals('<tag />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function contentCanBeRemoved() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag', 'some content');
+               $tagBuilder->setContent(NULL);
+               $this->assertEquals('<tag />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function renderReturnsOpeningAndClosingTagIfNoContentIsSpecifiedButForceClosingTagIsTrue() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
+               $tagBuilder->forceClosingTag(TRUE);
+               $this->assertEquals('<tag></tag>', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function attributesAreProperlyRendered() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
+               $tagBuilder->addAttribute('attribute1', 'attribute1value');
+               $tagBuilder->addAttribute('attribute2', 'attribute2value');
+               $tagBuilder->addAttribute('attribute3', 'attribute3value');
+               $this->assertEquals('<tag attribute1="attribute1value" attribute2="attribute2value" attribute3="attribute3value" />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function attributeValuesAreEscapedByDefault() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
+               $tagBuilder->addAttribute('foo', '<to be escaped>');
+               $this->assertEquals('<tag foo="&lt;to be escaped&gt;" />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function attributeValuesAreNotEscapedIfDisabled() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
+               $tagBuilder->addAttribute('foo', '<not to be escaped>', FALSE);
+               $this->assertEquals('<tag foo="<not to be escaped>" />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function attributesCanBeRemoved() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('tag');
+               $tagBuilder->addAttribute('attribute1', 'attribute1value');
+               $tagBuilder->addAttribute('attribute2', 'attribute2value');
+               $tagBuilder->addAttribute('attribute3', 'attribute3value');
+               $tagBuilder->removeAttribute('attribute2');
+               $this->assertEquals('<tag attribute1="attribute1value" attribute3="attribute3value" />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function resetResetsTagBuilder() {
+               $tagBuilder = $this->getAccessibleMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('dummy'));
+               $tagBuilder->setTagName('tagName');
+               $tagBuilder->setContent('some content');
+               $tagBuilder->forceClosingTag(TRUE);
+               $tagBuilder->addAttribute('attribute1', 'attribute1value');
+               $tagBuilder->addAttribute('attribute2', 'attribute2value');
+               $tagBuilder->reset();
+
+               $this->assertEquals('', $tagBuilder->_get('tagName'));
+               $this->assertEquals('', $tagBuilder->_get('content'));
+               $this->assertEquals(array(), $tagBuilder->_get('attributes'));
+               $this->assertFalse($tagBuilder->_get('forceClosingTag'));
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function tagNameCanBeOverridden() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('foo');
+               $tagBuilder->setTagName('bar');
+               $this->assertEquals('<bar />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function tagContentCanBeOverridden() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('foo', 'some content');
+               $tagBuilder->setContent('');
+               $this->assertEquals('<foo />', $tagBuilder->render());
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function tagIsNotRenderedIfTagNameIsEmpty() {
+               $tagBuilder = new Tx_Fluid_Core_ViewHelper_TagBuilder('foo');
+               $tagBuilder->setTagName('');
+               $this->assertEquals('', $tagBuilder->render());
+       }
+}
+
+?>
index f42e43b..2365a9a 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_ViewHelper_TemplateVariableContainerTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_ViewHelper_TemplateVariableContainerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @author Sebastian Kurfürst <sebastian@typo3.org>
index 8a8d5ec..0e96ca0 100644 (file)
@@ -27,7 +27,7 @@ require_once(dirname(__FILE__) . '/../Fixtures/TestViewHelper.php');
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_ViewHelper_ViewHelperVariableContainerTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_ViewHelper_ViewHelperVariableContainerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         *
index e8f4c73..79efb0a 100644 (file)
@@ -25,7 +25,8 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetControllerTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetControllerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
@@ -39,19 +40,23 @@ class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetControllerTest extends Tx_Ex
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function processRequestSetsWidgetConfiguration() {
-               $widgetContext = $this->getMock('Tx_Fluid_Core_Widget_WidgetContext', array('getWidgetConfiguration'));
+               $widgetContext = $this->getMock('Tx_Fluid_Core_Widget_WidgetContext');
                $widgetContext->expects($this->once())->method('getWidgetConfiguration')->will($this->returnValue('myConfiguration'));
 
-               $request = $this->getMock('Tx_Fluid_Core_Widget_WidgetRequest', array('getWidgetContext', 'getControllerObjectName', 'getControllerActionName'), array(), '', FALSE);
+               $request = $this->getMock('Tx_Fluid_Core_Widget_WidgetRequest', array(), array(), '', FALSE);
                $request->expects($this->once())->method('getWidgetContext')->will($this->returnValue($widgetContext));
 
-               $response = $this->getMock('Tx_Fluid_MVC_ResponseInterface');
+               $response = $this->getMock('Tx_Extbase_MVC_ResponseInterface');
+
+               $abstractWidgetController = $this->getAccessibleMock('Tx_Fluid_Core_Widget_AbstractWidgetController', array('resolveActionMethodName', 'initializeActionMethodArguments', 'initializeActionMethodValidators', 'initializeAction', 'checkRequestHash', 'mapRequestArgumentsToControllerArguments', 'buildControllerContext', 'resolveView', 'callActionMethod'), array(), '', FALSE);
 
-               $abstractWidgetController = $this->getAccessibleMock('Tx_Fluid_Core_Widget_AbstractWidgetController', array('initializeUriBuilder', 'resolveActionMethodName', 'initializeActionMethodArguments', 'initializeActionMethodValidators', 'mapRequestArgumentsToControllerArguments', 'resolveView', 'callActionMethod'), array(), '', FALSE);
+               $mockUriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder');
 
                $objectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $objectManager->expects($this->any())->method('create')->with('Tx_Extbase_MVC_Web_Routing_UriBuilder')->will($this->returnValue($mockUriBuilder));
                $abstractWidgetController->_set('objectManager', $objectManager);
 
                $abstractWidgetController->processRequest($request, $response);
index 5e32b94..952dde0 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_Core_Widget_AbstractWidgetViewHelper
@@ -67,15 +67,17 @@ class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetViewHelperTest extends Tx_Ex
                $this->viewHelper->injectAjaxWidgetContextHolder($this->ajaxWidgetContextHolder);
 
                $this->widgetContext = $this->getMock('Tx_Fluid_Core_Widget_WidgetContext');
-               $this->viewHelper->injectWidgetContext($this->widgetContext);
 
                $this->objectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $this->objectManager->expects($this->at(0))->method('create')->with('Tx_Fluid_Core_Widget_WidgetContext')->will($this->returnValue($this->widgetContext));
                $this->viewHelper->injectObjectManager($this->objectManager);
 
+               $this->request = $this->getMock('Tx_Extbase_MVC_Web_Request');
+
                $this->controllerContext = $this->getMock('Tx_Extbase_MVC_Controller_ControllerContext', array(), array(), '', FALSE);
+               $this->controllerContext->expects($this->any())->method('getRequest')->will($this->returnValue($this->request));
                $this->viewHelper->_set('controllerContext', $this->controllerContext);
 
-               $this->request = $this->getMock('Tx_Extbase_MVC_Web_Request');
        }
 
        /**
@@ -167,9 +169,9 @@ class Tx_Fluid_Tests_Unit_Core_Widget_AbstractWidgetViewHelperTest extends Tx_Ex
 
                // Initial Setup
                $widgetRequest = $this->getMock('Tx_Fluid_Core_Widget_WidgetRequest');
-               $response = $this->getMock('Tx_Fluid_MVC_Web_Response');
+               $response = $this->getMock('Tx_Extbase_MVC_Web_Response');
                $this->objectManager->expects($this->at(0))->method('create')->with('Tx_Fluid_Core_Widget_WidgetRequest')->will($this->returnValue($widgetRequest));
-               $this->objectManager->expects($this->at(1))->method('create')->with('Tx_Fluid_MVC_Web_Response')->will($this->returnValue($response));
+               $this->objectManager->expects($this->at(1))->method('create')->with('Tx_Extbase_MVC_Web_Response')->will($this->returnValue($response));
 
                // Widget Context is set
                $widgetRequest->expects($this->once())->method('setWidgetContext')->with($this->widgetContext);
index 7465dfa..43bcaea 100644 (file)
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_AjaxWidgetContextHolderTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_AjaxWidgetContextHolderTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
-       public function storeSetsTheAjaxWidgetIdentifierInContextAndIncreasesIt() {
-               $ajaxWidgetContextHolder = $this->getAccessibleMock('Tx_Fluid_Core_Widget_AjaxWidgetContextHolder', array('dummy'));
-               $ajaxWidgetContextHolder->_set('nextFreeAjaxWidgetId', 123);
-
-               $widgetContext = $this->getMock('Tx_Fluid_Core_Widget_WidgetContext', array('setAjaxWidgetIdentifier'));
-               $widgetContext->expects($this->once())->method('setAjaxWidgetIdentifier')->with(123);
-
-               $ajaxWidgetContextHolder->store($widgetContext);
-               $this->assertEquals(124, $ajaxWidgetContextHolder->_get('nextFreeAjaxWidgetId'));
-       }
-
-       /**
-        * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
-        */
-       public function storedWidgetContextCanBeRetrievedAgain() {
-               $ajaxWidgetContextHolder = $this->getAccessibleMock('Tx_Fluid_Core_Widget_AjaxWidgetContextHolder', array('dummy'));
-               $ajaxWidgetContextHolder->_set('nextFreeAjaxWidgetId', 123);
-
-               $widgetContext = $this->getMock('Tx_Fluid_Core_Widget_WidgetContext', array('setAjaxWidgetIdentifier'));
-               $ajaxWidgetContextHolder->store($widgetContext);
-
-               $this->assertSame($widgetContext, $ajaxWidgetContextHolder->get('123'));
-       }
-
-       /**
-        * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
-        * @expectedException Tx_Fluid_Core_Widget_Exception_WidgetContextNotFoundException
-        */
-       public function getThrowsExceptionIfWidgetContextIsNotFound() {
-               $ajaxWidgetContextHolder = new Tx_Fluid_Core_Widget_AjaxWidgetContextHolder();
-               $ajaxWidgetContextHolder->get(42);
+       public function foo() {
+               $this->markTestIncomplete();
        }
 }
 ?>
\ No newline at end of file
index 85beb5a..5aa33ed 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_WidgetContextTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_WidgetContextTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_Core_Widget_WidgetContext
index ebf9df7..aae710d 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_Core_Widget_WidgetRequestBuilder
@@ -53,14 +53,28 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbas
        protected $mockWidgetContext;
 
        /**
-        * @var Tx_Fluid_Utility_Environment
+        * @var array
         */
-       protected $mockEnvironment;
+       protected $serverBackup;
+
+       /**
+        * @var array
+        */
+       protected $getBackup;
+
+       /**
+        * @var array
+        */
+       protected $postBackup;
 
        /**
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function setUp() {
+               $this->serverBackup = $_SERVER;
+               $this->getBackup = $_GET;
+               $this->postBackup = $_POST;
                $this->widgetRequestBuilder = $this->getAccessibleMock('Tx_Fluid_Core_Widget_WidgetRequestBuilder', array('setArgumentsFromRawRequestData'));
 
                $this->mockWidgetRequest = $this->getMock('Tx_Fluid_Core_Widget_WidgetRequest');
@@ -75,17 +89,35 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbas
                $this->mockAjaxWidgetContextHolder = $this->getMock('Tx_Fluid_Core_Widget_AjaxWidgetContextHolder');
                $this->widgetRequestBuilder->injectAjaxWidgetContextHolder($this->mockAjaxWidgetContextHolder);
                $this->mockAjaxWidgetContextHolder->expects($this->once())->method('get')->will($this->returnValue($this->mockWidgetContext));
+       }
 
-               $this->mockEnvironment = $this->getMock('Tx_Fluid_Utility_Environment');
-               $this->widgetRequestBuilder->_set('environment', $this->mockEnvironment);
+       /**
+        * @return void
+        */
+       public function tearDown() {
+               $_SERVER = $this->serverBackup;
+               $_GET = $this->getBackup;
+               $_POST = $this->postBackup;
        }
 
        /**
         * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
-       public function buildInjectsEnvironmentInRequest() {
-               $this->mockWidgetRequest->expects($this->once())->method('injectEnvironment')->with($this->mockEnvironment);
+       public function buildSetsRequestUri() {
+               $requestUri = t3lib_div::getIndpEnv('TYPO3_REQUEST_URL');
+               $this->mockWidgetRequest->expects($this->once())->method('setRequestURI')->with($requestUri);
+
+               $this->widgetRequestBuilder->build();
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function buildSetsBaseUri() {
+               $baseUri = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
+               $this->mockWidgetRequest->expects($this->once())->method('setBaseURI')->with($baseUri);
 
                $this->widgetRequestBuilder->build();
        }
@@ -93,9 +125,10 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbas
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
-       public function buildSetsRequestMethodFromEnvironment() {
-               $this->mockEnvironment->expects($this->once())->method('getRequestMethod')->will($this->returnValue('POST'));
+       public function buildSetsRequestMethod() {
+               $_SERVER['REQUEST_METHOD'] = 'POST';
                $this->mockWidgetRequest->expects($this->once())->method('setMethod')->with('POST');
 
                $this->widgetRequestBuilder->build();
@@ -103,10 +136,26 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbas
 
        /**
         * @test
-        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
+       public function buildSetsPostArgumentsFromRequest() {
+               $_SERVER['REQUEST_METHOD'] = 'POST';
+               $_GET = array('get' => 'foo');
+               $_POST = array('post' => 'bar');
+               $this->mockWidgetRequest->expects($this->once())->method('setArguments')->with($_POST);
+
+               $this->widgetRequestBuilder->build();
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
-       public function buildCallsSetArgumentsFromRawRequestData() {
-               $this->widgetRequestBuilder->expects($this->once())->method('setArgumentsFromRawRequestData')->with($this->mockWidgetRequest);
+       public function buildSetsGetArgumentsFromRequest() {
+               $_SERVER['REQUEST_METHOD'] = 'GET';
+               $_GET = array('get' => 'foo');
+               $_POST = array('post' => 'bar');
+               $this->mockWidgetRequest->expects($this->once())->method('setArguments')->with($_GET);
 
                $this->widgetRequestBuilder->build();
        }
@@ -114,10 +163,11 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbas
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function buildSetsControllerActionNameFromGetArguments() {
-               $this->mockEnvironment->expects($this->once())->method('getRawGetArguments')->will($this->returnValue(array('action' => 'myaction', 'f3-fluid-widget-id' => '')));
-               $this->mockWidgetRequest->expects($this->once())->method('setControllerActionName')->with('myaction');
+               $_GET = array('action' => 'myAction');
+               $this->mockWidgetRequest->expects($this->once())->method('setControllerActionName')->with('myAction');
 
                $this->widgetRequestBuilder->build();
        }
@@ -125,9 +175,10 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestBuilderTest extends Tx_Extbas
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function buildSetsWidgetContext() {
-               $this->mockEnvironment->expects($this->once())->method('getRawGetArguments')->will($this->returnValue(array('f3-fluid-widget-id' => '123')));
+               $_GET = array('fluid-widget-id' => '123');
                $this->mockAjaxWidgetContextHolder->expects($this->once())->method('get')->with('123')->will($this->returnValue($this->mockWidgetContext));
                $this->mockWidgetRequest->expects($this->once())->method('setWidgetContext')->with($this->mockWidgetContext);
 
index a62499d..5dfe633 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestHandlerTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestHandlerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_Core_Widget_WidgetRequestHandler
@@ -33,35 +33,40 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestHandlerTest extends Tx_Extbas
        protected $widgetRequestHandler;
 
        /**
-        * @var Tx_Fluid_Utility_Environment
+        * @var array
         */
-       protected $mockEnvironment;
-       
+       protected $getBackup;
+
        /**
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function setUp() {
-               $this->mockEnvironment = $this->getMock('Tx_Fluid_Utility_Environment');
-
+               $this->getBackup = $_GET;
                $this->widgetRequestHandler = $this->getAccessibleMock('Tx_Fluid_Core_Widget_WidgetRequestHandler', array('dummy'), array(), '', FALSE);
-               $this->widgetRequestHandler->_set('environment', $this->mockEnvironment);
+       }
+
+       public function tearDown() {
+               $_GET = $this->getBackup;
        }
 
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function canHandleRequestReturnsTrueIfCorrectGetParameterIsSet() {
-               $this->mockEnvironment->expects($this->once())->method('getRawGetArguments')->will($this->returnValue(array('f3-fluid-widget-id' => '123')));
+               $_GET['fluid-widget-id'] = 123;
                $this->assertTrue($this->widgetRequestHandler->canHandleRequest());
        }
 
        /**
         * @test
         * @author Sebastian Kurfürst <sebastian@typo3.org>
+        * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function canHandleRequestReturnsFalsefGetParameterIsNotSet() {
-               $this->mockEnvironment->expects($this->once())->method('getRawGetArguments')->will($this->returnValue(array('some-other-id' => '123')));
+               $_GET['some-other-id'] = 123;
                $this->assertFalse($this->widgetRequestHandler->canHandleRequest());
        }
 
@@ -70,7 +75,7 @@ class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestHandlerTest extends Tx_Extbas
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
        public function priorityIsHigherThanDefaultRequestHandler() {
-               $defaultWebRequestHandler = $this->getMock('Tx_Extbase_MVC_Web_RequestHandler', array('dummy'), array(), '', FALSE);
+               $defaultWebRequestHandler = $this->getMock('Tx_Extbase_MVC_Web_AbstractRequestHandler', array('handleRequest'), array(), '', FALSE);
                $this->assertTrue($this->widgetRequestHandler->getPriority() > $defaultWebRequestHandler->getPriority());
        }
 }
index bea6dc6..588b3bc 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_Core_Widget_WidgetRequestTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 097cbcf..a528e2c 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_View_AbstractTemplateViewTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_View_AbstractTemplateViewTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_View_AbstractTemplateView
index 7ad2e3d..4d998a1 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_View_StandaloneViewTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_View_StandaloneViewTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_View_StandaloneView
@@ -128,6 +128,13 @@ class Tx_Fluid_Tests_Unit_View_StandaloneViewTest extends Tx_Extbase_BaseTestCas
        }
 
        /**
+        * @return void
+        */
+       public function tearDown() {
+               t3lib_div::purgeInstances();
+       }
+
+       /**
         * @param string $className
         * @return object
         */
index 6c47edb..22da2a3 100644 (file)
@@ -28,7 +28,7 @@ include_once(dirname(__FILE__) . '/Fixtures/TemplateViewFixture.php');
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Fluid_Tests_Unit_View_TemplateViewTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_View_TemplateViewTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 51bfefc..9f0b3fd 100644 (file)
@@ -36,7 +36,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_CountViewHelperTest extends Tx_Fluid_ViewH
 
        public function setUp() {
                parent::setUp();
-               $this->viewHelper = new Tx_Fluid_ViewHelpers_CountViewHelper();
+               $this->viewHelper = $this->getMock('Tx_Fluid_ViewHelpers_CountViewHelper', array('renderChildren'));
                $this->injectDependenciesIntoViewHelper($this->viewHelper);
                $this->viewHelper->initializeArguments();
        }
@@ -55,6 +55,17 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_CountViewHelperTest extends Tx_Fluid_ViewH
         * @test
         * @author Bastian Waidelich <bastian@typo3.org>
         */
+       public function renderReturnsCountOfChildNodesIfNoSubjectIsSpecified() {
+               $expectedResult = 2;
+               $this->viewHelper->expects($this->once())->method('renderChildren')->will($this->returnValue(array('foo', 'bar')));
+               $actualResult = $this->viewHelper->render();
+               $this->assertSame($expectedResult, $actualResult);
+       }
+
+       /**
+        * @test
+        * @author Bastian Waidelich <bastian@typo3.org>
+        */
        public function renderReturnsNumberOfElementsInAnArrayObject() {
                $expectedResult = 2;
                $actualResult = $this->viewHelper->render(new ArrayObject(array('foo', 'bar')));
@@ -77,6 +88,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_CountViewHelperTest extends Tx_Fluid_ViewH
         */
        public function renderReturnsZeroIfGivenArrayIsNull() {
                $expectedResult = 0;
+               $this->viewHelper->expects($this->once())->method('renderChildren')->will($this->returnValue(NULL));
                $actualResult = $this->viewHelper->render(NULL);
                $this->assertSame($expectedResult, $actualResult);
        }
index 0431577..3b208da 100644 (file)
@@ -55,7 +55,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
 
                $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo'));
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -74,7 +74,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
 
                $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo'));
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render(TRUE);
@@ -94,7 +94,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->never())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->never())->method('getPropertyValue')->will($this->returnValue(TRUE));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render(TRUE);
@@ -116,7 +116,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(TRUE));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -137,7 +137,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(array()));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -158,7 +158,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(array('foo', 'bar', 'baz')));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -174,7 +174,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_CheckboxViewHelperTest extends Tx_Flu
 
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(new stdClass()));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
index 5aaf9fa..42d8f40 100644 (file)
@@ -55,7 +55,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_HiddenViewHelperTest extends Tx_Fluid
 
                $this->viewHelper->expects($this->once())->method('getName')->will($this->returnValue('foo'));
                $this->viewHelper->expects($this->once())->method('getValue')->will($this->returnValue('bar'));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
index 508ef0f..3166774 100644 (file)
@@ -55,7 +55,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_RadioViewHelperTest extends Tx_Fluid_
 
                $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo'));
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -75,7 +75,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_RadioViewHelperTest extends Tx_Fluid_
 
                $this->viewHelper->expects($this->any())->method('getName')->will($this->returnValue('foo'));
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render(TRUE);
@@ -95,7 +95,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_RadioViewHelperTest extends Tx_Fluid_
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->never())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->never())->method('getPropertyValue')->will($this->returnValue(TRUE));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render(TRUE);
@@ -118,7 +118,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_RadioViewHelperTest extends Tx_Fluid_
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(TRUE));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -139,7 +139,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_RadioViewHelperTest extends Tx_Fluid_
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue(array()));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -161,7 +161,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_RadioViewHelperTest extends Tx_Fluid_
                $this->viewHelper->expects($this->any())->method('getValue')->will($this->returnValue('bar'));
                $this->viewHelper->expects($this->any())->method('isObjectAccessorMode')->will($this->returnValue(TRUE));
                $this->viewHelper->expects($this->any())->method('getPropertyValue')->will($this->returnValue('bar'));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
index c6e59c2..4793f63 100644 (file)
@@ -50,7 +50,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
        public function selectCorrectlySetsTagName() {
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName'), array(), '', FALSE);
                $mockTagBuilder->expects($this->once())->method('setTagName')->with('select');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array()
@@ -72,7 +72,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="value1">label1</option>' . chr(10) . '<option value="value2" selected="selected">label2</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(
@@ -98,7 +98,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value=""></option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(),
@@ -121,7 +121,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="value3">label3</option>' . chr(10) . '<option value="value1">label1</option>' . chr(10) . '<option value="value2" selected="selected">label2</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(
@@ -148,7 +148,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="value1">label1</option>' . chr(10) . '<option value="value2" selected="selected">label2</option>' . chr(10) . '<option value="value3">label3</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(
@@ -177,7 +177,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->exactly(3))->method('registerFieldNameForFormTokenGeneration')->with('myName[]');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="value1" selected="selected">label1</option>' . chr(10) . '<option value="value2">label2</option>' . chr(10) . '<option value="value3" selected="selected">label3</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(
@@ -214,7 +214,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="1">Ingmar</option>' . chr(10) . '<option value="2" selected="selected">Sebastian</option>' . chr(10) . '<option value="3">Robert</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $user_is = new Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass(1, 'Ingmar', 'Schlecht');
                $user_sk = new Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass(2, 'Sebastian', 'Kurfuerst');
@@ -248,7 +248,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->exactly(3))->method('registerFieldNameForFormTokenGeneration')->with('myName[]');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="1" selected="selected">Schlecht</option>' . chr(10) . '<option value="2">Kurfuerst</option>' . chr(10) . '<option value="3" selected="selected">Lemke</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $user_is = new Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass(1, 'Ingmar', 'Schlecht');
                $user_sk = new Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass(2, 'Sebastian', 'Kurfuerst');
@@ -286,7 +286,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="fakeUID">fakeUID</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $user = new Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass(1, 'Ingmar', 'Schlecht');
 
@@ -316,7 +316,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('myName');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="fakeUID">toStringResult</option>' . chr(10));
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $user = $this->getMock('Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass', array('__toString'), array(1, 'Ingmar', 'Schlecht'));
                $user->expects($this->atLeastOnce())->method('__toString')->will($this->returnValue('toStringResult'));
@@ -347,7 +347,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
                $this->viewHelper->injectPersistenceManager($mockPersistenceManager);
 
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute', 'setContent', 'render'), array(), '', FALSE);
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $user = new Tx_Fluid_ViewHelpers_Fixtures_UserDomainClass(1, 'Ingmar', 'Schlecht');
 
@@ -384,7 +384,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
        public function allOptionsAreSelectedIfSelectAllIsTrue() {
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute', 'setContent', 'render'), array(), '', FALSE);
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="value1" selected="selected">label1</option>' . chr(10) . '<option value="value2" selected="selected">label2</option>' . chr(10) . '<option value="value3" selected="selected">label3</option>' . chr(10));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(
@@ -409,7 +409,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SelectViewHelperTest extends Tx_Fluid
        public function selectAllHasNoEffectIfValueIsSet() {
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('addAttribute', 'setContent', 'render'), array(), '', FALSE);
                $mockTagBuilder->expects($this->once())->method('setContent')->with('<option value="value1" selected="selected">label1</option>' . chr(10) . '<option value="value2" selected="selected">label2</option>' . chr(10) . '<option value="value3">label3</option>' . chr(10));
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'options' => array(
index b227999..5262e0b 100644 (file)
@@ -36,7 +36,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SubmitViewHelperTest extends Tx_Fluid
 
        public function setUp() {
                parent::setUp();
-               $this->viewHelper = new Tx_Fluid_ViewHelpers_Form_SubmitViewHelper();
+               $this->viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_Form_SubmitViewHelper', array('dummy'));
                $this->injectDependenciesIntoViewHelper($this->viewHelper);
                $this->viewHelper->initializeArguments();
        }
@@ -50,7 +50,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_SubmitViewHelperTest extends Tx_Fluid
                $mockTagBuilder->expects($this->once())->method('setTagName')->with('input');
                $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('type', 'submit');
 
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
index 45d77fb..e9b1011 100644 (file)
@@ -50,7 +50,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_TextareaViewHelperTest extends Tx_Flu
        public function renderCorrectlySetsTagName() {
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName'), array(), '', FALSE);
                $mockTagBuilder->expects($this->once())->method('setTagName')->with('textarea');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -67,7 +67,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_TextareaViewHelperTest extends Tx_Flu
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('NameOfTextarea');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('Current value');
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'name' => 'NameOfTextarea',
@@ -99,7 +99,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_TextareaViewHelperTest extends Tx_Flu
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('NameOfTextarea');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('some &lt;tag&gt; &amp; &quot;quotes&quot;');
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'name' => 'NameOfTextarea',
index d2559f0..f2c3fc2 100644 (file)
@@ -50,7 +50,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_TextboxViewHelperTest extends Tx_Flui
        public function renderCorrectlySetsTagName() {
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName'), array(), '', FALSE);
                $mockTagBuilder->expects($this->once())->method('setTagName')->with('input');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->initialize();
                $this->viewHelper->render();
@@ -68,7 +68,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_TextboxViewHelperTest extends Tx_Flui
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('NameOfTextbox');
                $mockTagBuilder->expects($this->at(2))->method('addAttribute')->with('value', 'Current value');
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'name' => 'NameOfTextbox',
index 3178c5d..3103e3d 100644 (file)
@@ -50,7 +50,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_UploadViewHelperTest extends Tx_Fluid
        public function renderCorrectlySetsTagName() {
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName'), array(), '', FALSE);
                $mockTagBuilder->expects($this->once())->method('setTagName')->with('input');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
                $this->viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array()));
 
                $this->viewHelper->initialize();
@@ -68,7 +68,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Form_UploadViewHelperTest extends Tx_Fluid
                $mockTagBuilder->expects($this->at(1))->method('addAttribute')->with('name', 'someName');
                $this->viewHelper->expects($this->once())->method('registerFieldNameForFormTokenGeneration')->with('someName');
                $mockTagBuilder->expects($this->once())->method('render');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $arguments = new Tx_Fluid_Core_ViewHelper_Arguments(array(
                        'name' => 'someName',
index 0638230..1ad4fe3 100644 (file)
@@ -202,12 +202,14 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_FormViewHelperTest extends Tx_Fluid_ViewHe
         * @test
         * @author Bastian Waidelich <bastian@typo3.org>
         */
-       public function renderAddsNoFieldNamePrefixToTemplateVariableContainerIfNoPrefixIsSpecified() {
-               $expectedPrefix = '';
+       public function renderAddsDefaultFieldNamePrefixToTemplateVariableContainerIfNoPrefixIsSpecified() {
+               $expectedPrefix = 'tx_someextension_someplugin';
 
                $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_FormViewHelper', array('renderChildren', 'renderHiddenIdentityField', 'renderHiddenReferrerFields', 'renderRequestHashField', 'addFormFieldNamesToViewHelperVariableContainer', 'removeFormFieldNamesFromViewHelperVariableContainer'), array(), '', FALSE);
                $this->injectDependenciesIntoViewHelper($viewHelper);
 
+               $viewHelper->setArguments(new Tx_Fluid_Core_ViewHelper_Arguments(array('extensionName' => 'SomeExtension', 'pluginName' => 'SomePlugin')));
+
                $this->viewHelperVariableContainer->expects($this->once())->method('add')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'fieldNamePrefix', $expectedPrefix);
                $this->viewHelperVariableContainer->expects($this->once())->method('remove')->with('Tx_Fluid_ViewHelpers_FormViewHelper', 'fieldNamePrefix');
                $viewHelper->render();
index 8e3f989..cb419d5 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_CropViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_CropViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * var Tx_Fluid_ViewHelpers_Format_CropViewHelper
@@ -34,11 +34,19 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Format_CropViewHelperTest extends Tx_Extba
         */
        protected $mockContentObject;
 
+       /**
+        * @var Tx_Extbase_Configuration_ConfigurationManagerInterface
+        */
+       protected $mockConfigurationManager;
+
        public function setUp() {
                parent::setUp();
 
                $this->mockContentObject = $this->getMock('tslib_cObj', array(), array(), '', FALSE);
-               $this->viewHelper = $this->getMock('Tx_Fluid_ViewHelpers_Format_CropViewHelper', array('renderChildren'), array($this->mockContentObject));
+               $this->mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $this->mockConfigurationManager->expects($this->any())->method('getContentObject')->will($this->returnValue($this->mockContentObject));
+               $this->viewHelper = $this->getMock('Tx_Fluid_ViewHelpers_Format_CropViewHelper', array('renderChildren'));
+               $this->viewHelper->injectConfigurationManager($this->mockConfigurationManager);
                $this->viewHelper->expects($this->once())->method('renderChildren')->will($this->returnValue('Some Content'));
        }
 
index 086db0f..a65f02a 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_CurrencyViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_CurrencyViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 34dbd7a..4ad93f8 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_DateViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_DateViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 65cde09..69f5cff 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_Nl2brViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_Nl2brViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 6a8da58..2759580 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_NumberViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_NumberViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 9c66971..a7d6482 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_PaddingViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_PaddingViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 62f46cf..dda2c25 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Format_PrintfViewHelperTest extends Tx_Extbase_BaseTestCase {
+class Tx_Fluid_Tests_Unit_ViewHelpers_Format_PrintfViewHelperTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 9e00e81..a33b330 100644 (file)
@@ -56,7 +56,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Link_EmailViewHelperTest extends Tx_Fluid_
                $mockTagBuilder->expects($this->once())->method('setTagName')->with('a');
                $mockTagBuilder->expects($this->once())->method('addAttribute')->with('href', 'mailto:some@email.tld');
                $mockTagBuilder->expects($this->once())->method('setContent')->with('some content');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue('some content'));
 
@@ -73,7 +73,7 @@ class Tx_Fluid_Tests_Unit_ViewHelpers_Link_EmailViewHelperTest extends Tx_Fluid_
 
                $mockTagBuilder = $this->getMock('Tx_Fluid_Core_ViewHelper_TagBuilder', array('setTagName', 'addAttribute', 'setContent'));
                $mockTagBuilder->expects($this->once())->method('setContent')->with('some@email.tld');
-               $this->viewHelper->injectTagBuilder($mockTagBuilder);
+               $this->viewHelper->_set('tag', $mockTagBuilder);
 
                $this->viewHelper->expects($this->any())->method('renderChildren')->will($this->returnValue(NULL));
 
diff --git a/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Persistence/IdentityViewHelperTest.php b/typo3/sysext/fluid/Tests/Unit/ViewHelpers/Persistence/IdentityViewHelperTest.php
deleted file mode 100644 (file)
index c6d7fd8..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/*                                                                        *
- * This script belongs to the FLOW3 package "Fluid".                      *
- *                                                                        *
- * It is free software; you can redistribute it and/or modify it under    *
- * the terms of the GNU Lesser General Public License as published by the *
- * Free Software Foundation, either version 3 of the License, or (at your *
- * option) any later version.                                             *
- *                                                                        *
- * This script is distributed in the hope that it will be useful, but     *
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
- * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
- * General Public License for more details.                               *
- *                                                                        *
- * You should have received a copy of the GNU Lesser General Public       *
- * License along with the script.                                         *
- * If not, see http://www.gnu.org/licenses/lgpl.html                      *
- *                                                                        *
- * The TYPO3 project - inspiring people to share!                         *
- *                                                                        */
-
-require_once(dirname(__FILE__) . '/../ViewHelperBaseTestcase.php');
-
-/**
- * Testcase for IdentityViewHelper
- *
- * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
- */
-class Tx_Fluid_Tests_Unit_ViewHelpers_Persistence_IdentityViewHelperTest extends Tx_Fluid_ViewHelpers_ViewHelperBaseTestcase {
-
-       /**
-        * @test
-        * @author Christopher Hlubek <hlubek@networkteam.com>
-        */
-       public function renderGetsIdentityForObjectFromPersistenceManager() {
-               $mockPersistenceManager = $this->getMock('Tx_Extbase_Persistence_ManagerInterface');
-
-               $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_Persistence_IdentityViewHelper', array('dummy'), array(), '', FALSE);
-               $this->injectDependenciesIntoViewHelper($viewHelper);
-               $viewHelper->injectPersistenceManager($mockPersistenceManager);
-
-               $object = new stdClass();
-
-               $mockPersistenceManager->expects($this->atLeastOnce())->method('getIdentifierByObject')->with($object)->will($this->returnValue('6f487e40-4483-11de-8a39-0800200c9a66'));
-
-               $output = $viewHelper->render($object);
-
-               $this->assertEquals('6f487e40-4483-11de-8a39-0800200c9a66', $output, 'Identity is rendered as is');
-       }
-
-       /**
-        * @test
-        * @author Christopher Hlubek <hlubek@networkteam.com>
-        */
-       public function renderOutputsEmptyStringForNullIdentity() {
-               $mockPersistenceManager = $this->getMock('Tx_Extbase_Persistence_ManagerInterface');
-
-               $viewHelper = $this->getAccessibleMock('Tx_Fluid_ViewHelpers_Persistence_IdentityViewHelper', array('dummy'), array(), '', FALSE);
-               $this->injectDependenciesIntoViewHelper($viewHelper);
-               $viewHelper->injectPersistenceManager($mockPersistenceManager);
-
-               $object = new stdClass();
-
-               $mockPersistenceManager->expects($this->any())->method('getIdentifierByObject')->will($this->returnValue(NULL));
-
-               $output = $viewHelper->render($object);
-
-               $this->assertEquals('', $output, 'NULL Identity is rendered as empty string');
-       }
-}
-
-?>
\ No newline at end of file
index 50c05db..4421db5 100644 (file)
@@ -22,7 +22,7 @@
 
 /**
  */
-abstract class Tx_Fluid_ViewHelpers_ViewHelperBaseTestcase extends Tx_Extbase_BaseTestCase {
+abstract class Tx_Fluid_ViewHelpers_ViewHelperBaseTestcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer
old mode 100644 (file)
new mode 100755 (executable)
index 91410dc..fcbd2ed
@@ -1,6 +1,6 @@
 <?php
 // DO NOT CHANGE THIS FILE! It is automatically generated by Tx_Extbase_Utility_Extension::createAutoloadRegistryForExtension.
-// This file was generated on 2010-10-26 16:02
+// This file was generated on 2011-01-26 09:12
 
 $extensionClassesPath = t3lib_extMgm::extPath('fluid') . 'Classes/';
 return array(
@@ -9,7 +9,6 @@ return array(
        'tx_fluid_compatibility_docbookgeneratorservice' => $extensionClassesPath . 'Compatibility/DocbookGeneratorService.php',
        'tx_fluid_compatibility_templateparserbuilder' => $extensionClassesPath . 'Compatibility/TemplateParserBuilder.php',
        'tx_fluid_core_exception' => $extensionClassesPath . 'Core/Exception.php',
-       'tx_fluid_core_widget_bootstrap' => $extensionClassesPath . 'Core/Widget/Bootstrap.php',
        'tx_fluid_core_parser_configuration' => $extensionClassesPath . 'Core/Parser/Configuration.php',
        'tx_fluid_core_parser_exception' => $extensionClassesPath . 'Core/Parser/Exception.php',
        'tx_fluid_core_parser_interceptorinterface' => $extensionClassesPath . 'Core/Parser/InterceptorInterface.php',
@@ -42,12 +41,23 @@ return array(
        'tx_fluid_core_viewhelper_exception_renderingcontextnotaccessibleexception' => $extensionClassesPath . 'Core/ViewHelper/Exception/RenderingContextNotAccessibleException.php',
        'tx_fluid_core_viewhelper_facets_childnodeaccessinterface' => $extensionClassesPath . 'Core/ViewHelper/Facets/ChildNodeAccessInterface.php',
        'tx_fluid_core_viewhelper_facets_postparseinterface' => $extensionClassesPath . 'Core/ViewHelper/Facets/PostParseInterface.php',
+       'tx_fluid_core_widget_abstractwidgetcontroller' => $extensionClassesPath . 'Core/Widget/AbstractWidgetController.php',
+       'tx_fluid_core_widget_ajaxwidgetcontextholder' => $extensionClassesPath . 'Core/Widget/AjaxWidgetContextHolder.php',
+       'tx_fluid_core_widget_bootstrap' => $extensionClassesPath . 'Core/Widget/Bootstrap.php',
+       'tx_fluid_core_widget_exception' => $extensionClassesPath . 'Core/Widget/Exception.php',
+       'tx_fluid_core_widget_widgetcontext' => $extensionClassesPath . 'Core/Widget/WidgetContext.php',
+       'tx_fluid_core_widget_widgetrequest' => $extensionClassesPath . 'Core/Widget/WidgetRequest.php',
+       'tx_fluid_core_widget_widgetrequestbuilder' => $extensionClassesPath . 'Core/Widget/WidgetRequestBuilder.php',
+       'tx_fluid_core_widget_widgetrequesthandler' => $extensionClassesPath . 'Core/Widget/WidgetRequestHandler.php',
+       'tx_fluid_core_widget_exception_missingcontrollerexception' => $extensionClassesPath . 'Core/Widget/Exception/MissingControllerException.php',
+       'tx_fluid_core_widget_exception_renderingcontextnotfoundexception' => $extensionClassesPath . 'Core/Widget/Exception/RenderingContextNotFoundException.php',
+       'tx_fluid_core_widget_exception_widgetcontextnotfoundexception' => $extensionClassesPath . 'Core/Widget/Exception/WidgetContextNotFoundException.php',
+       'tx_fluid_core_widget_exception_widgetrequestnotfoundexception' => $extensionClassesPath . 'Core/Widget/Exception/WidgetRequestNotFoundException.php',
        'tx_fluid_service_docbookgenerator' => $extensionClassesPath . 'Service/DocbookGenerator.php',
        'tx_fluid_view_abstracttemplateview' => $extensionClassesPath . 'View/AbstractTemplateView.php',
        'tx_fluid_view_exception' => $extensionClassesPath . 'View/Exception.php',
        'tx_fluid_view_standaloneview' => $extensionClassesPath . 'View/StandaloneView.php',
        'tx_fluid_view_templateview' => $extensionClassesPath . 'View/TemplateView.php',
-       'tx_fluid_view_templateviewinterface' => $extensionClassesPath . 'View/TemplateViewInterface.php',
        'tx_fluid_view_exception_invalidsectionexception' => $extensionClassesPath . 'View/Exception/InvalidSectionException.php',
        'tx_fluid_view_exception_invalidtemplateresourceexception' => $extensionClassesPath . 'View/Exception/InvalidTemplateResourceException.php',
        'tx_fluid_viewhelpers_aliasviewhelper' => $extensionClassesPath . 'ViewHelpers/AliasViewHelper.php',
@@ -65,6 +75,7 @@ return array(
        'tx_fluid_viewhelpers_ifviewhelper' => $extensionClassesPath . 'ViewHelpers/IfViewHelper.php',
        'tx_fluid_viewhelpers_imageviewhelper' => $extensionClassesPath . 'ViewHelpers/ImageViewHelper.php',
        'tx_fluid_viewhelpers_layoutviewhelper' => $extensionClassesPath . 'ViewHelpers/LayoutViewHelper.php',
+       'tx_fluid_viewhelpers_renderchildrenviewhelper' => $extensionClassesPath . 'ViewHelpers/RenderChildrenViewHelper.php',
        'tx_fluid_viewhelpers_renderflashmessagesviewhelper' => $extensionClassesPath . 'ViewHelpers/RenderFlashMessagesViewHelper.php',
        'tx_fluid_viewhelpers_renderviewhelper' => $extensionClassesPath . 'ViewHelpers/RenderViewHelper.php',
        'tx_fluid_viewhelpers_sectionviewhelper' => $extensionClassesPath . 'ViewHelpers/SectionViewHelper.php',
@@ -114,5 +125,11 @@ return array(
        'tx_fluid_viewhelpers_uri_imageviewhelper' => $extensionClassesPath . 'ViewHelpers/Uri/ImageViewHelper.php',
        'tx_fluid_viewhelpers_uri_pageviewhelper' => $extensionClassesPath . 'ViewHelpers/Uri/PageViewHelper.php',
        'tx_fluid_viewhelpers_uri_resourceviewhelper' => $extensionClassesPath . 'ViewHelpers/Uri/ResourceViewHelper.php',
+       'tx_fluid_viewhelpers_widget_autocompleteviewhelper' => $extensionClassesPath . 'ViewHelpers/Widget/AutocompleteViewHelper.php',
+       'tx_fluid_viewhelpers_widget_linkviewhelper' => $extensionClassesPath . 'ViewHelpers/Widget/LinkViewHelper.php',
+       'tx_fluid_viewhelpers_widget_paginateviewhelper' => $extensionClassesPath . 'ViewHelpers/Widget/PaginateViewHelper.php',
+       'tx_fluid_viewhelpers_widget_uriviewhelper' => $extensionClassesPath . 'ViewHelpers/Widget/UriViewHelper.php',
+       'tx_fluid_viewhelpers_widget_controller_autocompletecontroller' => $extensionClassesPath . 'ViewHelpers/Widget/Controller/AutocompleteController.php',
+       'tx_fluid_viewhelpers_widget_controller_paginatecontroller' => $extensionClassesPath . 'ViewHelpers/Widget/Controller/PaginateController.php',
 );
 ?>
\ No newline at end of file
index 5935a01..39037f9 100755 (executable)
@@ -3,7 +3,7 @@
 ########################################################################
 # Extension Manager/Repository config file for ext "fluid".
 #
-# Auto generated 21-01-2011 14:09
+# Auto generated 26-01-2011 09:13
 #
 # Manual updates:
 # Only the data in the array - everything else is removed by next
@@ -29,17 +29,17 @@ $EM_CONF[$_EXTKEY] = array(
        'clearCacheOnLoad' => 0,
        'lockType' => '',
        'author_company' => '',
-       'version' => '1.3.0RC1',
+       'version' => '1.3.0',
        'constraints' => array(
                'depends' => array(
-                       'extbase' => '1.3.0RC1',
+                       'extbase' => '1.3.0',
                ),
                'conflicts' => array(
                ),
                'suggests' => array(
                ),
        ),
-       '_md5_values_when_last_written' => 'a:225:{s:13:"ChangeLog.txt";s:4:"edf5";s:16:"ext_autoload.php";s:4:"104d";s:12:"ext_icon.gif";s:4:"e922";s:14:"ext_tables.php";s:4:"344b";s:24:"ext_typoscript_setup.txt";s:4:"b410";s:21:"Classes/Exception.php";s:4:"7373";s:17:"Classes/Fluid.php";s:4:"ac13";s:49:"Classes/Compatibility/DocbookGeneratorService.php";s:4:"84b6";s:47:"Classes/Compatibility/TemplateParserBuilder.php";s:4:"617b";s:26:"Classes/Core/Exception.php";s:4:"79b3";s:37:"Classes/Core/Parser/Configuration.php";s:4:"ab36";s:33:"Classes/Core/Parser/Exception.php";s:4:"1cbd";s:44:"Classes/Core/Parser/InterceptorInterface.php";s:4:"28a6";s:47:"Classes/Core/Parser/ParsedTemplateInterface.php";s:4:"17a1";s:36:"Classes/Core/Parser/ParsingState.php";s:4:"6677";s:38:"Classes/Core/Parser/TemplateParser.php";s:4:"d4cf";s:42:"Classes/Core/Parser/Interceptor/Escape.php";s:4:"4db0";s:47:"Classes/Core/Parser/SyntaxTree/AbstractNode.php";s:4:"a57e";s:44:"Classes/Core/Parser/SyntaxTree/ArrayNode.php";s:4:"b123";s:48:"Classes/Core/Parser/SyntaxTree/NodeInterface.php";s:4:"1a31";s:53:"Classes/Core/Parser/SyntaxTree/ObjectAccessorNode.php";s:4:"fec4";s:65:"Classes/Core/Parser/SyntaxTree/RenderingContextAwareInterface.php";s:4:"68ab";s:43:"Classes/Core/Parser/SyntaxTree/RootNode.php";s:4:"6b59";s:43:"Classes/Core/Parser/SyntaxTree/TextNode.php";s:4:"7ce2";s:49:"Classes/Core/Parser/SyntaxTree/ViewHelperNode.php";s:4:"becf";s:43:"Classes/Core/Rendering/RenderingContext.php";s:4:"169b";s:52:"Classes/Core/Rendering/RenderingContextInterface.php";s:4:"29bb";s:55:"Classes/Core/ViewHelper/AbstractConditionViewHelper.php";s:4:"1b02";s:54:"Classes/Core/ViewHelper/AbstractTagBasedViewHelper.php";s:4:"7560";s:46:"Classes/Core/ViewHelper/AbstractViewHelper.php";s:4:"8c70";s:46:"Classes/Core/ViewHelper/ArgumentDefinition.php";s:4:"c4d5";s:37:"Classes/Core/ViewHelper/Arguments.php";s:4:"8553";s:37:"Classes/Core/ViewHelper/Exception.php";s:4:"f1d0";s:46:"Classes/Core/ViewHelper/TagBasedViewHelper.php";s:4:"b234";s:38:"Classes/Core/ViewHelper/TagBuilder.php";s:4:"1e21";s:53:"Classes/Core/ViewHelper/TemplateVariableContainer.php";s:4:"b576";s:47:"Classes/Core/ViewHelper/ViewHelperInterface.php";s:4:"8274";s:55:"Classes/Core/ViewHelper/ViewHelperVariableContainer.php";s:4:"f6b8";s:62:"Classes/Core/ViewHelper/Exception/InvalidVariableException.php";s:4:"6dd4";s:76:"Classes/Core/ViewHelper/Exception/RenderingContextNotAccessibleException.php";s:4:"bbb7";s:59:"Classes/Core/ViewHelper/Facets/ChildNodeAccessInterface.php";s:4:"7ec9";s:53:"Classes/Core/ViewHelper/Facets/PostParseInterface.php";s:4:"35d5";s:48:"Classes/Core/Widget/AbstractWidgetController.php";s:4:"5466";s:48:"Classes/Core/Widget/AbstractWidgetViewHelper.php";s:4:"fa90";s:47:"Classes/Core/Widget/AjaxWidgetContextHolder.php";s:4:"4658";s:33:"Classes/Core/Widget/Bootstrap.php";s:4:"b8db";s:33:"Classes/Core/Widget/Exception.php";s:4:"a6e3";s:37:"Classes/Core/Widget/WidgetContext.php";s:4:"305f";s:37:"Classes/Core/Widget/WidgetRequest.php";s:4:"0ff7";s:44:"Classes/Core/Widget/WidgetRequestBuilder.php";s:4:"cf2b";s:44:"Classes/Core/Widget/WidgetRequestHandler.php";s:4:"c616";s:60:"Classes/Core/Widget/Exception/MissingControllerException.php";s:4:"5b77";s:67:"Classes/Core/Widget/Exception/RenderingContextNotFoundException.php";s:4:"a31b";s:64:"Classes/Core/Widget/Exception/WidgetContextNotFoundException.php";s:4:"ffc2";s:64:"Classes/Core/Widget/Exception/WidgetRequestNotFoundException.php";s:4:"7ce2";s:36:"Classes/Service/DocbookGenerator.php";s:4:"c6a5";s:37:"Classes/View/AbstractTemplateView.php";s:4:"ef25";s:26:"Classes/View/Exception.php";s:4:"4168";s:31:"Classes/View/StandaloneView.php";s:4:"4ac9";s:29:"Classes/View/TemplateView.php";s:4:"b3c5";s:50:"Classes/View/Exception/InvalidSectionException.php";s:4:"6cb2";s:59:"Classes/View/Exception/InvalidTemplateResourceException.php";s:4:"d589";s:39:"Classes/ViewHelpers/AliasViewHelper.php";s:4:"06f9";s:38:"Classes/ViewHelpers/BaseViewHelper.php";s:4:"a23f";s:41:"Classes/ViewHelpers/CObjectViewHelper.php";s:4:"b8b2";s:39:"Classes/ViewHelpers/CountViewHelper.php";s:4:"140f";s:39:"Classes/ViewHelpers/CycleViewHelper.php";s:4:"defe";s:39:"Classes/ViewHelpers/DebugViewHelper.php";s:4:"b611";s:38:"Classes/ViewHelpers/ElseViewHelper.php";s:4:"cdde";s:40:"Classes/ViewHelpers/EscapeViewHelper.php";s:4:"bf87";s:47:"Classes/ViewHelpers/FlashMessagesViewHelper.php";s:4:"fee4";s:37:"Classes/ViewHelpers/ForViewHelper.php";s:4:"54de";s:38:"Classes/ViewHelpers/FormViewHelper.php";s:4:"d1e7";s:44:"Classes/ViewHelpers/GroupedForViewHelper.php";s:4:"e37a";s:36:"Classes/ViewHelpers/IfViewHelper.php";s:4:"aa56";s:39:"Classes/ViewHelpers/ImageViewHelper.php";s:4:"d12c";s:40:"Classes/ViewHelpers/LayoutViewHelper.php";s:4:"ac35";s:48:"Classes/ViewHelpers/RenderChildrenViewHelper.php";s:4:"218b";s:53:"Classes/ViewHelpers/RenderFlashMessagesViewHelper.php";s:4:"3e52";s:40:"Classes/ViewHelpers/RenderViewHelper.php";s:4:"3a8a";s:41:"Classes/ViewHelpers/SectionViewHelper.php";s:4:"c4fa";s:38:"Classes/ViewHelpers/ThenViewHelper.php";s:4:"de0c";s:43:"Classes/ViewHelpers/TranslateViewHelper.php";s:4:"e9b6";s:52:"Classes/ViewHelpers/Be/AbstractBackendViewHelper.php";s:4:"0b21";s:46:"Classes/ViewHelpers/Be/ContainerViewHelper.php";s:4:"0b13";s:45:"Classes/ViewHelpers/Be/PageInfoViewHelper.php";s:4:"2a33";s:45:"Classes/ViewHelpers/Be/PagePathViewHelper.php";s:4:"7bd7";s:46:"Classes/ViewHelpers/Be/TableListViewHelper.php";s:4:"13c5";s:48:"Classes/ViewHelpers/Be/Buttons/CshViewHelper.php";s:4:"1189";s:49:"Classes/ViewHelpers/Be/Buttons/IconViewHelper.php";s:4:"0ef2";s:53:"Classes/ViewHelpers/Be/Buttons/ShortcutViewHelper.php";s:4:"8b35";s:57:"Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php";s:4:"3798";s:53:"Classes/ViewHelpers/Be/Menus/ActionMenuViewHelper.php";s:4:"e44d";s:61:"Classes/ViewHelpers/Be/Security/IfAuthenticatedViewHelper.php";s:4:"8bc3";s:55:"Classes/ViewHelpers/Be/Security/IfHasRoleViewHelper.php";s:4:"70a0";s:56:"Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php";s:4:"bcb0";s:51:"Classes/ViewHelpers/Form/AbstractFormViewHelper.php";s:4:"2dc3";s:47:"Classes/ViewHelpers/Form/CheckboxViewHelper.php";s:4:"57b8";s:45:"Classes/ViewHelpers/Form/ErrorsViewHelper.php";s:4:"41d1";s:45:"Classes/ViewHelpers/Form/HiddenViewHelper.php";s:4:"fd4f";s:47:"Classes/ViewHelpers/Form/PasswordViewHelper.php";s:4:"12a0";s:44:"Classes/ViewHelpers/Form/RadioViewHelper.php";s:4:"d39f";s:45:"Classes/ViewHelpers/Form/SelectViewHelper.php";s:4:"fd6c";s:45:"Classes/ViewHelpers/Form/SubmitViewHelper.php";s:4:"ee63";s:47:"Classes/ViewHelpers/Form/TextareaViewHelper.php";s:4:"dd77";s:46:"Classes/ViewHelpers/Form/TextboxViewHelper.php";s:4:"7c6d";s:48:"Classes/ViewHelpers/Form/TextfieldViewHelper.php";s:4:"8dd7";s:45:"Classes/ViewHelpers/Form/UploadViewHelper.php";s:4:"9b9e";s:45:"Classes/ViewHelpers/Format/CropViewHelper.php";s:4:"02f6";s:49:"Classes/ViewHelpers/Format/CurrencyViewHelper.php";s:4:"4911";s:45:"Classes/ViewHelpers/Format/DateViewHelper.php";s:4:"97d2";s:45:"Classes/ViewHelpers/Format/HtmlViewHelper.php";s:4:"5358";s:46:"Classes/ViewHelpers/Format/Nl2brViewHelper.php";s:4:"485e";s:47:"Classes/ViewHelpers/Format/NumberViewHelper.php";s:4:"4df4";s:48:"Classes/ViewHelpers/Format/PaddingViewHelper.php";s:4:"df5a";s:47:"Classes/ViewHelpers/Format/PrintfViewHelper.php";s:4:"7a95";s:45:"Classes/ViewHelpers/Link/ActionViewHelper.php";s:4:"1c8d";s:44:"Classes/ViewHelpers/Link/EmailViewHelper.php";s:4:"6a63";s:47:"Classes/ViewHelpers/Link/ExternalViewHelper.php";s:4:"e02d";s:43:"Classes/ViewHelpers/Link/PageViewHelper.php";s:4:"b6bc";s:58:"Classes/ViewHelpers/Security/IfAuthenticatedViewHelper.php";s:4:"b675";s:52:"Classes/ViewHelpers/Security/IfHasRoleViewHelper.php";s:4:"365b";s:44:"Classes/ViewHelpers/Uri/ActionViewHelper.php";s:4:"0bb9";s:43:"Classes/ViewHelpers/Uri/EmailViewHelper.php";s:4:"3ac1";s:46:"Classes/ViewHelpers/Uri/ExternalViewHelper.php";s:4:"716b";s:43:"Classes/ViewHelpers/Uri/ImageViewHelper.php";s:4:"2e43";s:42:"Classes/ViewHelpers/Uri/PageViewHelper.php";s:4:"1a59";s:46:"Classes/ViewHelpers/Uri/ResourceViewHelper.php";s:4:"d2d7";s:53:"Classes/ViewHelpers/Widget/AutocompleteViewHelper.php";s:4:"8a67";s:45:"Classes/ViewHelpers/Widget/LinkViewHelper.php";s:4:"205e";s:49:"Classes/ViewHelpers/Widget/PaginateViewHelper.php";s:4:"7a5d";s:44:"Classes/ViewHelpers/Widget/UriViewHelper.php";s:4:"d933";s:64:"Classes/ViewHelpers/Widget/Controller/AutocompleteController.php";s:4:"2983";s:60:"Classes/ViewHelpers/Widget/Controller/PaginateController.php";s:4:"1573";s:34:"Configuration/TypoScript/setup.txt";s:4:"0e30";s:70:"Resources/Private/Templates/ViewHelpers/Widget/Autocomplete/Index.html";s:4:"b955";s:66:"Resources/Private/Templates/ViewHelpers/Widget/Paginate/Index.html";s:4:"55a2";s:42:"Tests/Unit/Core/TagBasedViewHelperTest.php";s:4:"ce1f";s:34:"Tests/Unit/Core/TagBuilderTest.php";s:4:"76eb";s:43:"Tests/Unit/Core/Fixtures/TestViewHelper.php";s:4:"253f";s:43:"Tests/Unit/Core/Parser/ParsingStateTest.php";s:4:"1877";s:52:"Tests/Unit/Core/Parser/TemplateParserPatternTest.php";s:4:"4786";s:45:"Tests/Unit/Core/Parser/TemplateParserTest.php";s:4:"1c66";s:66:"Tests/Unit/Core/Parser/Fixtures/ChildNodeAccessFacetViewHelper.php";s:4:"01d1";s:60:"Tests/Unit/Core/Parser/Fixtures/PostParseFacetViewHelper.php";s:4:"4546";s:79:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture01-shorthand-split.php";s:4:"ea3a";s:74:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture01-shorthand.html";s:4:"e949";s:69:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture06-split.php";s:4:"33ba";s:64:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture06.html";s:4:"92c2";s:69:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture14-split.php";s:4:"bd4b";s:64:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture14.html";s:4:"1ec8";s:49:"Tests/Unit/Core/Parser/Interceptor/EscapeTest.php";s:4:"74d6";s:54:"Tests/Unit/Core/Parser/SyntaxTree/AbstractNodeTest.php";s:4:"84e7";s:50:"Tests/Unit/Core/Parser/SyntaxTree/TextNodeTest.php";s:4:"d495";s:66:"Tests/Unit/Core/Parser/SyntaxTree/ViewHelperNodeComparatorTest.php";s:4:"0a6f";s:56:"Tests/Unit/Core/Parser/SyntaxTree/ViewHelperNodeTest.php";s:4:"69e3";s:50:"Tests/Unit/Core/Rendering/RenderingContextTest.php";s:4:"59d3";s:53:"Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php";s:4:"dfc4";s:53:"Tests/Unit/Core/ViewHelper/ArgumentDefinitionTest.php";s:4:"6c62";s:54:"Tests/Unit/Core/ViewHelper/ConditionViewHelperTest.php";s:4:"66d7";s:60:"Tests/Unit/Core/ViewHelper/TemplateVariableContainerTest.php";s:4:"17e5";s:62:"Tests/Unit/Core/ViewHelper/ViewHelperVariableContainerTest.php";s:4:"7bf5";s:55:"Tests/Unit/Core/Widget/AbstractWidgetControllerTest.php";s:4:"686a";s:55:"Tests/Unit/Core/Widget/AbstractWidgetViewHelperTest.php";s:4:"29d7";s:54:"Tests/Unit/Core/Widget/AjaxWidgetContextHolderTest.php";s:4:"905f";s:44:"Tests/Unit/Core/Widget/WidgetContextTest.php";s:4:"28fd";s:51:"Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php";s:4:"e01d";s:51:"Tests/Unit/Core/Widget/WidgetRequestHandlerTest.php";s:4:"4023";s:44:"Tests/Unit/Core/Widget/WidgetRequestTest.php";s:4:"73af";s:44:"Tests/Unit/View/AbstractTemplateViewTest.php";s:4:"d778";s:38:"Tests/Unit/View/StandaloneViewTest.php";s:4:"f2c6";s:36:"Tests/Unit/View/TemplateViewTest.php";s:4:"f4ed";s:38:"Tests/Unit/View/Fixtures/LayoutFixture";s:4:"85d8";s:43:"Tests/Unit/View/Fixtures/LayoutFixture.html";s:4:"cca1";s:42:"Tests/Unit/View/Fixtures/LayoutFixture.xml";s:4:"85be";s:51:"Tests/Unit/View/Fixtures/StandaloneViewFixture.html";s:4:"8952";s:48:"Tests/Unit/View/Fixtures/TemplateViewFixture.php";s:4:"79e8";s:56:"Tests/Unit/View/Fixtures/TemplateViewSectionFixture.html";s:4:"aa5f";s:54:"Tests/Unit/View/Fixtures/TransparentSyntaxTreeNode.php";s:4:"eb0d";s:53:"Tests/Unit/View/Fixtures/UnparsedTemplateFixture.html";s:4:"59dd";s:46:"Tests/Unit/ViewHelpers/AliasViewHelperTest.php";s:4:"4906";s:45:"Tests/Unit/ViewHelpers/BaseViewHelperTest.php";s:4:"ddfb";s:46:"Tests/Unit/ViewHelpers/CountViewHelperTest.php";s:4:"e230";s:46:"Tests/Unit/ViewHelpers/CycleViewHelperTest.php";s:4:"c976";s:45:"Tests/Unit/ViewHelpers/ElseViewHelperTest.php";s:4:"0d90";s:44:"Tests/Unit/ViewHelpers/ForViewHelperTest.php";s:4:"3666";s:45:"Tests/Unit/ViewHelpers/FormViewHelperTest.php";s:4:"8b40";s:51:"Tests/Unit/ViewHelpers/GroupedForViewHelperTest.php";s:4:"8f37";s:43:"Tests/Unit/ViewHelpers/IfViewHelperTest.php";s:4:"25b8";s:55:"Tests/Unit/ViewHelpers/RenderChildrenViewHelperTest.php";s:4:"c652";s:47:"Tests/Unit/ViewHelpers/RenderViewHelperTest.php";s:4:"02d2";s:45:"Tests/Unit/ViewHelpers/ThenViewHelperTest.php";s:4:"360c";s:49:"Tests/Unit/ViewHelpers/ViewHelperBaseTestcase.php";s:4:"759d";s:59:"Tests/Unit/ViewHelpers/Be/IfAuthenticatedViewHelperTest.php";s:4:"14d1";s:53:"Tests/Unit/ViewHelpers/Be/IfHasRoleViewHelperTest.php";s:4:"cec2";s:60:"Tests/Unit/ViewHelpers/Fixtures/ConstraintSyntaxTreeNode.php";s:4:"dd45";s:46:"Tests/Unit/ViewHelpers/Fixtures/IfFixture.html";s:4:"8458";s:54:"Tests/Unit/ViewHelpers/Fixtures/IfThenElseFixture.html";s:4:"62f0";s:63:"Tests/Unit/ViewHelpers/Form/AbstractFormFieldViewHelperTest.php";s:4:"edca";s:58:"Tests/Unit/ViewHelpers/Form/AbstractFormViewHelperTest.php";s:4:"32bd";s:54:"Tests/Unit/ViewHelpers/Form/CheckboxViewHelperTest.php";s:4:"4850";s:52:"Tests/Unit/ViewHelpers/Form/ErrorsViewHelperTest.php";s:4:"6729";s:52:"Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php";s:4:"b2ba";s:51:"Tests/Unit/ViewHelpers/Form/RadioViewHelperTest.php";s:4:"a17e";s:52:"Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php";s:4:"1576";s:52:"Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php";s:4:"e361";s:54:"Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php";s:4:"c366";s:53:"Tests/Unit/ViewHelpers/Form/TextboxViewHelperTest.php";s:4:"3632";s:52:"Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php";s:4:"8bd9";s:60:"Tests/Unit/ViewHelpers/Form/Fixtures/EmptySyntaxTreeNode.php";s:4:"9dca";s:64:"Tests/Unit/ViewHelpers/Form/Fixtures/Fixture_UserDomainClass.php";s:4:"494c";s:52:"Tests/Unit/ViewHelpers/Format/CropViewHelperTest.php";s:4:"dee7";s:56:"Tests/Unit/ViewHelpers/Format/CurrencyViewHelperTest.php";s:4:"d525";s:52:"Tests/Unit/ViewHelpers/Format/DateViewHelperTest.php";s:4:"4e29";s:53:"Tests/Unit/ViewHelpers/Format/Nl2brViewHelperTest.php";s:4:"bffe";s:54:"Tests/Unit/ViewHelpers/Format/NumberViewHelperTest.php";s:4:"0a2d";s:55:"Tests/Unit/ViewHelpers/Format/PaddingViewHelperTest.php";s:4:"d7b9";s:54:"Tests/Unit/ViewHelpers/Format/PrintfViewHelperTest.php";s:4:"4409";s:51:"Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php";s:4:"21dd";s:54:"Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php";s:4:"9571";s:61:"Tests/Unit/ViewHelpers/Persistence/IdentityViewHelperTest.php";s:4:"c6f2";s:65:"Tests/Unit/ViewHelpers/Security/IfAuthenticatedViewHelperTest.php";s:4:"af2a";s:59:"Tests/Unit/ViewHelpers/Security/IfHasRoleViewHelperTest.php";s:4:"5722";s:50:"Tests/Unit/ViewHelpers/Uri/EmailViewHelperTest.php";s:4:"0b80";s:53:"Tests/Unit/ViewHelpers/Uri/ExternalViewHelperTest.php";s:4:"5405";}',
+       '_md5_values_when_last_written' => 'a:224:{s:13:"ChangeLog.txt";s:4:"5e51";s:16:"ext_autoload.php";s:4:"8641";s:12:"ext_icon.gif";s:4:"e922";s:14:"ext_tables.php";s:4:"344b";s:24:"ext_typoscript_setup.txt";s:4:"b410";s:21:"Classes/Exception.php";s:4:"7373";s:17:"Classes/Fluid.php";s:4:"ac13";s:49:"Classes/Compatibility/DocbookGeneratorService.php";s:4:"84b6";s:47:"Classes/Compatibility/TemplateParserBuilder.php";s:4:"617b";s:26:"Classes/Core/Exception.php";s:4:"79b3";s:37:"Classes/Core/Parser/Configuration.php";s:4:"ab36";s:33:"Classes/Core/Parser/Exception.php";s:4:"1cbd";s:44:"Classes/Core/Parser/InterceptorInterface.php";s:4:"28a6";s:47:"Classes/Core/Parser/ParsedTemplateInterface.php";s:4:"17a1";s:36:"Classes/Core/Parser/ParsingState.php";s:4:"6677";s:38:"Classes/Core/Parser/TemplateParser.php";s:4:"d4cf";s:42:"Classes/Core/Parser/Interceptor/Escape.php";s:4:"4db0";s:47:"Classes/Core/Parser/SyntaxTree/AbstractNode.php";s:4:"a57e";s:44:"Classes/Core/Parser/SyntaxTree/ArrayNode.php";s:4:"b123";s:48:"Classes/Core/Parser/SyntaxTree/NodeInterface.php";s:4:"1a31";s:53:"Classes/Core/Parser/SyntaxTree/ObjectAccessorNode.php";s:4:"fec4";s:65:"Classes/Core/Parser/SyntaxTree/RenderingContextAwareInterface.php";s:4:"68ab";s:43:"Classes/Core/Parser/SyntaxTree/RootNode.php";s:4:"6b59";s:43:"Classes/Core/Parser/SyntaxTree/TextNode.php";s:4:"7ce2";s:49:"Classes/Core/Parser/SyntaxTree/ViewHelperNode.php";s:4:"c992";s:43:"Classes/Core/Rendering/RenderingContext.php";s:4:"169b";s:52:"Classes/Core/Rendering/RenderingContextInterface.php";s:4:"29bb";s:55:"Classes/Core/ViewHelper/AbstractConditionViewHelper.php";s:4:"1b02";s:54:"Classes/Core/ViewHelper/AbstractTagBasedViewHelper.php";s:4:"7560";s:46:"Classes/Core/ViewHelper/AbstractViewHelper.php";s:4:"8c70";s:46:"Classes/Core/ViewHelper/ArgumentDefinition.php";s:4:"c4d5";s:37:"Classes/Core/ViewHelper/Arguments.php";s:4:"8553";s:37:"Classes/Core/ViewHelper/Exception.php";s:4:"f1d0";s:46:"Classes/Core/ViewHelper/TagBasedViewHelper.php";s:4:"b234";s:38:"Classes/Core/ViewHelper/TagBuilder.php";s:4:"1e21";s:53:"Classes/Core/ViewHelper/TemplateVariableContainer.php";s:4:"b576";s:47:"Classes/Core/ViewHelper/ViewHelperInterface.php";s:4:"8274";s:55:"Classes/Core/ViewHelper/ViewHelperVariableContainer.php";s:4:"f6b8";s:62:"Classes/Core/ViewHelper/Exception/InvalidVariableException.php";s:4:"6dd4";s:76:"Classes/Core/ViewHelper/Exception/RenderingContextNotAccessibleException.php";s:4:"bbb7";s:59:"Classes/Core/ViewHelper/Facets/ChildNodeAccessInterface.php";s:4:"7ec9";s:53:"Classes/Core/ViewHelper/Facets/PostParseInterface.php";s:4:"35d5";s:48:"Classes/Core/Widget/AbstractWidgetController.php";s:4:"5466";s:48:"Classes/Core/Widget/AbstractWidgetViewHelper.php";s:4:"fa90";s:47:"Classes/Core/Widget/AjaxWidgetContextHolder.php";s:4:"4658";s:33:"Classes/Core/Widget/Bootstrap.php";s:4:"b8db";s:33:"Classes/Core/Widget/Exception.php";s:4:"a6e3";s:37:"Classes/Core/Widget/WidgetContext.php";s:4:"305f";s:37:"Classes/Core/Widget/WidgetRequest.php";s:4:"0ff7";s:44:"Classes/Core/Widget/WidgetRequestBuilder.php";s:4:"cf2b";s:44:"Classes/Core/Widget/WidgetRequestHandler.php";s:4:"c616";s:60:"Classes/Core/Widget/Exception/MissingControllerException.php";s:4:"5b77";s:67:"Classes/Core/Widget/Exception/RenderingContextNotFoundException.php";s:4:"a31b";s:64:"Classes/Core/Widget/Exception/WidgetContextNotFoundException.php";s:4:"ffc2";s:64:"Classes/Core/Widget/Exception/WidgetRequestNotFoundException.php";s:4:"7ce2";s:36:"Classes/Service/DocbookGenerator.php";s:4:"c6a5";s:37:"Classes/View/AbstractTemplateView.php";s:4:"ef25";s:26:"Classes/View/Exception.php";s:4:"4168";s:31:"Classes/View/StandaloneView.php";s:4:"4ac9";s:29:"Classes/View/TemplateView.php";s:4:"b3c5";s:50:"Classes/View/Exception/InvalidSectionException.php";s:4:"6cb2";s:59:"Classes/View/Exception/InvalidTemplateResourceException.php";s:4:"d589";s:39:"Classes/ViewHelpers/AliasViewHelper.php";s:4:"06f9";s:38:"Classes/ViewHelpers/BaseViewHelper.php";s:4:"a23f";s:41:"Classes/ViewHelpers/CObjectViewHelper.php";s:4:"b8b2";s:39:"Classes/ViewHelpers/CountViewHelper.php";s:4:"140f";s:39:"Classes/ViewHelpers/CycleViewHelper.php";s:4:"defe";s:39:"Classes/ViewHelpers/DebugViewHelper.php";s:4:"b611";s:38:"Classes/ViewHelpers/ElseViewHelper.php";s:4:"cdde";s:40:"Classes/ViewHelpers/EscapeViewHelper.php";s:4:"bf87";s:47:"Classes/ViewHelpers/FlashMessagesViewHelper.php";s:4:"dbb0";s:37:"Classes/ViewHelpers/ForViewHelper.php";s:4:"54de";s:38:"Classes/ViewHelpers/FormViewHelper.php";s:4:"d1e7";s:44:"Classes/ViewHelpers/GroupedForViewHelper.php";s:4:"e37a";s:36:"Classes/ViewHelpers/IfViewHelper.php";s:4:"aa56";s:39:"Classes/ViewHelpers/ImageViewHelper.php";s:4:"d12c";s:40:"Classes/ViewHelpers/LayoutViewHelper.php";s:4:"ac35";s:48:"Classes/ViewHelpers/RenderChildrenViewHelper.php";s:4:"218b";s:53:"Classes/ViewHelpers/RenderFlashMessagesViewHelper.php";s:4:"3e52";s:40:"Classes/ViewHelpers/RenderViewHelper.php";s:4:"3a8a";s:41:"Classes/ViewHelpers/SectionViewHelper.php";s:4:"c4fa";s:38:"Classes/ViewHelpers/ThenViewHelper.php";s:4:"de0c";s:43:"Classes/ViewHelpers/TranslateViewHelper.php";s:4:"e9b6";s:52:"Classes/ViewHelpers/Be/AbstractBackendViewHelper.php";s:4:"0b21";s:46:"Classes/ViewHelpers/Be/ContainerViewHelper.php";s:4:"0b13";s:45:"Classes/ViewHelpers/Be/PageInfoViewHelper.php";s:4:"2a33";s:45:"Classes/ViewHelpers/Be/PagePathViewHelper.php";s:4:"7bd7";s:46:"Classes/ViewHelpers/Be/TableListViewHelper.php";s:4:"13c5";s:48:"Classes/ViewHelpers/Be/Buttons/CshViewHelper.php";s:4:"1189";s:49:"Classes/ViewHelpers/Be/Buttons/IconViewHelper.php";s:4:"0ef2";s:53:"Classes/ViewHelpers/Be/Buttons/ShortcutViewHelper.php";s:4:"8b35";s:57:"Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php";s:4:"3798";s:53:"Classes/ViewHelpers/Be/Menus/ActionMenuViewHelper.php";s:4:"e44d";s:61:"Classes/ViewHelpers/Be/Security/IfAuthenticatedViewHelper.php";s:4:"8bc3";s:55:"Classes/ViewHelpers/Be/Security/IfHasRoleViewHelper.php";s:4:"70a0";s:56:"Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php";s:4:"bcb0";s:51:"Classes/ViewHelpers/Form/AbstractFormViewHelper.php";s:4:"2dc3";s:47:"Classes/ViewHelpers/Form/CheckboxViewHelper.php";s:4:"57b8";s:45:"Classes/ViewHelpers/Form/ErrorsViewHelper.php";s:4:"41d1";s:45:"Classes/ViewHelpers/Form/HiddenViewHelper.php";s:4:"fd4f";s:47:"Classes/ViewHelpers/Form/PasswordViewHelper.php";s:4:"12a0";s:44:"Classes/ViewHelpers/Form/RadioViewHelper.php";s:4:"d39f";s:45:"Classes/ViewHelpers/Form/SelectViewHelper.php";s:4:"fd6c";s:45:"Classes/ViewHelpers/Form/SubmitViewHelper.php";s:4:"ee63";s:47:"Classes/ViewHelpers/Form/TextareaViewHelper.php";s:4:"dd77";s:46:"Classes/ViewHelpers/Form/TextboxViewHelper.php";s:4:"7c6d";s:48:"Classes/ViewHelpers/Form/TextfieldViewHelper.php";s:4:"8dd7";s:45:"Classes/ViewHelpers/Form/UploadViewHelper.php";s:4:"9b9e";s:45:"Classes/ViewHelpers/Format/CropViewHelper.php";s:4:"02f6";s:49:"Classes/ViewHelpers/Format/CurrencyViewHelper.php";s:4:"4911";s:45:"Classes/ViewHelpers/Format/DateViewHelper.php";s:4:"1eb1";s:45:"Classes/ViewHelpers/Format/HtmlViewHelper.php";s:4:"5358";s:46:"Classes/ViewHelpers/Format/Nl2brViewHelper.php";s:4:"485e";s:47:"Classes/ViewHelpers/Format/NumberViewHelper.php";s:4:"4df4";s:48:"Classes/ViewHelpers/Format/PaddingViewHelper.php";s:4:"df5a";s:47:"Classes/ViewHelpers/Format/PrintfViewHelper.php";s:4:"7a95";s:45:"Classes/ViewHelpers/Link/ActionViewHelper.php";s:4:"1c8d";s:44:"Classes/ViewHelpers/Link/EmailViewHelper.php";s:4:"d83a";s:47:"Classes/ViewHelpers/Link/ExternalViewHelper.php";s:4:"e02d";s:43:"Classes/ViewHelpers/Link/PageViewHelper.php";s:4:"b6bc";s:58:"Classes/ViewHelpers/Security/IfAuthenticatedViewHelper.php";s:4:"b675";s:52:"Classes/ViewHelpers/Security/IfHasRoleViewHelper.php";s:4:"365b";s:44:"Classes/ViewHelpers/Uri/ActionViewHelper.php";s:4:"0bb9";s:43:"Classes/ViewHelpers/Uri/EmailViewHelper.php";s:4:"3ac1";s:46:"Classes/ViewHelpers/Uri/ExternalViewHelper.php";s:4:"716b";s:43:"Classes/ViewHelpers/Uri/ImageViewHelper.php";s:4:"2e43";s:42:"Classes/ViewHelpers/Uri/PageViewHelper.php";s:4:"1a59";s:46:"Classes/ViewHelpers/Uri/ResourceViewHelper.php";s:4:"d2d7";s:53:"Classes/ViewHelpers/Widget/AutocompleteViewHelper.php";s:4:"8a67";s:45:"Classes/ViewHelpers/Widget/LinkViewHelper.php";s:4:"205e";s:49:"Classes/ViewHelpers/Widget/PaginateViewHelper.php";s:4:"7a5d";s:44:"Classes/ViewHelpers/Widget/UriViewHelper.php";s:4:"d933";s:64:"Classes/ViewHelpers/Widget/Controller/AutocompleteController.php";s:4:"2983";s:60:"Classes/ViewHelpers/Widget/Controller/PaginateController.php";s:4:"1573";s:34:"Configuration/TypoScript/setup.txt";s:4:"0e30";s:70:"Resources/Private/Templates/ViewHelpers/Widget/Autocomplete/Index.html";s:4:"b955";s:66:"Resources/Private/Templates/ViewHelpers/Widget/Paginate/Index.html";s:4:"55a2";s:43:"Tests/Unit/Core/Fixtures/TestViewHelper.php";s:4:"253f";s:43:"Tests/Unit/Core/Parser/ParsingStateTest.php";s:4:"c6e2";s:52:"Tests/Unit/Core/Parser/TemplateParserPatternTest.php";s:4:"b6b3";s:45:"Tests/Unit/Core/Parser/TemplateParserTest.php";s:4:"4c00";s:66:"Tests/Unit/Core/Parser/Fixtures/ChildNodeAccessFacetViewHelper.php";s:4:"01d1";s:60:"Tests/Unit/Core/Parser/Fixtures/PostParseFacetViewHelper.php";s:4:"4546";s:79:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture01-shorthand-split.php";s:4:"ea3a";s:74:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture01-shorthand.html";s:4:"e949";s:69:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture06-split.php";s:4:"33ba";s:64:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture06.html";s:4:"92c2";s:69:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture14-split.php";s:4:"bd4b";s:64:"Tests/Unit/Core/Parser/Fixtures/TemplateParserTestFixture14.html";s:4:"1ec8";s:49:"Tests/Unit/Core/Parser/Interceptor/EscapeTest.php";s:4:"b474";s:54:"Tests/Unit/Core/Parser/SyntaxTree/AbstractNodeTest.php";s:4:"48a5";s:50:"Tests/Unit/Core/Parser/SyntaxTree/TextNodeTest.php";s:4:"4fcd";s:66:"Tests/Unit/Core/Parser/SyntaxTree/ViewHelperNodeComparatorTest.php";s:4:"33f3";s:56:"Tests/Unit/Core/Parser/SyntaxTree/ViewHelperNodeTest.php";s:4:"e12f";s:50:"Tests/Unit/Core/Rendering/RenderingContextTest.php";s:4:"ca8f";s:61:"Tests/Unit/Core/ViewHelper/AbstractTagBasedViewHelperTest.php";s:4:"cb07";s:53:"Tests/Unit/Core/ViewHelper/AbstractViewHelperTest.php";s:4:"f9cf";s:53:"Tests/Unit/Core/ViewHelper/ArgumentDefinitionTest.php";s:4:"3b5c";s:54:"Tests/Unit/Core/ViewHelper/ConditionViewHelperTest.php";s:4:"66d7";s:45:"Tests/Unit/Core/ViewHelper/TagBuilderTest.php";s:4:"63af";s:60:"Tests/Unit/Core/ViewHelper/TemplateVariableContainerTest.php";s:4:"641f";s:62:"Tests/Unit/Core/ViewHelper/ViewHelperVariableContainerTest.php";s:4:"e521";s:55:"Tests/Unit/Core/Widget/AbstractWidgetControllerTest.php";s:4:"b2b6";s:55:"Tests/Unit/Core/Widget/AbstractWidgetViewHelperTest.php";s:4:"e4ea";s:54:"Tests/Unit/Core/Widget/AjaxWidgetContextHolderTest.php";s:4:"305b";s:44:"Tests/Unit/Core/Widget/WidgetContextTest.php";s:4:"0c7b";s:51:"Tests/Unit/Core/Widget/WidgetRequestBuilderTest.php";s:4:"440c";s:51:"Tests/Unit/Core/Widget/WidgetRequestHandlerTest.php";s:4:"81fe";s:44:"Tests/Unit/Core/Widget/WidgetRequestTest.php";s:4:"4a31";s:44:"Tests/Unit/View/AbstractTemplateViewTest.php";s:4:"357a";s:38:"Tests/Unit/View/StandaloneViewTest.php";s:4:"faba";s:36:"Tests/Unit/View/TemplateViewTest.php";s:4:"2e9e";s:38:"Tests/Unit/View/Fixtures/LayoutFixture";s:4:"85d8";s:43:"Tests/Unit/View/Fixtures/LayoutFixture.html";s:4:"cca1";s:42:"Tests/Unit/View/Fixtures/LayoutFixture.xml";s:4:"85be";s:51:"Tests/Unit/View/Fixtures/StandaloneViewFixture.html";s:4:"8952";s:48:"Tests/Unit/View/Fixtures/TemplateViewFixture.php";s:4:"79e8";s:56:"Tests/Unit/View/Fixtures/TemplateViewSectionFixture.html";s:4:"aa5f";s:54:"Tests/Unit/View/Fixtures/TransparentSyntaxTreeNode.php";s:4:"eb0d";s:53:"Tests/Unit/View/Fixtures/UnparsedTemplateFixture.html";s:4:"59dd";s:46:"Tests/Unit/ViewHelpers/AliasViewHelperTest.php";s:4:"4906";s:45:"Tests/Unit/ViewHelpers/BaseViewHelperTest.php";s:4:"ddfb";s:46:"Tests/Unit/ViewHelpers/CountViewHelperTest.php";s:4:"3317";s:46:"Tests/Unit/ViewHelpers/CycleViewHelperTest.php";s:4:"c976";s:45:"Tests/Unit/ViewHelpers/ElseViewHelperTest.php";s:4:"0d90";s:44:"Tests/Unit/ViewHelpers/ForViewHelperTest.php";s:4:"3666";s:45:"Tests/Unit/ViewHelpers/FormViewHelperTest.php";s:4:"6764";s:51:"Tests/Unit/ViewHelpers/GroupedForViewHelperTest.php";s:4:"8f37";s:43:"Tests/Unit/ViewHelpers/IfViewHelperTest.php";s:4:"25b8";s:55:"Tests/Unit/ViewHelpers/RenderChildrenViewHelperTest.php";s:4:"c652";s:47:"Tests/Unit/ViewHelpers/RenderViewHelperTest.php";s:4:"02d2";s:45:"Tests/Unit/ViewHelpers/ThenViewHelperTest.php";s:4:"360c";s:49:"Tests/Unit/ViewHelpers/ViewHelperBaseTestcase.php";s:4:"2696";s:59:"Tests/Unit/ViewHelpers/Be/IfAuthenticatedViewHelperTest.php";s:4:"14d1";s:53:"Tests/Unit/ViewHelpers/Be/IfHasRoleViewHelperTest.php";s:4:"cec2";s:60:"Tests/Unit/ViewHelpers/Fixtures/ConstraintSyntaxTreeNode.php";s:4:"dd45";s:46:"Tests/Unit/ViewHelpers/Fixtures/IfFixture.html";s:4:"8458";s:54:"Tests/Unit/ViewHelpers/Fixtures/IfThenElseFixture.html";s:4:"62f0";s:63:"Tests/Unit/ViewHelpers/Form/AbstractFormFieldViewHelperTest.php";s:4:"edca";s:58:"Tests/Unit/ViewHelpers/Form/AbstractFormViewHelperTest.php";s:4:"32bd";s:54:"Tests/Unit/ViewHelpers/Form/CheckboxViewHelperTest.php";s:4:"2b87";s:52:"Tests/Unit/ViewHelpers/Form/ErrorsViewHelperTest.php";s:4:"6729";s:52:"Tests/Unit/ViewHelpers/Form/HiddenViewHelperTest.php";s:4:"60a9";s:51:"Tests/Unit/ViewHelpers/Form/RadioViewHelperTest.php";s:4:"d185";s:52:"Tests/Unit/ViewHelpers/Form/SelectViewHelperTest.php";s:4:"f361";s:52:"Tests/Unit/ViewHelpers/Form/SubmitViewHelperTest.php";s:4:"8857";s:54:"Tests/Unit/ViewHelpers/Form/TextareaViewHelperTest.php";s:4:"219b";s:53:"Tests/Unit/ViewHelpers/Form/TextboxViewHelperTest.php";s:4:"f257";s:52:"Tests/Unit/ViewHelpers/Form/UploadViewHelperTest.php";s:4:"b6b2";s:60:"Tests/Unit/ViewHelpers/Form/Fixtures/EmptySyntaxTreeNode.php";s:4:"9dca";s:64:"Tests/Unit/ViewHelpers/Form/Fixtures/Fixture_UserDomainClass.php";s:4:"494c";s:52:"Tests/Unit/ViewHelpers/Format/CropViewHelperTest.php";s:4:"15e4";s:56:"Tests/Unit/ViewHelpers/Format/CurrencyViewHelperTest.php";s:4:"511c";s:52:"Tests/Unit/ViewHelpers/Format/DateViewHelperTest.php";s:4:"3348";s:53:"Tests/Unit/ViewHelpers/Format/Nl2brViewHelperTest.php";s:4:"7ceb";s:54:"Tests/Unit/ViewHelpers/Format/NumberViewHelperTest.php";s:4:"870f";s:55:"Tests/Unit/ViewHelpers/Format/PaddingViewHelperTest.php";s:4:"7e5a";s:54:"Tests/Unit/ViewHelpers/Format/PrintfViewHelperTest.php";s:4:"5f84";s:51:"Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php";s:4:"8d09";s:54:"Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php";s:4:"9571";s:65:"Tests/Unit/ViewHelpers/Security/IfAuthenticatedViewHelperTest.php";s:4:"af2a";s:59:"Tests/Unit/ViewHelpers/Security/IfHasRoleViewHelperTest.php";s:4:"5722";s:50:"Tests/Unit/ViewHelpers/Uri/EmailViewHelperTest.php";s:4:"0b80";s:53:"Tests/Unit/ViewHelpers/Uri/ExternalViewHelperTest.php";s:4:"5405";}',
        'suggests' => array(
        ),
 );
index 7e20e0e..0ce9e17 100644 (file)
@@ -1 +1 @@
-https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/fluid/tags/1.3.0RC1/
+https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/fluid/tags/1.3.0/