[FEATURE] Render icon with button view helper 50/23650/2
authorFrancois Suter <francois@typo3.org>
Fri, 23 Aug 2013 16:32:05 +0000 (18:32 +0200)
committerHelmut Hummel <helmut.hummel@typo3.org>
Fri, 6 Sep 2013 08:44:19 +0000 (10:44 +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.

Although initially planned for 6.2 only, this change
will go into 6.0 and 6.1 also to fix the regression
in #51767

Resolves: #51305
Resolves: #51767
Releases: 6.0, 6.1
Change-Id: I74b1dc3346e20c9094313a2da451bcb6c1f60f29
Reviewed-on: https://review.typo3.org/23650
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html
typo3/sysext/fluid/Classes/ViewHelpers/Be/Buttons/IconViewHelper.php

index 65e1462..0216a29 100644 (file)
@@ -76,7 +76,7 @@
                                        {extension.version}
                                </td>
                                <td class="icons">
-                                       <em:configureExtension extension="{extension}"><f:be.buttons.icon uri="" icon="actions-system-extension-configure" title="{f:translate(key:'extensionList.configure')}" /></em:configureExtension>
+                                       <em:configureExtension extension="{extension}"><f:be.buttons.icon icon="actions-system-extension-configure" title="{f:translate(key:'extensionList.configure')}" /></em:configureExtension>
                                        <em:updateScript extensionKey="{extension.key}" />
                                        <em:removeExtension extension="{extension}" />
                                        <f:be.buttons.icon uri="{f:uri.action(action:'downloadExtensionZip',controller:'Action',arguments:'{extension:extension.key}')}" icon="actions-system-extension-download" title="{f:translate(key:'extensionList.downloadzip')}"/>
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>';
+               }
        }
 }