[TASK] tx_fluid: Backported some non-functional changes
authorSebastian Kurfürst <sebastian@typo3.org>
Fri, 9 Oct 2009 14:57:20 +0000 (14:57 +0000)
committerSebastian Kurfürst <sebastian@typo3.org>
Fri, 9 Oct 2009 14:57:20 +0000 (14:57 +0000)
typo3/sysext/fluid/Classes/Core/ViewHelper/ViewHelperVariableContainer.php
typo3/sysext/fluid/Classes/Service/DocbookGenerator.php
typo3/sysext/fluid/Classes/View/TemplateView.php
typo3/sysext/fluid/Classes/ViewHelpers/AliasViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/BaseViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/CycleViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/ElseViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/ForViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/PaddingViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/IfViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/LayoutViewHelper.php

index a0ae2a4..42f391d 100644 (file)
@@ -21,7 +21,7 @@
  *                                                                        */
 
 /**
- * @version $Id: ViewHelperVariableContainer.php 2813 2009-07-16 14:02:34Z k-fish $
+ * @version $Id: ViewHelperVariableContainer.php 3296 2009-10-07 07:41:30Z sebastian $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @scope prototype
  */
@@ -44,6 +44,8 @@ class Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer {
        /**
         * Add a variable to the Variable Container. Make sure that $viewHelperName is ALWAYS set
         * to your fully qualified ViewHelper Class Name
+        * 
+        * In case the value is already inside, an exception is thrown.
         *
         * @param string $viewHelperName The ViewHelper Class name (Fully qualified, like Tx_Fluid_ViewHelpers_ForViewHelper)
         * @param string $key Key of the data
@@ -55,12 +57,27 @@ class Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer {
         */
        public function add($viewHelperName, $key, $value) {
                if ($this->exists($viewHelperName, $key)) throw new Tx_Fluid_Core_RuntimeException('The key "' . $viewHelperName . '->' . $key . '" was already stored and you cannot override it.', 1243352010);
+               $this->addOrUpdate($viewHelperName, $key, $value);
+       }
+
+       /**
+        * Add a variable to the Variable Container. Make sure that $viewHelperName is ALWAYS set
+        * to your fully qualified ViewHelper Class Name.
+        * In case the value is already inside, it is silently overridden.
+        *
+        * @param string $viewHelperName The ViewHelper Class name (Fully qualified, like Tx_Fluid_ViewHelpers_ForViewHelper)
+        * @param string $key Key of the data
+        * @param object $value The value to store
+        * @return void
+        * @author Sebastian Kurfürst <sebastian@typo3.org>
+        */
+       public function addOrUpdate($viewHelperName, $key, $value) {
                if (!isset($this->objects[$viewHelperName])) {
                        $this->objects[$viewHelperName] = array();
                }
                $this->objects[$viewHelperName][$key] = $value;
        }
-
+       
        /**
         * Gets a variable which is stored
         *
index 64d5972..af62d88 100644 (file)
@@ -24,7 +24,7 @@
  * XML Schema (XSD) Generator. Will generate an XML schema which can be used for autocompletion
  * in schema-aware editors like Eclipse XML editor.
  *
- * @version $Id: DocbookGenerator.php 2909 2009-07-28 11:55:59Z k-fish $
+ * @version $Id: DocbookGenerator.php 3293 2009-10-05 10:16:10Z k-fish $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
 class Tx_Fluid_Service_DocbookGenerator {
@@ -56,6 +56,7 @@ class Tx_Fluid_Service_DocbookGenerator {
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
        public function __construct() {
+               Tx_Fluid_Fluid::$debugMode = TRUE; // We want ViewHelper argument documentation
                $this->abstractViewHelperReflectionClass = new Tx_Extbase_Reflection_ClassReflection('Tx_Fluid_Core_ViewHelper_AbstractViewHelper');
                $this->docCommentParser = new Tx_Extbase_Reflection_DocCommentParser();
        }
@@ -63,7 +64,7 @@ class Tx_Fluid_Service_DocbookGenerator {
        /**
         * Inject the object manager.
         *
-        * @param Tx_Fluid_Object_Manager $objectManager the object manager to inject
+        * @param Tx_Fluid_Object_ManagerInterface $objectManager the object manager to inject
         * @return void
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
@@ -122,8 +123,8 @@ class Tx_Fluid_Service_DocbookGenerator {
                                $viewHelperClassNames[] = $registeredObjectName;
                        }
                }
-               sort($registeredObjectNames);
-               return $registeredObjectNames;
+               sort($viewHelperClassNames);
+               return $viewHelperClassNames;
        }
 
        /**
@@ -183,7 +184,7 @@ class Tx_Fluid_Service_DocbookGenerator {
         * Initializes the view helper and its arguments, and then reads out the list of arguments.
         *
         * @param string $className Class name where to add the attribute descriptions
-        * @param SimpleXMLElement $xsdElement XML element to add the attributes to.
+        * @param SimpleXMLElement $docbookSection DocBook section to add the attributes to.
         * @return void
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
@@ -199,34 +200,42 @@ class Tx_Fluid_Service_DocbookGenerator {
                $argumentsTable->addChild('title', 'Arguments');
                $tgroup = $argumentsTable->addChild('tgroup');
                $tgroup['cols'] = 4;
-               $this->addArgumentTableRow($tgroup->addChild('thead'), 'Name', 'Type', 'Description');
+               $this->addArgumentTableRow($tgroup->addChild('thead'), 'Name', 'Type', 'Required', 'Description', 'Default');
 
                $tbody = $tgroup->addChild('tbody');
 
                foreach ($argumentDefinitions as $argumentDefinition) {
-                       $name = $argumentDefinition->getName();
-                       if (!$argumentDefinition->isRequired()) {
-                               $name .= ' (Optional)';
-                       }
-                       $description = $argumentDefinition->getDescription();
-                       if ($argumentDefinition->getDefaultValue()) {
-                               // TODO: Is this if-condition correct!?
-                               $description .= 'Standardwert: ' . (string)$argumentDefinition->getDefaultValue();
-                       }
-                       $this->addArgumentTableRow($tbody, $name, $argumentDefinition->getType(), $description);
+                       $this->addArgumentTableRow($tbody, $argumentDefinition->getName(), $argumentDefinition->getType(), ($argumentDefinition->isRequired()?'yes':'no'), $argumentDefinition->getDescription(), $argumentDefinition->getDefaultValue());
                }
        }
 
+       /**
+        * Instantiate a view helper.
+        *
+        * @param string $className
+        * @return object
+        */
        protected function instanciateViewHelper($className) {
                return $this->objectManager->getObject($className);
        }
 
-       private function addArgumentTableRow(SimpleXMLElement $parent, $name, $type, $description) {
+       /**
+        * @param SimpleXMLElement $parent
+        * @param string $name
+        * @param string $type
+        * @param boolean $required
+        * @param string $description
+        * @param string $default
+        * @return void
+        */
+       private function addArgumentTableRow(SimpleXMLElement $parent, $name, $type, $required, $description, $default) {
                $row = $parent->addChild('row');
 
                $row->addChild('entry', $name);
                $row->addChild('entry', $type);
+               $row->addChild('entry', $required);
                $row->addChild('entry', $description);
+               $row->addChild('entry', (string)$default);
        }
 
        /**
@@ -238,7 +247,7 @@ class Tx_Fluid_Service_DocbookGenerator {
         * CDATA block AND to replace the < and > with their XML entities. (This is IMHO not XML conformant).
         *
         * @param string $documentation Documentation string to add.
-        * @param SimpleXMLElement $xsdParentNode Node to add the documentation to
+        * @param SimpleXMLElement $docbookSection Node to add the documentation to
         * @return void
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
@@ -259,6 +268,10 @@ class Tx_Fluid_Service_DocbookGenerator {
                }
        }
 
+       /**
+        * @param string $text
+        * @param SimpleXMLElement $parentElement
+        */
        protected function addText($text, SimpleXMLElement $parentElement) {
                $splitRegex = '/
                (<code(?:.*?)>
@@ -297,7 +310,7 @@ class Tx_Fluid_Service_DocbookGenerator {
         *
         * @param SimpleXMLElement $parentXMLNode Parent XML Node to add the child to
         * @param string $childNodeName Name of the child node
-        * @param string $nodeValue Value of the child node. Will be placed inside CDATA.
+        * @param string $childNodeValue Value of the child node. Will be placed inside CDATA.
         * @return SimpleXMLElement the new element
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
index f7c7246..a36beb1 100644 (file)
@@ -362,7 +362,7 @@ class Tx_Fluid_View_TemplateView extends Tx_Extbase_MVC_View_AbstractView implem
        /**
         * Set the root path to the templates.
         * If set, overrides the one determined from $this->templateRootPathPattern
-        * 
+        *
         * @param string $templateRootPath Root path to the templates. If set, overrides the one determined from $this->templateRootPathPattern
         * @return void
         * @author Sebastian Kurfürst <sebastian@typo3.org>
@@ -371,10 +371,10 @@ class Tx_Fluid_View_TemplateView extends Tx_Extbase_MVC_View_AbstractView implem
        public function setTemplateRootPath($templateRootPath) {
                $this->templateRootPath = $templateRootPath;
        }
-       
+
        /**
         * Resolves the template root to be used inside other paths.
-        * 
+        *
         * @return string Path to template root directory
         * @author Sebastian Kurfürst <sebastian@typo3.org>
         */
index da0ddd4..ebee57f 100644 (file)
  *                                                                        */
 
 /**
- * Alias view helper
+ * Declares new variables which are aliases of other variables.
+ * Takes a "map"-Parameter which is an associative array which defines the shorthand mapping.
+ *
+ * The variables are only declared inside the <f:alias>...</f:alias>-tag. After the
+ * closing tag, all declared variables are removed again.
  *
  * = Examples =
  *
  * <code title="Single alias">
  * <f:alias map="{x: 'foo'}">{x}</f:alias>
  * </code>
- *
- * Output:
+ * <output>
  * foo
+ * </output>
  *
  * <code title="Multiple mappings">
  * <f:alias map="{x: foo.bar.baz, y: foo.bar.baz.name}">
  *   {x.name} or {y}
  * </f:alias>
  * </code>
- *
- * Output:
+ * <output>
  * [name] or [name]
  * depending on {foo.bar.baz}
+ * </output>
  *
  * @version $Id$
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
index 5829fb5..974e412 100644 (file)
  *                                                                        */
 
 /**
- * View helper which creates a <base href="..."></base> tag.
+ * View helper which creates a <base href="..."></base> tag. The Base URI
+ * is taken from the current request.
+ * In FLOW3, you should always include this ViewHelper to make the links work.
  *
  * = Examples =
  *
  * <code title="Example">
  * <f:base />
  * </code>
- *
- * Output:
+ * <output>
  * <base href="http://yourdomain.tld/"></base>
  * (depending on your domain)
+ * </output>
  *
  * @version $Id$
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
@@ -51,11 +53,7 @@ class Tx_Fluid_ViewHelpers_BaseViewHelper extends Tx_Fluid_Core_ViewHelper_Abstr
         */
        public function render() {
                $currentRequest = $this->controllerContext->getRequest();
-               $baseUri = $currentRequest->getBaseURI();
-               if (TYPO3_MODE === 'BE') {
-                       $baseUri.= TYPO3_mainDir;
-               }
-               return '<base href="' . $baseUri . '"></base>';
+               return '<base href="' . $currentRequest->getBaseURI() . '"></base>';
        }
 }
 
index 319392f..adbf5c5 100644 (file)
  *                                                                        */
 
 /**
- * Cycle view helper. Iterates through the specified values.
+ * This ViewHelper cycles through the specified values.
+ * This can be often used to specify CSS classes for example.
  *
  * = Examples =
  *
  * <code title="Simple">
  * <f:for each="{0:1, 1:2, 2:3, 3:4}" as="foo"><f:cycle values="{0: 'foo', 1: 'bar', 2: 'baz'}" as="cycle">{cycle}</f:cycle></f:for>
  * </code>
- *
- * Output:
+ * <output>
  * foobarbazfoo
+ * </output>
  *
  * <code title="Alternating CSS class">
  * <ul>
  *   </f:for>
  * </ul>
  * </code>
- *
- * Output:
+ * <output>
  * <ul>
  *   <li class="odd">1</li>
  *   <li class="even">2</li>
  *   <li class="odd">3</li>
  *   <li class="even">4</li>
  * </ul>
+ * </output>
  *
  * @version $Id$
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
index 0578c2d..2de22b0 100644 (file)
@@ -21,7 +21,8 @@
  *                                                                        */
 
 /**
- * "ELSE" -> only has an effect inside of "IF". See If-ViewHelper for documentation.
+ * Else-Branch of a condition. Only has an effect inside of "If". See the If-ViewHelper for documentation.
+ * 
  * @see Tx_Fluid_ViewHelpers_IfViewHelper
  *
  * @version $Id$
index f5f734d..7dd1825 100644 (file)
  *                                                                        */
 
 /**
- * Loop view helper
+ * Loop view helper which can be used to interate over array.
+ * Implements what a basic foreach()-PHP-method does.
  *
  * = Examples =
  *
- * <code title="Simple">
+ * <code title="Simple Loop">
  * <f:for each="{0:1, 1:2, 2:3, 3:4}" as="foo">{foo}</f:for>
  * </code>
- *
- * Output:
+ * <output>
  * 1234
+ * </output>
  *
  * <code title="Output array key">
  * <ul>
  *   </f:for>
  * </ul>
  * </code>
- *
- * Output:
+ * <output>
  * <ul>
  *   <li>fruit1: apple</li>
  *   <li>fruit2: pear</li>
  *   <li>fruit3: banana</li>
  *   <li>fruit4: cherry</li>
  * </ul>
+ * </output>
  *
- * @version $Id: ForViewHelper.php 3190 2009-09-16 16:48:39Z bwaidelich $
+ * @version $Id: ForViewHelper.php 3199 2009-09-20 09:46:19Z sebastian $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @scope prototype
  */
index 113591d..8628ed7 100644 (file)
@@ -40,7 +40,7 @@
  * Output:
  * TYPO3-=-=-
  *
- * @version $Id: $
+ * @version $Id: PaddingViewHelper.php 3169 2009-09-10 12:52:22Z k-fish $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @scope prototype
  */
index e08a3a0..08c2aa3 100644 (file)
  * This view helper implements an if/else condition.
  * @see Tx_Fluid_Core_Parser_SyntaxTree_ViewHelperNode::convertArgumentValue() to find see how boolean arguments are evaluated
  *
+ * = Conditions =
+ *
+ * As a condition is a boolean value, you can just use a boolean argument.
+ * Alternatively, you can write a boolean expression there.
+ * Boolean expressions have the following form:
+ * XX Comparator YY
+ * Comparator is one of: ==, !=, <, <=, >, >= and %
+ * The % operator converts the result of the % operation to boolean.
+ *
+ * XX and YY can be one of:
+ * - number
+ * - Object Accessor
+ * - Array
+ * - a ViewHelper
+ * Note: Strings at XX/YY are NOT allowed.
+ *
+ * <code title="condition example">
+ * <f:if condition="{rank} > 100">
+ *   Will be shown if rank is > 100
+ * </f:if>
+ * <f:if condition="{rank} % 2">
+ *   Will be shown if rank % 2 != 0.
+ * </f:if>
+ * <f:if condition="{rank} == {k:bar()}">
+ *   Checks if rank is equal to the result of the ViewHelper "k:bar"
+ * </f:if>
+ * </code>
+ *
  * = Examples =
  *
  * <code title="Basic usage">
index ef9b6dc..c71f299 100644 (file)
  *                                                                        */
 
 /**
- * With this tag, you can select a layout to be used.
+ * With this tag, you can select a layout to be used..
+ * <code><f:layout name="main" /></code>
+ * 
  *
- * @version $Id: LayoutViewHelper.php 2914 2009-07-28 18:26:38Z bwaidelich $
+ *
+ * @version $Id: LayoutViewHelper.php 3199 2009-09-20 09:46:19Z sebastian $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @scope prototype
  * @todo refine documentation