Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
saerdnaer authored Dec 27, 2023
2 parents d6a9174 + d32b8d4 commit 294e15c
Show file tree
Hide file tree
Showing 501 changed files with 73,583 additions and 2,567 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/mirroring.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ jobs:
lint-and-mirror:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: PHP Lint
uses: michaelw90/[email protected]

- name: Mirror to VOC gitolite
uses: pixta-dev/repository-mirroring-action@v1
uses: pixta-dev/repository-mirroring-action@v1.1.1
with:
target_repo_url:
[email protected]:streaming-website.git
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Unterstützt wird PHP ab 5.4.
Wer lieber Docker mag, kann auch folgende Zeile verwenden:

```sh
docker run -it -p 8000:8000 -v "$PWD":/app -w /app php:7-cli -S 0.0.0.0:8000 -d short_open_tag=true index.php
docker run -it -p 8000:8000 -v "$PWD":/app -w /app php:7-cli ./serve.sh 0.0.0.0 8000
```

### Abhängigkeiten
Expand All @@ -51,9 +51,10 @@ 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 :
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.
- [config.json](configs/conferences/jev22/config.json) – steuert das Verhalten der gesamten Konferenzseite. Dein Editor sollte dir über das referenzierte JSON Schema die einzelnen Felder erklären – die meisten Feature-Flags pro Raum oder auch die OverviewPage Config sind nicht mehr notwendig, da inzwischen die Defaults entsprechend angepasst wurden.
- [config.php](configs/conferences/nixcon15/config.php) – steuert das Verhalten der gesamten Konferenzseite wenn keine `config.json` existiert. Inzwischen Deprecated – bitte am besten direkt config.json verwenden.
- [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.

Expand Down
10 changes: 10 additions & 0 deletions assets/css/_room.less
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,16 @@ body.room {
font-size: @jumbo-font-size;
}

&.matrixlink {
@matrix: #0dbd8b; // Element-Green
.button-variant(white; @matrix; darken(@matrix, 5%););
}

&.mastodonlink {
@mastodon: #563ACC; // Mastodon-Purple
.button-variant(white; @mastodon; darken(@mastodon, 5%););
}

&.twitterlink {
@twitter: #55ACEE; // Twitter-Blue
.button-variant(white; @twitter; darken(@twitter, 5%););
Expand Down
67 changes: 67 additions & 0 deletions assets/css/_schedule.less
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
body .schedule {
-webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */

&.scroll-container {
overflow: hidden;
overflow-x: scroll;
Expand Down Expand Up @@ -123,3 +125,68 @@ body .schedule {
background-color: @schedule-selected-room;
}
}


#schedule-event-detail-popover {
display: none;
position: absolute;
z-index: 9;
background-color: @schedule-pause-bg;
border: 1px solid @schedule-pause;
padding: 2px;

#modal-header {
padding: 10px;
cursor: move;
z-index: 10;
text-align: center;
background-color: @link-color;
color: @schedule-pause;
}

#modal-title, #modal-title * {
text-transform: none;
color: @schedule-pause;
;
}

#modal-content {
// max-width: 50vw;
max-height: 90vh;
overflow: hidden;
}

#modal-body {
max-height: 400px;
overflow-x: auto
}

#modal-data {
display: grid;
grid: min-content max-content;
}

.modal-close * {
pointer-events: none
}

.close:hover {
color: #000;
text-decoration:none
}

.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
opacity:.75
}

button.close {
position: absolute;
top: 0;
right: 0;
z-index: 2;
padding: .75rem 1.25rem;
color: inherit;
border: 0;
background-color: transparent;
}
}
10 changes: 7 additions & 3 deletions assets/css/_structure.less
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
@jumbo-line-height: 45px;

@schedule-now: @brand-danger;
@schedule-now-bg: fade(lighten(@brand-danger, 5%), 60%);
@schedule-now-bg: fade(lighten(@brand-danger, 5%), 50%);
@schedule-border: lighten(@brand-primary, 50%);

@schedule-room: darken(@brand-primary, 15%);
Expand Down Expand Up @@ -55,9 +55,13 @@ nav {
}
}

.navbar-time {
.button-wrapper.navbar-right {
margin-right: 0;
}

.button-wrapper > .navbar-time {
line-height: 27px;
padding: 25px 15px;
color: inherit;
}

.button-wrapper > .btn {
Expand Down
5 changes: 3 additions & 2 deletions assets/js/lustiges-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,11 @@ $(function() {
offset = $('.js-schedule-settings').data('scheduleoffset');

$schedule.on('mouseenter mouseleave touchstart touchend', function(e) {
// console.log(e);
if(e.type == 'mouseleave' || e.type == 'touchend') {
rewindTimeout = setTimeout(function() {
scrollLock = false;
}, 5000);
scrollLock = false || window.scrollLock;
}, rewindTime);
} else {
clearTimeout(rewindTimeout);
scrollLock = true;
Expand Down
109 changes: 109 additions & 0 deletions assets/js/schedule.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
function dragElement(elmnt) {
var pos1 = 0,
pos2 = 0,
pos3 = 0,
pos4 = 0,
header = document.getElementById("popover-header");
if (header) {
// if present, the header is where you move the DIV from:
header.onmousedown = dragMouseDown;
// TODO: header.ontouchmove = dragMouseDown;
} else {
// otherwise, move the DIV from anywhere inside the DIV:
elmnt.onmousedown = dragMouseDown;
}

function dragMouseDown(e) {
e = e || window.event;
e.preventDefault();
// get the mouse cursor position at startup:
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
// call a function whenever the cursor moves:
document.onmousemove = elementDrag;
}

function elementDrag(e, data) {
e = e || window.event;
e.preventDefault();
// calculate the new cursor position:
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// set the element's new position:
elmnt.style.top = elmnt.offsetTop - pos2 + "px";
elmnt.style.left = elmnt.offsetLeft - pos1 + "px";
}

function closeDragElement() {
// stop moving when mouse button is released:
document.onmouseup = null;
document.onmousemove = null;
}
}

function closeEventDetails(e) {
document.getElementById('schedule-event-detail-popover').style.display = 'none';
window.scrollLock = false;
}

const acronym = window.location.pathname.split('/')[1];
var previousTitle = "";
function showEventDetails(e, data, force = false) {
if (!force && (data.type || previousTitle == data.title)) {
return;
}
let popover = document.getElementById("schedule-event-detail-popover");
if (e) {
popover.style.left = e.pageX + "px";
popover.style.top = e.pageY + "px";
}

document.getElementById("modal-title").innerHTML =
data.title + ('subtitle' in data ? `<br/><small>${data.subtitle || ''}` : '');
document.getElementById("modal-data").innerHTML = `
<dt>Origin:</dt>
<dd><a class="a" href="${data.url}" alt="Details" target="_blank">${data.url}</a></dd>
<dt>Video:</dt>
<dd>
<a class="a" href="/${acronym}/relive/${data.guid}" title="relive" target="_blank">relive</a>
<a class="a" href="https://media.ccc.de/v/${data.guid}" title="recording" target="_blank">recording</a>
</dd>
`;
text = document.getElementById("modal-text");
text.innerHTML = `
<p>${data.abstract || ""}</p>
<p>${(data.description || "").replace("\n\n", "<br/><br/>")}</p>
`;

popover.style.display = "block";
if (!previousTitle) {
dragElement(popover);
}
window.scrollLock = true;
previousTitle = data.title;
// fetch additional data, currently disabled till we have a global config parameter
if (false && !force) {
fetchAdditionalData(data);
}
}

function fetchAdditionalData(e) {
let q = {
query: `{event(guid:"${e.guid}"){guid,title,subtitle,abstract,description,url}}`,
operation: "EventDetails",
variables: JSON.stringify({ guid: e.guid }),
};
return fetch("https://data.c3voc.de/graphql?query=" + q.query, {
method: "GET",
headers: { Accept: "application/json" },
}).then((r) =>
r.json().then((r) => {
let data = Object.assign(e, r.data?.event);
showEventDetails(null, data, true);
})
);
}
51 changes: 51 additions & 0 deletions assets/voc-player/player-revision.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/voc-player/player-revision.js.map

Large diffs are not rendered by default.

Loading

0 comments on commit 294e15c

Please sign in to comment.