Fixed bug #14849: Sprites - user defined page types/modules are not respected anymore...
authorSusanne Moog <typo3@susannemoog.de>
Sun, 25 Jul 2010 18:16:02 +0000 (18:16 +0000)
committerSusanne Moog <typo3@susannemoog.de>
Sun, 25 Jul 2010 18:16:02 +0000 (18:16 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@8268 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_spritemanager.php
t3lib/stddb/tables.php
typo3/sysext/cms/ext_tables.php

index 6343187..2d4836d 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-07-25  Susanne Moog  <typo3@susanne-moog.de>
+
+       * Fixed bug #14849: Sprites - user defined page types/modules are not respected anymore (thanks to Steffen Ritter)
+
 2010-07-25  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Updated htmlArea RTE version to 2.1.0
index fe0e043..a282bf4 100644 (file)
@@ -70,6 +70,9 @@ class t3lib_SpriteManager {
                if (!is_dir(PATH_site . self::$tempPath)) {
                        t3lib_div::mkdir(PATH_site . self::$tempPath);
                }
+                       // fallback for ways before 4.4, will be removed in 4.7
+               $this->compatibilityCalls();
+
                        // create a fileName, the hash includes all icons and css-styles registered and the extlist
                $this->tempFileName = PATH_site . self::$tempPath .
                                                        md5(serialize($GLOBALS['TBE_STYLES']['spritemanager']) .
@@ -139,6 +142,37 @@ class t3lib_SpriteManager {
                t3lib_div::writeFile($this->tempFileName, $fileContent);
        }
 
+       /**
+        * function ensures backwards compatiblity and will throw deprecation warnings
+        * aimed to be removed in version 4.7
+        * 
+        *      @return void
+        */
+       private function compatibilityCalls() {
+                       // fallback for deprecated $TYPE_ICONS "contains-module" icon assignement
+               foreach ((array) $GLOBALS['ICON_TYPES'] as $module => $icon) {
+                       $iconFile = $icon['icon'];
+                       t3lib_div::deprecationLog('Usage of $ICON_TYPES is deprecated since 4.4.' . LF .
+                               'The extTables.php entry $ICON_TYPES[\'' . $module . '\'] = \'' . $iconFile . '\'; should be replaced with' . LF .
+                               't3lib_SpriteManager::addTcaTypeIcon(\'pages\', \'contains-' . $module . '\', \'' . $iconFile . '\');' . LF .
+                               'instead.'
+                       );
+                       t3lib_SpriteManager::addTcaTypeIcon('pages', 'contains-' . $module, $iconFile);
+               }
+                       // fallback for deprecated $PAGE_TYPES icons assignement
+               foreach ((array) $GLOBALS['PAGES_TYPES'] as $type => $icon) {
+                       if(isset($icon['icon'])) {
+                               $iconFile = $icon['icon'];
+                               t3lib_div::deprecationLog('Usage of $PAGES_TYPES[\'icon\'] is deprecated since 4.4.' . LF .
+                                       'The extTables.php entry $PAGE_TYPES[\'' . $type . '\'][\'icon\'] = \'' . $iconFile . '\'; should be replaced with' . LF .
+                                       't3lib_SpriteManager::addTcaTypeIcon(\'pages\', ' . $type . '\', \'' . $iconFile . '\');' . LF .
+                                       'instead.'
+                               );
+                               t3lib_SpriteManager::addTcaTypeIcon('pages', $module, $iconFile);
+                       }
+               }
+
+       }
 
        /**
         * includes the generated cacheFile, if present
@@ -162,7 +196,7 @@ class t3lib_SpriteManager {
         * Available icons of skins should be located manually (extTables) to $GLOBALS[TBE_STYLES][skins][skinName][availableIcons]
         *
         * @param array icons   the names of the introduced icons
-        * @parram string $styleSheetFile       the name of the styleshet file relative to PATH_site
+        * @param string $styleSheetFile        the name of the styleshet file relative to PATH_site
         */
        public static function addIconSprite(array $icons, $styleSheetFile) {
                $GLOBALS['TBE_STYLES']['spritemanager']['spriteIconsAvailable'] = array_merge(
index 8ec377e..c2f5d36 100644 (file)
  * $PAGES_TYPES defines the various types of pages (field: doktype) the system can handle and what restrictions may apply to them.
  * Here you can set the icon and especially you can define which tables are allowed on a certain pagetype (doktype)
  * NOTE: The 'default' entry in the $PAGES_TYPES-array is the 'base' for all types, and for every type the entries simply overrides the entries in the 'default' type!
+ *
+ * NOTE: usage of 'icon' is deprecated since TYPO3 4.4, use t3lib_SpriteManager::addTcaTypeIcon() instead
  */
 $PAGES_TYPES = array(
        '254' => array(         //  Doktype 254 is a 'sysFolder' - a general purpose storage folder for whatever you like. In CMS context it's NOT a viewable page. Can contain any element.
                'type' => 'sys',
-               'icon' => 'sysf.gif',
                'allowedTables' => '*'
        ),
        '255' => array(         // Doktype 255 is a recycle-bin.
                'type' => 'sys',
-               'icon' => 'recycler.gif',
                'allowedTables' => '*'
        ),
        'default' => array(
                'type' => 'web',
-               'icon' => 'pages.gif',
                'allowedTables' => 'pages',
                'onlyAllowedTables' => '0'
        )
@@ -80,6 +79,7 @@ $PAGES_TYPES = array(
  * Each key is a value from the "module" field of page records and the value is an array with a key/value pair, eg. "icon" => "modules_shop.gif"
  *
  * @see t3lib_iconWorks::getIcon(), typo3/sysext/cms/ext_tables.php
+ * @deprecated since TYPO3 4.4, use t3lib_SpriteManager::addTcaTypeIcon instead
  */
 $ICON_TYPES = array();
 
index 221b6e2..cc79fa7 100755 (executable)
@@ -27,40 +27,23 @@ if (TYPO3_MODE == 'BE') {
 // Extend 'pages'-table
 // ******************************************************************
 
-if (TYPO3_MODE=='BE')  {
-       // Setting ICON_TYPES (obsolete by the removal of the plugin_mgm extension)
-       $ICON_TYPES = array(
-               'shop' => array('icon' => 'gfx/i/modules_shop.gif'),
-               'board' => array('icon' => 'gfx/i/modules_board.gif'),
-               'news' => array('icon' => 'gfx/i/modules_news.gif'),
-               'fe_users' => array('icon' => 'gfx/i/fe_users.gif'),
-               'approve' => array('icon' => 'gfx/state_checked.png'),
-       );
-}
-
-       // Adding pages_types:
+               // Adding pages_types:
                // t3lib_div::array_merge() MUST be used!
        $PAGES_TYPES = t3lib_div::array_merge(array(
                '3' => array(
-                       'icon' => 'pages_link.gif'
                ),
                '4' => array(
-                       'icon' => 'pages_shortcut.gif'
                ),
                '5' => array(
-                       'icon' => 'pages_notinmenu.gif'
                ),
                '6' => array(
                        'type' => 'web',
-                       'icon' => 'be_users_section.gif',
                        'allowedTables' => '*'
                ),
                '7' => array(
-                       'icon' => 'pages_mountpoint.gif'
                ),
                '199' => array(         // TypoScript: Limit is 200. When the doktype is 200 or above, the page WILL NOT be regarded as a 'page' by TypoScript. Rather is it a system-type page
                        'type' => 'sys',
-                       'icon' => 'spacer_icon.gif',
                )
        ),$PAGES_TYPES);