aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Hubel2021-05-13 12:54:28 +0200
committerLukas Schauer2021-06-03 20:06:55 +0200
commit06ef361e74eb043cf2d179ffb16a02f04f58f20d (patch)
tree663e6461054f784fe3697d29f7822116a1c44407
parent953f783004ca9240a16c7d0c6b7ab4d162e2ab68 (diff)
config json (#147)
* add first draft for new config json * misc optimizations
Diffstat (limited to '')
-rw-r--r--docs/36c3.json478
-rw-r--r--docs/config-schema.json618
-rw-r--r--view/config-json.php2
3 files changed, 1097 insertions, 1 deletions
diff --git a/docs/36c3.json b/docs/36c3.json
new file mode 100644
index 0000000..423d73a
--- /dev/null
+++ b/docs/36c3.json
@@ -0,0 +1,478 @@
+{
+ "$schema": "./config-schema.json",
+ "conference": {
+ "title": "36C3",
+ "acronym": "36c3",
+ "organizer": "CCC",
+ "description": "Live streaming from the 36th Chaos Communication Congress",
+ "keywords": [
+ "36C3",
+ "Hacking",
+ "Chaos Computer Club",
+ "Video",
+ "Music",
+ "Podcast",
+ "Media",
+ "Streaming",
+ "Hacker",
+ "Leipzig",
+ "Resource exhaustion"
+ ],
+ "start": "2019-12-27T07:00:00+02:00",
+ "end": "2019-12-30T19:00:00+02:00"
+ },
+ "rooms": [
+ {
+ "name": "Ada",
+ "slug": "halla",
+ "streamId": "s1",
+ "streamingConfig": {
+ "display": "Ada",
+ "wide": true,
+ "stream": "s1",
+ "preview": true,
+ "translation": [
+ {
+ "endpoint": "translated",
+ "label": "Translated1"
+ },
+ {
+ "endpoint": "translated-2",
+ "label": "Translated2"
+ }
+ ],
+ "sd_video": true,
+ "hd_video": true,
+ "slides": true,
+ "dash": true,
+ "audio": true,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "Ada",
+ "feedback": true,
+ "subtitles": false,
+ "subtitles_room_id": 1,
+ "embed": true,
+ "irc": true,
+ "irc_config": {
+ "display": "#36C3-hall-a @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-a"
+ },
+ "twitter": true,
+ "twitter_config": {
+ "display": "#Ada @ twitter",
+ "text": "#36C3 #Ada"
+ }
+ }
+ },
+ {
+ "name": "Borg",
+ "slug": "hallb",
+ "streamId": "s2",
+ "streamingConfig": {
+ "display": "Borg",
+ "stream": "s2",
+ "preview": true,
+ "translation": [
+ {
+ "endpoint": "translated",
+ "label": "Translated1"
+ },
+ {
+ "endpoint": "translated-2",
+ "label": "Translated2"
+ }
+ ],
+ "sd_video": true,
+ "hd_video": true,
+ "slides": true,
+ "dash": true,
+ "audio": true,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "Borg",
+ "feedback": true,
+ "subtitles": false,
+ "embed": true,
+ "irc": true,
+ "irc_config": {
+ "display": "#36C3-hall-b @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-b"
+ },
+ "twitter": true,
+ "twitter_config": {
+ "display": "#Borg @ twitter",
+ "text": "#36C3 #Borg"
+ }
+ }
+ },
+ {
+ "name": "Clarke",
+ "slug": "hallc",
+ "streamId": "s3",
+ "streamingConfig": {
+ "display": "Clarke",
+ "stream": "s3",
+ "preview": true,
+ "translation": [
+ {
+ "endpoint": "translated",
+ "label": "Translated1"
+ },
+ {
+ "endpoint": "translated-2",
+ "label": "Translated2"
+ }
+ ],
+ "sd_video": true,
+ "hd_video": true,
+ "slides": true,
+ "dash": true,
+ "audio": true,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "Clarke",
+ "feedback": true,
+ "subtitles": false,
+ "subtitles_room_id": 3,
+ "embed": true,
+ "irc": true,
+ "irc_config": {
+ "display": "#36C3-hall-c @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-c"
+ },
+ "twitter": true,
+ "twitter_config": {
+ "display": "#Clarke @ twitter",
+ "text": "#36C3 #Clarke"
+ }
+ }
+ },
+ {
+ "name": "Dijkstra",
+ "slug": "halld",
+ "streamId": "s4",
+ "streamingConfig": {
+ "display": "Dijkstra",
+ "stream": "s4",
+ "preview": true,
+ "translation": [
+ {
+ "endpoint": "translated",
+ "label": "Translated1"
+ },
+ {
+ "endpoint": "translated-2",
+ "label": "Translated2"
+ }
+ ],
+ "sd_video": true,
+ "hd_video": true,
+ "slides": true,
+ "dash": true,
+ "audio": true,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "Dijkstra",
+ "feedback": true,
+ "subtitles": false,
+ "subtitles_room_id": 4,
+ "embed": true,
+ "irc": true,
+ "irc_config": {
+ "display": "#36C3-hall-d @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-d"
+ },
+ "twitter": true,
+ "twitter_config": {
+ "display": "#Dijkstra @ twitter",
+ "text": "#36C3 #Dijkstra"
+ }
+ }
+ },
+ {
+ "name": "Eliza",
+ "slug": "halle",
+ "streamId": "s5",
+ "streamingConfig": {
+ "display": "Eliza",
+ "stream": "s5",
+ "preview": true,
+ "translation": [
+ {
+ "endpoint": "translated",
+ "label": "Translated1"
+ },
+ {
+ "endpoint": "translated-2",
+ "label": "Translated2"
+ }
+ ],
+ "sd_video": true,
+ "hd_video": true,
+ "slides": true,
+ "dash": true,
+ "audio": true,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "Eliza",
+ "feedback": true,
+ "subtitles": false,
+ "subtitles_room_id": 5,
+ "embed": true,
+ "irc": true,
+ "irc_config": {
+ "display": "#36C3-hall-e @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-e"
+ },
+ "twitter": true,
+ "twitter_config": {
+ "display": "#Eliza @ twitter",
+ "text": "#36C3 #Eliza"
+ }
+ }
+ },
+ {
+ "name": "Chaos-West Bühne",
+ "slug": "chaoswest",
+ "streamId": "s150",
+ "streamingConfig": {
+ "display": "Chaos-West Bühne",
+ "display_short": "Chaos-West",
+ "stream": "s150",
+ "preview": true,
+ "translation": [],
+ "sd_video": true,
+ "hd_video": true,
+ "dash": true,
+ "audio": true,
+ "slides": false,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "Chaos-West Bühne",
+ "feedback": true,
+ "subtitles": false,
+ "embed": true,
+ "irc": true,
+ "twitter": true,
+ "twitter_config": {
+ "display": "#CWStage @ twitter",
+ "text": "#CWStage"
+ },
+ "irc_config": {
+ "display": "#chaoswest-stage @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#chaoswest-stage"
+ }
+ }
+ },
+ {
+ "name": "WikiPakaWG Esszimmer",
+ "slug": "wikipakawg",
+ "streamId": "s89",
+ "streamingConfig": {
+ "display": "WikiPakaWG Esszimmer",
+ "display_short": "WikiPakaWG",
+ "stream": "s89",
+ "preview": true,
+ "translation": [
+ {
+ "endpoint": "translated",
+ "label": "Translated1"
+ }
+ ],
+ "sd_video": true,
+ "hd_video": true,
+ "dash": true,
+ "audio": true,
+ "slides": false,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "WikiPaka WG: Esszimmer",
+ "feedback": true,
+ "subtitles": false,
+ "embed": true,
+ "irc": false,
+ "twitter": true,
+ "twitter_config": {
+ "display": "#wikipakaWG @ twitter",
+ "text": "#wikipakaWG"
+ }
+ }
+ },
+ {
+ "name": "Open Infrastructure Orbit",
+ "slug": "oio",
+ "streamId": "oio",
+ "streamingConfig": {
+ "display": "Open Infrastructure Orbit",
+ "display_short": "OIO",
+ "stream": "oio",
+ "preview": true,
+ "translation": [],
+ "sd_video": true,
+ "hd_video": true,
+ "dash": true,
+ "audio": true,
+ "slides": false,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "OIO Stage",
+ "feedback": true,
+ "subtitles": false,
+ "embed": true,
+ "irc": false,
+ "twitter": true,
+ "twitter_config": {
+ "display": "#OIOStage @ twitter",
+ "text": "#OIOStage"
+ }
+ }
+ },
+ {
+ "name": "CDC",
+ "slug": "cdc",
+ "streamId": "cdc",
+ "streamingConfig": {
+ "display": "CDC",
+ "display_short": "CDC",
+ "stream": "cdc",
+ "preview": true,
+ "translation": [],
+ "sd_video": true,
+ "hd_video": true,
+ "dash": true,
+ "audio": true,
+ "slides": false,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "CDC Stage",
+ "feedback": true,
+ "subtitles": false,
+ "embed": true,
+ "irc": false
+ }
+ },
+ {
+ "name": "Sendezentrum",
+ "slug": "sz",
+ "streamId": "s80",
+ "streamingConfig": {
+ "display": "Sendezentrum",
+ "display_short": "SZ",
+ "stream": "s80",
+ "preview": true,
+ "translation": [],
+ "sd_video": true,
+ "hd_video": true,
+ "dash": true,
+ "audio": true,
+ "slides": false,
+ "music": false,
+ "schedule": true,
+ "schedule_name": "DLF- und Podcast-Bühne",
+ "feedback": true,
+ "subtitles": false,
+ "embed": true,
+ "irc": false,
+ "twitter": true,
+ "twitter_config": {
+ "display": "sendezentrum @ twitter",
+ "text": "@sendezentrum"
+ }
+ }
+ }
+ ],
+ "streamingConfig": {
+ "features": {
+ "embed": true,
+ "relive": true,
+ "feedback": true,
+ "chat": {
+ "hashtag": "#36C3",
+ "irc": {
+ "display": "#36C3-%s @ hackint",
+ "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-%s"
+ },
+ "twitter": {
+ "text": "#36C3 #%s"
+ }
+ }
+ },
+ "schedule": {
+ "url": "https://data.c3voc.de/36C3/stages.schedule.xml",
+ "roomfilter": [
+ "Ada",
+ "Borg",
+ "Clarke",
+ "Dijkstra",
+ "Eliza",
+ "WikiPaka WG: Esszimmer",
+ "Chaos-West Bühne",
+ "OIO Stage",
+ "DLF- und Podcast-Bühne"
+ ],
+ "scale": 7
+ },
+ "overviewPage": {
+ "sections": [
+ {
+ "title": "Live",
+ "rooms": [
+ {
+ "slug": "halla"
+ },
+ {
+ "slug": "hallb"
+ },
+ {
+ "slug": "hallc"
+ },
+ {
+ "slug": "halld"
+ },
+ {
+ "slug": "halle"
+ }
+ ]
+ },
+ {
+ "title": "Assemblies Live",
+ "rooms": [
+ {
+ "slug": "chaoswest"
+ },
+ {
+ "slug": "wikipakawg"
+ },
+ {
+ "slug": "oio"
+ },
+ {
+ "slug": "sz"
+ },
+ {
+ "slug": "cdc"
+ }
+ ]
+ }
+ ]
+ },
+ "html": {
+ "banner": "<div class=\"congress\"></div><div class=\"congress-motto\"></div>",
+ "footer": "\n\t\tby <a href=\"https://ccc.de\">Chaos Computer Club e.V</a>,\n\t\t<a href=\"https://www.isystems.at/\">iSystems</a>,\n\t\t<a href=\"https://fem.tu-ilmenau.de/\">FeM</a>,\n\t\t<a href=\"https://www.ags.tu-bs.de/\">ags</a> &\n\t\t<a href=\"https://c3voc.de\">C3VOC</a>\n\t",
+ "not_started": null
+ },
+ "extraFiles": {
+ "schedule.xml": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.xml",
+ "schedule.json": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.json",
+ "schedule.ics": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.ics",
+ "schedule.xcal": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.xcal",
+ "everything.schedule.xml": "http://data.c3voc.de/36C3/everything.schedule.xml",
+ "everything.schedule.json": "http://data.c3voc.de/36C3/everything.schedule.json",
+ "stages.schedule.xml": "http://data.c3voc.de/36C3/stages.schedule.xml",
+ "stages.schedule.json": "http://data.c3voc.de/36C3/stages.schedule.json",
+ "wiki.schedule.xml": "http://data.c3voc.de/36C3/wiki.schedule.xml",
+ "wiki.schedule.json": "http://data.c3voc.de/36C3/wiki.schedule.json"
+ }
+ }
+} \ No newline at end of file
diff --git a/docs/config-schema.json b/docs/config-schema.json
new file mode 100644
index 0000000..f804081
--- /dev/null
+++ b/docs/config-schema.json
@@ -0,0 +1,618 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "$id": "https://c3voc.de/streaming-website/config",
+ "type": "object",
+ "title": "VOC streaming-website configuration",
+ "description": " deployed at https://streaming.media.ccc.de",
+ "required": ["conference"],
+ "properties": {
+ "conference": {
+ "type": "object",
+ "required": ["title", "acronym"],
+ "additionalProperties": false,
+ "properties": {
+ "title": {
+ "type": "string",
+ "title": "Titel der Konferenz",
+ "description": "Kann Leer- und Sonderzeichen enthalten. Dieser wird im Seiten-Header, im &lt;title>-Tag, in der About-Seite und ggf. ab weiteren Stellen als Anzeigetext benutzt.",
+ "examples": ["DiVOC - Reboot to Respawn"]
+ },
+ "acronym": {
+ "title": "Acronym",
+ "description": "VOC Kürzel für die Konferenz, falls nicht bekannt bitte nicht selbst ausdenken sondern nachfragen. Wird in den URLs als Slug für die Konferenz verwendet.",
+ "type": "string",
+ "examples": ["36c3", "rc3", "divoc-ptt"],
+ "pattern": "^[a-z0-9_-]+$"
+ },
+ "organizer": {
+ "type": "string",
+ "title": "Veranstalter",
+ "description": "Wird für den &lt;meta name=\"author\">-Tag verwendt. Ist das Feld leer, wird kein solcher &ltmeta>-Tag generiert.",
+ "examples": ["CCC", "DiVOC"]
+ },
+ "description": {
+ "type": "string",
+ "title": "Beschreibungstext",
+ "description": "Wird für den &lt;meta name=\"description\">-Tag verwendet. Wird diese Option ignoriert, wird kein solcher &lt;meta>-Tag generiert.",
+ "examples": [
+ "Livestream des Digital verteilten Online-Chaos",
+ "Live streaming from the 36th Chaos Communication Congress"
+ ]
+ },
+ "start": {
+ "type": "string",
+ "format": "datetime-local",
+ "title": "Startzeitpunkt der Konferenz",
+ "description": "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. ",
+ "examples": ["2021-04-02T09:30:00+02:00"],
+ "options": {
+ "grid_columns": 2,
+ "inputAttributes": {
+ "placeholder": "Enter datetime"
+ },
+ "flatpickr": {
+ "wrap": true,
+ "time_24hr": true,
+ "allowInput": true
+ }
+ }
+ },
+ "end": {
+ "type": "string",
+ "format": "datetime-local",
+ "examples": ["2021-04-05T18:30:00+02:00"],
+ "options": {
+ "grid_columns": 2,
+ "inputAttributes": {
+ "placeholder": "Enter datetime"
+ },
+ "flatpickr": {
+ "wrap": true,
+ "time_24hr": true,
+ "allowInput": true
+ }
+ }
+ },
+ "time_zone_name": {
+ "title": "Zeitzone",
+ "type": "string",
+ "examples": ["Europe/Amsterdam", "Europe/Berlin"],
+ "default": "Europe/Amsterdam",
+ "pattern": "^[A-Z][a-z+]/[A-Z][a-z+]$"
+ },
+ "colors": {
+ "type": "object",
+ "properties": {
+ "main": {
+ "type": "string",
+ "format": "color"
+ },
+ "background": {
+ "type": "string",
+ "format": "color"
+ }
+ }
+ },
+ "keywords" :{
+ "type":"array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "rooms": {
+ "type": "array",
+ "title": "Räume",
+ "description": "(= Audio & Video Produktionen, also auch DJ-Sets o.ä.)",
+ "default": [],
+ "additionalItems": true,
+ "items": {
+ "anyOf": [
+ {
+ "type": "object",
+ "default": {},
+ "required": ["name", "slug", "streamId", "streamingConfig"],
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Raum Name",
+ "description": "(aus Schedule)",
+ "default": "",
+ "examples": ["Piscopia"]
+ },
+ "slug": {
+ "type": "string",
+ "title": "Raum-Slug",
+ "description": "Wird in den URLs oder im Feedback verwendet",
+ "default": "",
+ "examples": ["halla", "vortrag", "piscopia"]
+ },
+ "streamId": {
+ "type": "string",
+ "title": "Stream ID",
+ "description": "Der Name des Kanals im VOC Streaming CDN z.B. s1",
+ "default": "",
+ "examples": ["s1", "s2", "s3", "s4", "q1", "divoc", "cccb"]
+ },
+ "streamingConfig": {
+ "$ref": "#/definitions/RoomStreamingConfig"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "streamingConfig": {
+ "$ref": "#/definitions/StreamingConfig"
+ }
+
+ },
+ "definitions": {
+ "Room": {
+ "type": "object",
+ "description": "Liste der Räume (= Audio & Video Produktionen, also auch DJ-Sets o.ä.)",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "slug": {
+ "type": "string"
+ },
+ "streamId": {
+ "type": "string"
+ },
+ "streamingConfig": {
+ "$ref": "#/definitions/RoomStreamingConfig"
+ }
+ },
+ "required": ["streamId", "name", "slug", "streamingConfig"]
+ },
+ "Features": {
+ "type": "object",
+ "additionalProperties": false,
+ "title": "Globale Schalter",
+ "description": "",
+ "properties": {
+ "relive": {
+ "type": "boolean",
+ "title": "Relive aktiv",
+ "description": "Wird diese Option deaktivert, wird die UI für temporäre Mitschnitte nicht angezeigt",
+ "default": false
+ },
+ "embed": {
+ "type": "boolean",
+ "title": "Embedding",
+ "description": "Wird diese Option deaktivert, werden alle Embedding-Funktionen deaktiviert.",
+ "default": true
+ },
+ "feedback": {
+ "type": "boolean",
+ "title": "Feedback Formular",
+ "description": "Wird diese Option deaktivert, wird das gesamte Feedback-System deaktiviert",
+ "default": false
+ },
+ "chat": {
+ "type": "object",
+ "title": "Globale Konfiguration für Chat und Social Media",
+ "properties": {
+ "hashtag": {
+ "type": "string",
+ "title": "Hashtag der Konferenz",
+ "examples": ["#36C3", "#divoc-r2r"]
+ },
+ "twitter": {
+ "type": ["boolean", "object"]
+ },
+ "mastodon":{
+ "type": "boolean"
+ },
+ "matrix": {
+ "type": "boolean"
+ },
+ "irc": {
+ "$ref": "#/definitions/IrcConfig",
+ "title": "Globale Konfiguration der IRC-Links",
+ "description": "Wird dieser Block auf null gesetzt, 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.",
+ "required": ["display", "url"],
+ "properties": {
+ "url": {
+ "title": "URL für die IRC-Links",
+ "description": "Hierbei kann sowohl ein irc://-Link als auch ein Link zu einem WebIrc-Provider wie z.B. 'https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-%s' verwendet werden. %s wird durch den urlencodeten Raum-Slug ersetzt. Eine Anpassung kann ebenfalls in der Raum-Konfiguration vorgenommen werden.",
+ "examples": ["https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-%s", "ircs://irc.hackint.eu:6667/36C3-%s"]
+ },
+ "display": {
+ "type": "string",
+ "title": "Anzeigetext für die IRC-Links",
+ "description": "%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."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "StreamingConfig": {
+ "type": "object",
+ "additionalProperties": false,
+ "title": "Konfigurationen",
+ "description": "",
+ "default": {},
+ "required": ["features", "overviewPage"],
+ "properties": {
+ "schedule": {
+ "type": "object",
+ "title": "Konferenz-Fahrplan",
+ "required": ["url", "scale"],
+ "properties": {
+ "url": {
+ "type": "string",
+ "title": "URL zum Fahrplan-XML",
+ "description": "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.",
+ "default": "",
+ "examples": [
+ "https://data.c3voc.de/divoc/everything.schedule.xml"
+ ]
+ },
+ "scale": {
+ "$id": "#/properties/conference/properties/streamingConfig/properties/schedule/properties/scale",
+ "type": "integer",
+ "title": "Skalierung der Programm-Vorschau ",
+ "description": "in Sekunden pro Pixel",
+ "default": 7
+ },
+ "roomfilter": {
+ "type": "array",
+ "title": "Nur die angegebenen Räume aus dem Fahrplan beachten",
+ "description": "Wird diese Option ignoriert, werden alle Räume angezeigt",
+ "default": [],
+ "additionalItems": true,
+ "items": {
+ "type": "string",
+ "description": "",
+ "default": "",
+ "examples": ["Piscopia"]
+ }
+ }
+ },
+ "additionalProperties": true
+ },
+ "features": {
+ "$ref": "#/definitions/Features"
+ },
+ "overviewPage": {
+ "$ref": "#/definitions/Page"
+ },
+ "html": {
+ "type": "object",
+ "description": "Anpassung der Standard-Texte",
+ "properties": {
+ "banner": {
+ "type": ["string", "null"],
+ "format": "text",
+ "title": "HTML-Code für den Banner (nur auf der Startseite, direkt unter dem Header)",
+ "description": "wird üblicherweise für KeyVisuals oder Textmarke verwendet (vgl. Hintergrund des Sliders oben auf http://media.ccc.de/)\nDieser HTML-Block wird üblicherweise in der main.less speziell für die Konferenz umgestaltet.\nWird diese Zeile nicht konnfiguriert, wird kein Banner ausgegeben.",
+ "examples": [
+ "<img src=\"../configs/conferences/fiffkon16/logo.png\" class=\"FIfFKon\">",
+ "<div class=\"congress\"></div><div class=\"congress-motto\"></div>"
+ ]
+ },
+ "footer": {
+ "type": ["string", "null"],
+ "format": "html",
+ "title": "HTML-Code für den Footer (z.B. für spezielle Attribuierung mit <a>-Tags)",
+ "description": "Sollte üblicherweise nur Inline-Elemente enthalten. Wird diese Zeile gelassen, wird die Standard-Attribuierung für (c3voc.de) verwendet",
+ "default": null,
+ "examples": [
+ "by <a href=\"https://di.c3voc.de\">DiVOC Organizers</a> &\n\t\t<a href=\"https://c3voc.de\">C3VOC</a>\n\t"
+ ]
+ },
+ "not_started": {
+ "$id": "#/properties/conference/properties/streamingConfig/properties/html/properties/not_started",
+ "type": ["string", "null"],
+ "format": "textarea",
+ "title": "HTML-Code für die 'Event has not started yet' Seite",
+ "description": "Ersetzt den Standardtext",
+ "examples": [
+ "<h1>Sonoj 2019 has not started yet</h1>\n<p>Live streams will be available here throughout the event. During and leading up to the event <a href=\"ircs://chat.freenode.net/sonoj\">#sonoj on Freenode</a>\nwill be a place for discussion and questions.\nIf you do not have an IRC client installed, try out <a href=\"https://webchat.freenode.net/#sonoj\">freenode webchat</a>. So even if you are not able to visit in person, please feel free to participate remotely.\n</p>"
+ ]
+ }
+ }
+ },
+ "extraFiles": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ }
+ },
+ "RoomStreamingConfig": {
+ "type": "object",
+ "title": "RoomStreamingConfig",
+ "description": "",
+ "default": {},
+ "examples": [
+ {
+ "schedule_name": "Piscopia",
+ "display": "Piscopia",
+ "stream": "divocr2r",
+ "preview": true,
+ "stereo": false,
+ "sd_video": true,
+ "hd_video": true,
+ "slides": false,
+ "dash": true,
+ "audio": true
+ }
+ ],
+ "required": ["display", "stream", "preview", "slides", "schedule"],
+ "properties": {
+ "display": {
+ "type": "string",
+ "title": "Anzeige-Name",
+ "description": "",
+ "default": "",
+ "examples": ["Piscopia"]
+ },
+ "display_short": {
+ "type": "string"
+ },
+ "wide": {
+ "type": "boolean",
+ "title": "16:9",
+ "description": "",
+ "default": true
+ },
+ "preview": {
+ "type": "boolean",
+ "title": "Stream-Vorschaubildchen auf der Übersichtsseite anzeigen",
+ "description": "",
+ "default": true
+ },
+ "translation": {
+ "type": "array",
+ "title": "Übersetzungstonspur aktivieren",
+ "description": "Betrifft video sd / hd, slides, audio",
+ "items": {
+ "$ref": "#/definitions/TranslationConfig"
+ }
+ },
+ "stereo": {
+ "type": "boolean",
+ "title": "Stereo",
+ "description": "",
+ "default": false
+ },
+ "dash": {
+ "type": "boolean",
+ "title": "DASH",
+ "description": "",
+ "default": true
+ },
+ "hd_video": {
+ "type": "boolean",
+ "title": "HD",
+ "description": "Wenn dieses Flag deaktiviert wird kein HD-Video (1920×1080) angeboten. Wird auch SD-Video und DASH deaktivert, wird für diesen Raum überhaupt kein Video angeboten. In diesem Fall wird Slides, Audio und zuletzt Musik als Default-Stream angenommen – sofern aktiviert.",
+ "default": true
+ },
+ "sd_video": {
+ "type": "boolean",
+ "title": "SD",
+ "description": "",
+ "default": true
+ },
+ "slides": {
+ "type": "boolean",
+ "title": "Slide-Only-Stream",
+ "description": "Getrennter Stream für Vortragsfolien verfügbar",
+ "default": false
+ },
+ "audio": {
+ "type": "boolean",
+ "title": "Audio-Only-Stream",
+ "description": "",
+ "default": false
+ },
+ "music": {
+ "type": "boolean",
+ "title": "Musik-Stream",
+ "description": "",
+ "default": false
+ },
+ "schedule": {
+ "type": "boolean",
+ "title": "Fahrplan-Ansicht auf der Raum-Seite aktivieren",
+ "description": "Wenn diese Option deaktivert 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 Flags deaktiviert werden.",
+ "default": true
+ },
+ "schedule_name": {
+ "type": "string",
+ "title": "Name des Raums im Fahrplan",
+ "description": "Wenn dieses Feld ignoriert wird der Raum-Display-Name verwendet",
+ "examples": ["Piscopia"]
+ },
+ "feedback": {
+ "type": "boolean",
+ "title": "Feedback anzeigen",
+ "description": "Wenn diese Option deaktivert taucht der Raum auch im globalen Feedback-Formular nicht auf. Hängt vom Feedback-Flag in den globalen Optionen ab.",
+ "default": true
+ },
+ "subtitles": {
+ "type": "boolean",
+ "title": "Subtitles-Player aktivieren",
+ "description": "Subtitles-Button und die damit verbundenen Funktionen. Hängt vom Subtitles-Flag in den globalen Optionen ab.",
+ "default": false
+ },
+ "subtitles_room_id": {
+ "type": "integer",
+ "title": "ID des Raumes im L2S2-System",
+ "description": "",
+ "examples": [1]
+ },
+ "embed": {
+ "type": "boolean",
+ "title": "Embed-Form aktivieren",
+ "description": "Ist dieses Option aktiviert, wird ein Embed-Tab unter dem Video angezeigt. Darüber kann der Player als iframe eingebunden werden. Wenn diese Option deaktivert ist, wird kein Embed-Tab angeboten und die URL zum Einbetten existiert nicht. Ebenso können alle Embedding-Funktionialitäten durch deaktiveren des globalen EMBED-Blocks deaktiviert werden.",
+ "default": true
+ },
+ "chat": {
+ "type": ["boolean", "object"],
+ "title": "Chat-Tab aktivieren/konfigurieren",
+ "description": "Ist diese Option aktiviert, wird ein Chat-Tab mit den jeweiligen Links angezeigt.",
+ "default": false,
+ "$ref": "#/definitions/ChatConfig"
+ }
+ }
+ },
+ "TranslationConfig": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["endpoint", "label"],
+ "properties": {
+ "endpoint": {
+ "type": "string"
+ },
+ "label": {
+ "type": "string"
+ }
+ }
+ },
+ "ChatConfig": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "irc": {
+
+ },
+ "twitter": {
+
+ },
+ "mastodon":{
+
+ },
+ "matrix": {
+
+ }
+ }
+ },
+ "IrcConfig": {
+ "title": "IRC",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "display": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "required": ["display", "url"]
+ },
+ "TwitterConfig": {
+ "title": "Twitter",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "display": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ },
+ "required": ["display", "text"]
+ },
+ "Page": {
+ "type": "object",
+ "title": "Konfiguration der Stream-Übersicht auf der Startseite",
+ "description": "",
+ "default": {},
+ "required": ["sections"],
+ "properties": {
+ "sections": {
+ "type": "array",
+ "title": "Abschnitte und darunter aufgeführte Räume",
+ "description": "Es können beliebig neue Gruppen und Räume hinzugefügt werden",
+ "default": [],
+ "examples": [
+ [
+ {
+ "title": "Live",
+ "rooms": [
+ {
+ "slug": "halla"
+ },
+ {
+ "slug": "hallb"
+ },
+ {
+ "slug": "hallc"
+ },
+ {
+ "slug": "halld"
+ },
+ {
+ "slug": "halle"
+ }
+ ]
+ },
+ {
+ "title": "Assemblies Live",
+ "rooms": [
+ {
+ "slug": "chaoswest"
+ },
+ {
+ "slug": "wikipakawg"
+ },
+ {
+ "slug": "oio"
+ },
+ {
+ "slug": "sz"
+ },
+ {
+ "slug": "cdc"
+ }
+ ]
+ }
+ ]
+ ],
+ "items": {
+ "type": "object",
+ "title": "Abschnitt",
+ "description": "",
+ "default": {},
+ "required": ["title", "items"],
+ "properties": {
+ "title": {
+ "type": "string",
+ "title": "Titel der Gruppe",
+ "description": "",
+ "default": "Live",
+ "examples": ["Live", "Audio"]
+ },
+ "items": {
+ "type": "array",
+ "title": "Räume / Channels",
+ "description": "",
+ "items": {
+ "type": "object",
+ "required": ["slug"],
+ "additionalProperties": true,
+ "properties": {
+ "slug": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/view/config-json.php b/view/config-json.php
index e6d26e4..5973cef 100644
--- a/view/config-json.php
+++ b/view/config-json.php
@@ -46,7 +46,7 @@ function formatRooms($conference) {
$struct[] = array(
'name' => $room->getDisplay(),
'slug' => $room->getSlug(),
- 'livestreamId' => $room->getStream(),
+ 'streamId' => $room->getStream(),
'streamingConfig' => lowerCaseKeys($config),
);
}