[+FEATURE] Fluid (ViewHelpers): the subject argument of the count ViewHelper is now...
authorBastian Waidelich <bastian@typo3.org>
Wed, 17 Nov 2010 08:19:29 +0000 (08:19 +0000)
committerBastian Waidelich <bastian@typo3.org>
Wed, 17 Nov 2010 08:19:29 +0000 (08:19 +0000)
[+BUGFIX] Fluid (ViewHelpers): Fixed inline documentation of widget.autocomplete ViewHelper. This fixes #10882
[+TASK] Fluid (ViewHelpers): Added some more inline documentation for cObject, widget.paginate, widget.autocomplete & count ViewHelpers

typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/CountViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Widget/AutocompleteViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Widget/PaginateViewHelper.php

index dc5c6e0..7f9f871 100644 (file)
  *                                                                        */
 
 /**
- * This class is a TypoScript view helper for the Fluid templating engine.
+ * This ViewHelper renders CObjects from the global TypoScript configuration.
+ *
+ * = Examples =
+ *
+ * <code title="Render lib object">
+ * <f:cObject typoscriptObjectPath="lib.someLibObject" />
+ * </code>
+ * <output>
+ * // rendered lib.someLibObject
+ * </output>
+ *
+ * <code title="Specify cObject data & current value">
+ * <f:cObject typoscriptObjectPath="lib.customHeader" data="{article}" current="{article.title}" />
+ * </code>
+ * <output>
+ * // rendered lib.customHeader. data and current value will be available in TypoScript
+ * </output>
+ *
+ * <code title="inline notation">
+ * {article -> f:cObject(typoscriptObjectPath: 'lib.customHeader')}
+ * </code>
+ * <output>
+ * // rendered lib.customHeader. data will be available in TypoScript
+ * </output>
  *
  */
 class Tx_Fluid_ViewHelpers_CObjectViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
@@ -124,4 +147,4 @@ class Tx_Fluid_ViewHelpers_CObjectViewHelper extends Tx_Fluid_Core_ViewHelper_Ab
        }
 }
 
-?>
\ No newline at end of file
+?>
index c588d50..972359e 100644 (file)
  * 4
  * </output>
  *
+ * <code title="inline notation">
+ * {objects -> f:count()}
+ * </code>
+ * <output>
+ * 10 (depending on the number of items in {objects})
+ * </output>
+ *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
  * @scope prototype
@@ -47,9 +54,12 @@ class Tx_Fluid_ViewHelpers_CountViewHelper extends Tx_Fluid_Core_ViewHelper_Abst
         * @author Bastian Waidelich <bastian@typo3.org>
         * @api
         */
-       public function render($subject) {
+       public function render($subject = NULL) {
+               if ($subject === NULL) {
+                       $subject = $this->renderChildren();
+               }
                if (is_object($subject) && !$subject instanceof Countable) {
-                       throw new Tx_Fluid_Core_ViewHelper_Exception('CountViewHelper only supports arrays and objects implementing Countable interface', 1279808078);
+                       throw new Tx_Fluid_Core_ViewHelper_Exception('CountViewHelper only supports arrays and objects implementing Countable interface. Given: "' . get_class($subject) . '"', 1279808078);
                }
                return count($subject);
        }
index d0445b9..ca94c2f 100644 (file)
  *                                                                        */
 
 /**
- * Usage:
- * <f:input id="name" ... />
- * <f:widget.autocomplete for="name" objects="{posts}" searchProperty="author">
- *
- * Make sure to include jQuery and jQuery UI in the HTML, like that:
+ * Simple paginate widget
+ * Note: Make sure to include jQuery and jQuery UI in the HTML, like that:
  *    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  *    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script>
  *    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.3/themes/base/jquery-ui.css" type="text/css" media="all" />
  *    <link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" type="text/css" media="all" />
+ * You can include the provided TS template that includes the above snippet to the pages headerData.
+ *
+ * = Examples =
+ *
+ * <code title="Render lib object">
+ * <input type="text" id="name" />
+ * <f:widget.autocomplete for="name" objects="{posts}" searchProperty="author">
+ * </code>
+ * <output>
+ * <input type="text" id="name" />
+ * // the input field and the required JavaScript for the Ajax communication (see Resources/Private/Templates/ViewHelpers/Widget/Autocomplete/Index.html
+ * </output>
+ *
+
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
@@ -66,4 +77,4 @@ class Tx_Fluid_ViewHelpers_Widget_AutocompleteViewHelper extends Tx_Fluid_Core_W
                return $this->initiateSubRequest();
        }
 }
-?>
\ No newline at end of file
+?>
index f7a04d8..dc6211b 100644 (file)
  *
  * = Examples =
  *
- * <code>
- * <f:widget.paginate itemsPerPage="10" objects="{blogs}" as="paginatedBlogs">
+ * <code title="required arguments">
+ * <f:widget.paginate objects="{blogs}" as="paginatedBlogs">
+ *   // use {paginatedBlogs} as you used {blogs} before, most certainly inside
+ *   // a <f:for> loop.
+ * </f:widget.paginate>
+ * </code>
+ *
+ * <code title="full configuration">
+ * <f:widget.paginate objects="{blogs}" as="paginatedBlogs" configuration="{itemsPerPage: 5, insertAbove: 1, insertBelow: 0}">
  *   // use {paginatedBlogs} as you used {blogs} before, most certainly inside
  *   // a <f:for> loop.
  * </f:widget.paginate>
@@ -34,7 +41,7 @@
  *
  * = Performance characteristics =
  *
- * In the above example, it looks like {blogs} contains all Blog objects, thus
+ * In the above examples, it looks like {blogs} contains all Blog objects, thus
  * you might wonder if all objects were fetched from the database.
  * However, the blogs are NOT fetched from the database until you actually use them,
  * so the paginate ViewHelper will adjust the query sent to the database and receive
@@ -72,4 +79,4 @@ class Tx_Fluid_ViewHelpers_Widget_PaginateViewHelper extends Tx_Fluid_Core_Widge
        }
 }
 
-?>
\ No newline at end of file
+?>