[FEATURE] Render icon with button view helper 81/23281/2
authorFrancois Suter <francois@typo3.org>
Fri, 23 Aug 2013 16:32:05 +0000 (18:32 +0200)
committerStefan Neufeind <typo3.neufeind@speedpartner.de>
Sat, 24 Aug 2013 12:23:05 +0000 (14:23 +0200)
Fluid is currently lacking a view helper to render a skinned icon.
By making the button icon view helper accept an empty URI as an
argument, we let it render an unlinked icon, rather than adding
a new view helper with very similar code.

This patch also cleans up the class phpDoc block, which
contained several errors.

Resolves: #51305
Releases: 6.2
Change-Id: I74b1dc3346e20c9094313a2da451bcb6c1f60f29
Reviewed-on: https://review.typo3.org/23281
Reviewed-by: Frans Saris
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
typo3/sysext/fluid/Classes/ViewHelpers/Be/Buttons/IconViewHelper.php

index 5b2edcc..bf147de 100755 (executable)
@@ -21,8 +21,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Be\Buttons;
  * The TYPO3 project - inspiring people to share!                         *
  *                                                                        */
 /**
- * View helper which returns button with icon
- * Note: This view helper is experimental!
+ * View helper which returns a button icon
  *
  * = Examples =
  *
@@ -37,22 +36,33 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Be\Buttons;
  * <code title="Default">
  * <f:be.buttons.icon uri="{f:uri.action(action:'new')}" icon="actions-document-new" title="Create new Foo" />
  * </code>
+ *
+ * <code title="Default">
+ * <f:be.buttons.icon icon="actions-document-new" title="Create new Foo" />
+ * </code>
  * <output>
- * This time the "actions-document-new" icon is returned, the button has the title attribute set and links to the "new" action of the current controller.
+ * Here the "actions-document-new" icon is returned, but without link.
  * </output>
  */
 class IconViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper {
 
        /**
-        * Renders an icon link as known from the TYPO3 backend
+        * Renders a linked icon as known from the TYPO3 backend.
+        *
+        * If the URI is left empty, the icon is rendered without link.
         *
-        * @param string $uri the target URI for the link. If you want to execute JavaScript here, prefix the URI with "javascript:
-        * @param string $icon Icon to be used. See self::allowedIcons for a list of allowed icon names
-        * @param string $title Title attribte of the resulting link
-        * @return string the rendered icon link
+        * @param string $uri The target URI for the link. If you want to execute JavaScript here, prefix the URI with "javascript:". Leave empty to render just an icon.
+        * @param string $icon Icon to be used.
+        * @param string $title Title attribute of the icon construct
+        * @return string The rendered icon with or without link
         */
-       public function render($uri, $icon = 'actions-document-close', $title = '') {
-               return '<a href="' . $uri . '">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon($icon, array('title' => $title)) . '</a>';
+       public function render($uri = '', $icon = 'actions-document-close', $title = '') {
+               $icon = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon($icon, array('title' => $title));
+               if (empty($uri)) {
+                       return $icon;
+               } else {
+                       return '<a href="' . $uri . '">' . $icon . '</a>';
+               }
        }
 }