C3D2 Lightning Talks
2013-02-12
git clone http://www.c3d2.de/c3d2-web.git && cd c3d2-web && make -j3 && x-www-browser www/news.html
Dependencies: make, xsltproc, rsync
Wichtigste Frage:
Where's the content?
c3d2-web % ls content/ datenspuren/ events.xml navigation.xml news/ old-site/ pages/ static/
make
chaosupdates.xml
news.xml
und calendar-summary.xml
build/
build/
und content/static/
nach www/
<?xml version="1.0" encoding="UTF-8"?> <!-- When changing the position of these files in the navigation sidebar, please adjust the #navigation li:nth-child(...) rules in the CSS file. --> <navigation> <file title="News">news</file> <file>whois</file> <file>treff</file> <file>themenabende</file> <file>events</file> <file>schule</file> <file>kontakt</file> <file>mailingliste</file> <file>muc</file> <file>wiki</file> <file>radio</file> <file>podcast</file> <file>pentamusic</file> <file>shop</file> <file>warez</file> </navigation>
content/pages/*.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE page SYSTEM "http://www.c3d2.de/dtd/c3d2web.dtd"> <?xml-stylesheet type="text/xsl" href="../xsl/html.xsl" ?> <page title="Whois" pagetitle="Whois c3d2?"> <p title="Wohin? Woher? Weshalb? c3d2?"> Der CCC Dresden (C3D2) ist eine Gruppe von Leuten, die Spaß am kreativen Umgang mit Informationstechnologie haben. </p> [...]
xsd/c3d2web.xsd
Dank XML ist auch XHTML erlaubt. Beispiel content/news/event-tpb-afk.xml
:
<iframe xmlns="http://www.w3.org/1999/xhtml" src="http://www.youtube-nocookie.com/embed/KCAGb7oSwDs" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"> </iframe>
Spezielle Funktionalitäten in XSLT implementiert:
<news-list prefix="event-" details="event"/>
<news-list prefix="ta-" details="event"/>
<news-list prefix="pentaradio24-" details="resources-only"/>
<news-list prefix="pentacast-" details="resources-only"/>
file/@title
in navigation.xml
)news.xml
wird aus allen news/*.xml
durch scripts/gen_news.xml.sh
generiert<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE item SYSTEM "http://www.c3d2.de/dtd/c3d2web.dtd"> <?xml-stylesheet type="text/xsl" href="../../xsl/html.xsl" ?> <item title="Screening: TPB AFK" date="2013-02-07T23:45:00" author="Astro"> <image title="TPB AFK">tpb-afk.jpg</image> <event> <start>2013-02-09T20:00:00</start> <location>Informatikfakultät TU Dresden, Raum E023</location> </event> <p> Sei es der Gründungsimpuls für Piratenparteien auf der ganzen Welt, Vorreiter für freien Kulturaustausch, oder auch Indikator für Zensurversuche in der westlichen Welt, die Piratenbucht ist eine Website, die Geschichte schrieb und weiterhin schreibt. </p> [...] <addendum> [...] <iframe xmlns="http://www.w3.org/1999/xhtml" src="http://www.youtube-nocookie.com/embed/KCAGb7oSwDs" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"> </iframe> </addendum> </item>
<resource title="pentaradio24 vom 22. Januar 2013" size="92334332" type="application/ogg" url="http://ftp.c3d2.de/pentaradio/pentaradio-2013-01-22.ogg"> <alternative size="83985199" type="audio/mpeg" url="http://ftp.c3d2.de/pentaradio/pentaradio-2013-01-22.mp3"/> <alternative size="63039464" type="audio/opus" url="http://ftp.c3d2.de/pentaradio/pentaradio-2013-01-22.opus"/> </resource>
<resource title="Pentabug" size="173518847" type="video/mp4" url="http://ftp.c3d2.de/datenspuren/2012/5074_pentabug.mp4" preview="http://ftp.c3d2.de/datenspuren/2012/5074_pentabug.gif" poster="http://ftp.c3d2.de/datenspuren/2012/5074_pentabug.jpg" details-link="http://datenspuren.de/2012/fahrplan/events/5074.de.html" feedback-link="https://cccv.pentabarf.org/feedback/DS2012/event/5074.de.html"> <alternative size="103679070" type="video/webm" url="http://ftp.c3d2.de/datenspuren/2012/5074_pentabug.webm"/> </resource>
<audio>
/<video>
/Flash-Fallback
werden erst nach Klick auf ▶ Play erzeugt (JavaScript)XSLT kann nicht nur XML, sondern auch Text generieren
Beispiel Target ical.ics
Kalendereinträge kommen aus <event/>
in:
content/news/*.xml
content/events.xml
xsl/calendar.xsl
generiert Target calendar.html
xsl/ddate.xsl
Dynamische Inhalte:
git rm origin && git remote add origin git@git.c3d2.de:c3d2-web.git
git add ... && git commit
git push
post-receive
auf webbuildd aktualisiert
Checkout und führt aus:
make export DESTDIR=/var/www
Ausserdem: Webhooks für Pentamedia.org und ⠞⠊⠛⠛⠑⠗
Mit Git-Hook ist Output für Client sichtbar