added feature #15080: TYPO3 misses SpriterManager_handler using sprite-generation
authorSteffen Ritter <info@rs-websystems.de>
Sat, 20 Nov 2010 19:10:01 +0000 (19:10 +0000)
committerSteffen Ritter <info@rs-websystems.de>
Sat, 20 Nov 2010 19:10:01 +0000 (19:10 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@9496 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/config_default.php
t3lib/core_autoload.php
t3lib/spritemanager/class.t3lib_spritemanager_spritebuildinghandler.php [new file with mode: 0644]

index f97091c..926cbb9 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-19  Steffen Ritter  <typo3@steffen-ritter.net>
+
+       * Added feature #15080: TYPO3 misses SpriterManager_handler using sprite-generation
+
 2010-11-19  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Follow-up to bug #16431: htmlArea RTE: in WebKit, clicking on image does not select it
index 3cfd10a..e3dd9e9 100644 (file)
@@ -270,7 +270,7 @@ $TYPO3_CONF_VARS = array(
                '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.
                'elementVersioningOnly' => TRUE,                // If true, only element versioning is allowed in the backend (see option newPagesVersioningType). Setting this flag is recommended for new installations of TYPO3 4.2+ since "page" and "branch" versioning types are known for the drawbacks of loosing ids and "element" type versions supports moving now. Please note that "page" and "branch" types are deprecated since TYPO3 4.2 and will be unsupported in TYPO3 4.6. Thus, this option will be removed in TYPO3 4.6.
                '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 misc/advanced.htaccess or the _.htaccess file from the dummy package)</p><p>If false the filemtime will be appended as a query-string.</p>
-               'spriteIconGenerator_handler' => '',    // String: Used to register own/other spriteGenerating Handler, they have to implement the interface t3lib_spritemanager_SpriteIconGenerator
+               'spriteIconGenerator_handler' => '',    // String: Used to register own/other spriteGenerating Handler, they have to implement the interface t3lib_spritemanager_SpriteIconGenerator. If set to "t3lib_spritemanager_SpriteBuildingHandler" icons from extensions will automatically merged into sprites.
                'allowDonateWindow' => TRUE,                    // Boolean: Defines whether to display a TYPO3 donate window to admin users that have been working with the system for more than three months.
                '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 ajax.php and the classes/class.typo3ajax.php for more information.
index d32f49e..db33a15 100644 (file)
@@ -156,6 +156,7 @@ $t3libClasses = array(
        't3lib_spritemanager_spritegenerator' => PATH_t3lib . 'spritemanager/class.t3lib_spritemanager_spritegenerator.php',
        't3lib_spritemanager_spriteicongenerator' => PATH_t3lib . 'interfaces/interface.t3lib_spritemanager_spriteicongenerator.php',
        't3lib_spritemanager_simplehandler' => PATH_t3lib . 'spritemanager/class.t3lib_spritemanager_simplehandler.php',
+       't3lib_spritemanager_spritebuildinghandler' => PATH_t3lib . 'spritemanager/class.t3lib_spritemanager_spritebuildinghandler.php',
        't3lib_spritemanager_abstracthandler' => PATH_t3lib . 'spritemanager/class.t3lib_spritemanager_abstracthandler.php',
        't3lib_extjs_extdirectdebug' => PATH_t3lib . 'extjs/class.t3lib_extjs_extdirectdebug.php',
        't3lib_tree_abstracttree' => PATH_t3lib . 'tree/class.t3lib_tree_abstracttree.php',
diff --git a/t3lib/spritemanager/class.t3lib_spritemanager_spritebuildinghandler.php b/t3lib/spritemanager/class.t3lib_spritemanager_spritebuildinghandler.php
new file mode 100644 (file)
index 0000000..ec2fe2f
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Steffen Ritter <info@steffen-ritter.net>
+*  All rights reserved
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*  A copy is found in the textfile GPL.txt and important notices to the license
+*  from the author is found in LICENSE.txt distributed with these scripts.
+*
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+
+/**
+ *
+ * @author     Steffen Ritter <info@steffen-ritter.net>
+ * @package TYPO3
+ * @subpackage t3lib
+ */
+class t3lib_spritemanager_SpriteBuildingHandler extends t3lib_spritemanager_AbstractHandler {
+
+       /**
+        * @var t3lib_spritemanager_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 = t3lib_div::makeInstance('t3lib_spritemanager_SpriteGenerator', 'GeneratorHandler');
+               $this->generatorInstance
+                       ->setOmmitSpriteNameInIconName(TRUE)
+                       ->setIncludeTimestampInCSS(TRUE)
+                       ->setSpriteFolder(t3lib_SpriteManager::$tempPath)
+                       ->setCSSFolder(t3lib_SpriteManager::$tempPath);
+
+               $iconsToProcess = array_merge(
+                       (array) $GLOBALS['TBE_STYLES']['spritemanager']['singleIcons'],
+                       $this->collectTcaSpriteIcons()
+               );
+
+               foreach($iconsToProcess as $iconName => $iconFile) {
+                       $iconsToProcess[$iconName] = t3lib_div::resolveBackPath('typo3/' . $iconFile);
+               }
+
+               $generatorResponse = $this->generatorInstance->generateSpriteFromArray($iconsToProcess);
+
+               if (!is_dir(PATH_site . t3lib_SpriteManager::$tempPath . 'ie6')) {
+                       t3lib_div::mkdir(PATH_site . t3lib_SpriteManager::$tempPath . 'ie6');
+               }
+
+               t3lib_div::upload_copy_move(
+                       $generatorResponse['spriteGifImage'],
+                       t3lib_div::dirname($generatorResponse['spriteGifImage']) . '/ie6/' . basename($generatorResponse['spriteGifImage'])
+               );
+               unlink($generatorResponse['spriteGifImage']);
+
+               t3lib_div::upload_copy_move(
+                       $generatorResponse['cssGif'],
+                       t3lib_div::dirname($generatorResponse['cssGif']) . '/ie6/' . basename($generatorResponse['cssGif'])
+               );
+               unlink($generatorResponse['cssGif']);
+
+               $this->iconNames = array_merge($this->iconNames, $generatorResponse['iconNames']);
+
+               parent::generate();
+       }
+}
+
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/spritemanager/class.t3lib_spritemanager_autogeneratinghandler.php'])        {
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/spritemanager/class.t3lib_spritemanager_autogeneratinghandler.php']);
+}
+?>