[+FEATURE] Fluid (ViewHelpers): extended cObject viewhelper by an additional "data...
authorBastian Waidelich <bastian@typo3.org>
Thu, 29 Oct 2009 11:20:10 +0000 (11:20 +0000)
committerBastian Waidelich <bastian@typo3.org>
Thu, 29 Oct 2009 11:20:10 +0000 (11:20 +0000)
[+FEATURE] Fluid (ViewHelpers): extended translate viewhelper by an additional "default" argument. Now you can write {f:translate(key: 'someLocallangKey', default: 'some fallback')} in your templates. This change is backwards compatible! Relates to #5150

typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php

index 3b5eebc..fe0aa96 100644 (file)
@@ -58,13 +58,16 @@ class Tx_Fluid_ViewHelpers_CObjectViewHelper extends Tx_Fluid_Core_ViewHelper_Ab
         * Renders the TypoScript object in the given TypoScript setup path.
         *
         * @param string $typoscriptObjectPath the TypoScript setup path of the TypoScript object to render
+        * @param mixed $data the data to be used for rendering the cObject. Can be an object, array or string. If this argument is not set, child nodes will be used
         * @param string $currentValueKey
         * @return string the content of the rendered TypoScript object
         * @author Bastian Waidelich <bastian@typo3.org>
         * @author Niels Pardon <mail@niels-pardon.de>
         */
-       public function render($typoscriptObjectPath, $currentValueKey = NULL) {
-               $data = $this->renderChildren();
+       public function render($typoscriptObjectPath, $data = NULL, $currentValueKey = NULL) {
+               if ($data === NULL) {
+                       $data = $this->renderChildren();
+               }
                $currentValue = NULL;
                if (is_object($data)) {
                        $data = Tx_Extbase_Reflection_ObjectAccess::getAccessibleProperties($data);
index acc1a42..0f3af60 100644 (file)
@@ -27,18 +27,19 @@ class Tx_Fluid_ViewHelpers_TranslateViewHelper extends Tx_Fluid_Core_ViewHelper_
         * Translate a given key or use the tag body as default.
         *
         * @param string $key The locallang key
-        * @param boolean $htmlEscape TRUE if the result should be htmlescaped
+        * @param string $default if the given locallang key could not be found, this value is used. . If this argument is not set, child nodes will be used to render the default
+        * @param boolean $htmlEscape TRUE if the result should be htmlescaped. This won't have an effect for the default value
         * @param array $arguments Arguments to be replaced in the resulting string
         * @return string The translated key or tag body if key doesn't exist
         * @author Christopher Hlubek <hlubek@networkteam.com>
         * @author Bastian Waidelich <bastian@typo3.org>
         */
-       public function render($key, $htmlEscape = TRUE, array $arguments = NULL) {
+       public function render($key, $default = NULL, $htmlEscape = TRUE, array $arguments = NULL) {
                $request = $this->controllerContext->getRequest();
                $extensionName = $request->getControllerExtensionName();
                $value = Tx_Extbase_Utility_Localization::translate($key, $extensionName, $arguments);
                if ($value === NULL) {
-                       $value = $this->renderChildren();
+                       $value = $default !== NULL ? $default : $this->renderChildren();
                } elseif ($htmlEscape) {
                        $value = htmlspecialchars($value);
                }