[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:51:44 +0000 (13:51 +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: I0902ca60dab810dc58e7f1b46a07ad4ae6f1efda
Resolves: #M17868
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
typo3/sysext/cms/tslib/content/class.tslib_content_shockwaveflashobject.php

index b8f3dc8..453de57 100644 (file)
@@ -141,8 +141,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.'])
@@ -162,13 +162,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.']);
@@ -184,4 +179,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
+?>