[CLEANUP] TSFE: Deprecate JSfuncCalls for body tag 03/33403/3
authorBenjamin Mack <benni@typo3.org>
Tue, 21 Oct 2014 06:28:03 +0000 (08:28 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Thu, 23 Oct 2014 21:30:52 +0000 (23:30 +0200)
For old systems without proper JS libraries or usages like GMENU_LAYERS
TSFE provides an array to register handlers directly that are added
to the body tag directly.

This function is removed (only used for GMENU_LAYERS) from the core,
as all according functions should do this via hook or JS-only.

Resolves: #62363
Releases: master
Change-Id: I746e27c88c372dce61dadb6025d9348d34566fdf
Reviewed-on: http://review.typo3.org/33403
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-62363-TSFE-JSfuncCalls.rst [new file with mode: 0644]
typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
typo3/sysext/frontend/Classes/Page/PageGenerator.php

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-62363-TSFE-JSfuncCalls.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-62363-TSFE-JSfuncCalls.rst
new file mode 100644 (file)
index 0000000..8d2e0e3
--- /dev/null
@@ -0,0 +1,31 @@
+=====================================================
+Deprecation: #62363 - TSFE->JSeventFuncCalls disabled
+=====================================================
+
+Description
+===========
+
+TYPO3 CMS provides a way to register direct JS calls to be added to the body tag of the frontend output
+to allow several functions to register for e.g. "onload". Nowadays this is done via JS frameworks directly,
+or via JS variables.
+
+The functionality has marked as deprecated.
+
+Impact
+======
+
+The core does not use this functionality anymore. Installations with menus using "GMENU_LAYERS",
+which have been removed from the core a while ago, but still use it via third-party extensions,
+might not work anymore as expected.
+
+
+Affected installations
+======================
+
+All installations which use the $TSFE->JSeventFuncCalls option, e.g. like GMENU_LAYERS.
+
+Migration
+=========
+
+Every call of a 3rd party extension to the mentioned method must be changed to use their own
+JS function registration.
index 18b0338..cd94628 100644 (file)
@@ -414,6 +414,7 @@ class TypoScriptFrontendController {
         * applications on a page can set handlers for onload, onmouseover and onmouseup
         *
         * @var array
+        * @deprecated since TYPO3 CMS 7, will be removed in CMS 8
         */
        public $JSeventFuncCalls = array(
                'onmousemove' => array(),
index 7f3dc6e..f9d6619 100644 (file)
@@ -194,6 +194,7 @@ class PageGenerator {
         * Processing JavaScript handlers
         *
         * @return array Array with a) a JavaScript section with event handlers and variables set and b) an array with attributes for the body tag.
+        * @deprecated since TYPO3 CMS 7, will be removed in CMS 8, use JS directly
         */
        static public function JSeventFunctions() {
                $functions = array();
@@ -201,6 +202,7 @@ class PageGenerator {
                $setBody = array();
                foreach ($GLOBALS['TSFE']->JSeventFuncCalls as $event => $handlers) {
                        if (count($handlers)) {
+                               GeneralUtility::deprecationLog('The usage of $GLOBALS[\'TSFE\']->JSeventFuncCalls is deprecated as of CMS 7. Use Javascript directly.');
                                $functions[] = '        function T3_' . $event . 'Wrapper(e) {  ' . implode('   ', $handlers) . '       }';
                                $setEvents[] = '        document.' . $event . '=T3_' . $event . 'Wrapper;';
                                if ($event == 'onload') {
@@ -786,7 +788,7 @@ class PageGenerator {
                $scriptJsCode = $JSef[0];
 
                if ($GLOBALS['TSFE']->spamProtectEmailAddresses && $GLOBALS['TSFE']->spamProtectEmailAddresses !== 'ascii') {
-                       $scriptJsCode .= '
+                       $scriptJsCode = '
                        // decrypt helper function
                function decryptCharcode(n,start,end,offset) {
                        n = n + offset;