[BUGFIX] Media obj respect moveJsFromHeaderToFooter
authorAlexandre Gravel-Raymond <a.gravel-raymond@alienor.net>
Fri, 4 Mar 2011 14:55:16 +0000 (15:55 +0100)
committerOliver Hader <oliver@typo3.org>
Mon, 11 Apr 2011 11:59:12 +0000 (13:59 +0200)
If you set config.moveJsFromHeaderToFooter=1 in your TS template, and
add a Media object, the swfobject library is correctly added at the
bottom of the page, but the inline code calling the swfobject library
is added inline at the same place as the media object.
This results in the javascript error "swfobject is not defined" and
the media not appearing on the page.

This change makes use of t3lib_PageRenderer::addJsInlineCode to add
the inline code, so it respects config.moveJsFromHeaderToFooter=1.

Change-Id: I971ebb2c31568e40a3209dfcf7871010e830565e
Resolves: #25258
Reviewed-on: http://review.typo3.org/1062
Reviewed-by: Steffen Kamper
Reviewed-by: Björn Pedersen
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
Releases: 4.6, 4.5
Reviewed-on: http://review.typo3.org/1547

typo3/sysext/cms/tslib/content/class.tslib_content_shockwaveflashobject.php

index 91549dc..7098e9e 100644 (file)
@@ -142,8 +142,8 @@ class tslib_content_ShockwaveFlashObject extends tslib_content_Abstract {
                $layout = isset($conf['layout.'])
                        ? $this->cObj->stdWrap($conf['layout'], $conf['layout.'])
                        : $conf['layout'];
-               $layout = str_replace('###ID###', $replaceElementIdString, $layout);
-               $layout = str_replace('###SWFOBJECT###', '<div id="' . $replaceElementIdString . '">' . $alternativeContent . '</div>', $layout);
+               $content = str_replace('###ID###', $replaceElementIdString, $layout);
+               $content = str_replace('###SWFOBJECT###', '<div id="' . $replaceElementIdString . '">' . $alternativeContent . '</div>', $content);
 
                $width = isset($conf['width.'])
                        ? $this->cObj->stdWrap($conf['width'], $conf['width.'])
@@ -163,13 +163,8 @@ class tslib_content_ShockwaveFlashObject extends tslib_content_Abstract {
                $embed = 'swfobject.embedSWF("' . $conf['player'] . '", "' . $replaceElementIdString . '", "' . $width . '", "' . $height . '",
                                "' . $flashVersion . '", "' . $installUrl . '", ' . $conf['embedParams'] . ');';
 
-               $content = $layout . '
-                       <script type="text/javascript">
-                               ' . $flashvars . '
-                               ' . $params . '
-                               ' . $attributes . '
-                               ' . $embed . '
-                       </script>';
+               $script = $flashvars . $params . $attributes . $embed;
+               $GLOBALS['TSFE']->getPageRenderer()->addJsInlineCode($replaceElementIdString, $script);
 
                if (isset($conf['stdWrap.'])) {
                        $content = $this->cObj->stdWrap($content, $conf['stdWrap.']);
@@ -185,4 +180,4 @@ if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLA
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_shockwaveflashobject.php']);
 }
 
-?>
\ No newline at end of file
+?>