Merge branch 'feature/haccvoc-stage-website' into 'main'
haccvoc stage website See merge request hacc/infra/haccfiles!77keep-around/466cc8e25e0b6c12dc71f28f52d28c92ac13dad9
commit
466cc8e25e
|
@ -10,7 +10,7 @@
|
|||
|
||||
../../services/nextcloud
|
||||
../../services/mattermost.nix
|
||||
../../services/thelounge.nix
|
||||
../../services/haccvoc-stage.nix
|
||||
../../services/murmur.nix
|
||||
../../services/hedgedoc-hacc.nix
|
||||
../../services/hedgedoc-i4f.nix
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
{ config ? {baseurl = "";}
|
||||
, pkgs ? import <nixpkgs> {}
|
||||
, overlays ? {}
|
||||
, ... }:
|
||||
|
||||
with pkgs;
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "voc-stage-site";
|
||||
src = ./site;
|
||||
|
||||
phases = [ "configPhase" "buildPhase" "installPhase" ];
|
||||
|
||||
|
||||
configPhase = ''
|
||||
cp $src/* -r .
|
||||
rm -f _config.yml
|
||||
# let's just hope we'll never run into that one edge case
|
||||
# where json actually isn't valid yaml?
|
||||
echo ${lib.escapeShellArg (builtins.toJSON config)} > _config.yml
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
rm env-vars
|
||||
${jekyll}/bin/jekyll build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r _site/* $out
|
||||
'' +
|
||||
(with pkgs.lib; (strings.concatStrings
|
||||
(mapAttrsToList (name: value: ''
|
||||
cp -r ${value} $out/${name}
|
||||
'') overlays)));
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
let
|
||||
pkgs = import <nixpkgs> {};
|
||||
in import ./default.nix {
|
||||
inherit pkgs;
|
||||
|
||||
# the jekyll config (converted to json)
|
||||
config = {
|
||||
# to make jekyll happy
|
||||
baseurl = "";
|
||||
|
||||
meta = {
|
||||
title = "noIAA Livestream dings";
|
||||
description = "Die Workshops auf der noIAA Gegenkonferenz als Livestream";
|
||||
};
|
||||
#videosrc = "https://cdn.media.ccc.de/congress/2019/h264-hd/36c3-11175-deu-eng-fra-Hirne_Hacken_hd.mp4";
|
||||
videosrc = "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8";
|
||||
thumbnailurl = "https://gitlab.infra4future.de/lukas/videojs-player/-/raw/main/thumbnail.jpg";
|
||||
header = "Video dingsbums #noIAA";
|
||||
|
||||
irc = {
|
||||
webchat = "https://webchat.voc.hacc.space";
|
||||
# used for a fallback text in case js is disabled
|
||||
room = "#hacc-webchat";
|
||||
server = "irc.libera.chat";
|
||||
};
|
||||
|
||||
description = {
|
||||
title = "Dingsbeschreibung";
|
||||
text = ''
|
||||
<p>Lorem Ipsum dolor sit amet consecutetur ...</p>
|
||||
'';
|
||||
};
|
||||
|
||||
footer = {
|
||||
text = ''
|
||||
content by <a href='https://www.attac-muenchen.org/startseite'>attac München</a>
|
||||
| livestream by <a href='https://hacc.earth'>hacc</a>
|
||||
'';
|
||||
imprint = "lalala was ist ein Impressum?";
|
||||
};
|
||||
};
|
||||
|
||||
overlays = {
|
||||
"favicon.ico" = pkgs.fetchurl {
|
||||
url = "https://www.attac.de/typo3conf/ext/integration_project/Resources/Public/_Default/Build/img/favicons/favicon-32x32.png";
|
||||
sha256 = "19k3nd9rlvlqk0daq3mq3xrnxm9y89688v2y997714dv26hzan61";
|
||||
};
|
||||
|
||||
"logo.png" = pkgs.fetchurl {
|
||||
url = "https://shop.attac.de/media/image/47/0a/b8/logo-50-100JsYfK51WPsZI8.jpg";
|
||||
sha256 = "00563rw8yxvb9jvw72w7n5w45f9z2kxnj91mfj2dx0y46h2z1ckj";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
.vjs-theme-forest{--vjs-theme-forest--primary:#6fb04e;--vjs-theme-forest--secondary:#fff}.vjs-theme-forest.vjs-big-play-button:focus,.vjs-theme-forest:hover .vjs-big-play-button{background-color:transparent;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='88' fill='%236fb04e'%3E%3Cpath fill-rule='evenodd' d='M44 88C19.738 88 0 68.262 0 44S19.738 0 44 0s44 19.738 44 44-19.738 44-44 44zm0-85C21.393 3 3 21.393 3 44c0 22.608 18.393 41 41 41s41-18.392 41-41C85 21.393 66.607 3 44 3zm16.063 43.898L39.629 60.741a3.496 3.496 0 01-3.604.194 3.492 3.492 0 01-1.859-3.092V30.158c0-1.299.712-2.483 1.859-3.092a3.487 3.487 0 013.604.194l20.433 13.843a3.497 3.497 0 01.001 5.795zm-1.683-3.311L37.946 29.744a.49.49 0 00-.276-.09.51.51 0 00-.239.062.483.483 0 00-.265.442v27.685c0 .262.166.389.265.442.1.053.299.118.515-.028L58.38 44.414A.489.489 0 0058.6 44a.49.49 0 00-.22-.413z'/%3E%3C/svg%3E")}.vjs-theme-forest .vjs-big-play-button{width:88px;height:88px;background:none;background-repeat:no-repeat;background-position:50%;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='88' fill='%23fff'%3E%3Cpath fill-rule='evenodd' d='M44 88C19.738 88 0 68.262 0 44S19.738 0 44 0s44 19.738 44 44-19.738 44-44 44zm0-85C21.393 3 3 21.393 3 44c0 22.608 18.393 41 41 41s41-18.392 41-41C85 21.393 66.607 3 44 3zm16.063 43.898L39.629 60.741a3.496 3.496 0 01-3.604.194 3.492 3.492 0 01-1.859-3.092V30.158c0-1.299.712-2.483 1.859-3.092a3.487 3.487 0 013.604.194l20.433 13.843a3.497 3.497 0 01.001 5.795zm-1.683-3.311L37.946 29.744a.49.49 0 00-.276-.09.51.51 0 00-.239.062.483.483 0 00-.265.442v27.685c0 .262.166.389.265.442.1.053.299.118.515-.028L58.38 44.414A.489.489 0 0058.6 44a.49.49 0 00-.22-.413z'/%3E%3C/svg%3E");border:none;top:50%;left:50%;margin-top:-44px;margin-left:-44px;color:purple}.vjs-theme-forest .vjs-big-play-button .vjs-icon-placeholder{display:none}.vjs-theme-forest .vjs-button>.vjs-icon-placeholder:before{line-height:1.55}.vjs-theme-forest .vjs-control:not(.vjs-disabled):not(.vjs-time-control):hover{color:var(--vjs-theme-forest--primary);text-shadow:var(--vjs-theme-forest--secondary) 1px 0 10px}.vjs-theme-forest .vjs-control-bar{background:none;margin-bottom:1em;padding-left:1em;padding-right:1em}.vjs-theme-forest .vjs-play-control{font-size:.8em}.vjs-theme-forest .vjs-play-control .vjs-icon-placeholder:before{background-color:var(--vjs-theme-forest--secondary);height:1.5em;width:1.5em;margin-top:.2em;border-radius:1em;color:var(--vjs-theme-forest--primary)}.vjs-theme-forest .vjs-play-control:hover .vjs-icon-placeholder:before{background-color:var(--vjs-theme-forest--primary);color:var(--vjs-theme-forest--secondary)}.vjs-theme-forest .vjs-mute-control{display:none}.vjs-theme-forest .vjs-volume-panel{margin-left:.5em;margin-right:.5em;padding-top:.3em}.vjs-theme-forest .vjs-volume-bar.vjs-slider-horizontal,.vjs-theme-forest .vjs-volume-panel,.vjs-theme-forest .vjs-volume-panel.vjs-volume-panel-horizontal.vjs-slider-active,.vjs-theme-forest .vjs-volume-panel.vjs-volume-panel-horizontal:hover,.vjs-theme-forest .vjs-volume-panel:active .vjs-volume-control.vjs-volume-horizontal,.vjs-theme-forest .vjs-volume-panel:hover,.vjs-theme-forest .vjs-volume-panel:hover .vjs-volume-control.vjs-volume-horizontal{width:3em}.vjs-theme-forest .vjs-volume-level:before{font-size:1em}.vjs-theme-forest .vjs-volume-panel .vjs-volume-control{opacity:1;width:100%;height:100%}.vjs-theme-forest .vjs-volume-bar{background-color:transparent;margin:0}.vjs-theme-forest .vjs-slider-horizontal .vjs-volume-level{height:100%}.vjs-theme-forest .vjs-volume-bar.vjs-slider-horizontal{margin-top:0;margin-bottom:0;height:100%}.vjs-theme-forest .vjs-volume-bar:before{content:"";z-index:0;width:0;height:0;position:absolute;top:0;left:0;border-left:3em solid transparent;border-bottom:2em solid var(--vjs-theme-forest--primary);border-right:0 solid transparent;border-top:0 solid transparent}.vjs-theme-forest .vjs-volume-level{overflow:hidden;background-color:transparent}.vjs-theme-forest .vjs-volume-level:before{content:"";z-index:1;width:0;height:0;position:absolute;top:0;left:0;border-left:3em solid transparent;border-bottom:2em solid var(--vjs-theme-forest--secondary);border-right:0 solid transparent;border-top:0 solid transparent}.vjs-theme-forest .vjs-progress-control:hover .vjs-progress-holder{font-size:1em}.vjs-theme-forest .vjs-play-progress:before{display:none}.vjs-theme-forest .vjs-progress-holder{border-radius:.2em;height:.5em;margin:0}.vjs-theme-forest .vjs-load-progress,.vjs-theme-forest .vjs-load-progress div,.vjs-theme-forest .vjs-play-progress{border-radius:.2em}
|
|
@ -0,0 +1,148 @@
|
|||
---
|
||||
---
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>{{ site.meta.title }}</title>
|
||||
<!-- TODO -->
|
||||
<meta name="description" content="{{ site.meta.description }}">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<!-- Place favicon.ico in the root directory -->
|
||||
|
||||
<link rel="stylesheet" href="./video-js.min.css">
|
||||
<link rel="stylesheet" href="./forest.css">
|
||||
<script src="./video.js"></script>
|
||||
<script src="./videojs-contrib-quality-levels.min.js"></script>
|
||||
<script src="./videojs-http-source-selector.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<!--[if lt IE 8]>
|
||||
<p class="browserupgrade">
|
||||
You are using an <strong>outdated</strong> browser. Please
|
||||
<a href="http://browsehappy.com/">upgrade your browser</a> to improve
|
||||
your experience.
|
||||
</p>
|
||||
<![endif]-->
|
||||
|
||||
<header>
|
||||
<img src="./logo.png"
|
||||
alt="Das Logo von attac"
|
||||
style="float:left;height:5em">
|
||||
<h1>{{ site.header }}</h1>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div id="video-div">
|
||||
<video-js id="video-container"
|
||||
class="video-js vjs-theme-forest vjs-liveui"
|
||||
controls
|
||||
data-setup='{ "aspectRatio":"16:9", "autoplay":true}'
|
||||
poster="{{ site.thumbnailurl }}">
|
||||
<source id="video-source" src="{{ site.videosrc }}" type="application/x-mpegURL" >
|
||||
<p>
|
||||
Hier sollte ein Video sein. Das scheint in deinem
|
||||
Browser allerdings irgendwie nicht zu funktionieren.
|
||||
</p>
|
||||
<p>
|
||||
Alternative kannst du dir den Livestream auch
|
||||
direkt ansehen (e.g. mit <pre>vlc</pre>
|
||||
oder <pre>mplayer</pre>): <pre>{{ site.videosrc }}</pre>
|
||||
</p>
|
||||
</video-js>
|
||||
</div>
|
||||
<script>
|
||||
var width = window.innerWidth;
|
||||
var height = (width/16)*9;
|
||||
var url = '{{ site.videosrc }}';
|
||||
function UrlExists(url) {
|
||||
var http = new XMLHttpRequest();
|
||||
http.open('HEAD', url, false);
|
||||
http.send();
|
||||
if (http.status != 404){
|
||||
console.log("stream ist online!");
|
||||
var options = {
|
||||
plugins: {
|
||||
httpSourceSelector: {
|
||||
default: 'auto'
|
||||
}
|
||||
}
|
||||
};
|
||||
var player = videojs('video-container', options);
|
||||
player.httpSourceSelector();
|
||||
}
|
||||
else {
|
||||
console.log("stream is offline!");
|
||||
document.getElementById("video-div").innerHTML =
|
||||
"<img src='{{ site.thumbnailurl }}' style='height: 100%'/>";}
|
||||
}
|
||||
|
||||
try {
|
||||
UrlExists(url);
|
||||
} catch(exception) {
|
||||
if(exception.name == 'NetworkError'){
|
||||
console.log('There was a network error. -> stream is offline');
|
||||
document.getElementById("video-div").innerHTML =
|
||||
"<img src='{{ site.thumbnailurl }}' style='height: 100%' />";}
|
||||
}
|
||||
else {
|
||||
var options = {
|
||||
plugins: {
|
||||
httpSourceSelector: {
|
||||
default: 'auto'
|
||||
}
|
||||
}
|
||||
};
|
||||
var player = videojs('video-container', options);
|
||||
player.httpSourceSelector();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</main>
|
||||
|
||||
<aside class="sidepanel">
|
||||
<div id="nojshint">
|
||||
<h2>Chat</h2>
|
||||
<p>
|
||||
Hi! Diese Seite benutzt normalerweise Javascript,
|
||||
um hier einen Chat anzuzeigen, aber in Deinem Browser
|
||||
funktioniert das offenbar nicht.
|
||||
</p>
|
||||
<p>
|
||||
Alternativ kannst Du dem Chat auch mit einem
|
||||
beliebigen IRC-Client beitreten:
|
||||
</p>
|
||||
<p style="margin-left: 1em;">
|
||||
<pre>{{ site.irc.room }}</pre> <br>
|
||||
auf <pre>{{ site.irc.server }}</pre>.
|
||||
</p>
|
||||
</div>
|
||||
<iframe id="chatiframe" style="display: none" src="{{ site.irc.webchat }}">
|
||||
</iframe>
|
||||
<script>
|
||||
chatiframe.style.display = "initial";
|
||||
nojshint.style.display = "none";
|
||||
</script>
|
||||
</aside>
|
||||
|
||||
<section id="stats">
|
||||
<h2>Geklatsche!</h2>
|
||||
<p>[TODO: insert stats, number of viewers, etc. here / remove this]</p>
|
||||
</section>
|
||||
|
||||
<section id="description">
|
||||
<h2>{{ site.description.title }}</h2>
|
||||
{{ site.description.text }}
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
{{ site.footer.text }} | <a href="{{ site.footer.imprint }}">Impressum</a>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
<script src="./video.min.js"></script>
|
||||
</html>
|
|
@ -0,0 +1,170 @@
|
|||
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
display: grid;
|
||||
column-gap: 1em;
|
||||
grid-template-columns: auto 18em;
|
||||
padding-bottom: 5em;
|
||||
font-family: Tahoma, Verdana, Arial, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
@media screen and (min-width: 1000px) {
|
||||
body {
|
||||
grid-template-columns: auto 20em;
|
||||
margin-left: 5em;
|
||||
margin-right: 5em;
|
||||
}
|
||||
.sidepanel {
|
||||
grid-row-end: 4 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1500px) {
|
||||
body {
|
||||
grid-template-columns: auto 22vw;
|
||||
margin-left: 15vw;
|
||||
margin-right: 15vw;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (prefers-color-scheme: dark) {
|
||||
body {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top: 1px dashed gray !important;
|
||||
background-color: black !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
header {
|
||||
grid-column-start: 1;
|
||||
grid-column-end: 3;
|
||||
grid-row: 1;
|
||||
text-align: center;
|
||||
color: #eb6721;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
main {
|
||||
/* height: 100%; */
|
||||
background-color: red;
|
||||
grid-row: 2;
|
||||
grid-column: 1;
|
||||
}
|
||||
|
||||
.sidepanel {
|
||||
float: left;
|
||||
min-height: 30em;
|
||||
grid-row-start: 2;
|
||||
grid-row-end: 5;
|
||||
grid-column: 2;
|
||||
border: 1px dashed gray;
|
||||
}
|
||||
|
||||
#stats {
|
||||
grid-row: 3;
|
||||
grid-column: 1;
|
||||
}
|
||||
|
||||
#description {
|
||||
grid-row: 4;
|
||||
grid-column: 1;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
text-align: center;
|
||||
border-top: 1px solid #eb6721;
|
||||
background-color: white;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
main {
|
||||
width: 100%;
|
||||
padding-top: 56.25%;
|
||||
position: relative;
|
||||
background-color: blue;
|
||||
}
|
||||
|
||||
main #video-div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#video-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
|
||||
#nojshint {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 700px) {
|
||||
body {
|
||||
grid-template-columns: initial;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
header {
|
||||
grid-column: 1;
|
||||
}
|
||||
main {
|
||||
grid-row: 2;
|
||||
}
|
||||
.sidepanel {
|
||||
grid-row: 4;
|
||||
grid-column: 1;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
}
|
||||
#stats {
|
||||
grid-row: 3;
|
||||
}
|
||||
#description {
|
||||
grid-row: 5;
|
||||
}
|
||||
section {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
footer {
|
||||
grid-row: 6;
|
||||
margin-top: 4em;
|
||||
display: grid;
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
a {
|
||||
color: #eb6721;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #d35613;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #eb6721;
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,2 @@
|
|||
/*! @name videojs-contrib-quality-levels @version 2.0.9 @license Apache-2.0 */
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js"),require("global/document")):"function"==typeof define&&define.amd?define(["video.js","global/document"],t):e.videojsContribQualityLevels=t(e.videojs,e.document)}(this,function(e,t){"use strict";function n(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}e=e&&e.hasOwnProperty("default")?e.default:e,t=t&&t.hasOwnProperty("default")?t.default:t;var r=function(r){var i,l;function o(){var i,l=n(n(i=r.call(this)||this));if(e.browser.IS_IE8)for(var s in l=t.createElement("custom"),o.prototype)"constructor"!==s&&(l[s]=o.prototype[s]);return l.levels_=[],l.selectedIndex_=-1,Object.defineProperty(l,"selectedIndex",{get:function(){return l.selectedIndex_}}),Object.defineProperty(l,"length",{get:function(){return l.levels_.length}}),l||n(i)}l=r,(i=o).prototype=Object.create(l.prototype),i.prototype.constructor=i,i.__proto__=l;var s=o.prototype;return s.addQualityLevel=function(n){var r=this.getQualityLevelById(n.id);if(r)return r;var i=this.levels_.length;return r=new function n(r){var i=this;if(e.browser.IS_IE8)for(var l in i=t.createElement("custom"),n.prototype)"constructor"!==l&&(i[l]=n.prototype[l]);return i.id=r.id,i.label=i.id,i.width=r.width,i.height=r.height,i.bitrate=r.bandwidth,i.enabled_=r.enabled,Object.defineProperty(i,"enabled",{get:function(){return i.enabled_()},set:function(e){i.enabled_(e)}}),i}(n),""+i in this||Object.defineProperty(this,i,{get:function(){return this.levels_[i]}}),this.levels_.push(r),this.trigger({qualityLevel:r,type:"addqualitylevel"}),r},s.removeQualityLevel=function(e){for(var t=null,n=0,r=this.length;n<r;n++)if(this[n]===e){t=this.levels_.splice(n,1)[0],this.selectedIndex_===n?this.selectedIndex_=-1:this.selectedIndex_>n&&this.selectedIndex_--;break}return t&&this.trigger({qualityLevel:e,type:"removequalitylevel"}),t},s.getQualityLevelById=function(e){for(var t=0,n=this.length;t<n;t++){var r=this[t];if(r.id===e)return r}return null},s.dispose=function(){this.selectedIndex_=-1,this.levels_.length=0},o}(e.EventTarget);for(var i in r.prototype.allowedEvents_={change:"change",addqualitylevel:"addqualitylevel",removequalitylevel:"removequalitylevel"},r.prototype.allowedEvents_)r.prototype["on"+i]=null;var l=function(t){return n=this,e.mergeOptions({},t),i=n.qualityLevels,l=new r,n.on("dispose",function e(){l.dispose(),n.qualityLevels=i,n.off("dispose",e)}),n.qualityLevels=function(){return l},n.qualityLevels.VERSION="2.0.9",l;var n,i,l};return(e.registerPlugin||e.plugin)("qualityLevels",l),l.VERSION="2.0.9",l});
|
|
@ -0,0 +1,7 @@
|
|||
/**
|
||||
* videojs-http-source-selector
|
||||
* @version 1.1.6
|
||||
* @copyright 2019 Justin Fujita <Justin@pivotshare.com>
|
||||
* @license MIT
|
||||
*/
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js")):"function"==typeof define&&define.amd?define(["video.js"],t):(e=e||self)["videojs-http-source-selector"]=t(e.videojs)}(this,function(r){"use strict";function o(e,t){e.prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t}function s(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var e=(r=r&&r.hasOwnProperty("default")?r.default:r).getComponent("MenuItem"),t=r.getComponent("Component"),a=function(n){function e(e,t){return t.selectable=!0,t.multiSelectable=!1,n.call(this,e,t)||this}o(e,n);var t=e.prototype;return t.handleClick=function(){var e=this.options_;console.log("Changing quality to:",e.label),n.prototype.handleClick.call(this);for(var t=this.player().qualityLevels(),o=0;o<t.length;o++)e.index==t.length?t[o].enabled=!0:e.index==o?t[o].enabled=!0:t[o].enabled=!1},t.update=function(){var e=this.player().qualityLevels().selectedIndex;this.selected(this.options_.index==e)},e}(e);t.registerComponent("SourceMenuItem",a);var u=r.getComponent("MenuButton"),n=function(i){function e(e,t){var o;o=i.call(this,e,t)||this,u.apply(s(o),arguments);var n=o.player().qualityLevels();if(t&&t.default)if("low"==t.default)for(var l=0;l<n.length;l++)n[l].enabled=0==l;else if(t.default="high")for(l=0;l<n.length;l++)n[l].enabled=l==n.length-1;return o.player().qualityLevels().on(["change","addqualitylevel"],r.bind(s(o),o.update)),o}o(e,i);var t=e.prototype;return t.createEl=function(){return r.dom.createEl("div",{className:"vjs-http-source-selector vjs-menu-button vjs-menu-button-popup vjs-control vjs-button"})},t.buildCSSClass=function(){return u.prototype.buildCSSClass.call(this)+" vjs-icon-cog"},t.update=function(){return u.prototype.update.call(this)},t.createItems=function(){for(var e=[],t=this.player().qualityLevels(),o=[],n=0;n<t.length;n++){var l=t.length-(n+1),i=l===t.selectedIndex,r=""+l,s=l;t[l].height?(r=t[l].height+"p",s=parseInt(t[l].height,10)):t[l].bitrate&&(r=Math.floor(t[l].bitrate/1e3)+" kbps",s=parseInt(t[l].bitrate,10)),0<=o.indexOf(r)||(o.push(r),e.push(new a(this.player_,{label:r,index:l,selected:i,sortVal:s})))}return 1<t.length&&e.push(new a(this.player_,{label:"Auto",index:t.length,selected:!1,sortVal:99999})),e.sort(function(e,t){return e.options_.sortVal<t.options_.sortVal?1:e.options_.sortVal>t.options_.sortVal?-1:0}),e},e}(u),l={},i=r.registerPlugin||r.plugin,c=function(e){var t=this;this.ready(function(){!function(n,e){if(n.addClass("vjs-http-source-selector"),console.log("videojs-http-source-selector initialized!"),console.log("player.techName_:"+n.techName_),"Html5"!=n.techName_)return;n.on(["loadedmetadata"],function(e){if(n.qualityLevels(),r.log("loadmetadata event"),"undefined"==n.videojs_http_source_selector_initialized||1==n.videojs_http_source_selector_initialized)console.log("player.videojs_http_source_selector_initialized == true");else{console.log("player.videojs_http_source_selector_initialized == false"),n.videojs_http_source_selector_initialized=!0;var t=n.controlBar,o=t.getChild("fullscreenToggle").el();t.el().insertBefore(t.addChild("SourceMenuButton").el(),o)}})}(t,r.mergeOptions(l,e))}),r.registerComponent("SourceMenuButton",n),r.registerComponent("SourceMenuItem",a)};return i("httpSourceSelector",c),c.VERSION="1.1.6",c});
|
|
@ -22,3 +22,19 @@
|
|||
.header > button:nth-last-child(2) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
.btn {
|
||||
border-color: #eb6721 !important;
|
||||
color: #eb6721;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-color: #eb6721;
|
||||
color: white;
|
||||
}
|
||||
|
||||
|
||||
.input:not(:disabled):hover {
|
||||
border-color: #eb6721;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,57 @@ let
|
|||
# necessary since overlays won't propagate into the
|
||||
# container's config
|
||||
thelounge = pkgs.thelounge-hacked;
|
||||
|
||||
website = import ../pkgs/haccvoc-stage {
|
||||
inherit pkgs;
|
||||
config = {
|
||||
baseurl = "";
|
||||
meta = {
|
||||
title = "noIAA Livestream dings";
|
||||
description = "Die Workshops auf der noIAA Gegenkonferenz als Livestream";
|
||||
};
|
||||
|
||||
# should be able to use anything videojs understands
|
||||
videosrc = " https://d2zihajmogu5jn.cloudfront.net/big-buck-bunny/master.m3u8";
|
||||
thumbnailurl = "https://gitlab.infra4future.de/lukas/videojs-player/-/raw/main/thumbnail.jpg";
|
||||
|
||||
header = "Video dingsbums #noIAA";
|
||||
|
||||
irc = {
|
||||
webchat = "https://webchat.voc.hacc.space";
|
||||
# used for a fallback text in case js is disabled
|
||||
room = "#hacc-webchat";
|
||||
server = "irc.libera.chat";
|
||||
};
|
||||
|
||||
description = {
|
||||
title = "Dingsbeschreibung";
|
||||
text = ''
|
||||
<p>Lorem Ipsum dolor sit amet consecutetur ...</p>
|
||||
'';
|
||||
};
|
||||
|
||||
footer = {
|
||||
text = ''
|
||||
content by <a href='https://www.attac-muenchen.org/startseite'>attac München</a>
|
||||
| livestream by <a href='https://hacc.earth'>hacc</a>
|
||||
'';
|
||||
imprint = "lalala was ist ein Impressum?";
|
||||
};
|
||||
};
|
||||
|
||||
overlays = {
|
||||
"favicon.ico" = pkgs.fetchurl {
|
||||
url = "https://www.attac.de/typo3conf/ext/integration_project/Resources/Public/_Default/Build/img/favicons/favicon-32x32.png";
|
||||
sha256 = "19k3nd9rlvlqk0daq3mq3xrnxm9y89688v2y997714dv26hzan61";
|
||||
};
|
||||
|
||||
"logo.png" = pkgs.fetchurl {
|
||||
url = "https://shop.attac.de/media/image/47/0a/b8/logo-50-100JsYfK51WPsZI8.jpg";
|
||||
sha256 = "00563rw8yxvb9jvw72w7n5w45f9z2kxnj91mfj2dx0y46h2z1ckj";
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
containers.thelounge = {
|
||||
|
@ -83,4 +134,10 @@ in
|
|||
enableACME = true;
|
||||
forceSSL = true;
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."live.hacc.media" = {
|
||||
locations."/".root = website;
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue