Hier eine vorläufige Lösung. Ich habe den Entwickler kontaktiert und warte, was er mir sagt... möchte noch sichergehen, ob der Fehler nicht doch bei mir liegt.
Ich hatte 2 Probleme, wobei das zweite eher auf das hier Beschriebene passt. Beide haben mit der Reihenfolge, in der JavaScripts inkludiert werden, zu tun:
1. Fehlermeldung "jQuery is not defined" in der Firebug-Konsolenausgabe. JS-Dateien der Extension können das via jQuery aufgerufene tx_jwplayer.init() (EXT:jwplayer/Resources/Public/Js/tx_jw_player.js) somit nicht ausführen.
Der Grund: die JS-Files der Extension waren über den jQuery-Files positioniert (siehe EXT:jwplayer/Configuration/TypoScript/setup.txt). Lösung: die Includes aus der setup.txt in eigenem Extensiontemplate überschreiben
page{
includeJSFooterlibs {
# JS-Dateien von "includeJSlibs" in "includeJSFooterlibs" verschieben, um die Reihenfolge zu korrigieren
tx_jw_player < page.includeJSlibs.tx_jw_player
jwplayer < page.includeJSlibs.jwplayer
}
includeJSlibs {
# eigenes jQuery oben inkludieren, ggf. danach noch jquery.forceOnTop = 1, falls die Reihenfolge immernoch nicht stimmt
jquery = fileadmin/js/jquery-1.7.1.min.js
# die alten JS-Includes aus dem Header entfernen, um den Code nicht doppelt zu inkludieren
tx_jw_player >
jwplayer >
}
}
2. "Video is loading ..." anstelle des Players:
Die EXT:jwplayer/Resources/Private/Templates/Player/Index.html bindet mit dem extensioneigenen ScriptViewHelper den JS-Code ein, der den Player baut. Dieser ScriptViewHelper (EXT:jwplayer/Classes/Viewhelpers/ScriptViewHelper.php) bindet den in der Index.html folgenden Code mit der TYPO3-PageRenderer-Funktion addJsInlineCode (class.t3lib_pagerenderer.php::addJsInlineCode) ein. Dieser JS-Code landet damit im Header; da er aber in keinerlei Funktion gewrappt liegt, wird er beim Parsen ausgeführt. Zu dem Zeitpunkt existiert der paragraph, der mit dem Scriptcode durch den Player ersetzt werden soll, noch nicht.
Mir hat der folgende Code in der EXT:jwplayer/Classes/Viewhelpers/ScriptViewHelper.php geholfen (wobei Änderungen direkt in der Extension ja eher vermieden werden sollten):
Die Zeile
$pagerender->addJsInlineCode(md5($content), $content, $compress, $forceOnTop);
ersetzen durch
$pagerender->addJsFooterInlineCode(md5($content), $content, $compress, $forceOnTop);
Die Funktion >addJsFooterInlineCode() unterscheidet sich von >addJsInlineCode() dadurch, dass sie den Inlinecode unten in der Seite einbindet. Dann ist der paragraph schon geladen, wird gefunden und durch den Player ersetzt.