[BUGFIX] Javascript for TMENU_LAYERS and GMENU_LAYERS missing 62/19262/4
authorMichael Stucki <michael.stucki@typo3.org>
Mon, 25 Mar 2013 12:53:17 +0000 (13:53 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Mon, 1 Apr 2013 09:38:29 +0000 (11:38 +0200)
If using GMENU_LAYERS/TMENU_LAYERS and (for example) indexed_search on
the same page, the JavaScript header tags are missing if the page is
loaded from the cache.

Resolves: #36719
Releases: 4.5, 4.6, 4.7, 6.0, 6.1
Change-Id: Icd52f68d2b9462360f0b9efd912d93d4b0c1048c
Reviewed-on: https://review.typo3.org/19262
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/frontend/Classes/ContentObject/Menu/GraphicalMenuLayersContentObject.php
typo3/sysext/frontend/Classes/ContentObject/Menu/JavaScriptMenuContentObject.php
typo3/sysext/frontend/Classes/ContentObject/Menu/TextMenuLayersContentObject.php
typo3/sysext/frontend/Classes/Page/PageGenerator.php

index dc0e52f..04197ce 100644 (file)
@@ -391,7 +391,7 @@ if (!GLV_doReset["' . $mIdStr . '"] && GLV_currentLayer["' . $mIdStr . '"]!=null
                }
                $GLOBALS['TSFE']->applicationData['GMENU_LAYERS']['WMid'] = array_merge($this->WMtempStore, $GLOBALS['TSFE']->applicationData['GMENU_LAYERS']['WMid']);
                $GLOBALS['TSFE']->additionalHeaderData['gmenu_layer_shared'] = '<script type="text/javascript" src="' . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath('statictemplates') . 'media/scripts/jsfunc.layermenu.js"></script>';
-               $GLOBALS['TSFE']->JSCode .= '
+               $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= '
 
 GLV_curLayerWidth["' . $this->WMid . '"]=0;
 GLV_curLayerHeight["' . $this->WMid . '"]=0;
@@ -414,7 +414,7 @@ GLV_menuXY["' . $this->WMid . '"] = new Array();
 ' . implode(LF, $this->WMxyArray) . '
 ' . $this->WMrestoreVars;
                if ($this->mconf['freezeMouseover']) {
-                       $GLOBALS['TSFE']->JSCode .= '
+                       $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= '
 // Alternative rollover/out functions for use with GMENU_LAYER
 function GL' . $this->WMid . '_over(mitm_id) {
        GL' . $this->WMid . '_out("");  // removes any old roll over state of an item. Needed for alwaysKeep and Opera browsers.
@@ -431,7 +431,7 @@ function GL' . $this->WMid . '_out(mitm_id) {
 }
 ';
                }
-               $GLOBALS['TSFE']->JSCode .= '
+               $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= '
 function GL' . $this->WMid . '_getMouse(e) {
        if (GLV_menuOn["' . $this->WMid . '"]!=null && !GLV_dontFollowMouse["' . $this->WMid . '"]){
 ' . implode(LF, $GLV_menuOn) . '
index 41a37a2..2288eb5 100644 (file)
@@ -40,7 +40,7 @@ class JavaScriptMenuContentObject extends \TYPO3\CMS\Frontend\ContentObject\Menu
                        }
                        $JScode .= $this->generate_level($levels, 1, $this->id, $this->menuArr, $this->MP_array) . LF;
                        $GLOBALS['TSFE']->additionalHeaderData['JSMenuCode'] = '<script type="text/javascript" src="' . $GLOBALS['TSFE']->absRefPrefix . 't3lib/jsfunc.menu.js"></script>';
-                       $GLOBALS['TSFE']->JSCode .= $JScode;
+                       $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= $JScode;
                        // Printing:
                        $allFormCode = '';
                        for ($a = 1; $a <= $this->levels; $a++) {
index 5c3febf..0c8655d 100644 (file)
@@ -393,7 +393,7 @@ if (!GLV_doReset["' . $mIdStr . '"] && GLV_currentLayer["' . $mIdStr . '"]!=null
                }
                $GLOBALS['TSFE']->applicationData['GMENU_LAYERS']['WMid'] = array_merge($this->WMtempStore, $GLOBALS['TSFE']->applicationData['GMENU_LAYERS']['WMid']);
                $GLOBALS['TSFE']->additionalHeaderData['gmenu_layer_shared'] = '<script type="text/javascript" src="' . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath('statictemplates') . 'media/scripts/jsfunc.layermenu.js"></script>';
-               $GLOBALS['TSFE']->JSCode .= '
+               $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= '
 
 GLV_curLayerWidth["' . $this->WMid . '"]=0;
 GLV_curLayerHeight["' . $this->WMid . '"]=0;
@@ -416,7 +416,7 @@ GLV_menuXY["' . $this->WMid . '"] = new Array();
 ' . implode(LF, $this->WMxyArray) . '
 ' . $this->WMrestoreVars;
                if ($this->mconf['freezeMouseover']) {
-                       $GLOBALS['TSFE']->JSCode .= '
+                       $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= '
 // Alternative rollover/out functions for use with GMENU_LAYER
 function GL' . $this->WMid . '_over(mitm_id) {
        GL' . $this->WMid . '_out("");  // removes any old roll over state of an item. Needed for alwaysKeep and Opera browsers.
@@ -433,7 +433,7 @@ function GL' . $this->WMid . '_out(mitm_id) {
 }
 ';
                }
-               $GLOBALS['TSFE']->JSCode .= '
+               $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= '
 function GL' . $this->WMid . '_getMouse(e) {
        if (GLV_menuOn["' . $this->WMid . '"]!=null && !GLV_dontFollowMouse["' . $this->WMid . '"]){
 ' . implode(LF, $GLV_menuOn) . '
index 068ebdd..a9e37e8 100644 (file)
@@ -91,7 +91,7 @@ class PageGenerator {
                $GLOBALS['TSFE']->absRefPrefix = $GLOBALS['TSFE']->config['config']['absRefPrefix'] ? trim($GLOBALS['TSFE']->config['config']['absRefPrefix']) : '';
                if ($GLOBALS['TSFE']->type && $GLOBALS['TSFE']->config['config']['frameReloadIfNotInFrameset']) {
                        $tdlLD = $GLOBALS['TSFE']->tmpl->linkData($GLOBALS['TSFE']->page, '_top', $GLOBALS['TSFE']->no_cache, '');
-                       $GLOBALS['TSFE']->JSCode = 'if(!parent.' . trim($GLOBALS['TSFE']->sPre) . ' && !parent.view_frame) top.location.href="' . $GLOBALS['TSFE']->baseUrlWrap($tdlLD['totalURL']) . '"';
+                       $GLOBALS['TSFE']->additionalJavaScript['JSCode'] .= 'if(!parent.' . trim($GLOBALS['TSFE']->sPre) . ' && !parent.view_frame) top.location.href="' . $GLOBALS['TSFE']->baseUrlWrap($tdlLD['totalURL']) . '"';
                }
                $GLOBALS['TSFE']->compensateFieldWidth = '' . $GLOBALS['TSFE']->config['config']['compensateFieldWidth'];
                $GLOBALS['TSFE']->lockFilePath = '' . $GLOBALS['TSFE']->config['config']['lockFilePath'];