From 95f67d2ebcb367bc5d06b802bdffb5642dac8f81 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 17 Jun 2009 11:16:44 +0400 Subject: [PATCH] add support for HTML5 way of playing audio/video enclosures (closes #246) --- functions.js | 29 +++++++++++++++++++++++++++++ functions.php | 40 ++++++++++++++++++++++++++++++---------- viewfeed.js | 4 +++- 3 files changed, 62 insertions(+), 11 deletions(-) diff --git a/functions.js b/functions.js index 4aa5486a..5c1b26a5 100644 --- a/functions.js +++ b/functions.js @@ -2133,3 +2133,32 @@ function truncate_string(s, length) { if (s.length > length) tmp += "…"; return tmp; } +function switchToFlash(e) { + var targ = e; + if (!e) var e = window.event; + if (e.target) targ = e.target; + else if (e.srcElement) targ = e.srcElement; + if (targ.nodeType == 3) // defeat Safari bug + targ = targ.parentNode; + + //targ is the link that was clicked + var audioTag=targ; + do { + audioTag=audioTag.previousSibling; + } while(audioTag && audioTag.nodeType != 1) + + var flashPlayer = audioTag.getElementsByTagName('div')[0]; + targ.parentNode.insertBefore(flashPlayer,targ); + targ.parentNode.removeChild(targ); + audioTag.parentNode.removeChild(audioTag); + + return false; +} +function html5AudioOrFlash(type) { + var audioTag = document.createElement('audio'); + if(! audioTag.canPlayType || audioTag.canPlayType(type)=="no"){ + if($('switchToFlashLink')){ + switchToFlash($('switchToFlashLink')); + } + } +} diff --git a/functions.php b/functions.php index c89f11a1..6a8e8562 100644 --- a/functions.php +++ b/functions.php @@ -4692,11 +4692,21 @@ $entry = ""; - if (($ctype == __("audio/mpeg")) && - (get_pref($link, "ENABLE_FLASH_PLAYER")) ) { - - $entry .= " "; - + if (substr($ctype,0,6)=="audio/" || $ctype=="application/ogg" || $ctype=="application/x-ogg") { + $entry .= ""; + if (($ctype == __("audio/mpeg")) && + (get_pref($link, "ENABLE_FLASH_PLAYER")) ) { + $entry .= "".__('Switch to Flash Player')."
"; + $entry .= ""; + } + } elseif (substr($ctype,0,6)=="video/") { + $entry .= ""; } $entry .= "" . @@ -5236,11 +5246,21 @@ $entry = ""; - if (($ctype == __("audio/mpeg")) && - (get_pref($link, "ENABLE_FLASH_PLAYER")) ) { - - $entry .= " "; - + if (substr($ctype,0,6)=="audio/" || $ctype=="application/ogg" || $ctype=="application/x-ogg") { + $entry .= ""; + if (($ctype == __("audio/mpeg")) && + (get_pref($link, "ENABLE_FLASH_PLAYER")) ) { + $entry .= "".__('Switch to Flash Player')."
"; + $entry .= ""; + } + } elseif (substr($ctype,0,6)=="video/") { + $entry .= ""; } $entry .= "" . diff --git a/viewfeed.js b/viewfeed.js index 6afc6c31..7e53467d 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -275,8 +275,10 @@ function render_article(article) { try { fi.scrollTop = 0; } catch (e) { }; - + fi.innerHTML = article; + + article.evalScripts(); } catch (e) { exception_error("render_article", e); -- 2.39.5