[!!!][TASK] Removed deprecated IconUtility and SpriteManager 61/45361/7
authorWouter Wolters <typo3@wouterwolters.nl>
Fri, 18 Dec 2015 19:26:19 +0000 (20:26 +0100)
committerBenni Mack <benni@typo3.org>
Wed, 23 Dec 2015 19:20:01 +0000 (20:20 +0100)
Resolves: #72400
Releases: master
Change-Id: I40214f2ff51e1050a8337c61d384e8561510ff72
Reviewed-on: https://review.typo3.org/45361
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
27 files changed:
typo3/sysext/backend/Classes/Configuration/TranslationConfigurationProvider.php
typo3/sysext/backend/Classes/Http/AjaxRequestHandler.php
typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php
typo3/sysext/backend/Classes/Http/RequestHandler.php
typo3/sysext/backend/Classes/Sprite/AbstractSpriteHandler.php [deleted file]
typo3/sysext/backend/Classes/Sprite/SimpleSpriteHandler.php [deleted file]
typo3/sysext/backend/Classes/Sprite/SpriteBuildingHandler.php [deleted file]
typo3/sysext/backend/Classes/Sprite/SpriteGenerator.php [deleted file]
typo3/sysext/backend/Classes/Sprite/SpriteIconGeneratorInterface.php [deleted file]
typo3/sysext/backend/Classes/Sprite/SpriteManager.php [deleted file]
typo3/sysext/backend/Classes/Template/DocumentTemplate.php
typo3/sysext/backend/Classes/Utility/IconUtility.php [deleted file]
typo3/sysext/backend/Classes/Utility/IconUtilityOverrideResourceIconHookInterface.php [deleted file]
typo3/sysext/backend/Tests/Unit/Sprite/SpriteManagerTest.php [deleted file]
typo3/sysext/backend/Tests/Unit/Utility/Fixtures/IconUtilityFixture.php [deleted file]
typo3/sysext/backend/Tests/Unit/Utility/IconUtilityTest.php [deleted file]
typo3/sysext/core/Classes/Core/Bootstrap.php
typo3/sysext/core/Classes/Imaging/GraphicalFunctions.php
typo3/sysext/core/Classes/Imaging/IconRegistry.php
typo3/sysext/core/Configuration/DefaultConfiguration.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-72400-RemovedDeprecatedIconUtilityAndSpriteManager.rst [new file with mode: 0644]
typo3/sysext/core/ext_tables.php
typo3/sysext/frontend/Classes/Http/RequestHandler.php
typo3/sysext/impexp/Tests/Functional/Export/AbstractExportTestCase.php
typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php
typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
typo3/sysext/t3skin/ext_tables.php

index 9ce1b97..304c903 100644 (file)
@@ -42,10 +42,7 @@ class TranslationConfigurationProvider
 
     /**
      * Returns array of system languages
-     *
-     * The property flagIcon returns a string <flags-xx>. The calling party should call
-     * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon(<flags-xx>) to get an HTML
-     * which will represent the flag of this language.
+     * The property flagIcon returns a string <flags-xx>.
      *
      * @param int $pageId Page id (used to get TSconfig configuration setting flag and label for default language)
      * @return array Array with languages (uid, title, ISOcode, flagIcon)
@@ -202,10 +199,6 @@ class TranslationConfigurationProvider
     protected function getDefaultLanguageFlag(array $modSharedTSconfig)
     {
         if (strlen($modSharedTSconfig['properties']['defaultLanguageFlag'])) {
-            // fallback "old iconstyles"
-            if (preg_match('/\\.gif$/', $modSharedTSconfig['properties']['defaultLanguageFlag'])) {
-                $modSharedTSconfig['properties']['defaultLanguageFlag'] = str_replace('.gif', '', $modSharedTSconfig['properties']['defaultLanguageFlag']);
-            }
             $defaultLanguageFlag = 'flags-' . $modSharedTSconfig['properties']['defaultLanguageFlag'];
         } else {
             $defaultLanguageFlag = 'empty-empty';
index 355645e..02a543b 100644 (file)
@@ -140,7 +140,6 @@ class AjaxRequestHandler implements RequestHandlerInterface
             ->checkSslBackendAndRedirectIfNeeded()
             ->initializeBackendRouter()
             ->loadExtensionTables(true)
-            ->initializeSpriteManager()
             ->initializeBackendUser()
             ->initializeBackendAuthentication($proceedIfNoUserIsLoggedIn)
             ->initializeLanguageObject()
index 8f8a91c..2648c36 100644 (file)
@@ -110,7 +110,6 @@ class BackendModuleRequestHandler implements RequestHandlerInterface
             ->checkSslBackendAndRedirectIfNeeded()
             ->initializeBackendRouter()
             ->loadExtensionTables(true)
-            ->initializeSpriteManager()
             ->initializeBackendUser()
             ->initializeBackendAuthentication($proceedIfNoUserIsLoggedIn)
             ->initializeLanguageObject()
index 4bafdbb..b9b4df2 100644 (file)
@@ -112,7 +112,6 @@ class RequestHandler implements RequestHandlerInterface
             ->checkSslBackendAndRedirectIfNeeded()
             ->initializeBackendRouter()
             ->loadExtensionTables(true)
-            ->initializeSpriteManager()
             ->initializeBackendUser()
             ->initializeBackendAuthentication($proceedIfNoUserIsLoggedIn)
             ->initializeLanguageObject()
diff --git a/typo3/sysext/backend/Classes/Sprite/AbstractSpriteHandler.php b/typo3/sysext/backend/Classes/Sprite/AbstractSpriteHandler.php
deleted file mode 100644 (file)
index 15c4f06..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Core\Utility\PathUtility;
-
-/**
- * An abstract class implementing SpriteIconGeneratorInterface.
- * Provides base functionality for all handlers.
- * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
- */
-abstract class AbstractSpriteHandler implements SpriteIconGeneratorInterface
-{
-    /**
-     * all "registered" icons available through sprite API will cumulated here
-     *
-     * @var array
-     */
-    protected $iconNames = array();
-
-    /**
-     * contains the content of the CSS file to write
-     *
-     * @var string
-     */
-    protected $styleSheetData = '';
-
-    /**
-     * path to CSS file for generated styles
-     *
-     * @var string
-     */
-    protected $cssTcaFile = '';
-
-    /**
-     * constructor just init's the temp-file-name
-     *
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public function __construct()
-    {
-        // The file name is prefixed with "z" since the concatenator orders files per name
-        $this->cssTcaFile = PATH_site . SpriteManager::$tempPath . 'zextensions.css';
-        $this->styleSheetData = '/* Auto-Generated via ' . get_class($this) . ' */' . LF;
-    }
-
-    /**
-     * Loads all stylesheet files registered through
-     * \TYPO3\CMS\Backend\Sprite\SpriteManager::addIconSprite
-     *
-     * In fact the stylesheet-files are copied to \TYPO3\CMS\Backend\Sprite\SpriteManager::tempPath
-     * where they automatically will be included from via
-     * \TYPO3\CMS\Backend\Template\DocumentTemplate and
-     * \TYPO3\CMS\Core\Resource\ResourceCompressor
-     *
-     * @return void
-     */
-    protected function loadRegisteredSprites()
-    {
-        // Saves which CSS Files are currently "allowed to be in place"
-        $allowedCssFilesinTempDir = array(basename($this->cssTcaFile));
-        // Process every registeres file
-        foreach ((array)$GLOBALS['TBE_STYLES']['spritemanager']['cssFiles'] as $file) {
-            $fileName = basename($file);
-            // File should be present
-            $allowedCssFilesinTempDir[] = $fileName;
-            // get-Cache Filename
-            $fileStatus = stat(PATH_site . $file);
-            $unique = md5($fileName . $fileStatus['mtime'] . $fileStatus['size']);
-            $cacheFile = PATH_site . SpriteManager::$tempPath . $fileName . $unique . '.css';
-            if (!file_exists($cacheFile)) {
-                copy(PATH_site . $file, $cacheFile);
-            }
-        }
-        // Get all .css files in dir
-        $cssFilesPresentInTempDir = GeneralUtility::getFilesInDir(PATH_site . SpriteManager::$tempPath, '.css', 0);
-        // and delete old ones which are not needed anymore
-        $filesToDelete = array_diff($cssFilesPresentInTempDir, $allowedCssFilesinTempDir);
-        foreach ($filesToDelete as $file) {
-            unlink(PATH_site . SpriteManager::$tempPath . $file);
-        }
-    }
-
-    /**
-     * Interface function. This will be called from the sprite manager to
-     * refresh all caches.
-     *
-     * @return void
-     */
-    public function generate()
-    {
-        // Include registered Sprites
-        $this->loadRegisteredSprites();
-        // Cache results in the CSS file
-        GeneralUtility::writeFile($this->cssTcaFile, $this->styleSheetData);
-    }
-
-    /**
-     * Returns the detected icon-names which may be used through
-     * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon.
-     *
-     * @return array all generated and registered sprite-icon-names, will be empty if there are none
-     */
-    public function getAvailableIconNames()
-    {
-        return $this->iconNames;
-    }
-
-    /**
-     * this method creates sprite icon names for all tables in TCA (including their possible type-icons)
-     * where there is no "typeicon_classes" of this TCA table ctrl section
-     * (moved form \TYPO3\CMS\Backend\Utility\IconUtility)
-     *
-     * @return array Array as $iconName => $fileName
-     */
-    protected function collectTcaSpriteIcons()
-    {
-        $tcaTables = array_keys($GLOBALS['TCA']);
-        $resultArray = array();
-        // Path (relative from typo3 dir) for skin-Images
-        if (isset($GLOBALS['TBE_STYLES']['skinImgAutoCfg']['relDir'])) {
-            $skinPath = $GLOBALS['TBE_STYLES']['skinImgAutoCfg']['relDir'];
-        } else {
-            $skinPath = '';
-        }
-        // check every table in the TCA, if an icon is needed
-        foreach ($tcaTables as $tableName) {
-            // This method is only needed for TCA tables where
-            // typeicon_classes are not configured
-            if (is_array($GLOBALS['TCA'][$tableName]) && !is_array($GLOBALS['TCA'][$tableName]['ctrl']['typeicon_classes'])) {
-                $tcaCtrl = $GLOBALS['TCA'][$tableName]['ctrl'];
-                // Adding the default Icon (without types)
-                if (isset($tcaCtrl['iconfile'])) {
-                    // In CSS we need a path relative to the css file
-                    // [TCA][ctrl][iconfile] defines icons without path info to reside in gfx/i/
-                    if (\TYPO3\CMS\Core\Utility\StringUtility::beginsWith($tcaCtrl['iconfile'], 'EXT:')) {
-                        list($extensionKey, $relativePath) = explode('/', substr($tcaCtrl['iconfile'], 4), 2);
-                        $pathInfo = PathUtility::pathinfo(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($extensionKey) . $relativePath);
-                        $path = PathUtility::getRelativePathTo($pathInfo['dirname']);
-                        $icon = $path . $pathInfo['basename'];
-                    } elseif (strpos($tcaCtrl['iconfile'], '/') !== false) {
-                        $icon = $tcaCtrl['iconfile'];
-                        $icon = GeneralUtility::resolveBackPath($icon);
-                    } else {
-                        $icon = $skinPath . 'gfx/i/' . $tcaCtrl['iconfile'];
-                        $icon = GeneralUtility::resolveBackPath($icon);
-                    }
-
-                    $resultArray['tcarecords-' . $tableName . '-default'] = $icon;
-                }
-            }
-        }
-        return $resultArray;
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Sprite/SimpleSpriteHandler.php b/typo3/sysext/backend/Classes/Sprite/SimpleSpriteHandler.php
deleted file mode 100644 (file)
index ffe990f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * A class with an concrete implementation of AbspractSpriteHandler.
- * It is the standard / fallback handler of the sprite manager.
- * This implementation won't generate sprites at all. It will just render css-definitions
- * for all registered icons so that they may be used through
- * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon* Without the css classes
- * generated here, icons of for example tca records would be empty.
- * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
- */
-class SimpleSpriteHandler extends AbstractSpriteHandler
-{
-    /**
-     * css template for single Icons registered by extension authors
-     *
-     * @var string
-     */
-    protected $styleSheetTemplateExtIcons = '
-.t3-icon-###NAME### {
-       background-position: 0px 0px !important;
-       background-image: url(\'###IMAGE###\') !important;
-       background-size: contain;
-}
-       ';
-
-    /**
-     * Interface function. This will be called from the sprite manager to
-     * refresh all caches.
-     *
-     * @return void
-     */
-    public function generate()
-    {
-        // Generate IconData for single Icons registered
-        $this->buildCssAndRegisterIcons();
-        parent::generate();
-    }
-
-    /**
-     * This function builds an css class for every single icon registered via
-     * \TYPO3\CMS\Backend\Utility\IconUtility::addSingleIcons to use them via
-     * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon and TCA-Icons for
-     * "classic" record Icons to be uses via
-     * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord
-     * In the simpleHandler the icon just will be added as css-background-image.
-     *
-     * @return void
-     */
-    protected function buildCssAndRegisterIcons()
-    {
-        // Backpath from the stylesheet file ($cssTcaFile) to PATH_site dir
-        // in order to set the background-image URL paths correct
-        $iconPath = '../../' . TYPO3_mainDir;
-        $iconsToProcess = array_merge((array)$GLOBALS['TBE_STYLES']['spritemanager']['singleIcons'], $this->collectTcaSpriteIcons());
-        foreach ($iconsToProcess as $iconName => $iconFile) {
-            $css = str_replace('###NAME###', str_replace(array('extensions-', 'tcarecords-'), array('', ''), $iconName), $this->styleSheetTemplateExtIcons);
-            $css = str_replace('###IMAGE###', \TYPO3\CMS\Core\Utility\GeneralUtility::resolveBackPath($iconPath . $iconFile), $css);
-            $this->iconNames[] = $iconName;
-            $this->styleSheetData .= $css;
-        }
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Sprite/SpriteBuildingHandler.php b/typo3/sysext/backend/Classes/Sprite/SpriteBuildingHandler.php
deleted file mode 100644 (file)
index ef5e8cc..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Sprite build handler
- * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
- */
-class SpriteBuildingHandler extends AbstractSpriteHandler
-{
-    /**
-     * @var SpriteGenerator
-     */
-    protected $generatorInstance = null;
-
-    /**
-     * Interface function. This will be called from the sprite manager to
-     * refresh all caches.
-     *
-     * @return void
-     */
-    public function generate()
-    {
-        $this->generatorInstance = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Sprite\SpriteGenerator::class, 'GeneratorHandler');
-        $this->generatorInstance
-            ->setOmitSpriteNameInIconName(true)
-            ->setIncludeTimestampInCSS(true)
-            ->setSpriteFolder(SpriteManager::$tempPath)
-            ->setCSSFolder(SpriteManager::$tempPath);
-        $iconsToProcess = array_merge((array)$GLOBALS['TBE_STYLES']['spritemanager']['singleIcons'], $this->collectTcaSpriteIcons());
-        foreach ($iconsToProcess as $iconName => $iconFile) {
-            $iconsToProcess[$iconName] = GeneralUtility::resolveBackPath('typo3/' . $iconFile);
-        }
-        $generatorResponse = $this->generatorInstance->generateSpriteFromArray($iconsToProcess);
-        $this->iconNames = array_merge($this->iconNames, $generatorResponse['iconNames']);
-        parent::generate();
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Sprite/SpriteGenerator.php b/typo3/sysext/backend/Classes/Sprite/SpriteGenerator.php
deleted file mode 100644 (file)
index 9113a66..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Service\MarkerBasedTemplateService;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Sprite generator
- */
-class SpriteGenerator
-{
-    /**
-     * Template creating CSS for the spritefile
-     *
-     * @var string
-     */
-    protected $templateSprite = '
-.###NAMESPACE###-###SPRITENAME### {
-       background-image: url(\'###SPRITEURL###\') !important;
-       height: ###DEFAULTHEIGHT###px;
-       width: ###DEFAULTWIDTH###px;
-}
-';
-
-    /**
-     * Template creating CSS for the high density spritefile
-     *
-     * @var string
-     */
-    protected $templateSpriteHighDensity =  '
-.backgroundsize .###NAMESPACE###-###SPRITENAME### {
-       background-image: url(\'###SPRITEURL###\') !important;
-       background-size:###BGWIDTH### ###BGHEIGHT###;
-}
-';
-    /**
-     * Template creating CSS for position and size of a single icon
-     *
-     * @var string
-     */
-    protected $templateIcon = '.###NAMESPACE###-###ICONNAME### {
-       background-position: -###LEFT###px -###TOP###px !important;
-###SIZE_INFO###
-}
-';
-
-    /**
-     * @var bool
-     */
-    protected $enableHighDensitySprite = true;
-
-    /**
-     * Most common icon-width in the sprite
-     *
-     * @var int
-     */
-    protected $defaultWidth = 0;
-
-    /**
-     * Most common icon-height in the sprite
-     *
-     * @var int
-     */
-    protected $defaultHeight = 0;
-
-    /**
-     * Calculated width of the sprite
-     *
-     * @var int
-     */
-    protected $spriteWidth = 0;
-
-    /**
-     * Calculated height of the sprite
-     *
-     * @var int
-     */
-    protected $spriteHeight = 0;
-
-    /**
-     * Sprite name, will be the filename, too
-     *
-     * @var string
-     */
-    protected $spriteName = '';
-
-    /**
-     * The folder the sprite-images will be saved (relative to PATH_site)
-     *
-     * @var string
-     */
-    protected $spriteFolder = 'typo3temp/sprites/';
-
-    /**
-     * The folder the sprite-cs will be saved (relative to PATH_site)
-     *
-     * @var string
-     */
-    protected $cssFolder = 'typo3temp/sprites/';
-
-    /**
-     * The spriteName will not be included in icon names
-     *
-     * @var bool
-     */
-    protected $omitSpriteNameInIconName = false;
-
-    /**
-     * Namespace of css classes
-     *
-     * @var string
-     */
-    protected $nameSpace = 't3-icon';
-
-    /**
-     * Setting this to TRUE, the timestamp of the creation will be included to the background import
-     * helps to easily rebuild sprites without cache problems
-     *
-     * @var bool
-     */
-    protected $includeTimestampInCSS = true;
-
-    /**
-     * All bases/root-names included in the sprite which has to be in css
-     * as sprite to include the background-image
-     *
-     * @var array
-     */
-    protected $spriteBases = array();
-
-    /**
-     * Collects data about all icons to process
-     *
-     * @var array
-     */
-    protected $iconsData = array();
-
-    /**
-     * Collects all sizes of icons within this sprite and there count
-     *
-     * @var array
-     */
-    protected $iconSizes = array();
-
-    /**
-     * Maps icon-sizes to iconnames
-     *
-     * @var array
-     */
-    protected $iconNamesPerSize = array();
-
-    /**
-     * space in px between to icons in the sprite (gap)
-     *
-     * @var int
-     */
-    protected $space = 2;
-
-    /**
-     * Initializes the configuration of the spritegenerator
-     *
-     * @param string $spriteName The name of the sprite to be generated
-     */
-    public function __construct($spriteName)
-    {
-        $this->spriteName = $spriteName;
-    }
-
-    /**
-     * Sets namespace of css code
-     *
-     * @param string $nameSpace
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setNamespace($nameSpace)
-    {
-        $this->nameSpace = $nameSpace;
-        return $this;
-    }
-
-    /**
-     * Sets the spritename
-     *
-     * @param string $spriteName The name of the sprite to be generated
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setSpriteName($spriteName)
-    {
-        $this->spriteName = $spriteName;
-        return $this;
-    }
-
-    /**
-     * Sets the sprite-graphics target-folder
-     *
-     * @param string $folder The target folder where the generated sprite is stored
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setSpriteFolder($folder)
-    {
-        $this->spriteFolder = $folder;
-        return $this;
-    }
-
-    /**
-     * Sets the sprite-css target-folder
-     *
-     * @param string $folder the target folder where the generated CSS files are stored
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setCSSFolder($folder)
-    {
-        $this->cssFolder = $folder;
-        return $this;
-    }
-
-    /**
-     * Enables/Disables HighDensitySprite Generation
-     *
-     * @param bool $enable
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setEnableHighDensitySprite($enable = true)
-    {
-        $this->enableHighDensitySprite = $enable;
-        return $this;
-    }
-
-    /**
-     * Setter do enable the exclusion of the sprites-name from iconnames
-     *
-     * @param bool $value
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setOmitSpriteNameInIconName($value)
-    {
-        $this->omitSpriteNameInIconName = is_bool($value) ? $value : false;
-        return $this;
-    }
-
-    /**
-     * Setter to adjust how much space is between to icons in the sprite
-     *
-     * @param int $value
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setIconSpace($value)
-    {
-        $this->space = (int)$value;
-        return $this;
-    }
-
-    /**
-     * Setter for timestamp inclusion: imageFiles will be included with ?timestamp
-     *
-     * @param bool $value
-     * @return SpriteGenerator An instance of $this, to enable "chaining".
-     */
-    public function setIncludeTimestampInCSS($value)
-    {
-        $this->includeTimestampInCSS = is_bool($value) ? $value : true;
-        return $this;
-    }
-
-    /**
-     * Reads all png,gif,jpg files from the passed folder name (including 1 subfolder level)
-     * extracts size information and stores data in internal array,
-     * afterwards triggers sprite generation.
-     *
-     * @param array $inputFolder Folder from which files are read
-     * @return array
-     */
-    public function generateSpriteFromFolder(array $inputFolder)
-    {
-        $iconArray = array();
-        foreach ($inputFolder as $folder) {
-            // Detect all files to be included in sprites
-            $iconArray = array_merge($iconArray, $this->getFolder($folder));
-        }
-        return $this->generateSpriteFromArray($iconArray);
-    }
-
-    /**
-     * Method processes an array of files into an sprite,
-     * the array can be build from files within an folder or
-     * by hand (as the SpriteManager does)
-     *
-     * @param array $files array(icon name => icon file)
-     * @return array
-     */
-    public function generateSpriteFromArray(array $files)
-    {
-        if (!$this->omitSpriteNameInIconName) {
-            $this->spriteBases[] = $this->spriteName;
-        }
-        $this->buildFileInformationCache($files);
-        // Calculate Icon Position in sprite
-        $this->calculateSpritePositions();
-        $this->generateGraphic();
-        if ($this->enableHighDensitySprite) {
-            $this->generateHighDensityGraphic();
-        }
-        $this->generateCSS();
-        $iconNames = array_keys($this->iconsData);
-        natsort($iconNames);
-        return array(
-            'spriteImage' => PATH_site . $this->spriteFolder . $this->spriteName . '.png',
-            'cssFile' => PATH_site . $this->cssFolder . $this->spriteName . '.css',
-            'iconNames' => $iconNames
-        );
-    }
-
-    /**
-     * Generates the css files
-     *
-     * @return void
-     */
-    protected function generateCSS()
-    {
-        /** @var MarkerBasedTemplateService $templateService */
-        $templateService = GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
-        $cssData = '';
-        if ($this->includeTimestampInCSS) {
-            $timestamp = '?' . time();
-        } else {
-            $timestamp = '';
-        }
-        $spritePathForCSS = $this->resolveSpritePath();
-        $markerArray = array(
-            '###NAMESPACE###' => $this->nameSpace,
-            '###DEFAULTWIDTH###' => $this->defaultWidth,
-            '###DEFAULTHEIGHT###' => $this->defaultHeight,
-            '###SPRITENAME###' => '',
-            '###SPRITEURL###' => $spritePathForCSS ? $spritePathForCSS . '/' : ''
-        );
-        $markerArray['###SPRITEURL###'] .= $this->spriteName . '.png' . $timestamp;
-        foreach ($this->spriteBases as $base) {
-            $markerArray['###SPRITENAME###'] = $base;
-            $cssData .= $templateService->substituteMarkerArray($this->templateSprite, $markerArray);
-
-            if ($this->enableHighDensitySprite) {
-                $highDensityMarkerArray = array_merge($markerArray, array(
-                    '###BGWIDTH###' => $this->spriteWidth . 'px',
-                    '###BGHEIGHT###' => $this->spriteHeight . 'px',
-                    '###SPRITEURL###' => str_replace(
-                        $this->spriteName . '.png',
-                        $this->spriteName . '@x2.png',
-                        $markerArray['###SPRITEURL###']
-                    )
-                ));
-                $cssData .= $templateService->substituteMarkerArray($this->templateSpriteHighDensity, $highDensityMarkerArray);
-            }
-        }
-
-        foreach ($this->iconsData as $data) {
-            $temp = $data['iconNameParts'];
-            array_shift($temp);
-            $cssName = implode('-', $temp);
-            $markerArrayIcons = array(
-                '###NAMESPACE###' => $this->nameSpace,
-                '###ICONNAME###' => $cssName,
-                '###LEFT###' => $data['left'],
-                '###TOP###' => $data['top'],
-                '###SIZE_INFO###' => ''
-            );
-            if ($data['height'] != $this->defaultHeight) {
-                $markerArrayIcons['###SIZE_INFO###'] .= TAB . 'height: ' . $data['height'] . 'px;' . LF;
-            }
-            if ($data['width'] != $this->defaultWidth) {
-                $markerArrayIcons['###SIZE_INFO###'] .= TAB . 'width: ' . $data['width'] . 'px;' . LF;
-            }
-            $cssData .= $templateService->substituteMarkerArray($this->templateIcon, $markerArrayIcons);
-        }
-        GeneralUtility::writeFile(PATH_site . $this->cssFolder . $this->spriteName . '.css', $cssData);
-    }
-
-    /**
-     * Compares image path to CSS path and creates the relative backpath from css to the sprites
-     *
-     * @return string
-     */
-    protected function resolveSpritePath()
-    {
-        // Fix window paths
-        $this->cssFolder = str_replace('\\', '/', $this->cssFolder);
-        $this->spriteFolder = str_replace('\\', '/', $this->spriteFolder);
-        $cssPathSegments = GeneralUtility::trimExplode('/', trim($this->cssFolder, '/'));
-        $graphicPathSegments = GeneralUtility::trimExplode('/', trim($this->spriteFolder, '/'));
-        $i = 0;
-        while (isset($cssPathSegments[$i]) && isset($graphicPathSegments[$i]) && $cssPathSegments[$i] == $graphicPathSegments[$i]) {
-            unset($cssPathSegments[$i]);
-            unset($graphicPathSegments[$i]);
-            ++$i;
-        }
-        foreach ($cssPathSegments as $key => $value) {
-            $cssPathSegments[$key] = '..';
-        }
-        $completePath = array_merge($cssPathSegments, $graphicPathSegments);
-        $path = implode('/', $completePath);
-        return GeneralUtility::resolveBackPath($path);
-    }
-
-    /**
-     * The actual sprite generator, renders the command for Im/GM and executes
-     *
-     * @return void
-     */
-    protected function generateGraphic()
-    {
-        $tempSprite = GeneralUtility::tempnam($this->spriteName, '.png');
-        $filePath = PATH_site . $this->spriteFolder . $this->spriteName . '.png';
-
-        // Create black true color image with given size
-        $newSprite = imagecreatetruecolor($this->spriteWidth, $this->spriteHeight);
-        imagesavealpha($newSprite, true);
-        // Make it transparent
-        imagefill($newSprite, 0, 0, imagecolorallocatealpha($newSprite, 0, 255, 255, 127));
-        foreach ($this->iconsData as $icon) {
-            $function = 'imagecreatefrom' . strtolower($icon['fileExtension']);
-            if (function_exists($function)) {
-                $currentIcon = $function($icon['fileName']);
-                imagecopy($newSprite, $currentIcon, $icon['left'], $icon['top'], 0, 0, $icon['width'], $icon['height']);
-            }
-        }
-        imagepng($newSprite, $tempSprite);
-        GeneralUtility::upload_copy_move($tempSprite, $filePath);
-        GeneralUtility::unlink_tempfile($tempSprite);
-    }
-
-    /**
-     * The actual sprite generator, renders the command for IM/GM and executes
-     *
-     * @return void
-     */
-    protected function generateHighDensityGraphic()
-    {
-        $tempSprite = GeneralUtility::tempnam($this->spriteName . '@x2', '.png');
-        $filePath = PATH_site . $this->spriteFolder . $this->spriteName . '@x2.png';
-
-        // Create black true color image with given size
-        $newSprite = imagecreatetruecolor($this->spriteWidth * 2, $this->spriteHeight * 2);
-        imagesavealpha($newSprite, true);
-        // Make it transparent
-        imagefill($newSprite, 0, 0, imagecolorallocatealpha($newSprite, 0, 255, 255, 127));
-        foreach ($this->iconsData as $icon) {
-            $function = 'imagecreatefrom' . strtolower($icon['fileExtension']);
-            if (function_exists($function)) {
-                if ($icon['fileNameHighDensity'] !== false) {
-                    // copy HighDensity file
-                    $currentIcon = $function($icon['fileNameHighDensity']);
-                    imagecopy($newSprite, $currentIcon, $icon['left'] * 2, $icon['top'] * 2, 0, 0, $icon['width'] * 2, $icon['height'] * 2);
-                } else {
-                    // scale up normal file
-                    $currentIcon = $function($icon['fileName']);
-                    imagecopyresized($newSprite, $currentIcon, $icon['left'] * 2, $icon['top'] * 2, 0, 0, $icon['width'] * 2, $icon['height'] * 2, $icon['width'], $icon['height']);
-                }
-            }
-        }
-        imagepng($newSprite, $tempSprite);
-        GeneralUtility::upload_copy_move($tempSprite, $filePath);
-        GeneralUtility::unlink_tempfile($tempSprite);
-    }
-    /**
-     * Arranges icons in sprites,
-     * afterwards all icons have information about the position in sprite
-     */
-    protected function calculateSpritePositions()
-    {
-        // Calculate width of every icon-size-group
-        $sizes = array();
-        foreach ($this->iconSizes as $sizeTag => $count) {
-            $size = $this->explodeSizeTag($sizeTag);
-            $rowWidth = (int)ceil(sqrt($count)) * $size['width'];
-            while (isset($sizes[$rowWidth])) {
-                $rowWidth++;
-            }
-            $sizes[$rowWidth] = $sizeTag;
-        }
-        // Reverse sorting: widest group to top
-        krsort($sizes);
-        $currentTop = 0;
-        // Integrate all icons grouped by icons size into the sprite
-        foreach ($sizes as $sizeTag) {
-            $size = $this->explodeSizeTag($sizeTag);
-            $currentLeft = 0;
-            $rowCounter = 0;
-            $rowSize = ceil(sqrt($this->iconSizes[$sizeTag]));
-            $rowWidth = $rowSize * $size['width'] + ($rowSize - 1) * $this->space;
-            $this->spriteWidth = $rowWidth > $this->spriteWidth ? $rowWidth : $this->spriteWidth;
-            $firstLine = true;
-            natsort($this->iconNamesPerSize[$sizeTag]);
-            foreach ($this->iconNamesPerSize[$sizeTag] as $iconName) {
-                if ($rowCounter == $rowSize - 1) {
-                    $rowCounter = -1;
-                } elseif ($rowCounter == 0) {
-                    if (!$firstLine) {
-                        $currentTop += $size['height'];
-                        $currentTop += $this->space;
-                    }
-                    $firstLine = false;
-                    $currentLeft = 0;
-                }
-                $this->iconsData[$iconName]['left'] = $currentLeft;
-                $this->iconsData[$iconName]['top'] = $currentTop;
-                $currentLeft += $size['width'];
-                $currentLeft += $this->space;
-                $rowCounter++;
-            }
-            $currentTop += $size['height'];
-            $currentTop += $this->space;
-        }
-        $this->spriteHeight = $currentTop;
-    }
-
-    /**
-     * Function getFolder traverses the target directory,
-     * locates all iconFiles and collects them into an array
-     *
-     * @param string $directoryPath Path to an folder which contains images
-     * @return array Returns an array with all files key: iconname, value: fileName
-     */
-    protected function getFolder($directoryPath)
-    {
-        $subFolders = GeneralUtility::get_dirs(PATH_site . $directoryPath);
-        if (!$this->omitSpriteNameInIconName) {
-            $subFolders[] = '';
-        }
-        $resultArray = array();
-        foreach ($subFolders as $folder) {
-            if ($folder !== '.svn') {
-                $icons = GeneralUtility::getFilesInDir(PATH_site . $directoryPath . $folder . '/', 'gif,png,jpg');
-                if (!in_array($folder, $this->spriteBases) && !empty($icons) && $folder !== '') {
-                    $this->spriteBases[] = $folder;
-                }
-                foreach ($icons as $icon) {
-                    $fileInfo = pathinfo($icon);
-                    $iconName = ($folder ? $folder . '-' : '') . $fileInfo['filename'];
-                    if (!$this->omitSpriteNameInIconName) {
-                        $iconName = $this->spriteName . '-' . $iconName;
-                    }
-                    $resultArray[$iconName] = $directoryPath . $folder . '/' . $icon;
-                }
-            }
-        }
-        return $resultArray;
-    }
-
-    /**
-     * Generates file information cache from file array
-     *
-     * @param array $files List of all files with their icon name
-     * @return void
-     */
-    protected function buildFileInformationCache(array $files)
-    {
-        foreach ($files as $iconName => $iconFile) {
-            $iconNameParts = GeneralUtility::trimExplode('-', $iconName);
-            if (!in_array($iconNameParts[0], $this->spriteBases)) {
-                $this->spriteBases[] = $iconNameParts[0];
-            }
-            $fileInfo = @pathinfo((PATH_site . $iconFile));
-            $imageInfo = @getimagesize((PATH_site . $iconFile));
-            $this->iconsData[$iconName] = array(
-                'iconName' => $iconName,
-                'iconNameParts' => $iconNameParts,
-                'singleName' => $fileInfo['filename'],
-                'fileExtension' => $fileInfo['extension'],
-                'fileName' => PATH_site . $iconFile,
-                'width' => $imageInfo[0],
-                'height' => $imageInfo[1],
-                'left' => 0,
-                'top' => 0,
-                'fileNameHighDensity' => false
-            );
-            if ($this->enableHighDensitySprite) {
-                $highDensityFile = str_replace('.' . $fileInfo['extension'], '@x2.' . $fileInfo['extension'], $iconFile);
-                if (@file_exists(PATH_site . $highDensityFile)) {
-                    $this->iconsData[$iconName]['fileNameHighDensity'] = $highDensityFile;
-                }
-            }
-            $sizeTag = $imageInfo[0] . 'x' . $imageInfo[1];
-            if (isset($this->iconSizes[$sizeTag])) {
-                $this->iconSizes[$sizeTag] += 1;
-            } else {
-                $this->iconSizes[$sizeTag] = 1;
-                $this->iconNamesPerSize[$sizeTag] = array();
-            }
-            $this->iconNamesPerSize[$sizeTag][] = $iconName;
-        }
-        // Find most common image size, save it as default
-        asort($this->iconSizes);
-        $defaultSize = $this->explodeSizeTag(array_pop(array_keys($this->iconSizes)));
-        $this->defaultWidth = $defaultSize['width'];
-        $this->defaultHeight = $defaultSize['height'];
-    }
-
-    /**
-     * Transforms size tag into size array
-     *
-     * @param string $tag A size tag at the cache arrays
-     * @return array
-     */
-    protected function explodeSizeTag($tag = '')
-    {
-        $size = GeneralUtility::trimExplode('x', $tag);
-        return array(
-            'width' => $size[0],
-            'height' => $size[1]
-        );
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Sprite/SpriteIconGeneratorInterface.php b/typo3/sysext/backend/Classes/Sprite/SpriteIconGeneratorInterface.php
deleted file mode 100644 (file)
index e246835..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Interface all handlers in SpriteManager have to implement.
- */
-interface SpriteIconGeneratorInterface
-{
-    /**
-     * the implementation of this function has to do the main task
-     * this function will be called if the extension list changed or
-     * registered icons in TBE_STYLES[spritemanager] changed
-     *
-     * @return void
-     */
-    public function generate();
-
-    /**
-     * The sprite manager will call this function after the call to "generate"
-     * it should return an array of all sprite-icon-names generated through the run
-     *
-     * @return array All generated/detected sprite-icon-names
-     */
-    public function getAvailableIconNames();
-}
diff --git a/typo3/sysext/backend/Classes/Sprite/SpriteManager.php b/typo3/sysext/backend/Classes/Sprite/SpriteManager.php
deleted file mode 100644 (file)
index 221533f..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * TYPO3 sprite manager, used in BE and in FE if a BE user is logged in.
- *
- * This class builds CSS definitions of registered icons, writes TCA definitions
- * and registers sprite icons in a cache file.
- *
- * A configurable handler class does the business task.
- * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
- */
-class SpriteManager
-{
-    /**
-     * @var string Directory for cached sprite informations
-     */
-    public static $tempPath = 'typo3temp/sprites/';
-
-    /**
-     * Is sprite manager initialized
-     */
-    protected static $isInitialized = false;
-
-    /**
-     * Initialize sprite manager.
-     * Loads registered sprite configuration from cache, or
-     * rebuilds new cache before registration.
-     *
-     * @return void
-     */
-    public static function initialize()
-    {
-        if (!static::isInitialized()) {
-            $cacheIdentifier = static::getCacheIdentifier();
-            /** @var $codeCache \TYPO3\CMS\Core\Cache\Frontend\PhpFrontend */
-            $codeCache = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class)->getCache('cache_core');
-            if ($codeCache->has($cacheIdentifier)) {
-                $codeCache->requireOnce($cacheIdentifier);
-            } else {
-                static::buildSpriteDataAndCreateCacheEntry();
-            }
-            self::$isInitialized = true;
-        }
-    }
-
-    /**
-     * Whether the sprite manager is initialized.
-     *
-     * @return bool TRUE if sprite manager is initialized
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function isInitialized()
-    {
-        return self::$isInitialized;
-    }
-
-    /**
-     * Set up sprite icon data and create cache entry calling the registered generator.
-     *
-     * Stuff the compiled $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable']
-     * global into php code cache.
-     *
-     * @throws \RuntimeException
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    protected static function buildSpriteDataAndCreateCacheEntry()
-    {
-        $handlerClass = $GLOBALS['TYPO3_CONF_VARS']['BE']['spriteIconGenerator_handler'];
-        /** @var $handler \TYPO3\CMS\Backend\Sprite\SpriteIconGeneratorInterface */
-        $handler = GeneralUtility::makeInstance($handlerClass);
-        // Throw exception if handler class does not implement required interface
-        if (!$handler instanceof \TYPO3\CMS\Backend\Sprite\SpriteIconGeneratorInterface) {
-            throw new \RuntimeException('Class ' . $handlerClass . ' in $TYPO3_CONF_VARS[BE][spriteIconGenerator_handler] ' . ' does not implement ' . \TYPO3\CMS\Backend\Sprite\SpriteIconGeneratorInterface::class, 1294586333);
-        }
-        // Create temp directory if missing
-        if (!is_dir((PATH_site . self::$tempPath))) {
-            GeneralUtility::mkdir(PATH_site . self::$tempPath);
-        }
-        // Generate CSS and TCA files, build icon set register
-        $handler->generate();
-        // Get all icons registered from skins, merge with core icon list
-        $availableSkinIcons = (array)$GLOBALS['TBE_STYLES']['spriteIconApi']['coreSpriteImageNames'];
-        if (isset($GLOBALS['TBE_STYLES']['skins']) && is_array($GLOBALS['TBE_STYLES']['skins'])) {
-            foreach ($GLOBALS['TBE_STYLES']['skins'] as $skinData) {
-                $availableSkinIcons = array_merge($availableSkinIcons, (array)$skinData['availableSpriteIcons']);
-            }
-        }
-        // Merge icon names provided by the skin, with
-        // registered "complete sprites" and the handler class
-        $iconNames = array_merge($availableSkinIcons, (array)$GLOBALS['TBE_STYLES']['spritemanager']['spriteIconsAvailable'], $handler->getAvailableIconNames());
-        $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'] = $iconNames;
-
-        $cacheFileContent = '$GLOBALS[\'TBE_STYLES\'][\'spriteIconApi\'][\'iconsAvailable\'] = ';
-        $cacheFileContent .= var_export($iconNames, true) . ';';
-        /** @var $codeCache \TYPO3\CMS\Core\Cache\Frontend\PhpFrontend */
-        GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class)->getCache('cache_core')->set(static::getCacheIdentifier(), $cacheFileContent);
-    }
-
-    /**
-     * Get cache identifier for $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable']
-     *
-     * @return string
-     */
-    protected static function getCacheIdentifier()
-    {
-        return 'sprites_' . sha1((TYPO3_version . PATH_site . 'spriteManagement'));
-    }
-
-    /**
-     * API for extensions to register own sprites.
-     *
-     * Get an array of icon names and the styleSheetFile with defined sprite icons.
-     * The stylesheet filename should contain the extension name to be unique.
-     *
-     * Naming conventions:
-     * - IconName: extensions-$extKey-$iconName
-     * - CSS class for loading the sprite: t3-icon-extensions-$extKey
-     * - CSS class for single icons: t3-icon-$extKey-$iconName
-     *
-     * @param array $icons Icon names
-     * @param string $styleSheetFile Stylesheet filename relative to PATH_typo3. Skins do not need to supply the $styleSheetFile, if the CSS file is within the registered stylesheet folders
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function addIconSprite(array $icons, $styleSheetFile = '')
-    {
-        GeneralUtility::deprecationLog(self::class . ' is deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8');
-        $GLOBALS['TBE_STYLES']['spritemanager']['spriteIconsAvailable'] = array_merge((array)$GLOBALS['TBE_STYLES']['spritemanager']['spriteIconsAvailable'], $icons);
-        if ($styleSheetFile !== '') {
-            $GLOBALS['TBE_STYLES']['spritemanager']['cssFiles'][] = $styleSheetFile;
-        }
-    }
-
-    /**
-     * API for extensions to register new sprite images which can be used with
-     * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('extensions-$extKey-iconName');
-     *
-     * @param array $icons Icons to be registered, $iconname => $iconFile, $iconFile must be relative to PATH_site
-     * @param string $extKey Extension key
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function addSingleIcons(array $icons, $extKey = '')
-    {
-        GeneralUtility::deprecationLog(self::class . ' is deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8');
-        foreach ($icons as $iconName => $iconFile) {
-            $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']['extensions-' . $extKey . '-' . $iconName] = $iconFile;
-        }
-    }
-
-    /**
-     * API to register new type icons for tables which use "typeicon_classes"
-     * Can be used to provide icons for "modules" in pages table
-     *
-     * @param string $table Table name to which the type icon should be added
-     * @param string $type Type column name of the table
-     * @param string $iconFile Icon filename, relative to PATH_typo3
-     * @return void
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function addTcaTypeIcon($table, $type, $iconFile)
-    {
-        GeneralUtility::deprecationLog(self::class . ' is deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8');
-        $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']['tcarecords-' . $table . '-' . $type] = $iconFile;
-        if (is_array($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes'])) {
-            $GLOBALS['TCA'][$table]['ctrl']['typeicon_classes'][$type] = 'tcarecords-' . $table . '-' . $type;
-        }
-    }
-}
index 506e1bd..bc04af3 100644 (file)
@@ -169,15 +169,6 @@ function jumpToUrl(URL) {
 
     // Skinning
     /**
-     * stylesheets from core
-     *
-     * @var array
-     */
-    protected $stylesheetsCore = array(
-        'generatedSprites' => '../typo3temp/sprites/'
-    );
-
-    /**
      * Include these CSS directories from skins by default
      *
      * @var array
@@ -949,10 +940,6 @@ function jumpToUrl(URL) {
     public function getSkinStylesheetDirectories()
     {
         $stylesheetDirectories = array();
-        // Add default core stylesheets
-        foreach ($this->stylesheetsCore as $stylesheetDir) {
-            $stylesheetDirectories[] = $stylesheetDir;
-        }
         // Stylesheets from skins
         // merge default css directories ($this->stylesheetsSkin) with additional ones and include them
         if (is_array($GLOBALS['TBE_STYLES']['skins'])) {
diff --git a/typo3/sysext/backend/Classes/Utility/IconUtility.php b/typo3/sysext/backend/Classes/Utility/IconUtility.php
deleted file mode 100644 (file)
index 7bf14e5..0000000
+++ /dev/null
@@ -1,931 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Utility;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Imaging\GraphicalFunctions;
-use TYPO3\CMS\Core\Imaging\Icon;
-use TYPO3\CMS\Core\Imaging\IconFactory;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Core\Versioning\VersionState;
-
-/**
- * Contains class for icon generation in the backend
- * This library has functions that returns - and if necessary creates - the icon for an element in TYPO3
- *
- * Expects global vars:
- * - $BACK_PATH
- * - PATH_typo3
- * - $TCA, $PAGES_TYPES
- *
- *
- * Notes:
- * These functions are strongly related to the interface of TYPO3.
- * Static class, functions called without making a class instance.
- * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use IconFactory instead
- */
-class IconUtility
-{
-    /**
-     * @var string[]
-     */
-    public static $fileSpriteIconNames = array(
-        'htm' => 'mimetypes-text-html',
-        'html' => 'mimetypes-text-html',
-        'css' => 'mimetypes-text-css',
-        'js' => 'mimetypes-text-js',
-        'csv' => 'mimetypes-text-csv',
-        'php' => 'mimetypes-text-php',
-        'php7' => 'mimetypes-text-php',
-        'php6' => 'mimetypes-text-php',
-        'php5' => 'mimetypes-text-php',
-        'php4' => 'mimetypes-text-php',
-        'php3' => 'mimetypes-text-php',
-        'inc' => 'mimetypes-text-php',
-        'ts' => 'mimetypes-text-ts',
-        'txt' => 'mimetypes-text-text',
-        'class' => 'mimetypes-text-text',
-        'tmpl' => 'mimetypes-text-text',
-        'jpg' => 'mimetypes-media-image',
-        'jpeg' => 'mimetypes-media-image',
-        'gif' => 'mimetypes-media-image',
-        'png' => 'mimetypes-media-image',
-        'bmp' => 'mimetypes-media-image',
-        'tif' => 'mimetypes-media-image',
-        'tiff' => 'mimetypes-media-image',
-        'tga' => 'mimetypes-media-image',
-        'psd' => 'mimetypes-media-image',
-        'eps' => 'mimetypes-media-image',
-        'ai' => 'mimetypes-media-image',
-        'svg' => 'mimetypes-media-image',
-        'pcx' => 'mimetypes-media-image',
-        'avi' => 'mimetypes-media-video',
-        'mpg' => 'mimetypes-media-video',
-        'mpeg' => 'mimetypes-media-video',
-        'mov' => 'mimetypes-media-video',
-        'wav' => 'mimetypes-media-audio',
-        'mp3' => 'mimetypes-media-audio',
-        'mid' => 'mimetypes-media-audio',
-        'swf' => 'mimetypes-media-flash',
-        'swa' => 'mimetypes-media-flash',
-        'exe' => 'mimetypes-application',
-        'com' => 'mimetypes-application',
-        't3x' => 'mimetypes-compressed',
-        't3d' => 'mimetypes-compressed',
-        'zip' => 'mimetypes-compressed',
-        'tgz' => 'mimetypes-compressed',
-        'gz' => 'mimetypes-compressed',
-        'pdf' => 'mimetypes-pdf',
-        'doc' => 'mimetypes-word',
-        'dot' => 'mimetypes-word',
-        'docm' => 'mimetypes-word',
-        'docx' => 'mimetypes-word',
-        'dotm' => 'mimetypes-word',
-        'dotx' => 'mimetypes-word',
-        'rtf' => 'mimetypes-word',
-        'xls' => 'mimetypes-excel',
-        'xlsm' => 'mimetypes-excel',
-        'xlsx' => 'mimetypes-excel',
-        'xltm' => 'mimetypes-excel',
-        'xltx' => 'mimetypes-excel',
-        'pps' => 'mimetypes-powerpoint',
-        'ppsx' => 'mimetypes-powerpoint',
-        'ppt' => 'mimetypes-powerpoint',
-        'pptm' => 'mimetypes-powerpoint',
-        'pptx' => 'mimetypes-powerpoint',
-        'potm' => 'mimetypes-powerpoint',
-        'potx' => 'mimetypes-powerpoint',
-        'odb' => 'mimetypes-open-document-database',
-        'odg' => 'mimetypes-open-document-drawing',
-        'sxd' => 'mimetypes-open-document-drawing',
-        'odf' => 'mimetypes-open-document-formula',
-        'sxm' => 'mimetypes-open-document-formula',
-        'odp' => 'mimetypes-open-document-presentation',
-        'sxi' => 'mimetypes-open-document-presentation',
-        'ods' => 'mimetypes-open-document-spreadsheet',
-        'sxc' => 'mimetypes-open-document-spreadsheet',
-        'odt' => 'mimetypes-open-document-text',
-        'sxw' => 'mimetypes-open-document-text',
-        'mount' => 'apps-filetree-mount',
-        'folder' => 'apps-filetree-folder-default',
-        'default' => 'mimetypes-other-other'
-    );
-
-    /**
-     * Array of icons rendered by getSpriteIcon(). This contains only icons
-     * without overlays or options. These are the most common form.
-     *
-     * @var array
-     */
-    protected static $spriteIconCache = array();
-
-    /**
-     * Creates the icon for input table/row
-     * Returns filename for the image icon, relative to PATH_typo3
-     *
-     * @param string $table The table name
-     * @param array $row The table row ("enablefields" are at least needed for correct icon display and for pages records some more fields in addition!)
-     * @param bool $shaded If set, the icon will be grayed/shaded
-     * @return string Icon filename
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use IconUtility::getSpriteIcon() instead
-     */
-    public static function getIcon($table, $row = array(), $shaded = false)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Flags
-        // If set, then the usergroup number will NOT be printed unto the icon. NOTICE.
-        // The icon is generated only if a default icon for groups is not found... So effectively this is ineffective.
-        $doNotRenderUserGroupNumber = true;
-        // Shadow
-        if (!empty($GLOBALS['TCA'][$table]['ctrl']['versioningWS']) && !empty($row['t3ver_state'])) {
-            switch (VersionState::cast($row['t3ver_state'])) {
-                case new VersionState(VersionState::NEW_PLACEHOLDER):
-                    return 'gfx/i/shadow_hide.png';
-                    break;
-                case new VersionState(VersionState::DELETE_PLACEHOLDER):
-                    return 'gfx/i/shadow_delete.png';
-                    break;
-                case new VersionState(VersionState::MOVE_PLACEHOLDER):
-                    return 'gfx/i/shadow_moveto_plh.png';
-                    break;
-                case new VersionState(VersionState::MOVE_POINTER):
-                    return 'gfx/i/shadow_moveto_pointer.png';
-                    break;
-            }
-        }
-        // First, find the icon file name. This can depend on configuration in TCA, field values and more:
-        if ($table === 'pages') {
-            $iconfile = $GLOBALS['PAGES_TYPES'][$row['doktype']]['icon'];
-            if (empty($iconfile)) {
-                $iconfile = $GLOBALS['PAGES_TYPES']['default']['icon'];
-            }
-        }
-
-        if (empty($iconfile)) {
-            $iconfile = $GLOBALS['TCA'][$table]['ctrl']['iconfile'] ?: $table . '.gif';
-        }
-
-        // Setting path of iconfile if not already set. Default is "gfx/i/"
-        if (!strstr($iconfile, '/')) {
-            $iconfile = 'gfx/i/' . $iconfile;
-        }
-        // Setting the absolute path where the icon should be found as a file:
-        if (substr($iconfile, 0, 3) == '../') {
-            $absfile = PATH_site . substr($iconfile, 3);
-        } else {
-            $absfile = PATH_typo3 . $iconfile;
-        }
-        // Initializing variables, all booleans except otherwise stated:
-        $hidden = false;
-        $timing = false;
-        $futuretiming = false;
-        // In fact an integer value
-        $user = false;
-        $deleted = false;
-        // Set, if a page-record (only pages!) has the extend-to-subpages flag set.
-        $protectSection = false;
-        $noIconFound = (bool)$row['_NO_ICON_FOUND'];
-        // + $shaded which is also boolean!
-        // Icon state based on "enableFields":
-        if (is_array($GLOBALS['TCA'][$table]['ctrl']['enablecolumns'])) {
-            $enCols = $GLOBALS['TCA'][$table]['ctrl']['enablecolumns'];
-            // If "hidden" is enabled:
-            if ($enCols['disabled']) {
-                if ($row[$enCols['disabled']]) {
-                    $hidden = true;
-                }
-            }
-            // If a "starttime" is set and higher than current time:
-            if ($enCols['starttime']) {
-                if ($GLOBALS['EXEC_TIME'] < (int)$row[$enCols['starttime']]) {
-                    $timing = true;
-                    // And if "endtime" is NOT set:
-                    if ((int)$row[$enCols['endtime']] === 0) {
-                        $futuretiming = true;
-                    }
-                }
-            }
-            // If an "endtime" is set:
-            if ($enCols['endtime']) {
-                if ((int)$row[$enCols['endtime']] > 0) {
-                    if ((int)$row[$enCols['endtime']] < $GLOBALS['EXEC_TIME']) {
-                        // End-timing applies at this point.
-                        $timing = true;
-                    } else {
-                        // End-timing WILL apply in the future for this element.
-                        $futuretiming = true;
-                    }
-                }
-            }
-            // If a user-group field is set:
-            if ($enCols['fe_group']) {
-                $user = $row[$enCols['fe_group']];
-                if ($user && $doNotRenderUserGroupNumber) {
-                    $user = 100;
-                }
-            }
-        }
-        // If "deleted" flag is set (only when listing records which are also deleted!)
-        if ($col = $row[$GLOBALS['TCA'][$table]['ctrl']['delete']]) {
-            $deleted = true;
-        }
-        // Detecting extendToSubpages (for pages only)
-        if ($table == 'pages' && $row['extendToSubpages'] && ($hidden || $timing || $futuretiming || $user)) {
-            $protectSection = true;
-        }
-        // If ANY of the booleans are set it means we have to alter the icon:
-        if ($hidden || $timing || $futuretiming || $user || $deleted || $shaded || $noIconFound) {
-            $flags = '';
-            $string = '';
-            if ($deleted) {
-                $string = 'deleted';
-                $flags = 'd';
-            } elseif ($noIconFound) {
-                // This is ONLY for creating icons with "?" on easily...
-                $string = 'no_icon_found';
-                $flags = 'x';
-            } else {
-                if ($hidden) {
-                    $string .= 'hidden';
-                }
-                if ($timing) {
-                    $string .= 'timing';
-                }
-                if (!$string && $futuretiming) {
-                    $string = 'futuretiming';
-                }
-                $flags .= ($hidden ? 'h' : '') . ($timing ? 't' : '') . ($futuretiming ? 'f' : '') . ($user ? 'u' : '') . ($protectSection ? 'p' : '') . ($shaded ? 's' : '');
-            }
-            // Create tagged icon file name:
-            $iconFileName_stateTagged = preg_replace('/.([[:alnum:]]+)$/', '__' . $flags . '.\\1', basename($iconfile));
-            // Check if tagged icon file name exists (a tagged icon means the icon base name with the flags added between body and extension of the filename, prefixed with underscore)
-            if (@is_file((dirname($absfile) . '/' . $iconFileName_stateTagged)) || @is_file(($GLOBALS['TBE_STYLES']['skinImgAutoCfg']['absDir'] . '/' . dirname($iconfile) . '/' . $iconFileName_stateTagged))) {
-                // Look for [iconname]_xxxx.[ext]
-                return dirname($iconfile) . '/' . $iconFileName_stateTagged;
-            } else {
-                // Otherwise, create the icon:
-                $theRes = self::makeIcon($GLOBALS['BACK_PATH'] . $iconfile, $string, $user, $protectSection, $absfile, $iconFileName_stateTagged);
-                return $theRes;
-            }
-        } else {
-            return $iconfile;
-        }
-    }
-
-    /**
-     * Returns the src=... for the input $src value OR any alternative found in $TBE_STYLES['skinImg']
-     * Used for skinning the TYPO3 backend with an alternative set of icons
-     *
-     * @param string $backPath Current backpath to PATH_typo3 folder
-     * @param string $src Icon file name relative to PATH_typo3 folder
-     * @param string $wHattribs Default width/height, defined like 'width="12" height="14"'
-     * @param int $outputMode Mode: 0 (zero) is default and returns src/width/height. 1 returns value of src+backpath, 2 returns value of w/h.
-     * @return string Returns ' src="[backPath][src]" [wHattribs]'
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     * @see skinImgFile()
-     */
-    public static function skinImg($backPath, $src, $wHattribs = '', $outputMode = 0)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        static $cachedSkinImages = array();
-        $imageId = md5($backPath . $src . $wHattribs . $outputMode);
-        if (isset($cachedSkinImages[$imageId])) {
-            return $cachedSkinImages[$imageId];
-        }
-        // Setting source key. If the icon is referred to inside an extension, we homogenize the prefix to "ext/":
-        $srcKey = preg_replace('/^(\\.\\.\\/typo3conf\\/ext|sysext|ext)\\//', 'ext/', $src);
-        // LOOKING for alternative icons:
-        if ($GLOBALS['TBE_STYLES']['skinImg'][$srcKey]) {
-            // Slower or faster with is_array()? Could be used.
-            list($src, $wHattribs) = $GLOBALS['TBE_STYLES']['skinImg'][$srcKey];
-        } elseif ($GLOBALS['TBE_STYLES']['skinImgAutoCfg']) {
-            // Otherwise, test if auto-detection is enabled:
-            // Search for alternative icon automatically:
-            $fExt = $GLOBALS['TBE_STYLES']['skinImgAutoCfg']['forceFileExtension'];
-            $scaleFactor = $GLOBALS['TBE_STYLES']['skinImgAutoCfg']['scaleFactor'] ?: 1;
-            // Scaling factor
-            $lookUpName = $fExt ? preg_replace('/\\.[[:alnum:]]+$/', '', $srcKey) . '.' . $fExt : $srcKey;
-            // Set filename to look for
-            if ($fExt && !@is_file(($GLOBALS['TBE_STYLES']['skinImgAutoCfg']['absDir'] . $lookUpName))) {
-                // Fallback to original filename if icon with forced extension doesn't exists
-                $lookUpName = $srcKey;
-            }
-            // If file is found:
-            if (@is_file(($GLOBALS['TBE_STYLES']['skinImgAutoCfg']['absDir'] . $lookUpName))) {
-                // If there is a file...
-                $iInfo = @getimagesize(($GLOBALS['TBE_STYLES']['skinImgAutoCfg']['absDir'] . $lookUpName));
-                // Get width/height:
-                // Set $src and $wHattribs:
-                $src = $GLOBALS['TBE_STYLES']['skinImgAutoCfg']['relDir'] . $lookUpName;
-                $wHattribs = 'width="' . round($iInfo[0] * $scaleFactor) . '" height="' . round($iInfo[1] * $scaleFactor) . '"';
-            }
-            // In any case, set currect src / wHattrib - this way we make sure that an entry IS found next time we hit the function,
-            // regardless of whether it points to an alternative icon or just the current.
-            $GLOBALS['TBE_STYLES']['skinImg'][$srcKey] = array($src, $wHattribs);
-        }
-        // Rendering disabled (greyed) icons using _i (inactive) as name suffix ("_d" is already used)
-        $matches = array();
-        $srcBasename = basename($src);
-        if (preg_match('/(.*)_i(\\....)$/', $srcBasename, $matches)) {
-            $temp_path = dirname(PATH_thisScript) . '/';
-            if (!@is_file(($temp_path . $backPath . $src))) {
-                $srcOrg = preg_replace('/_i' . preg_quote($matches[2], '/') . '$/', $matches[2], $src);
-                $src = self::makeIcon($backPath . $srcOrg, 'disabled', 0, false, $temp_path . $backPath . $srcOrg, $srcBasename);
-            }
-        }
-        // Return icon source/wHattributes:
-        $output = '';
-        switch ($outputMode) {
-            case 0:
-                $output = ' src="' . $backPath . $src . '" ' . $wHattribs;
-                break;
-            case 1:
-                $output = $backPath . $src;
-                break;
-            case 2:
-                $output = $wHattribs;
-                break;
-        }
-        $cachedSkinImages[$imageId] = $output;
-
-        return $output;
-    }
-
-    /***********************************
-     *
-     * Other functions
-     *
-     ***********************************/
-    /**
-     * Creates the icon file for the function getIcon()
-     *
-     * @param string $iconfile Original unprocessed Icon file, relative path to PATH_typo3
-     * @param string $mode Mode string, eg. "deleted" or "futuretiming" determining how the icon will look
-     * @param int $user The number of the fe_group record uid if applicable
-     * @param bool $protectSection Flag determines if the protected-section icon should be applied.
-     * @param string $absFile Absolute path to file from which to create the icon.
-     * @param string $iconFileName_stateTagged The filename that this icon should have had, basically [icon base name]_[flags].[extension] - used for part of temporary filename
-     * @return string Filename relative to PATH_typo3
-     * @access private
-     */
-    public static function makeIcon($iconfile, $mode, $user, $protectSection, $absFile, $iconFileName_stateTagged)
-    {
-        $iconFileName = GeneralUtility::shortMD5(($iconfile . '|' . $mode . '|-' . $user . '|' . $protectSection)) . '_' . $iconFileName_stateTagged . '.' . ($GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib_png'] ? 'png' : 'gif');
-        $mainpath = '../typo3temp/Icons/' . $iconFileName;
-        $path = PATH_site . 'typo3temp/Icons/' . $iconFileName;
-        if (file_exists($path)) {
-            // Returns if found in ../typo3temp/Icons/
-            return $mainpath;
-        } else {
-            // Makes icon:
-            if (file_exists($absFile)) {
-                if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib']) {
-                    // Create image pointer, if possible
-                    $im = self::imagecreatefrom($absFile);
-                    if ($im < 0) {
-                        return $iconfile;
-                    }
-                    // Converting to gray scale, dimming the icon:
-                    if ($mode == 'disabled' or $mode != 'futuretiming' && $mode != 'no_icon_found' && !(!$mode && $user)) {
-                        $totalImageColors = ImageColorsTotal($im);
-                        for ($c = 0; $c < $totalImageColors; $c++) {
-                            $cols = ImageColorsForIndex($im, $c);
-                            $newcol = round(($cols['red'] + $cols['green'] + $cols['blue']) / 3);
-                            $lighten = $mode == 'disabled' ? 2.5 : 2;
-                            $newcol = round(255 - (255 - $newcol) / $lighten);
-                            ImageColorSet($im, $c, $newcol, $newcol, $newcol);
-                        }
-                    }
-                    // Applying user icon, if there are access control on the item:
-                    if ($user) {
-                        if ($user < 100) {
-                            // Apply user number only if lower than 100
-                            $black = ImageColorAllocate($im, 0, 0, 0);
-                            imagefilledrectangle($im, 0, 0, $user > 10 ? 9 : 5, 8, $black);
-                            $white = ImageColorAllocate($im, 255, 255, 255);
-                            imagestring($im, 1, 1, 1, $user, $white);
-                        }
-                        $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_group.gif');
-                        if ($ol_im < 0) {
-                            return $iconfile;
-                        }
-                        self::imagecopyresized($im, $ol_im, 0, 0, 0, 0, imagesx($ol_im), imagesy($ol_im), imagesx($ol_im), imagesy($ol_im));
-                    }
-                    // Applying overlay based on mode:
-                    if ($mode) {
-                        unset($ol_im);
-                        switch ($mode) {
-                            case 'deleted':
-                                $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_deleted.gif');
-                                break;
-                            case 'futuretiming':
-                                $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_timing.gif');
-                                break;
-                            case 'timing':
-                                $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_timing.gif');
-                                break;
-                            case 'hiddentiming':
-                                $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_hidden_timing.gif');
-                                break;
-                            case 'no_icon_found':
-                                $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_no_icon_found.gif');
-                                break;
-                            case 'disabled':
-                                // is already greyed - nothing more
-                                $ol_im = 0;
-                                break;
-                            case 'hidden':
-
-                            default:
-                                $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_hidden.gif');
-                        }
-                        if ($ol_im < 0) {
-                            return $iconfile;
-                        }
-                        if ($ol_im) {
-                            self::imagecopyresized($im, $ol_im, 0, 0, 0, 0, imagesx($ol_im), imagesy($ol_im), imagesx($ol_im), imagesy($ol_im));
-                        }
-                    }
-                    // Protect-section icon:
-                    if ($protectSection) {
-                        $ol_im = self::imagecreatefrom($GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/overlay_sub5.gif');
-                        if ($ol_im < 0) {
-                            return $iconfile;
-                        }
-                        self::imagecopyresized($im, $ol_im, 0, 0, 0, 0, imagesx($ol_im), imagesy($ol_im), imagesx($ol_im), imagesy($ol_im));
-                    }
-                    // Create the image as file, destroy GD image and return:
-                    $targetDirectory = dirname($path);
-                    if (!@is_dir($targetDirectory)) {
-                        GeneralUtility::mkdir($targetDirectory);
-                    }
-                    @self::imagemake($im, $path);
-                    GraphicalFunctions::gifCompress($path, 'IM');
-                    ImageDestroy($im);
-
-                    return $mainpath;
-                } else {
-                    return $iconfile;
-                }
-            } else {
-                return $GLOBALS['BACK_PATH'] . 'typo3/sysext/backend/Resources/Public/Images/Overlay/default.gif';
-            }
-        }
-    }
-
-    /**
-     * The necessity of using this function for combining two images if GD is version 2 is that
-     * GD2 cannot manage to combine two indexed-color images without totally spoiling everything.
-     * In class \TYPO3\CMS\Core\Imaging\GraphicalFunctions this was solved by combining the images
-     * onto a first created true color image.
-     * However it has turned out that this method will not work if the indexed png-files contains transparency.
-     * So I had to turn my attention to ImageMagick - my 'enemy of death'.
-     * And so it happened - ImageMagick is now used to combine my two indexed-color images with transparency. And that works.
-     * Of course it works only if ImageMagick is able to create valid png-images - which you cannot be sure of with older versions (still 5+)
-     * The only drawback is (apparently) that IM creates true-color png's. The transparency of these will not be shown by MSIE on windows at this time (although it's straight 0%/100% transparency!) and the file size may be larger.
-     *
-     * @param resource $destinationImage Destination image
-     * @param resource $sourceImage Source image
-     * @param int $destinationX Destination x-coordinate
-     * @param int $destinationY Destination y-coordinate
-     * @param int $sourceX Source x-coordinate
-     * @param int $sourceY Source y-coordinate
-     * @param int $destinationWidth Destination width
-     * @param int $destinationHeight Destination height
-     * @param int $sourceWidth Source width
-     * @param int $sourceHeight Source height
-     * @return void
-     * @access private
-     * @see \TYPO3\CMS\Core\Imaging\GraphicalFunctions::imagecopyresized()
-     */
-    public static function imagecopyresized(&$destinationImage, $sourceImage, $destinationX, $destinationY, $sourceX, $sourceY, $destinationWidth, $destinationHeight, $sourceWidth, $sourceHeight)
-    {
-        imagecopyresized($destinationImage, $sourceImage, $destinationX, $destinationY, $sourceX, $sourceY, $destinationWidth, $destinationHeight, $sourceWidth, $sourceHeight);
-    }
-
-    /**
-     * Create new image pointer from input file (either gif/png, in case the wrong format it is converted by \TYPO3\CMS\Core\Imaging\GraphicalFunctions::readPngGif())
-     *
-     * @param string $file Absolute filename of the image file from which to start the icon creation.
-     * @return resource|int If success, image pointer, otherwise -1
-     * @access private
-     * @see \TYPO3\CMS\Core\Imaging\GraphicalFunctions::readPngGif
-     */
-    public static function imagecreatefrom($file)
-    {
-        $file = GraphicalFunctions::readPngGif($file, $GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib_png']);
-        if (!$file) {
-            return -1;
-        }
-
-        return $GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib_png'] ? imagecreatefrompng($file) : imagecreatefromgif($file);
-    }
-
-    /**
-     * Write the icon in $im pointer to $path
-     *
-     * @param resource $im Pointer to GDlib image resource
-     * @param string $path Absolute path to the filename in which to write the icon.
-     * @return void
-     * @access private
-     */
-    public static function imagemake($im, $path)
-    {
-        if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib_png']) {
-            @ImagePng($im, $path);
-        } else {
-            @ImageGif($im, $path);
-        }
-        if (@is_file($path)) {
-            GeneralUtility::fixPermissions($path);
-        }
-    }
-
-    /**********************************************
-     * SPRITE ICON API
-     *
-     * The Sprite Icon API helps you to quickly get the HTML for any icon you want
-     * this is typically wrapped in a <span> tag with corresponding CSS classes that
-     * will be responsible for the
-     *
-     * There are four ways to use this API:
-     *
-     * 1) for any given TCA record
-     *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', $row);
-     *
-     * 2) for any given File of Folder object
-     *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForResource($fileOrFolderObject);
-     *
-     * 3) for any given file
-     *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForFile('myimage.png');
-     *
-     * 4) for any other icon you know the name
-     *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-document-open');
-     *
-     **********************************************/
-    /**
-     * This generic method is used throughout the TYPO3 Backend to show icons
-     * in any variation which are not bound to any resource object (see getSpriteIconForResource)
-     * or database record (see getSpriteIconForRecord)
-     *
-     * Generates a HTML tag with proper CSS classes. The TYPO3 skin has
-     * defined these CSS classes already to have a pre-defined background image,
-     * and the correct background-position to show the necessary icon.
-     *
-     * If no options or overlays are given, the icon will be cached in
-     * $spriteIconCache.
-     *
-     * @param string $iconName The name of the icon to fetch
-     * @param array $options An associative array with additional options and attributes for the tag. by default, the key is the name of the attribute, and the value is the parameter string that is set. However, there are some additional special reserved keywords that can be used as keys: "html" (which is the HTML that will be inside the icon HTML tag), "tagName" (which is an alternative tagName than "span"), and "class" (additional class names that will be merged with the sprite icon CSS classes)
-     * @param array $overlays An associative array with the icon-name as key, and the options for this overlay as an array again (see the parameter $options again)
-     * @return string The full HTML tag (usually a <span>)
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8, use IconFactory->getIcon instead
-     * @access public
-     */
-    public static function getSpriteIcon($iconName, array $options = array(), array $overlays = array())
-    {
-        GeneralUtility::logDeprecatedFunction();
-        // Check if icon can be cached and return cached version if present
-        if (empty($options) && empty($overlays)) {
-            if (isset(static::$spriteIconCache[$iconName])) {
-                return static::$spriteIconCache[$iconName];
-            }
-            $iconIsCacheable = true;
-        } else {
-            $iconIsCacheable = false;
-        }
-
-        $innerHtml = isset($options['html']) ? $options['html'] : null;
-        $tagName = isset($options['tagName']) ? $options['tagName'] : null;
-
-        // Deal with the overlays
-        foreach ($overlays as $overlayIconName => $overlayOptions) {
-            $overlayOptions['html'] = $innerHtml;
-            $overlayOptions['class'] = (isset($overlayOptions['class']) ? $overlayOptions['class'] . ' ' : '') . 't3-icon-overlay';
-            $innerHtml = self::getSpriteIcon($overlayIconName, $overlayOptions);
-        }
-
-        $availableIcons = isset($GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'])
-            ? (array)$GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable']
-            : array();
-        if ($iconName !== 'empty-empty' && !in_array($iconName, $availableIcons, true)) {
-            $iconName = 'status-status-icon-missing';
-        }
-
-        // Create the CSS class
-        $options['class'] = self::getSpriteIconClasses($iconName) . (isset($options['class']) ? ' ' . $options['class'] : '');
-        unset($options['html'], $options['tagName']);
-        $spriteHtml = self::buildSpriteHtmlIconTag($options, $innerHtml, $tagName);
-
-        // Store result in cache if possible
-        if ($iconIsCacheable) {
-            static::$spriteIconCache[$iconName] = $spriteHtml;
-        }
-
-        return $spriteHtml;
-    }
-
-    /**
-     * This method is used throughout the TYPO3 Backend to show icons for a file type
-     *
-     * Generates a HTML tag with proper CSS classes. The TYPO3 skin has defined these CSS classes
-     * already to have a pre-defined background image, and the correct background-position to show
-     * the necessary icon.
-     *
-     * @param string $fileExtension The name of the icon to fetch, can be a file extension, full file path or one of the special keywords "folder" or "mount
-     * @param array $options not used anymore
-     * @return string The full HTML tag
-     * @access public
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8, use IconFactory::getIconForFile directly
-     */
-    public static function getSpriteIconForFile($fileExtension, array $options = null)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($options !== null) {
-            GeneralUtility::deprecationLog('The parameter $options of IconUtility::getSpriteIconForFile is not used anymore');
-        }
-        $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-
-        return $iconFactory->getIconForFileExtension($fileExtension)->render();
-    }
-
-    /**
-     * Generates the spriteicon css classes name for a given path or fileExtension
-     * usually called from getSpriteIconForFile or ExtJs Provider
-     *
-     * @param string $fileExtension FileExtension can be jpg, gif etc, but also be 'mount' or 'folder', but can also be a full path which will be resolved then
-     * @return string The string of the CSS class, see \TYPO3\CMS\Backend\Utility\IconUtility::$fileSpriteIconNames
-     * @access private
-     */
-    public static function mapFileExtensionToSpriteIconClass($fileExtension)
-    {
-        return self::getSpriteIconClasses(self::mapFileExtensionToSpriteIconName($fileExtension));
-    }
-
-    /**
-     * Generates the spriteicon name for a given path or fileExtension
-     * usually called from mapFileExtensionToSpriteIconClass and tceforms
-     *
-     * @param string $fileExtension FileExtension can be jpg, gif etc, but also be 'mount' or 'folder', but can also be a full path which will be resolved then
-     * @return string The string of the CSS class, see \TYPO3\CMS\Backend\Utility\IconUtility::$fileSpriteIconNames
-     * @access private
-     */
-    public static function mapFileExtensionToSpriteIconName($fileExtension)
-    {
-        // If the file is a whole file with name etc (mainly, if it has a "." or a "/"),
-        // then it is checked whether it is a valid directory
-        if (strpos($fileExtension, '.') !== false || strpos($fileExtension, '/') !== false) {
-            // Check if it is a directory
-            $filePath = dirname(GeneralUtility::getIndpEnv('SCRIPT_FILENAME')) . '/' . $GLOBALS['BACK_PATH'] . $fileExtension;
-            $path = GeneralUtility::resolveBackPath($filePath);
-            if (is_dir($path) || substr($fileExtension, -1) === '/' || substr($fileExtension, -1) === '\\') {
-                $fileExtension = 'folder';
-            } else {
-                if (($pos = strrpos($fileExtension, '.')) !== false) {
-                    $fileExtension = strtolower(substr($fileExtension, $pos + 1));
-                } else {
-                    $fileExtension = 'default';
-                }
-            }
-        }
-        // If the file extension is not valid
-        // then use the default one
-        if (!isset(self::$fileSpriteIconNames[$fileExtension])) {
-            $fileExtension = 'default';
-        }
-        $iconName = self::$fileSpriteIconNames[$fileExtension];
-
-        return $iconName;
-    }
-
-    /**
-     * This method is used throughout the TYPO3 Backend to show icons for a DB record
-     *
-     * Generates a HTML tag with proper CSS classes. The TYPO3 skin has defined these CSS classes
-     * already to have a pre-defined background image, and the correct background-position to show
-     * the necessary icon.
-     *
-     * @param string $table The TCA table name
-     * @param array $row The DB record of the TCA table
-     * @param array $options not used anymore
-     * @return string The full HTML tag (usually a <span>)
-     * @access public
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function getSpriteIconForRecord($table, array $row, array $options = null)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($options !== null) {
-            GeneralUtility::deprecationLog('The parameter $options of IconUtility::getSpriteIconForRecord is not used anymore');
-        }
-        $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-
-        return $iconFactory->getIconForRecord($table, $row, Icon::SIZE_SMALL)->render();
-    }
-
-    /**
-     * This method is used throughout the TYPO3 Backend to show icons for files and folders
-     *
-     * The method takes care of the translation of file extension to proper icon and for folders
-     * it will return the icon depending on the role of the folder.
-     *
-     * If the given resource is a folder there are some additional options that can be used:
-     *  - mount-root => TRUE (to indicate this is the root of a mount)
-     *  - folder-open => TRUE (to indicate that the folder is opened in the file tree)
-     *
-     * There is a hook in place to manipulate the icon name and overlays.
-     *
-     * @param \TYPO3\CMS\Core\Resource\ResourceInterface $resource
-     * @param array $options An associative array with additional options and attributes for the tag. See self::getSpriteIcon()
-     * @param array $overlays not used anymore
-     * @return string
-     * @throws \UnexpectedValueException
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function getSpriteIconForResource(\TYPO3\CMS\Core\Resource\ResourceInterface $resource, array $options = array(), array $overlays = null)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        if ($overlays !== null) {
-            GeneralUtility::deprecationLog('The parameter $overlays of IconUtility::getSpriteIconForResource is not used anymore');
-        }
-        $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-
-        return $iconFactory->getIconForResource($resource, Icon::SIZE_SMALL, null, $options)->render();
-    }
-
-    /**
-     * this helper functions looks up the column that is used for the type of
-     * the chosen TCA table. And then fetches the corresponding class
-     * based on the chosen iconsprite class in this TCA
-     * The TCA looks up
-     * - [ctrl][typeicon_column]
-     * -
-     * This method solely takes care of the type of this record, not any
-     * statuses, used for overlays.
-     * You should not use this directly besides if you need classes for ExtJS iconCls.
-     *
-     * see ext:core/Configuration/TCA/pages.php for an example with the TCA table "pages"
-     *
-     * @param string $table The TCA table
-     * @param array $row The selected record
-     * @return string The CSS class for the sprite icon of that DB record
-     * @access private
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public static function mapRecordTypeToSpriteIconClass($table, array $row)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        return self::getSpriteIconClasses(self::mapRecordTypeToSpriteIconName($table, $row));
-    }
-
-    /**
-     * this helper functions looks up the column that is used for the type of
-     * the chosen TCA table. And then fetches the corresponding iconname
-     * based on the chosen iconsprite class in this TCA
-     * The TCA looks up
-     * - [ctrl][typeicon_column]
-     * -
-     * This method solely takes care of the type of this record, not any
-     * statuses, used for overlays.
-     * You should not use this directly besides if you need it in tceforms/core classes
-     *
-     * see ext:core/Configuration/TCA/pages.php for an example with the TCA table "pages"
-     *
-     * @param string $table The TCA table
-     * @param array $row The selected record
-     * @return string The CSS class for the sprite icon of that DB record
-     * @access private
-     */
-    public static function mapRecordTypeToSpriteIconName($table, array $row)
-    {
-        $recordType = array();
-        $ref = null;
-        if (isset($GLOBALS['TCA'][$table]['ctrl']['typeicon_column'])) {
-            $column = $GLOBALS['TCA'][$table]['ctrl']['typeicon_column'];
-            if (isset($row[$column])) {
-                $recordType[1] = $row[$column];
-            } else {
-                $recordType[1] = 'default';
-            }
-            // Workaround to give nav_hide pages a complete different icon
-            // Although it's not a separate doctype
-            // and to give root-pages an own icon
-            if ($table === 'pages') {
-                if ($row['nav_hide']) {
-                    $recordType[2] = $recordType[1] . '-hideinmenu';
-                }
-                if ($row['is_siteroot']) {
-                    $recordType[3] = $recordType[1] . '-root';
-                }
-                if ($row['module']) {
-                    $recordType[4] = 'contains-' . $row['module'];
-                }
-                if ((int)$row['content_from_pid'] > 0) {
-                    $recordType[4] = (int)$row['nav_hide'] === 0 ? 'page-contentFromPid' : 'page-contentFromPid-hideinmenu';
-                }
-            }
-            if (is_array($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes'])) {
-                foreach ($recordType as $key => $type) {
-                    if (isset($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes'][$type])) {
-                        $recordType[$key] = $GLOBALS['TCA'][$table]['ctrl']['typeicon_classes'][$type];
-                    } else {
-                        unset($recordType[$key]);
-                    }
-                }
-                $recordType[0] = $GLOBALS['TCA'][$table]['ctrl']['typeicon_classes']['default'];
-                if (isset($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes']['mask'])) {
-                    $recordType[5] = str_replace('###TYPE###', $row[$column], $GLOBALS['TCA'][$table]['ctrl']['typeicon_classes']['mask']);
-                }
-                if (isset($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes']['userFunc'])) {
-                    $parameters = array('row' => $row);
-                    $recordType[6] = GeneralUtility::callUserFunction($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes']['userFunc'], $parameters, $ref);
-                }
-            } else {
-                foreach ($recordType as &$type) {
-                    $type = 'tcarecords-' . $table . '-' . $type;
-                }
-                unset($type);
-                $recordType[0] = 'tcarecords-' . $table . '-default';
-            }
-        } else {
-            if (is_array($GLOBALS['TCA'][$table]['ctrl']['typeicon_classes'])) {
-                $recordType[0] = $GLOBALS['TCA'][$table]['ctrl']['typeicon_classes']['default'];
-            } else {
-                $recordType[0] = 'tcarecords-' . $table . '-default';
-            }
-        }
-        krsort($recordType);
-        if (is_array($GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'])) {
-            foreach ($recordType as $iconName) {
-                if (in_array($iconName, $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'])) {
-                    return $iconName;
-                }
-            }
-        }
-
-        return 'status-status-icon-missing';
-    }
-
-    /**
-     * generic method to create the final CSS classes based on the sprite icon name
-     * with the base class and splits the name into parts
-     * is usually called by the methods that are responsible for fetching the names
-     * out of the file name, or the record type
-     *
-     * @param string $iconName Iconname like 'actions-document-new'
-     * @return string A list of all CSS classes needed for the HTML tag
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    public static function getSpriteIconClasses($iconName)
-    {
-        GeneralUtility::logDeprecatedFunction();
-        $cssClasses = ($baseCssClass = 't3-icon');
-        $parts = explode('-', $iconName);
-        if (count($parts) > 1) {
-            // Will be something like "t3-icon-actions"
-            $cssClasses .= ' ' . ($baseCssClass . '-' . $parts[0]);
-            // Will be something like "t3-icon-actions-document"
-            $cssClasses .= ' ' . ($baseCssClass . '-' . $parts[0] . '-' . $parts[1]);
-            // Will be something like "t3-icon-document-new"
-            $cssClasses .= ' ' . ($baseCssClass . '-' . substr($iconName, (strlen($parts[0]) + 1)));
-        }
-
-        return $cssClasses;
-    }
-
-    /**
-     * low level function that generates the HTML tag for the sprite icon
-     * is usually called by the three API classes (getSpriteIcon, getSpriteIconForFile, getSpriteIconForRecord)
-     * it does not care about classes or anything else, but just plainly builds the HTML tag
-     *
-     * @param array $tagAttributes An associative array of additional tagAttributes for the HTML tag
-     * @param string $innerHtml The content within the tag, a "&nbsp;" by default
-     * @param string $tagName The name of the HTML element that should be used (span by default)
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     * @return string The sprite html icon tag
-     */
-    protected static function buildSpriteHtmlIconTag(array $tagAttributes, $innerHtml = null, $tagName = null)
-    {
-        GeneralUtility::logDeprecatedFunction();
-
-        $innerHtml = $innerHtml === null ? ' ' : $innerHtml;
-        $tagName = $tagName === null ? 'span' : $tagName;
-        $attributes = '';
-        foreach ($tagAttributes as $attribute => $value) {
-            $attributes .= ' ' . htmlspecialchars($attribute) . '="' . htmlspecialchars($value) . '"';
-        }
-
-        return '<' . $tagName . $attributes . '>' . $innerHtml . '</' . $tagName . '>';
-    }
-}
diff --git a/typo3/sysext/backend/Classes/Utility/IconUtilityOverrideResourceIconHookInterface.php b/typo3/sysext/backend/Classes/Utility/IconUtilityOverrideResourceIconHookInterface.php
deleted file mode 100644 (file)
index e46ada1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Utility;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Interface for classes which hook into IconUtility::getSpriteIconForResource()
- *
- * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
- */
-interface IconUtilityOverrideResourceIconHookInterface
-{
-    /**
-     * Influence the choice of icon and overlays for a ResourceIcon
-     *
-     * The $iconName, $options and $overlays are passed as references
-     * in order to be modified within the hook
-     *
-     * @param \TYPO3\CMS\Core\Resource\ResourceInterface $resource
-     * @param string $iconName
-     * @param array $options
-     * @param array $overlays
-     * @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 8
-     */
-    public function overrideResourceIcon(\TYPO3\CMS\Core\Resource\ResourceInterface $resource, &$iconName, array &$options, array &$overlays);
-}
diff --git a/typo3/sysext/backend/Tests/Unit/Sprite/SpriteManagerTest.php b/typo3/sysext/backend/Tests/Unit/Sprite/SpriteManagerTest.php
deleted file mode 100644 (file)
index 448a546..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Tests\Unit\Sprite;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Sprite\SpriteManager;
-
-/**
- * Testcase for TYPO3\CMS\Backend\Sprite\SpriteManager
- */
-class SpriteManagerTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
-{
-    //////////////////////////////////////////
-    // Tests concerning addTcaTypeIcon
-    //////////////////////////////////////////
-    /**
-     * @test
-     */
-    public function addTcaTypeIconWithEmptyValueSetsArrayKey()
-    {
-        SpriteManager::addTcaTypeIcon('', '', '');
-        $this->assertArrayHasKey('tcarecords--', $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']);
-    }
-
-    /**
-     * @test
-     */
-    public function addTcaTypeIconWithEmptyValueSetsEmptyArrayValue()
-    {
-        SpriteManager::addTcaTypeIcon('', '', '');
-        $this->assertEquals('', $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']['tcarecords--']);
-    }
-
-    /**
-     * @test
-     */
-    public function addTcaTypeIconWithTableAndTypeSetsArrayKey()
-    {
-        $table = 'tt_content';
-        $type = 'contains-news';
-        SpriteManager::addTcaTypeIcon($table, $type, '');
-        $this->assertArrayHasKey('tcarecords-' . $table . '-' . $type, $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']);
-    }
-
-    /**
-     * @test
-     */
-    public function addTcaTypeIconWithTableAndTypeAndValueSetsArrayValue()
-    {
-        $imagePath = 'path/to/my-icon.png';
-        $table = 'tt_content';
-        $type = 'contains-news';
-        SpriteManager::addTcaTypeIcon($table, $type, $imagePath);
-        $this->assertEquals($imagePath, $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']['tcarecords-' . $table . '-' . $type]);
-    }
-
-    //////////////////////////////////////////
-    // Tests concerning addSingleIcons
-    //////////////////////////////////////////
-    /**
-     * @test
-     */
-    public function addSingleIconsWithEmptyValueSetsArrayKey()
-    {
-        $type = '';
-        $imagePath = 'path/to/my-icon.png';
-        $icons = array($type => $imagePath);
-        $extensionKey = 'dummy';
-        SpriteManager::addSingleIcons($icons, $extensionKey);
-        $this->assertArrayHasKey('extensions-' . $extensionKey . '-' . $type, $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']);
-    }
-
-    /**
-     * @test
-     */
-    public function addSingleIconsWithEmptyValueSetsImagePathValue()
-    {
-        $type = '';
-        $imagePath = 'path/to/my-icon.png';
-        $icons = array($type => $imagePath);
-        $extensionKey = 'dummy';
-        SpriteManager::addSingleIcons($icons, $extensionKey);
-        $this->assertEquals($imagePath, $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']['extensions-' . $extensionKey . '-' . $type]);
-    }
-
-    /**
-     * @test
-     */
-    public function addSingleIconsWithNormalValueSetsArrayKey()
-    {
-        $type = 'contains-news';
-        $imagePath = 'path/to/my-icon.png';
-        $icons = array($type => $imagePath);
-        $extensionKey = 'dummy';
-        SpriteManager::addSingleIcons($icons, $extensionKey);
-        $this->assertArrayHasKey('extensions-' . $extensionKey . '-' . $type, $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']);
-    }
-
-    /**
-     * @test
-     */
-    public function addSingleIconsWithNormalValueSetsImagePathValue()
-    {
-        $type = 'contains-news';
-        $imagePath = 'path/to/my-icon.png';
-        $icons = array($type => $imagePath);
-        $extensionKey = 'dummy';
-        SpriteManager::addSingleIcons($icons, $extensionKey);
-        $this->assertEquals($imagePath, $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons']['extensions-' . $extensionKey . '-' . $type]);
-    }
-}
diff --git a/typo3/sysext/backend/Tests/Unit/Utility/Fixtures/IconUtilityFixture.php b/typo3/sysext/backend/Tests/Unit/Utility/Fixtures/IconUtilityFixture.php
deleted file mode 100644 (file)
index c6fcef7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Tests\Unit\Utility\Fixtures;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * IconUtility fixture
- */
-class IconUtilityFixture extends \TYPO3\CMS\Backend\Utility\IconUtility
-{
-    /**
-     * @var array
-     */
-    protected static $spriteIconCache = array();
-}
diff --git a/typo3/sysext/backend/Tests/Unit/Utility/IconUtilityTest.php b/typo3/sysext/backend/Tests/Unit/Utility/IconUtilityTest.php
deleted file mode 100644 (file)
index 3934cf1..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-namespace TYPO3\CMS\Backend\Tests\Unit\Utility;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Tests\Unit\Utility\Fixtures\IconUtilityFixture;
-
-/**
- * Test case
- */
-class IconUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
-{
-    /**
-     * @var array Simulate a tt_content record
-     */
-    protected $mockRecord = array(
-        'header' => 'dummy content header',
-        'uid' => '1',
-        'pid' => '1',
-        'image' => '',
-        'hidden' => '0',
-        'starttime' => '0',
-        'endtime' => '0',
-        'fe_group' => '',
-        'CType' => 'text',
-        't3ver_id' => '0',
-        't3ver_state' => '0',
-        't3ver_wsid' => '0',
-        'sys_language_uid' => '0',
-        'l18n_parent' => '0',
-        'subheader' => '',
-        'bodytext' => '',
-    );
-
-    /**
-     * Create folder object to use as test subject
-     *
-     * @param string $identifier
-     * @return \TYPO3\CMS\Core\Resource\Folder
-     */
-    protected function getTestSubjectFolderObject($identifier)
-    {
-        $mockedStorage = $this->getMock(\TYPO3\CMS\Core\Resource\ResourceStorage::class, array(), array(), '', false);
-        $mockedStorage->expects($this->any())->method('getRootLevelFolder')->will($this->returnValue(
-            new \TYPO3\CMS\Core\Resource\Folder($mockedStorage, '/', '/')
-        ));
-        $mockedStorage->expects($this->any())->method('checkFolderActionPermission')->will($this->returnValue(true));
-        $mockedStorage->expects($this->any())->method('isBrowsable')->will($this->returnValue(true));
-        return new \TYPO3\CMS\Core\Resource\Folder($mockedStorage, $identifier, $identifier);
-    }
-
-    /**
-     * Create file object to use as test subject
-     *
-     * @param $extension
-     * @return \TYPO3\CMS\Core\Resource\File
-     */
-    protected function getTestSubjectFileObject($extension)
-    {
-        $mockedStorage = $this->getMock(\TYPO3\CMS\Core\Resource\ResourceStorage::class, array(), array(), '', false);
-        $mockedFile = $this->getMock(\TYPO3\CMS\Core\Resource\File::class, array(), array(array(), $mockedStorage));
-        $mockedFile->expects($this->once())->method('getExtension')->will($this->returnValue($extension));
-        return $mockedFile;
-    }
-
-    //////////////////////////////////////////
-    // Tests concerning imagemake
-    //////////////////////////////////////////
-    /**
-     * @test
-     */
-    public function imagemakeFixesPermissionsOnNewFiles()
-    {
-        if (TYPO3_OS == 'WIN') {
-            $this->markTestSkipped('imagemakeFixesPermissionsOnNewFiles() test not available on Windows.');
-        }
-        $fixtureGifFile = __DIR__ . '/Fixtures/clear.gif';
-        // Create image resource, determine target filename, fake target permission, run method and clean up
-        $fixtureGifRessource = imagecreatefromgif($fixtureGifFile);
-        $targetFilename = PATH_site . 'typo3temp/' . $this->getUniqueId('test_') . '.gif';
-        $this->testFilesToDelete[] = $targetFilename;
-        $GLOBALS['TYPO3_CONF_VARS']['SYS']['fileCreateMask'] = '0777';
-        IconUtilityFixture::imagemake($fixtureGifRessource, $targetFilename);
-        clearstatcache();
-        $resultFilePermissions = substr(decoct(fileperms($targetFilename)), 2);
-        $this->assertEquals($resultFilePermissions, '0777');
-    }
-
-    //////////////////////////////////////////
-    // Tests concerning getSpriteIconClasses
-    //////////////////////////////////////////
-    /**
-     * Tests whether an empty string returns 't3-icon'
-     *
-     * @test
-     */
-    public function getSpriteIconClassesWithEmptyStringReturnsT3Icon()
-    {
-        $this->assertEquals('t3-icon', IconUtilityFixture::getSpriteIconClasses(''));
-    }
-
-    /**
-     * Tests whether one part returns 't3-icon'
-     *
-     * @test
-     */
-    public function getSpriteIconClassesWithOnePartReturnsT3Icon()
-    {
-        $this->assertEquals('t3-icon', IconUtilityFixture::getSpriteIconClasses('actions'));
-    }
-
-    /**
-     * Tests the return of two parts
-     *
-     * @test
-     */
-    public function getSpriteIconClassesWithTwoPartsReturnsT3IconAndCombinedParts()
-    {
-        $result = explode(' ', IconUtilityFixture::getSpriteIconClasses('actions-juggle'));
-        sort($result);
-        $this->assertEquals(array('t3-icon', 't3-icon-actions', 't3-icon-actions-juggle', 't3-icon-juggle'), $result);
-    }
-
-    /**
-     * Tests the return of tree parts
-     *
-     * @test
-     */
-    public function getSpriteIconClassesWithThreePartsReturnsT3IconAndCombinedParts()
-    {
-        $result = explode(' ', IconUtilityFixture::getSpriteIconClasses('actions-juggle-speed'));
-        sort($result);
-        $this->assertEquals(array('t3-icon', 't3-icon-actions', 't3-icon-actions-juggle', 't3-icon-juggle-speed'), $result);
-    }
-
-    /**
-     * Tests the return of four parts
-     *
-     * @test
-     */
-    public function getSpriteIconClassesWithFourPartsReturnsT3IconAndCombinedParts()
-    {
-        $result = explode(' ', IconUtilityFixture::getSpriteIconClasses('actions-juggle-speed-game'));
-        sort($result);
-        $this->assertEquals(array('t3-icon', 't3-icon-actions', 't3-icon-actions-juggle', 't3-icon-juggle-speed-game'), $result);
-    }
-}
index 52bf833..88624b2 100644 (file)
@@ -1026,22 +1026,6 @@ class Bootstrap
     }
 
     /**
-     * Initialize sprite manager
-     *
-     * @return Bootstrap
-     * @internal This is not a public API method, do not use in own extensions
-     * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-     */
-    public function initializeSpriteManager()
-    {
-        // This method is deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-        // This method does not log a deprecation message, because it is used only in the request handlers
-        // and would break icons from IconUtility::getSpriteIcon() if we remove it yet.
-        \TYPO3\CMS\Backend\Sprite\SpriteManager::initialize();
-        return $this;
-    }
-
-    /**
      * Initialize the Routing for the TYPO3 Backend
      * Loads all routes registered inside all packages and stores them inside the Router
      *
index 467e422..1d83888 100644 (file)
@@ -573,7 +573,6 @@ class GraphicalFunctions
      * @param int $srcHeight Source height
      * @return void
      * @access private
-     * @see \TYPO3\CMS\Backend\Utility\IconUtility::imagecopyresized()
      */
     public function imagecopyresized(&$dstImg, $srcImg, $dstX, $dstY, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight)
     {
index ff8c2cb..19ee84f 100644 (file)
@@ -2836,17 +2836,6 @@ class IconRegistry implements \TYPO3\CMS\Core\SingletonInterface
                 }
             }
         }
-        if (!empty($GLOBALS['TBE_STYLES']['spritemanager']['singleIcons'])) {
-            foreach ($GLOBALS['TBE_STYLES']['spritemanager']['singleIcons'] as $iconIdentifier => $iconFile) {
-                if (StringUtility::beginsWith($iconFile, '../typo3conf/ext/')) {
-                    $iconFile = str_replace('../typo3conf/ext/', 'EXT:', $iconFile);
-                }
-                if (StringUtility::beginsWith($iconFile, 'sysext/')) {
-                    $iconFile = str_replace('sysext/', 'EXT:', $iconFile);
-                }
-                $resultArray[$iconIdentifier] = $iconFile;
-            }
-        }
 
         foreach ($resultArray as $iconIdentifier => $iconFilePath) {
             if (StringUtility::endsWith(strtolower($iconFilePath), 'svg')) {
index 5292e46..f5ba25b 100644 (file)
@@ -1045,10 +1045,6 @@ return array(
         'flexformForceCDATA' => 0,                            // Boolean:  If set, will add CDATA to Flexform XML. Some versions of libxml have a bug that causes HTML entities to be stripped from any XML content and this setting will avoid the bug by adding CDATA.
         'explicitConfirmationOfTranslation' => false,        // If set, then the diff-data of localized records is not saved automatically when updated but requires that a translator clicks the special finish_translation/save/close button that becomes available.
         'versionNumberInFilename' => false,                    // <p>Boolean: If TRUE, included CSS and JS files will have the timestamp embedded in the filename, ie. filename.1269312081.js. This will make browsers and proxies reload the files if they change (thus avoiding caching issues). IMPORTANT: this feature requires extra .htaccess rules to work (please refer to _.htaccess or the _.htaccess file from the dummy package)</p><p>If FALSE the filemtime will be appended as a query-string.</p>
-        /**
-         * @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
-         */
-        'spriteIconGenerator_handler' => \TYPO3\CMS\Backend\Sprite\SimpleSpriteHandler::class,        // String: Used to register own/other spriteGenerating Handler, they have to implement the interface \TYPO3\CMS\Backend\Sprite\SpriteIconGeneratorInterface. If set to "\TYPO3\CMS\Backend\Sprite\SpriteBuildingHandler" icons from extensions will automatically merged into sprites.
         'debug' => false,                                    // Boolean: If set, the loginrefresh is disabled and pageRenderer is set to debug mode. Use this to debug the backend only!
         'AJAX' => array(),                                    // array of key-value pairs for a unified use of AJAX calls in the TYPO3 backend. Keys are the unique ajaxIDs where the value will be resolved to call a method in an object. See the AjaxRequestHandler class for more information.
         'toolbarItems' => array(), // Array: Registered toolbar items classes
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-72400-RemovedDeprecatedIconUtilityAndSpriteManager.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-72400-RemovedDeprecatedIconUtilityAndSpriteManager.rst
new file mode 100644 (file)
index 0000000..835a281
--- /dev/null
@@ -0,0 +1,31 @@
+===================================================================
+Breaking: #72400 - Removed deprecated IconUtility and SpriteManager
+===================================================================
+
+Description
+===========
+
+Removed deprecated IconUtility class completely.
+All SpriteManager related code has been removed from the core.
+
+The Install Tool option ``BE/spriteIconGenerator_handler has no effect anymore.
+
+``Bootstrap::initializeSpriteManager()`` has been removed.
+
+
+Impact
+======
+
+Using the static class IconUtility or the SpriteManager will result in a fatal error.
+
+
+Affected Installations
+======================
+
+Instances which use custom calls to one of the above mentioned classes.
+
+
+Migration
+=========
+
+Use the new introduced IconAPI that is available in 7LTS.
index 8788f36..b1f43e5 100644 (file)
@@ -137,309 +137,3 @@ $GLOBALS['TBE_STYLES'] = array(
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('_MOD_web_info', 'EXT:lang/locallang_csh_web_info.xlf');
 // Web > Func
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('_MOD_web_func', 'EXT:lang/locallang_csh_web_func.xlf');
-
-/**
- * Backend sprite icon-names
- */
-$GLOBALS['TBE_STYLES']['spriteIconApi']['coreSpriteImageNames'] = array(
-    'actions-document-close',
-    'actions-document-duplicates-select',
-    'actions-document-edit-access',
-    'actions-document-export-csv',
-    'actions-document-export-t3d',
-    'actions-document-history-open',
-    'actions-document-import-t3d',
-    'actions-document-info',
-    'actions-document-localize',
-    'actions-document-move',
-    'actions-document-new',
-    'actions-document-open',
-    'actions-document-open-read-only',
-    'actions-document-paste-after',
-    'actions-document-paste-into',
-    'actions-document-save',
-    'actions-document-save-cleartranslationcache',
-    'actions-document-save-close',
-    'actions-document-save-new',
-    'actions-document-save-translation',
-    'actions-document-save-view',
-    'actions-document-select',
-    'actions-document-synchronize',
-    'actions-document-view',
-    'actions-edit-add',
-    'actions-edit-copy',
-    'actions-edit-copy-release',
-    'actions-edit-cut',
-    'actions-edit-cut-release',
-    'actions-edit-delete',
-    'actions-edit-download',
-    'actions-edit-hide',
-    'actions-edit-insert-default',
-    'actions-edit-localize-status-high',
-    'actions-edit-localize-status-low',
-    'actions-edit-merge-localization',
-    'actions-edit-pick-date',
-    'actions-edit-rename',
-    'actions-edit-replace',
-    'actions-edit-restore',
-    'actions-edit-undelete-edit',
-    'actions-edit-undo',
-    'actions-edit-unhide',
-    'actions-edit-upload',
-    'actions-input-clear',
-    'actions-insert-record',
-    'actions-insert-reference',
-    'actions-markstate',
-    'actions-message-error-close',
-    'actions-message-information-close',
-    'actions-message-notice-close',
-    'actions-message-ok-close',
-    'actions-message-warning-close',
-    'actions-move-down',
-    'actions-move-left',
-    'actions-move-move',
-    'actions-move-right',
-    'actions-move-to-bottom',
-    'actions-move-to-top',
-    'actions-move-up',
-    'actions-page-move',
-    'actions-page-new',
-    'actions-page-open',
-    'actions-selection-delete',
-    'actions-system-backend-user-emulate',
-    'actions-system-backend-user-switch',
-    'actions-system-cache-clear',
-    'actions-system-cache-clear-impact-high',
-    'actions-system-cache-clear-impact-low',
-    'actions-system-cache-clear-impact-medium',
-    'actions-system-cache-clear-rte',
-    'actions-system-extension-configure',
-    'actions-system-extension-documentation',
-    'actions-system-extension-download',
-    'actions-system-extension-import',
-    'actions-system-extension-install',
-    'actions-system-extension-sqldump',
-    'actions-system-extension-uninstall',
-    'actions-system-extension-update',
-    'actions-system-extension-update-disabled',
-    'actions-system-help-open',
-    'actions-system-list-open',
-    'actions-system-options-view',
-    'actions-system-pagemodule-open',
-    'actions-system-refresh',
-    'actions-system-shortcut-new',
-    'actions-system-tree-search-open',
-    'actions-system-typoscript-documentation',
-    'actions-system-typoscript-documentation-open',
-    'actions-template-new',
-    'actions-unmarkstate',
-    'actions-version-document-remove',
-    'actions-version-page-open',
-    'actions-version-swap-version',
-    'actions-version-swap-workspace',
-    'actions-version-workspace-preview',
-    'actions-version-workspace-sendtostage',
-    'actions-view-go-back',
-    'actions-view-go-down',
-    'actions-view-go-forward',
-    'actions-view-go-up',
-    'actions-view-list-collapse',
-    'actions-view-list-expand',
-    'actions-view-paging-first',
-    'actions-view-paging-first-disabled',
-    'actions-view-paging-last',
-    'actions-view-paging-last-disabled',
-    'actions-view-paging-next',
-    'actions-view-paging-next-disabled',
-    'actions-view-paging-previous',
-    'actions-view-paging-previous-disabled',
-    'actions-view-table-collapse',
-    'actions-view-table-expand',
-    'actions-window-open',
-    'apps-clipboard-images',
-    'apps-clipboard-list',
-    'apps-filetree-folder-add',
-    'apps-filetree-folder-default',
-    'apps-filetree-folder-list',
-    'apps-filetree-folder-locked',
-    'apps-filetree-folder-media',
-    'apps-filetree-folder-news',
-    'apps-filetree-folder-opened',
-    'apps-filetree-folder-recycler',
-    'apps-filetree-folder-temp',
-    'apps-filetree-folder-user',
-    'apps-filetree-mount',
-    'apps-filetree-root',
-    'apps-irre-collapsed',
-    'apps-irre-expanded',
-    'apps-pagetree-backend-user',
-    'apps-pagetree-backend-user-hideinmenu',
-    'apps-pagetree-collapse',
-    'apps-pagetree-drag-copy-above',
-    'apps-pagetree-drag-copy-below',
-    'apps-pagetree-drag-move-above',
-    'apps-pagetree-drag-move-below',
-    'apps-pagetree-drag-move-between',
-    'apps-pagetree-drag-move-into',
-    'apps-pagetree-drag-new-between',
-    'apps-pagetree-drag-new-inside',
-    'apps-pagetree-drag-place-denied',
-    'apps-pagetree-expand',
-    'apps-pagetree-folder-contains-approve',
-    'apps-pagetree-folder-contains-board',
-    'apps-pagetree-folder-contains-fe_users',
-    'apps-pagetree-folder-contains-news',
-    'apps-pagetree-folder-contains-shop',
-    'apps-pagetree-folder-default',
-    'apps-pagetree-page-advanced',
-    'apps-pagetree-page-advanced-hideinmenu',
-    'apps-pagetree-page-advanced-root',
-    'apps-pagetree-page-backend-users',
-    'apps-pagetree-page-backend-users-hideinmenu',
-    'apps-pagetree-page-backend-users-root',
-    'apps-pagetree-page-content-from-page',
-    'apps-pagetree-page-content-from-page-root',
-    'apps-pagetree-page-content-from-page-hideinmenu',
-    'apps-pagetree-page-default',
-    'apps-pagetree-page-domain',
-    'apps-pagetree-page-frontend-user',
-    'apps-pagetree-page-frontend-user-hideinmenu',
-    'apps-pagetree-page-frontend-user-root',
-    'apps-pagetree-page-frontend-users',
-    'apps-pagetree-page-frontend-users-hideinmenu',
-    'apps-pagetree-page-frontend-users-root',
-    'apps-pagetree-page-mountpoint',
-    'apps-pagetree-page-mountpoint-hideinmenu',
-    'apps-pagetree-page-mountpoint-root',
-    'apps-pagetree-page-no-icon-found',
-    'apps-pagetree-page-no-icon-found-hideinmenu',
-    'apps-pagetree-page-no-icon-found-root',
-    'apps-pagetree-page-not-in-menu',
-    'apps-pagetree-page-recycler',
-    'apps-pagetree-page-shortcut',
-    'apps-pagetree-page-shortcut-external',
-    'apps-pagetree-page-shortcut-external-hideinmenu',
-    'apps-pagetree-page-shortcut-external-root',
-    'apps-pagetree-page-shortcut-hideinmenu',
-    'apps-pagetree-page-shortcut-root',
-    'apps-pagetree-root',
-    'apps-pagetree-spacer',
-    'apps-tcatree-select-recursive',
-    'apps-toolbar-menu-actions',
-    'apps-toolbar-menu-cache',
-    'apps-toolbar-menu-opendocs',
-    'apps-toolbar-menu-search',
-    'apps-toolbar-menu-shortcut',
-    'apps-toolbar-menu-workspace',
-    'mimetypes-compressed',
-    'mimetypes-excel',
-    'mimetypes-media-audio',
-    'mimetypes-media-flash',
-    'mimetypes-media-image',
-    'mimetypes-media-video',
-    'mimetypes-other-other',
-    'mimetypes-pdf',
-    'mimetypes-powerpoint',
-    'mimetypes-text-css',
-    'mimetypes-text-csv',
-    'mimetypes-text-html',
-    'mimetypes-text-js',
-    'mimetypes-text-php',
-    'mimetypes-text-text',
-    'mimetypes-word',
-    'mimetypes-x-content-divider',
-    'mimetypes-x-content-domain',
-    'mimetypes-x-content-form',
-    'mimetypes-x-content-form-search',
-    'mimetypes-x-content-header',
-    'mimetypes-x-content-html',
-    'mimetypes-x-content-image',
-    'mimetypes-x-content-link',
-    'mimetypes-x-content-list-bullets',
-    'mimetypes-x-content-list-files',
-    'mimetypes-x-content-login',
-    'mimetypes-x-content-menu',
-    'mimetypes-x-content-multimedia',
-    'mimetypes-x-content-page-language-overlay',
-    'mimetypes-x-content-plugin',
-    'mimetypes-x-content-script',
-    'mimetypes-x-content-table',
-    'mimetypes-x-content-template',
-    'mimetypes-x-content-template-extension',
-    'mimetypes-x-content-template-static',
-    'mimetypes-x-content-text',
-    'mimetypes-x-content-text-picture',
-    'mimetypes-x-content-text-media',
-    'mimetypes-x-sys_action',
-    'mimetypes-x-sys_category',
-    'mimetypes-x-sys_language',
-    'mimetypes-x-sys_news',
-    'mimetypes-x-sys_workspace',
-    'mimetypes-x_belayout',
-    'status-dialog-error',
-    'status-dialog-information',
-    'status-dialog-notification',
-    'status-dialog-ok',
-    'status-dialog-warning',
-    'status-overlay-access-restricted',
-    'status-overlay-deleted',
-    'status-overlay-hidden',
-    'status-overlay-icon-missing',
-    'status-overlay-includes-subpages',
-    'status-overlay-locked',
-    'status-overlay-scheduled',
-    'status-overlay-scheduled-future-end',
-    'status-overlay-translated',
-    'status-status-checked',
-    'status-status-current',
-    'status-status-edit-read-only',
-    'status-status-icon-missing',
-    'status-status-locked',
-    'status-status-permission-denied',
-    'status-status-permission-granted',
-    'status-status-readonly',
-    'status-status-reference-hard',
-    'status-status-reference-soft',
-    'status-status-sorting-asc',
-    'status-status-sorting-desc',
-    'status-status-sorting-light-asc',
-    'status-status-sorting-light-desc',
-    'status-status-workspace-draft',
-    'status-system-extension-required',
-    'status-user-admin',
-    'status-user-backend',
-    'status-user-frontend',
-    'status-user-group-backend',
-    'status-user-group-frontend',
-    'status-warning-in-use',
-    'status-warning-lock',
-    'module-web',
-    'module-file',
-    'module-system',
-    'module-tools',
-    'module-user',
-    'module-help'
-);
-
-$GLOBALS['TBE_STYLES']['spriteIconApi']['spriteIconRecordOverlayPriorities'] = array(
-    'deleted',
-    'hidden',
-    'starttime',
-    'endtime',
-    'futureendtime',
-    'fe_group',
-    'protectedSection'
-);
-
-$GLOBALS['TBE_STYLES']['spriteIconApi']['spriteIconRecordOverlayNames'] = array(
-    'hidden' => 'status-overlay-hidden',
-    'fe_group' => 'status-overlay-access-restricted',
-    'starttime' => 'status-overlay-scheduled',
-    'endtime' => 'status-overlay-scheduled',
-    'futureendtime' => 'status-overlay-scheduled-future-end',
-    'readonly' => 'status-overlay-locked',
-    'deleted' => 'status-overlay-deleted',
-    'missing' => 'status-overlay-missing',
-    'translated' => 'status-overlay-translated',
-    'protectedSection' => 'status-overlay-includes-subpages'
-);
index 2fbaae0..4293f1c 100644 (file)
@@ -162,9 +162,7 @@ class RequestHandler implements RequestHandlerInterface
         if ($this->controller->isBackendUserLoggedIn()) {
             $GLOBALS['BE_USER']->initializeFrontendEdit();
             if ($GLOBALS['BE_USER']->adminPanel instanceof AdminPanelView) {
-                $this->bootstrap
-                    ->initializeLanguageObject()
-                    ->initializeSpriteManager();
+                $this->bootstrap->initializeLanguageObject();
             }
             if ($GLOBALS['BE_USER']->frontendEdit instanceof FrontendEditingController) {
                 $GLOBALS['BE_USER']->frontendEdit->initConfigOptions();
index b592a95..31b19e6 100644 (file)
@@ -43,8 +43,6 @@ abstract class AbstractExportTestCase extends \TYPO3\CMS\Core\Tests\FunctionalTe
         parent::setUp();
 
         $this->setUpBackendUserFromFixture(1);
-        // Needed to avoid PHP Warnings
-        $GLOBALS['TBE_STYLES']['spriteIconApi']['iconsAvailable'] = array();
 
         \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->initializeLanguageObject();
 
index f44c9e8..237970b 100644 (file)
@@ -128,11 +128,6 @@ class DefaultFactory
                         'targetPermission' => $directoryPermission,
                     ),
                     array(
-                        'name' => 'sprites',
-                        'type' => DirectoryNode::class,
-                        'targetPermission' => $directoryPermission,
-                    ),
-                    array(
                         'name' => 'temp',
                         'type' => DirectoryNode::class,
                         'targetPermission' => $directoryPermission,
index daf38c7..e214893 100755 (executable)
@@ -68,6 +68,8 @@ class SilentConfigurationUpgradeService
         'INSTALL/wizardDone/TYPO3\\CMS\\Install\\Updates\\WorkspacesNotificationSettingsUpdate',
         'INSTALL/wizardDone/TYPO3\\CMS\\Rtehtmlarea\\Hook\\Install\\DeprecatedRteProperties',
         'INSTALL/wizardDone/TYPO3\\CMS\\Rtehtmlarea\\Hook\\Install\\RteAcronymButtonRenamedToAbbreviation',
+        // #72400
+        'BE/spriteIconGenerator_handler',
     );
 
     /**
index 532eb76..11aa49c 100644 (file)
@@ -12,16 +12,6 @@ if (TYPO3_MODE === 'BE' || TYPO3_MODE === 'FE' && isset($GLOBALS['BE_USER'])) {
         )
     );
 
-    // Setting up auto detection of alternative icons:
-    $GLOBALS['TBE_STYLES']['skinImgAutoCfg'] = array(
-        'absDir' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('t3skin') . 'icons/',
-        'relDir' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3skin') . 'icons/',
-        'forceFileExtension' => 'gif',
-        // Force to look for PNG alternatives...
-        'iconSizeWidth' => 16,
-        'iconSizeHeight' => 16
-    );
-
     // Changing icon for filemounts, needs to be done here as overwriting the original icon would also change the filelist tree's root icon
     $GLOBALS['TCA']['sys_filemounts']['ctrl']['iconfile'] = 'apps-filetree-mount';