[FEATURE] Signal for IconUtility html tag manipulation 42/32542/7
authorFelix Kopp <felix-source@phorax.com>
Mon, 1 Sep 2014 09:10:02 +0000 (11:10 +0200)
committerNicole Cordes <typo3@cordes.co>
Tue, 9 Sep 2014 15:01:12 +0000 (17:01 +0200)
Registers a signal to EXT:Backend\Utility\IconUtility to manipulate
the generated html code for sprite icons.

Resolves: #61289
Releases: 6.3
Change-Id: Ie61e09b2033114b2258bf14eaaba9e068410bcfc
Reviewed-on: http://review.typo3.org/32542
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Felix Kopp <felix-source@phorax.com>
Tested-by: Felix Kopp <felix-source@phorax.com>
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
typo3/sysext/backend/Classes/Utility/IconUtility.php
typo3/sysext/core/Documentation/Changelog/master/Feature-61289-SignalForIconUtilityHtmlTagManipulation.rst [new file with mode: 0644]

index 2ec6f03..36f42af 100644 (file)
@@ -1053,13 +1053,35 @@ class IconUtility {
         * @return string The sprite html icon tag
         */
        static protected function buildSpriteHtmlIconTag(array $tagAttributes, $innerHtml = NULL, $tagName = NULL) {
+               list($tagAttributes, $innerHtml, $tagName) = static::emitBuildSpriteHtmlIconTagSignal($tagAttributes, $innerHtml, $tagName);
+
                $innerHtml = $innerHtml === NULL ? '&nbsp;' : $innerHtml;
                $tagName = $tagName === NULL ? 'span' : $tagName;
                $attributes = '';
                foreach ($tagAttributes as $attribute => $value) {
                        $attributes .= ' ' . htmlspecialchars($attribute) . '="' . htmlspecialchars($value) . '"';
                }
+
                return '<' . $tagName . $attributes . '>' . $innerHtml . '</' . $tagName . '>';
        }
 
+       /**
+        * @param array $tagAttributes An associative array of additional tagAttributes for the HTML tag
+        * @param string $innerHtml The content within the tag, NULL by default
+        * @param string $tagName The name of the HTML element that should be used (span by default), NULL by default
+        * @return array
+        */
+       static protected function emitBuildSpriteHtmlIconTagSignal(array $tagAttributes, $innerHtml, $tagName) {
+               return static::getSignalSlotDispatcher()->dispatch('TYPO3\\CMS\\Backend\\Utility\\IconUtility', 'buildSpriteHtmlIconTag', array($tagAttributes, $innerHtml, $tagName));
+       }
+
+       /**
+        * Get the SignalSlot dispatcher
+        *
+        * @return \TYPO3\CMS\Extbase\SignalSlot\Dispatcher
+        */
+       static protected function getSignalSlotDispatcher() {
+               return GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher');
+       }
+
 }
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-61289-SignalForIconUtilityHtmlTagManipulation.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-61289-SignalForIconUtilityHtmlTagManipulation.rst
new file mode 100644 (file)
index 0000000..8dcbf2d
--- /dev/null
@@ -0,0 +1,18 @@
+==============================================================
+Feature: #61289 - Signal for IconUtility html tag manipulation
+==============================================================
+
+Description
+===========
+
+This signal allows to manipulate the rendered html code for a sprite icon by an extension.
+
+Currently all sprite icons are rendered as
+:code: <span class="">&nbsp;</span>
+
+Extensions can now adjust the html tag, add or remove attributes and define own content in between the html tags.
+
+Impact
+======
+
+The rendered html code is not stuck to a span with fixed classes anymore, but can be modified by an extension.