diff --git a/content/news/pentacast-43-28c3.xml b/content/news/pentacast-43-28c3.xml index 01140efe1..da8cff530 100644 --- a/content/news/pentacast-43-28c3.xml +++ b/content/news/pentacast-43-28c3.xml @@ -16,32 +16,6 @@

Ich bedanke mich bei allen Engeln die mir Rede und Antwort standen oder Gespräche zu Stande gebracht haben. Da die Interviews teilweise länglich sind, habe ich eine CUE-Datei fertig gemacht, mit der ihr das MP3 in mundgerechte Happen zerteilen könnt. In den Shownotes findet ihr eine Übersicht, wer ungefähr wann redet und in welcher Sprache.

-

Shownotes:

- + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/static/script/play-resources.js b/content/static/script/play-resources.js index 86f5eb37c..835e30d1d 100644 --- a/content/static/script/play-resources.js +++ b/content/static/script/play-resources.js @@ -31,7 +31,7 @@ function arrayForEach(array, iter) { } } -function addButton(container, res) { +function addButton(container, res, chapters) { var button = $('▶ Play'); if (res.poster) { var img = $(''); @@ -54,7 +54,7 @@ function addButton(container, res) { button.click(function() { button.remove(); - addPlayer(container, res); + addPlayer(container, res, chapters); var section = container.parents(). filter(function() { @@ -66,7 +66,16 @@ function addButton(container, res) { container.append(button); } -function addPlayer(container, res) { +function parseTime(time) { + var parts = time.split(":"), part; + var r = 0; + while((part = parts.shift())) { + r = r * 60 + parseInt(part); + } + return r; +} + +function addPlayer(container, res, chapters) { var types = arrayMap(res, function(res) { return res.type; }); @@ -127,6 +136,30 @@ function addPlayer(container, res) { if (fallback) html5player.append(fallback); container.append(html5player); + if (chapters[0]) { + var dl = $('
'); + var prevStart; + chapters.find('chapter').each(function() { + var title = this.getAttribute('title'); + var start = this.getAttribute('start'); + var href = this.getAttribute('href'); + if (start && start != prevStart) { + var dt = $('
'); + var dt_a = dt.find('a'); + dt_a.text(start); + dt_a.click(function(ev) { + ev.preventDefault(); + html5player[0].currentTime = parseTime(start); + }); + dl.append(dt); + } + prevStart = start; + var dd = $('
'); + dd.text(title); + dl.append(dd); + }); + container.append(dl); + } } else if (fallback) { container.append(fallback); } else { @@ -164,7 +197,7 @@ $(document).ready(function() { }), canPlay)) { var liEl = $('
  • '); $(this).before(liEl); - var player = addButton(liEl, res); + var player = addButton(liEl, res, $(this).find('chapters')); } }); } catch (x) { diff --git a/content/static/style/default.css b/content/static/style/default.css index 224eafa70..86345fbb2 100644 --- a/content/static/style/default.css +++ b/content/static/style/default.css @@ -723,6 +723,26 @@ li audio, li video, li .poster { color: #333; } +.chapters { + margin: 0.5em auto; +} +.chapters dt, .chapters dd { + line-height: 2em; + margin: 0; + padding: 0; +} +.chapters dt { + width: 8em; + text-align: right; + margin-bottom: -2em; +} +.chapters dt:after { + content: ''; +} +.chapters dd { + margin-left: 10em; +} + p.blockquote { padding: .5em .5em .5em 2em; border-left: 20px solid #eee; diff --git a/xsd/atom.rng b/xsd/atom.rng index ac63ec4fc..f1407fc4d 100644 --- a/xsd/atom.rng +++ b/xsd/atom.rng @@ -2,10 +2,9 @@ - + @@ -354,9 +353,9 @@ - + - + @@ -570,7 +569,7 @@ - + diff --git a/xsd/c3d2web.xsd b/xsd/c3d2web.xsd index 3d438e620..a6b583d82 100644 --- a/xsd/c3d2web.xsd +++ b/xsd/c3d2web.xsd @@ -57,6 +57,8 @@ + diff --git a/xsl/atom.xsl b/xsl/atom.xsl index ccfa3c70f..5e2881aff 100644 --- a/xsl/atom.xsl +++ b/xsl/atom.xsl @@ -89,6 +89,9 @@ href="{$resource_href}" type="{@type}" length="{@size}" /> + + diff --git a/xsl/common.xsl b/xsl/common.xsl index 18578a4fe..212b787de 100644 --- a/xsl/common.xsl +++ b/xsl/common.xsl @@ -384,6 +384,14 @@ , ) + + + + + diff --git a/xsl/podcast.xsl b/xsl/podcast.xsl index e3dd4d8cc..de879e082 100644 --- a/xsl/podcast.xsl +++ b/xsl/podcast.xsl @@ -238,6 +238,8 @@ + @@ -249,6 +251,7 @@ + @@ -302,6 +305,8 @@ + + diff --git a/xsl/rss.xsl b/xsl/rss.xsl index 7ef8a2aea..1c7391d46 100644 --- a/xsl/rss.xsl +++ b/xsl/rss.xsl @@ -122,6 +122,10 @@ + + +