aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorderpeter2018-06-05 21:28:11 +0200
committerGitHub2018-06-05 21:28:11 +0200
commit327ccca7a86609f5d77b57b0991536e2818f12b3 (patch)
treec0e1819c39ab4022633c47e06833051c17edc248
parent8f03ce33e8833a751ac9b7d34383c006f1d2c292 (diff)
parent77961b7bc7b026a8f8fd50eb77ea6ce6732144c5 (diff)
Merge pull request #71 from dvzrv/lac2018
configs/conferences/lac2018/*: Adding lac2018 settings
Diffstat (limited to '')
-rw-r--r--README.md33
-rw-r--r--configs/conferences/lac2018/config.php525
-rw-r--r--configs/conferences/lac2018/download.sh9
-rw-r--r--configs/conferences/lac2018/lac-tux.svg118
-rw-r--r--configs/conferences/lac2018/main.less18
5 files changed, 686 insertions, 17 deletions
diff --git a/README.md b/README.md
index 9adf034..036021e 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ Dies ist der Code für die Streaming-Webseite unter
[diversen Konferenzen](https://c3voc.de/eventkalender/) im Internet zu
präsentieren. Die Idee hinter diesem Projekt ist es, eine generische Codebasis
zu haben, die mit wenigen Konfigurationsoptionen und ein paar CSS-Rules an die
-Gegebenheiten und die Gestaltung der Konferenz angepasst werden können.
+Gegebenheiten und die Gestaltung der Konferenz angepasst werden können.
## Development
@@ -37,6 +37,20 @@ apt install php-curl php-xml
./download.sh
```
+## Konfiguration der einzelnen Konferenzen
+
+Die Seite kann für mehrere parallel laufende Konferenzen gleichzeitig verwendet
+werden. Jede Konferenz wird über einen Ordner unterhalb von
+[configs/conferences](configs/conferences) konfiguriert. In diesen Ordnern können
+jeweils folgende Dateien abgelegt werden, welche das Verhalten bzw. die Gestaltung
+der jeweiligen Konferenzseite bestimmen, im Folgendem am :
+
+ - [config.php](configs/conferences/nixcon15/config.php) – steuert das Verhalten der gesamten Konferenzseite. Diese ist ausführlich dokumentiert und sollte sich selbst erklären.
+ - [main.less](configs/conferences/nixcon15/main.less) – steuert die Gestaltung der Konferenzseite.
+ - weitere Assets wie `.png` oder `.svg`-Dateien, die aus der `main.less` heraus referenziert werden können.
+
+Siehe auch https://c3voc.de/wiki/software:streamingwebsite#add_a_new_conference
+
## Setup
Das Setup beim VOC besteht aus einem Hidden-Master-Server, welcher den PHP-Code
@@ -62,24 +76,9 @@ gesetzt werden.
-## Konfiguration
-
-Die Seite kann für mehrere parallel laufende Konferenzen gleichzeitig verwendet
-werden. Jede Konferenz wird über einen Ordner unterhalb von
-[configs/conferences](configs/conferences) konfiguriert. In diesen Ordnern können
-jeweils folgende Dateien abgelegt werden, welche das Verhalten bzw. die Gestaltung
-der jeweiligen Konferenzseite bestimmen, im Folgendem am :
-
- - [config.php](configs/conferences/nixcon15/config.php) – steuert das Verhalten der gesamten Konferenzseite. Diese ist ausführlich dokumentiert und sollte sich selbst erklären.
- - [download.sh](configs/conferences/nixcon15/download.sh) – Wird von einem Cronjob in regelmäßigen Abständen zum Herunterladen von `schedule.xml`-Dateien und anderen Drittkonfiguration verwendet.
- - [main.less](configs/conferences/nixcon15/main.less) – steuert die Gestaltung der Konferenzseite.
- - weitere Assets wie `.png` oder `.svg`-Dateien, die aus der `main.less` heraus referenziert werden können.
-
-
-
## Deployment (auf der VOC Infrastruktur)
-see [deploy.sh](deploy.sh)
+see [deploy.sh](deploy.sh) bzw. https://c3voc.de/wiki/software:streamingwebsite
## JSON-API
diff --git a/configs/conferences/lac2018/config.php b/configs/conferences/lac2018/config.php
new file mode 100644
index 0000000..55b75ad
--- /dev/null
+++ b/configs/conferences/lac2018/config.php
@@ -0,0 +1,525 @@
+<?php
+
+$CONFIG['CONFERENCE'] = array(
+ /**
+ * Der Startzeitpunkt der Konferenz als Unix-Timestamp. Befinden wir uns davor, wird die Closed-Seite
+ * mit einem Text der Art "hat noch nicht angefangen" angezeigt.
+ *
+ * Wird dieser Zeitpunkt nicht angegeben, gilt die Konferenz immer als angefangen. (Siehe aber ENDS_AT
+ * und CLOSED weiter unten)
+ */
+ 'STARTS_AT' => strtotime("2018-06-07 18:00"),
+
+ /**
+ * Der Endzeitpunkt der Konferenz als Unix-Timestamp. Befinden wir uns danach, wird eine Danke-Und-Kommen-Sie-
+ * Gut-Nach-Hause-Seite sowie einem Ausblick auf die kommenden Events angezeigt.
+ *
+ * Wird dieser Zeitpunkt nicht angegeben, endet die Konferenz nie. (Siehe aber CLOSED weiter unten)
+ */
+ 'ENDS_AT' => strtotime("2018-06-10 16:30"),
+
+ /**
+ * Hiermit kann die Funktionalitaet von STARTS_AT/ENDS_AT überschrieben werden. Der Wert 'before'
+ * simuliert, dass die Konferenz noch nicht begonnen hat. Der Wert 'after' simuliert, dass die Konferenz
+ * bereits beendet ist. 'running' simuliert eine laufende Konferenz.
+ *
+ * Der Boolean true ist aus Abwärtskompatibilitätsgründen äquivalent zu 'after'. False ist äquivalent
+ * zu 'running'.
+ */
+ //'CLOSED' => false,
+
+ /**
+ * Titel der Konferenz (kann Leer- und Sonderzeichen enthalten)
+ * Dieser im Seiten-Header, im <title>-Tag, in der About-Seite und ggf. ab weiteren Stellen als
+ * Anzeigetext benutzt
+ */
+ 'TITLE' => 'Linux Audio Conference 2018',
+
+ /**
+ * Veranstalter
+ * Wird für den <meta name="author">-Tag verdet. Wird diese Zeile auskommentiert, wird kein solcher
+ * <meta>-Tag generiert.
+ */
+ 'AUTHOR' => 'Linux Audio Conference team',
+
+ /**
+ * Beschreibungstext
+ * Wird für den <meta name="description">-Tag verdet. Wird diese Zeile auskommentiert, wird kein solcher
+ * <meta>-Tag generiert.
+ */
+ 'DESCRIPTION' => 'Video Live-Streaming of the Linux Audio Conference 2018 in Berlin',
+
+ /**
+ * Schlüsselwortliste, Kommasepariert
+ * Wird für den <meta name="keywords">-Tag verdet. Wird diese Zeile auskommentiert, wird kein solcher
+ * <meta>-Tag generiert.
+ */
+ 'KEYWORDS' => 'linux, audio, conference, c-base, lac, concert, sound, native instruments, paper, workshops, Video, Media, Streaming',
+
+ /**
+ * HTML-Code für den Footer (z.B. für spezielle Attribuierung mit <a>-Tags)
+ * Sollte üblicherweise nur Inline-Elemente enthalten
+ * Wird diese Zeile auskommentiert, wird die Standard-Attribuierung für (c3voc.de) verwendet
+ */
+ 'FOOTER_HTML' => '
+ <a href="https://c3voc.de">C3VOC</a>
+ ',
+
+ /**
+ * HTML-Code für den Banner (nur auf der Startseite, direkt unter dem Header)
+ * wird üblicherweise für KeyVisuals oder Textmarke verwendet (vgl. Blaues
+ * Wischiwaschi auf http://media.ccc.de/)
+ *
+ * Dieser HTML-Block wird üblicherweise in der main.less speziell für die
+ * Konferenz umgestaltet.
+ *
+ * Wird diese Zeile auskommentiert, wird kein Banner ausgegeben.
+ */
+ 'BANNER_HTML' => '<img src="../configs/conferences/lac2018/lac-tux.svg" class="lactux">',
+
+ /**
+ * Link zu den Recordings
+ * Wird diese Zeile auskommentiert, wird der Link nicht angezeigt
+ */
+ 'RELEASES' => 'https://media.ccc.de/c/lac2018',
+
+ /**
+ * Alternativ kann ein ReLive-Json konfiguriert werden, um die interne
+ * ReLive-Ansicht zu aktivieren.
+ *
+ * Wird beides aktiviert, hat der externe Link Vorrang!
+ * Wird beides auskommentiert, wird der Link nicht angezeigt
+ */
+ 'RELIVE_JSON' => 'configs/conferences/lac2018/vod.json',
+);
+
+/**
+ * Konfiguration der Stream-Übersicht auf der Startseite
+ */
+$CONFIG['OVERVIEW'] = array(
+ /**
+ * Abschnitte aud der Startseite und darunter aufgeführte Räume
+ * Es können beliebig neue Gruppen und Räume hinzugefügt werden
+ *
+ * Die Räume müssen in $CONFIG['ROOMS'] konfiguriert werden,
+ * sonst werden sie nicht angezeigt.
+ */
+ 'GROUPS' => array(
+ 'Lecture Rooms' => array(
+ 'mainhall',
+ 'ceminar',
+ 'nativespace',
+ ),
+ ),
+);
+
+
+
+/**
+ * Liste der Räume (= Audio & Video Produktionen, also auch DJ-Sets oä.)
+ */
+$CONFIG['ROOMS'] = array(
+ /**
+ * Array-Key ist der Raum-Slug, der z.B. auch zum erstellen der URLs,
+ * in $CONFIG['OVERVIEW'] oder im Feedback verwendet wird.
+ */
+ 'mainhall' => array(
+ /**
+ * Angezeige-Name
+ */
+ 'DISPLAY' => 'Mainhall',
+
+ /**
+ * ID des Video/Audio-Streams. Die Stream-ID ist davon abhängig, welches
+ * Event-Case in welchem Raum aufgebaut wird und wird üblicherweise von
+ * s1 bis s5 durchnummeriert.
+ */
+ 'STREAM' => 's1',
+
+ /**
+ * Stream-Vorschaubildchen auf der Übersichtsseite anzeigen
+ * Damit das funktioniert muss der entsprechende runit-Task auf dem
+ * CDN-Quell-Host (live.ber) laufen.
+ */
+ 'PREVIEW' => true,
+
+ /**
+ * Übersetzungstonspur aktivieren
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist werden nur
+ * die native-Streams verwendet, andernfalls wird native und translated
+ * angeboten und auch für beide Tonspuren eine Player-Seite angezeigt.
+ */
+ 'TRANSLATION' => false,
+
+ /**
+ * stereo-Tonspur statt native-Tonspur benutzen
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist werden
+ * die "native"-Mono-Streams verwendet, andernfalls wird statt "native"
+ * der Streamname "stereo" eingesetzt. Im normalen Konferenz-Setup
+ * müssen dann beide Kanäle der Kamera mit einem Signal bespielt werden.
+ */
+ 'STEREO' => false,
+
+ /**
+ * SD-Video-Stream (1024×576) verfügbar
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist ẃird kein SD-Video
+ * angeboten. Wird auch HD_VIDEO auf false gesetzt oder auskommentiert ist, wird
+ * für diesen Raum überhaupt kein Video angeboten.
+ *
+ * In diesem Fall wird, sofern jeweils aktiviert, Slides, Audio und zuletzt Musik
+ * als Default-Stream angenommen.
+ */
+ 'SD_VIDEO' => true,
+
+ /**
+ * HD-Video-Stream (1920×1080) verfügbar
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist ẃird kein HD-Video
+ * angeboten. Wird auch SD_VIDEO auf false gesetzt oder auskommentiert ist, wird
+ * für diesen Raum überhaupt kein Video angeboten.
+ *
+ * In diesem Fall wird, sofern jeweils aktiviert, Slides, Audio und zuletzt Musik
+ * als Default-Stream angenommen.
+ */
+ 'HD_VIDEO' => true,
+
+ /**
+ * Slide-Only-Stream (1024×576) verfügbar
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist ẃird kein Slide-Only-
+ * Stream angeboten. Für diesen Raum wird dann keim Slides-Tab angeboten.
+ *
+ * In diesem Fall wird, sofern jeweils aktiviert, Audio und zuletzt Musik als
+ * Default-Stream angenommen.
+ */
+ 'SLIDES' => false,
+
+ /**
+ * Audio-Only-Stream verfügbar
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist ẃird kein Audio-Only-
+ * Stream angeboten. Für diesen Raum wird dann keim Audio-Tab angeboten.
+ *
+ * In diesem Fall wird, sofern aktiviert, Musik als Default-Stream angenommen.
+ */
+ 'AUDIO' => true,
+
+ /**
+ * Musik-Stream verfügbar
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist ẃird kein Musik-Stream
+ * angeboten. Für diesen Raum wird dann keim Musik-Tab angeboten.
+ *
+ * Ist kein einziger Stream angebote, wird statt der Stream-Seite ein 404-Fehler
+ * angezeigt.
+ */
+ 'MUSIC' => false,
+
+ /**
+ * Fahrplan-Ansicht auf der Raum-Seite aktivieren (boolean)
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist,
+ * wird der Raum nicht im Fahrplan gesucht und auch auf der Startseite
+ * findet keine Darstellung statt.
+ *
+ * Ebenso können alle Fahrplan-Funktionialitäten durch auskommentieren
+ * des globalen $CONFIG['SCHEDULE']-Blocks deaktiviert werden
+ */
+ 'SCHEDULE' => true,
+
+ /**
+ * Name des Raums im Fahrplan
+ * Wenn diese Zeile auskommentiert ist wird der Raum-Slug verwendet
+ */
+ 'SCHEDULE_NAME' => 'Mainhall',
+
+ /**
+ * Feedback anzeigen (boolean)
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist,
+ * taucht der Raum auch im globalen Feedback-Formular nicht auf.
+ *
+ * Ebenso können alle Feedback-Funktionialitäten durch auskommentieren
+ * des globalen $CONFIG['FEEDBACK']-Blocks deaktiviert werden
+ */
+ 'FEEDBACK' => true,
+
+ /**
+ * Subtitles-Player aktivieren (boolean)
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist,
+ * wird der Subtitles-Button und die damit verbundenen Funktionen deaktiviert.
+ *
+ * Ebenso können alle Subtitles-Funktionialitäten durch auskommentieren
+ * des globalen $CONFIG['SUBTITLES']-Blocks deaktiviert werden
+ */
+ 'SUBTITLES' => false,
+
+ /**
+ * Embed-Form aktivieren (boolean)
+ *
+ * Ist dieses Feld auf true gesetzt, wird ein Embed-Tab unter dem Video
+ * angezeigt. Darüber kann der Player als iframe eingebunden werden.
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist,
+ * wird kein Embed-Tab angeboten und die URL zum Einbetten existiert nicht.
+ *
+ * Ebenso können alle Embedding-Funktionialitäten durch auskommentieren
+ * des globalen $CONFIG['EMBED']-Blocks deaktiviert werden
+ */
+ 'EMBED' => true,
+
+ /**
+ * IRC-Link aktivieren (boolean)
+ *
+ * Solange Twitter oder IRC aktiviert ist, wird ein "Chat"-Tab mit den
+ * jeweiligen Links angezeigt.
+ *
+ * Ist dieses Feld auf true gesetzt, wird ein irc://-Link angezeigt.
+ * WebIrc wird nach dem Congress nicht mehr unterstützt ;)
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist,
+ * wird kein IRC-Link angezeigt
+ *
+ * Ebenso können alle IRC-Links durch auskommentieren
+ * des globalen $CONFIG['IRC']-Blocks deaktiviert werden
+ */
+ 'IRC' => false,
+
+ /**
+ * Mit dem Angaben in diesem Block können die Vorgaben aus dem
+ * globalen $CONFIG['IRC'] Block überschrieben werden.
+ *
+ * Der globale $CONFIG['IRC']-Block muss trotzdem existieren,
+ * da sonst überhaupt kein IRC-Link erzeugt wird. (ggf. einfach `= true` setzen)
+ */
+ //'IRC_CONFIG' => array(
+ // 'DISPLAY' => '#31C3-hall-1 @ hackint',
+ // 'URL' => 'irc://irc.hackint.eu:6667/31C3-hall-1',
+ //),
+
+ /**
+ * Twitter-Link aktivieren (boolean)
+ *
+ * Ist dieses Feld auf true gesetzt, wird ein Link zu Twitter angezeigt.
+ *
+ * Solange Twitter oder IRC aktiviert ist, wird ein "Chat"-Tab mit den
+ * jeweiligen Links angezeigt.
+ *
+ * Wenn diese Zeile auskommentiert oder auf false gesetzt ist,
+ * wird kein Twitter-Link angezeigt
+ *
+ * Ebenso können alle Twitter-Links durch auskommentieren
+ * des globalen $CONFIG['TWITTER']-Blocks deaktiviert werden
+ **/
+ 'TWITTER' => true,
+
+ /**
+ * Mit dem Angaben in diesem Block können die Vorgaben aus dem
+ * globalen $CONFIG['TWITTER'] Block überschrieben werden.
+ *
+ * Der globale $CONFIG['TWITTER']-Block muss trotzdem existieren,
+ * da sonst überhaupt kein IRC-Link erzeugt wird. (ggf. einfach `= true` setzen)
+ */
+ //'TWITTER_CONFIG' => array(
+ // 'DISPLAY' => '#hall1 @ twitter',
+ // 'TEXT' => '#31C3 #hall1',
+ //),
+ ),
+
+ 'ceminar' => array(
+ 'DISPLAY' => 'ceminar',
+ 'STREAM' => 's5',
+ 'PREVIEW' => true,
+
+ 'TRANSLATION' => false,
+ 'SD_VIDEO' => true,
+ 'HD_VIDEO' => true,
+ 'AUDIO' => true,
+ 'SLIDES' => false,
+ 'MUSIC' => false,
+
+ 'SCHEDULE' => true,
+ 'SCHEDULE_NAME' => 'ceminar',
+ 'FEEDBACK' => true,
+ 'SUBTITLES' => false,
+ 'EMBED' => true,
+ 'IRC' => false,
+ 'TWITTER' => true,
+ ),
+);
+
+ 'nativespace' => array(
+ 'DISPLAY' => 'Native Space',
+ 'STREAM' => 's5',
+ 'PREVIEW' => true,
+
+ 'TRANSLATION' => false,
+ 'SD_VIDEO' => true,
+ 'HD_VIDEO' => true,
+ 'AUDIO' => true,
+ 'SLIDES' => false,
+ 'MUSIC' => false,
+
+ 'SCHEDULE' => true,
+ 'SCHEDULE_NAME' => 'nativespace',
+ 'FEEDBACK' => true,
+ 'SUBTITLES' => false,
+ 'EMBED' => true,
+ 'IRC' => false,
+ 'TWITTER' => true,
+ ),
+);
+
+
+/**
+ * Konfigurationen zum Konferenz-Fahrplan
+ * Wird dieser Block auskommentiert, werden alle Fahrplan-Bezogenen Features deaktiviert
+ */
+//$CONFIG['SCHEDULE'] = array(
+// /**
+// * URL zum Fahrplan-XML
+// *
+// * Diese URL muss immer verfügbar sein, sonst können kann die Programm-Ansicht
+// * aufhören zu funktionieren. Wenn die Quelle unverlässlich ist ;) sollte ein
+// * externer HTTP-Cache vorgeschaltet werden.
+// */
+// 'URL' => 'configs/conferences/minilac16/schedule.xml',
+//
+// /**
+// * Nur die angegebenen Räume aus dem Fahrplan beachten
+// *
+// * Wird diese Zeile auskommentiert, werden alle Räume angezeigt
+// */
+// //'ROOMFILTER' => array('Saal 1', 'Saal 2', 'Saal G', 'Saal 6'),
+//
+// /**
+// * Skalierung der Programm-Vorschau in Sekunden pro Pixel
+// */
+// 'SCALE' => 7,
+//
+// /**
+// * Simuliere das Verhalten als wäre die Konferenz bereits heute
+// *
+// * Diese folgende Beispiel-Zeile Simuliert, dass das
+// * Konferenz-Datum 2014-12-29 auf den heutigen Tag 2015-02-24 verschoben ist.
+// */
+// 'SIMULATE_OFFSET' => 0,
+//);
+
+
+
+/**
+ * Konfiguration des Feedback-Formulars
+ *
+ * Wird dieser Block auskommentiert, wird das gesamte Feedback-System deaktiviert
+ */
+$CONFIG['FEEDBACK'] = array(
+ /**
+ * DSN zum abspeichern der eingegebenen Daten
+ * die Datenbank muss eine Tabelle enthaltem, die dem in `lib/schema.sql` angegebenen
+ * Schema entspricht.
+ *
+ * Achtung vor Dateirechten: Bei SQLite reicht es nicht, wenn wer Webseiten-Benutzer
+ * die .sqlite3-Datei schreiben darf, er muss auch im übergeordneten Order neue
+ * (Lock-)Dateien anlegen dürfen
+ */
+ 'DSN' => 'sqlite:/opt/streaming-feedback/feedback.sqlite3',
+
+ /**
+ * Login-Daten für die /feedback/read/-Seite, auf der eingegangenes
+ * Feedback gelesen werden kann.
+ *
+ * Durch auskommentieren der beiden Optionen wird diese Seite komplett deaktiviert,
+ * es kann dann nur noch durch manuelle Inspektion der .sqlite3-Datei auf das Feedback
+ * zugegriffen werden.
+ */
+ 'USERNAME' => 'katze',
+ 'PASSWORD' => trim(@file_get_contents('/opt/streaming-feedback/feedback-password')),
+);
+
+/**
+ * Globaler Schalter für die Embedding-Funktionalitäten
+ *
+ * Wird diese Zeile auskommentiert oder auf False gesetzt, werden alle
+ * Embedding-Funktionen deaktiviert.
+ */
+$CONFIG['EMBED'] = true;
+
+/**
+ * Konfiguration des L2S2-Systems
+ * https://github.com/c3subtitles/L2S2
+ *
+ * Wird dieser Block auskommentiert, wird das gesamte Subtitle-System deaktiviert
+ */
+//$CONFIG['SUBTITLES'] = array(
+// /**
+// * URL des L2S2-Servers
+// */
+// 'URL' => 'http://subtitles.c3voc.de/',
+//);
+
+/**
+ * Globale Konfiguration der IRC-Links.
+ *
+ * Wird dieser Block auskommentiert, werden keine IRC-Links mehr erzeugt. Sollen die
+ * IRC-Links für jeden Raum einzeln konfiguriert werden, muss dieser Block trotzdem
+ * existieren sein. ggf. einfach auf true setzen:
+ *
+ * $CONFIG['IRC'] = true
+ */
+//$CONFIG['IRC'] = array(
+// /**
+// * Anzeigetext für die IRC-Links.
+// *
+// * %s wird durch den Raum-Slug ersetzt.
+// * Ist eine weitere Anpassung erfoderlich, kann ein IRC_CONFIG-Block in der
+// * Raum-Konfiguration zum Überschreiben dieser Angaben verwendet werden.
+// */
+// 'DISPLAY' => '#minilac16',
+//
+// /**
+// * URL für die IRC-Links.
+// * Hierbei kann sowohl ein irc://-Link als auch ein Link zu einem
+// * WebIrc-Provider wie z.B. 'https://kiwiirc.com/client/irc.hackint.eu/#31C3-%s'
+// * verwendet werden.
+// *
+// * %s wird durch den urlencodeten Raum-Slug ersetzt.
+// * Eine Anpassung kann ebenfalls in der Raum-Konfiguration vorgenommen werden.
+// */
+// 'URL' => 'irc://.../#minilac16',
+//);
+
+/**
+ * Globale Konfiguration der Twitter-Links.
+ *
+ * Wird dieser Block auskommentiert, werden keine Twitter-Links mehr erzeugt. Sollen die
+ * Twitter-Links für jeden Raum einzeln konfiguriert werden, muss dieser Block trotzdem
+ * existieren sein. ggf. einfach auf true setzen:
+ *
+ * $CONFIG['TWITTER'] = true
+ */
+$CONFIG['TWITTER'] = array(
+ /**
+ * Anzeigetext für die Twitter-Links.
+ *
+ * %s wird durch den Raum-Slug ersetzt.
+ * Ist eine weitere Anpassung erfoderlich, kann ein TWITTER_CONFIG-Block in der
+ * Raum-Konfiguration zum Überschreiben dieser Angaben verwendet werden.
+ */
+ 'DISPLAY' => '#lac2018 @ twitter',
+
+ /**
+ * Vorgabe-Tweet-Text für die Twitter-Links.
+ *
+ * %s wird durch den Raum-Slug ersetzt.
+ * Eine Anpassung kann ebenfalls in der Raum-Konfiguration vorgenommen werden.
+ */
+ 'TEXT' => '#lac2018',
+);
+
+
+return $CONFIG;
diff --git a/configs/conferences/lac2018/download.sh b/configs/conferences/lac2018/download.sh
new file mode 100644
index 0000000..d9d4b39
--- /dev/null
+++ b/configs/conferences/lac2018/download.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# fahrplan
+#wget --no-check-certificate -q "https://.../schedule.xml" -O /tmp/schedule.xml && mv /tmp/schedule.xml schedule.xml
+#rm -f /tmp/schedule.xml
+
+# vod json
+wget -q "http://live.dus.c3voc.de/relive/lac2018/index.json" -O /tmp/vod.json && mv /tmp/vod.json vod.json
+rm -f /tmp/vod.json
diff --git a/configs/conferences/lac2018/lac-tux.svg b/configs/conferences/lac2018/lac-tux.svg
new file mode 100644
index 0000000..e369ac1
--- /dev/null
+++ b/configs/conferences/lac2018/lac-tux.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ id="svg2"
+ height="52.456322"
+ width="35.873177">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4195">
+ <stop
+ id="stop4197"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4199"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="174.75406"
+ x2="125.34375"
+ y1="174.75406"
+ x1="68.84375"
+ gradientTransform="matrix(0.307633,0,0,1.015215,61.62135,411.475)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2787"
+ xlink:href="#linearGradient4195" />
+ </defs>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-67.224199,-536.74407)"
+ style="display:inline"
+ id="layer2" />
+ <g
+ transform="translate(-67.224199,-536.74407)"
+ style="display:inline"
+ id="layer4" />
+ <g
+ transform="translate(-67.224199,-536.74407)"
+ style="display:inline"
+ id="layer6" />
+ <g
+ transform="translate(-67.224199,-536.74407)"
+ style="display:inline"
+ id="layer7" />
+ <g
+ transform="translate(-67.224199,-536.74407)"
+ style="display:inline"
+ id="layer9">
+ <g
+ transform="translate(-68.97194,-97.93938)"
+ id="g1571"
+ style="display:inline" />
+ <g
+ transform="translate(139.6946,-272.708)"
+ id="g1672"
+ style="display:inline" />
+ </g>
+ <g
+ transform="translate(-67.224199,-536.74407)"
+ id="layer1">
+ <path
+ id="path2769"
+ d="m 67.80811,588.87966 c 1.01908,-1.52862 2.397842,-4.40604 2.247983,-5.17035 -3.771865,-18.24719 1.226141,-21.69963 4.091323,-34.97859 0.923651,-6.55847 6.151363,-9.50707 9.825277,-8.83071 1.26614,0.16987 2.67806,-0.16892 3.308387,-0.41234 2.124301,-0.84102 3.882885,-1.13628 5.395146,-0.86195 0.337422,0.10823 0.472519,0.32885 0.337856,0.45958 -2.782036,0.79482 -3.406014,1.25243 -5.153987,2.60924 -1.513635,1.28135 -2.577678,3.07974 -3.461884,4.36108 -0.621947,0.92918 0.104907,1.22892 1.146464,1.55112 1.745934,0.50954 4.166262,0.38965 6.249384,0.38216 0.451019,0.0443 0.227239,0.45335 -0.134876,0.53951 -1.446197,0.32221 -4.286152,0.62195 -5.732342,1.21392 0.469496,0.98384 1.313344,1.67173 2.73891,3.27978 2.970044,3.08244 3.510467,9.33587 1.262482,17.78379 -1.753418,6.31233 -3.192125,12.09414 -4.316113,18.07376 l -17.80401,0 z"
+ style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.62499917;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path2771"
+ d="m 91.474079,538.52546 c -1.227356,0.01 -2.607147,0.33499 -4.192075,0.96247 -0.630316,0.24343 -2.044125,0.58157 -3.310274,0.41171 -3.372007,-0.6208 -8.052844,1.81325 -9.513546,7.28815 1.116138,-0.59515 3.127076,-0.32469 3.173968,0.62589 0.11989,2.43075 -0.228606,5.40806 8.29514,1.92775 0.0057,-0.002 0.01101,-0.003 0.01669,-0.006 0.0057,-0.002 0.01095,-0.006 0.01669,-0.008 0.0172,-0.007 0.03528,-0.0127 0.05286,-0.0195 0.0059,-0.002 0.01079,-0.003 0.01669,-0.006 0.08847,-0.0339 0.181133,-0.0682 0.278172,-0.10014 0.0065,-0.002 0.01296,-0.003 0.01947,-0.006 0.01951,-0.006 0.04137,-0.0132 0.0612,-0.0195 0.0066,-0.002 0.01283,-0.003 0.01947,-0.006 0.05314,-0.0167 0.106116,-0.0338 0.161339,-0.0501 0.0069,-0.002 0.01532,-0.004 0.02226,-0.006 0.0208,-0.006 0.04012,-0.0135 0.0612,-0.0195 0.007,-0.002 0.01519,-0.004 0.02224,-0.006 0.162277,-0.0458 0.333165,-0.0886 0.509067,-0.13074 0.01529,-0.004 0.02913,-0.007 0.0445,-0.0111 0.06153,-0.0146 0.123575,-0.0304 0.186372,-0.0445 0.01571,-0.004 0.03152,-0.008 0.0473,-0.0111 0.157745,-0.0351 0.320433,-0.0673 0.484026,-0.10013 0.01636,-0.003 0.03088,-0.008 0.04728,-0.0111 0.131226,-0.0261 0.264528,-0.0503 0.397785,-0.0751 0.01666,-0.003 0.03339,-0.005 0.05008,-0.008 0.03336,-0.006 0.06672,-0.0134 0.100142,-0.0195 0.01671,-0.003 0.03336,-0.005 0.05007,-0.008 0.03344,-0.006 0.06666,-0.0135 0.100143,-0.0195 0.01674,-0.003 0.03333,-0.005 0.05007,-0.008 0.150673,-0.0268 0.300729,-0.0524 0.450642,-0.0779 0.03332,-0.006 0.06693,-0.0111 0.100141,-0.0167 0.498303,-0.0842 0.985769,-0.1631 1.42426,-0.23923 0.01461,-0.003 0.02999,-0.006 0.04451,-0.008 0.04352,-0.008 0.08545,-0.0147 0.127965,-0.0223 0.01416,-0.003 0.02767,-0.006 0.04172,-0.008 0.266979,-0.0479 0.514145,-0.0941 0.728822,-0.14188 0.229155,-0.0545 0.401471,-0.23943 0.383886,-0.37832 -0.0011,-0.008 -0.0032,-0.0177 -0.0056,-0.025 -0.0019,-0.006 -0.0057,-0.014 -0.0083,-0.0195 -0.0016,-0.003 -0.0037,-0.008 -0.0056,-0.0111 -0.0019,-0.003 -0.0062,-0.008 -0.0084,-0.0111 -0.0022,-0.003 -0.0058,-0.008 -0.0084,-0.0111 -0.03848,-0.0416 -0.108482,-0.0731 -0.214191,-0.0835 -2.083131,0.007 -4.501849,0.12843 -6.247777,-0.38111 -1.041566,-0.32221 -1.770799,-0.62304 -1.148859,-1.55221 0.884206,-1.28135 1.949625,-3.08041 3.463262,-4.36176 1.747974,-1.35683 2.372514,-1.81446 5.154564,-2.60928 0.134655,-0.13072 -0.002,-0.35075 -0.33937,-0.45898 -0.38397,-0.0696 -0.784029,-0.10354 -1.201716,-0.10014 z"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.625;marker:none" />
+ <path
+ id="path2773"
+ d="m 73.787788,550.30055 c -2.897772,12.01412 -7.349156,15.90178 -3.730312,33.40869 0.149868,0.76431 -1.231344,3.64263 -2.250426,5.17124 l 4.111407,0 c -0.815696,-7.28701 3.087872,-12.3829 4.623252,-20.89085 1.112697,-6.30526 -0.667615,-6.55749 0.489586,-14.46505 0.319539,-2.14689 -1.1962,-2.92359 -3.243507,-3.22403 z"
+ style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path2775"
+ d="m 77.876798,588.87966 c -0.356062,-0.87532 2.180876,-2.59628 4.78458,-1.00143 3.063615,-1.19429 4.591717,0.66021 4.07246,1.00143 l -8.85704,0 z"
+ style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.62499917;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="matrix(0.08901561,0,0,0.08901561,55.88662,514.5363)"
+ style="display:inline;stroke:#000000;stroke-width:7.02123451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="g2777">
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:7.02123451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 415.91052,314.44816 c 0,0 6.12652,10.07627 8.23528,29.37526"
+ id="path2779" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:7.02123451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 459.22081,285.56033 c 0,0 14.02602,24.36486 16.26345,60.98796"
+ id="path2781" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:7.02123451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 499.77589,253.03342 c 0,0 25.9056,37.1188 27.07717,102.00015"
+ id="path2783" />
+ </g>
+ <path
+ id="path2785"
+ d="m 82.896162,588.88786 17.189038,0"
+ style="display:inline;fill:none;stroke:url(#linearGradient2787);stroke-width:0.62499964;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/configs/conferences/lac2018/main.less b/configs/conferences/lac2018/main.less
new file mode 100644
index 0000000..ce36fa9
--- /dev/null
+++ b/configs/conferences/lac2018/main.less
@@ -0,0 +1,18 @@
+@import "../../../assets/css/_structure.less";
+
+// conference specific styles here
+
+@brand-primary: #aaa;
+
+img.lactux {
+ width: 160px;
+ position: absolute;
+ bottom: 40px;
+ left: 10px;
+ opacity: 0.4;
+ z-index: -100;
+
+ &:hover {
+ opacity: 1;
+ }
+}