Fixed bug #16465: Bug: TCE forms incorrectly render optgroup tags with icons (Thanks...
authorSteffen Gebert <steffen.gebert@typo3.org>
Sat, 18 Dec 2010 11:04:08 +0000 (11:04 +0000)
committerSteffen Gebert <steffen.gebert@typo3.org>
Sat, 18 Dec 2010 11:04:08 +0000 (11:04 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@9850 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_tceforms.php

index c404b99..0661b61 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@
 2010-12-18  Steffen Gebert  <steffen@steffen-gebert.de>
 
        * Fixed bug #16773: User icon in topbar shows part of neighbour sprite icon
+       * Fixed bug #16465: Bug: TCE forms incorrectly render optgroup tags with icons (Thanks to Bastian Waidelich)
 
 2010-12-17  Susanne Moog  <typo3@susanne-moog.de>
 
index a25db79..ddc2d50 100644 (file)
@@ -1655,7 +1655,11 @@ class t3lib_TCEforms {
                        if (!($p[1] != $PA['itemFormElValue'] && is_array($uniqueIds) && in_array($p[1], $uniqueIds))) {
                                if (!strcmp($p[1], '--div--')) {
                                        $optGroupStart[0] = $p[0];
-                                       $optGroupStart[1] = $styleAttrValue;
+                                       if ($config['iconsInOptionTags']) {
+                                               $optGroupStart[1] = $this->optgroupTagStyle($p[2]);
+                                       } else {
+                                               $optGroupStart[1] = $styleAttrValue;
+                                       }
 
                                } else {
                                        if (count($optGroupStart)) {
@@ -4191,6 +4195,29 @@ class t3lib_TCEforms {
        }
 
        /**
+        * Creates style attribute content for optgroup tags in a selector box, primarily setting it up to show the icon of an element as background image (works in mozilla).
+        *
+        * @param       string          Icon string for option item
+        * @return      string          Style attribute content, if any
+        */
+       function optgroupTagStyle($iconString) {
+               if ($iconString) {
+                       list($selIconFile, $selIconInfo) = $this->getIcon($iconString);
+
+                       $padLeft = $selIconInfo[0] + 4;
+
+                       if($padLeft >= 18 && $padLeft <= 24) {
+                                       // In order to get the same padding for all option tags even if icon sizes differ a little,
+                                       // set it to 22, if it was between 18 and 24 pixels.
+                               $padLeft = 22;
+                       }
+                       $padTop = t3lib_div::intInRange(($selIconInfo[1] - 12) / 2, 0);
+
+                       return 'background: #ffffff url(' . $selIconFile . ') 0 0 no-repeat; padding-top: ' . $padTop . 'px; padding-left: ' . $padLeft . 'px;';
+               }
+       }
+
+       /**
         * Extracting values from a value/label list (as made by transferData class)
         *
         * @param       string          Value string where values are comma separated, intermixed with labels and rawurlencoded (this is what is delivered to TCEforms normally!)