jekyll-theme-conference 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +24 -9
- data/_includes/js/live.js +30 -13
- data/_includes/js/program.js +2 -1
- data/_includes/partials/checks.html +1 -1
- data/_includes/partials/get_live_timestamps.html +3 -3
- data/_includes/partials/get_page_title.html +1 -1
- data/_layouts/config.html +3 -3
- data/_layouts/data.html +9 -1
- data/_layouts/location.html +1 -1
- data/_layouts/room.html +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0da457627a261ffda7837260a6b66294a383971e653ea3e3f05299cb8f672f8f
|
4
|
+
data.tar.gz: b02dc7da45e1e76386635952414d57c0c22727fa6e4c6e0968e5e55db58266d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23c9ce1a8794dc7f25d5973c3ce70fd1c3dbb599ffc73c5a5e9fe4135a001e4ca173671d2433f66b15dd0bdc517fee1637a52325a2f233107d0590b1f554563e
|
7
|
+
data.tar.gz: ab334e1c2cd367f9ff3eebbc4d00760fc19a0ea0a1a7ea20df8d3bcc8ed0740a73464bb4b29db87452c780c4ade88b094766cff5377166a0249272105c5f50ee
|
data/README.md
CHANGED
@@ -384,12 +384,12 @@ This can be further extended if some of the talks have an associated live stream
|
|
384
384
|
|
385
385
|
In order to activate these functionalities, each day in the `program.yml` file must contain a `date` property (see section _Content_ > _Schedule / Program_ below) and the `live` property has to be set in the configuration file containing
|
386
386
|
|
387
|
-
- how long a pause between two consecutive talks has to be for the live indication to pause (`
|
387
|
+
- how long a pause between two consecutive talks has to be for the live indication to pause (`stop`),
|
388
388
|
- optionally under the `streaming` property:
|
389
389
|
+ if streaming should be enabled (`enable`), and if enabled
|
390
|
-
+ how many minutes the stream goes active before a talk (`
|
391
|
-
+ how many minutes the stream stays active after a talk (`
|
392
|
-
+ how long a pause between two consecutive talks has to be for the stream to pause (`
|
390
|
+
+ how many minutes the stream goes active before a talk (`prepend`),
|
391
|
+
+ how many minutes the stream stays active after a talk (`extend`),
|
392
|
+
+ how long a pause between two consecutive talks has to be for the stream to pause (`pause`), and
|
393
393
|
+ optionally an external (absolute) link to which the user will be redirected instead of opening the modal (`external`),
|
394
394
|
- optionally under the `demo` property:
|
395
395
|
+ if a demonstration mode should be enabled (`enable`), whereby the JavaScript function cycles continuously through the entire program in a few minutes, and if enabled
|
@@ -399,12 +399,12 @@ In order to activate these functionalities, each day in the `program.yml` file m
|
|
399
399
|
```yaml
|
400
400
|
conference:
|
401
401
|
live:
|
402
|
-
|
402
|
+
stop: 240 # in minutes
|
403
403
|
streaming:
|
404
404
|
enable: true
|
405
|
-
|
406
|
-
|
407
|
-
|
405
|
+
pause: 60 # in minutes
|
406
|
+
prepend: 5 # in minutes
|
407
|
+
extend: 5 # in minutes
|
408
408
|
demo:
|
409
409
|
enable: false
|
410
410
|
duration: 300 # in seconds
|
@@ -620,7 +620,22 @@ Each room is represented by a file in the `_rooms/` directory. It must begin wit
|
|
620
620
|
|
621
621
|
- the room's `name`
|
622
622
|
- optionally `hide: true` if the room's page should not be linked to, and
|
623
|
-
- optionally a URL pointing to a live stream for the given room during the conference (
|
623
|
+
- optionally under the `live` property a URL pointing to a live stream for the given room during the conference (see the section _Live Indications & Streaming_ above), either:
|
624
|
+
* as an `absolute_url`, or
|
625
|
+
* a `relative_url`.
|
626
|
+
|
627
|
+
Example:
|
628
|
+
|
629
|
+
```yaml
|
630
|
+
---
|
631
|
+
name: The Room
|
632
|
+
hide: false
|
633
|
+
live:
|
634
|
+
absolute_url: https://github.com
|
635
|
+
---
|
636
|
+
|
637
|
+
...
|
638
|
+
```
|
624
639
|
|
625
640
|
### Links
|
626
641
|
|
data/_includes/js/live.js
CHANGED
@@ -27,6 +27,8 @@ window.conference.live = (() => {
|
|
27
27
|
let streamVideoTimer;
|
28
28
|
let streamInfoTimer;
|
29
29
|
|
30
|
+
let streamModal;
|
31
|
+
|
30
32
|
const loadData = () => {
|
31
33
|
// Load schedule
|
32
34
|
const request = new Request(window.conference.config.baseurl + '/assets/js/data.json');
|
@@ -306,13 +308,22 @@ window.conference.live = (() => {
|
|
306
308
|
let tRel = tNow - t;
|
307
309
|
|
308
310
|
if (tRel < 0) {
|
309
|
-
|
310
|
-
|
311
|
-
livePast[i].classList.
|
311
|
+
if (livePast[i].nodeName == 'A' || livePast[i].nodeName == 'BUTTON') {
|
312
|
+
// Disable when in past
|
313
|
+
if (!livePast[i].classList.contains('disabled')) {
|
314
|
+
livePast[i].classList.add('disabled');
|
315
|
+
}
|
316
|
+
}
|
317
|
+
else {
|
318
|
+
// Grey out when in past
|
319
|
+
if (!livePast[i].classList.contains('text-secondary')) {
|
320
|
+
livePast[i].classList.add('text-secondary');
|
321
|
+
}
|
312
322
|
}
|
313
323
|
}
|
314
324
|
else {
|
315
325
|
// Show normal otherwise
|
326
|
+
livePast[i].classList.remove('disabled');
|
316
327
|
livePast[i].classList.remove('text-secondary');
|
317
328
|
}
|
318
329
|
}
|
@@ -347,8 +358,6 @@ window.conference.live = (() => {
|
|
347
358
|
}
|
348
359
|
};
|
349
360
|
|
350
|
-
let streamModal;
|
351
|
-
|
352
361
|
const getRoom = (roomName) => {
|
353
362
|
// Return room object for given room name
|
354
363
|
if (roomName in data.rooms) {
|
@@ -361,7 +370,14 @@ window.conference.live = (() => {
|
|
361
370
|
|
362
371
|
const getTalks = (roomName) => {
|
363
372
|
if (roomName in data.talks) {
|
364
|
-
return data.talks[roomName]
|
373
|
+
return data.talks[roomName].map((talk) => {
|
374
|
+
// For talks with live links, add some grace period to the end
|
375
|
+
// time in order to prevent that the next talk is announced
|
376
|
+
// immediately
|
377
|
+
const end = talk.live_links && talk.live_links.length > 0 ?
|
378
|
+
talk.end + streamExtend * 60 : talk.end;
|
379
|
+
return { ...talk, end };
|
380
|
+
});
|
365
381
|
}
|
366
382
|
else {
|
367
383
|
return false;
|
@@ -454,7 +470,7 @@ window.conference.live = (() => {
|
|
454
470
|
}
|
455
471
|
|
456
472
|
// Conference not yet started
|
457
|
-
if (timeNow
|
473
|
+
if (timeNow <= roomStart - streamPrepend*60) {
|
458
474
|
setStreamIframeContent(lang.pre_stream);
|
459
475
|
|
460
476
|
if (!freezeTime) {
|
@@ -463,7 +479,7 @@ window.conference.live = (() => {
|
|
463
479
|
}
|
464
480
|
|
465
481
|
// Conference is over
|
466
|
-
else if (timeNow
|
482
|
+
else if (timeNow >= roomEnd + streamExtend*60) {
|
467
483
|
setStreamIframeContent(lang.post_stream);
|
468
484
|
|
469
485
|
if (!freezeTime && demo) {
|
@@ -513,7 +529,6 @@ window.conference.live = (() => {
|
|
513
529
|
if (talkNext && timeNow >= talkNext.start - streamPause*60) {
|
514
530
|
document.getElementById('stream-info').dataset.time = talkNext.start;
|
515
531
|
document.getElementById('stream-info-time').dataset.time = talkNext.start;
|
516
|
-
updateLive();
|
517
532
|
|
518
533
|
streamModal.find('#stream-info-color').removeClass((index, className) => {
|
519
534
|
return (className.match(/(^|\s)border-soft-\S+/g) || []).join(' ');
|
@@ -540,11 +555,12 @@ window.conference.live = (() => {
|
|
540
555
|
for (let i = 0; i < talkNext.live_links.length; i++) {
|
541
556
|
const link = talkNext.live_links[i];
|
542
557
|
|
543
|
-
|
544
|
-
if (link.
|
545
|
-
|
558
|
+
// Skip empty links
|
559
|
+
if ((link.name == '' && !link.icon) || link.href == '') {
|
560
|
+
continue;
|
546
561
|
}
|
547
|
-
|
562
|
+
|
563
|
+
linksStr += '<a href="' + link.href + '" class="btn btn-light m-1 live-past" data-time="'+ talkNext.start +'">';
|
548
564
|
if (link.icon) {
|
549
565
|
linksStr += '<i class="fas fa-' + link.icon + '"></i> ';
|
550
566
|
}
|
@@ -558,6 +574,7 @@ window.conference.live = (() => {
|
|
558
574
|
|
559
575
|
streamModal.find('#stream-info').removeClass('d-none');
|
560
576
|
|
577
|
+
updateLive();
|
561
578
|
if (!freezeTime) {
|
562
579
|
streamInfoTimer = setTimeout(setStreamInfo, delayStart(talkNext.end) * 1000, roomName);
|
563
580
|
}
|
data/_includes/js/program.js
CHANGED
@@ -19,7 +19,8 @@ window.conference.program = (() => {
|
|
19
19
|
today.setHours(0,0,0,0);
|
20
20
|
|
21
21
|
$('a[data-toggle="tab"]').each(function () {
|
22
|
-
|
22
|
+
let d = new Date($(this).data('date'));
|
23
|
+
d.setHours(0,0,0,0);
|
23
24
|
|
24
25
|
if (today.getTime() === d.getTime()) {
|
25
26
|
$(this).tab('show');
|
@@ -4,7 +4,7 @@
|
|
4
4
|
{%- unless site.conference.lang == "en" -%}
|
5
5
|
{%- assign errors = errors | push : "The internationalization file containing different strings for this template seems to be missing. Have you copied the `_data/lang.yml` file from the [theme's repository](https://github.com/DigitaleGesellschaft/jekyll-theme-conference/blob/master/_data/lang.yml) to you local website folder?" -%}
|
6
6
|
{%- endunless -%}
|
7
|
-
{%- elsif site.data.lang.version !=
|
7
|
+
{%- elsif site.data.lang.version != 8 -%}
|
8
8
|
{%- assign errors = errors | push : "The internationalization file in `_data/lang.yml` seems to be outdated and does not correspond to the current version of the theme. Grab the current version from the [theme's repository](https://github.com/DigitaleGesellschaft/jekyll-theme-conference/blob/master/_data/lang.yml)." -%}
|
9
9
|
{%- endunless -%}
|
10
10
|
{%- unless site.conference.lang == "en" or site.conference.lang == "de" or site.conference.lang == "fr" or site.conference.lang == "pt" -%}
|
@@ -1,9 +1,9 @@
|
|
1
|
-
{%- assign min_pause = site.conference.live.
|
1
|
+
{%- assign min_pause = site.conference.live.stop | default: 240 -%}
|
2
2
|
{%- assign min_pause = min_pause | times: 60 -%}
|
3
3
|
|
4
4
|
{%- if site.conference.live.streaming.enable -%}
|
5
|
-
{%- assign offset_start = site.conference.live.streaming.
|
6
|
-
{%- assign offset_end = site.conference.live.streaming.
|
5
|
+
{%- assign offset_start = site.conference.live.streaming.prepend | default: 5 -%}
|
6
|
+
{%- assign offset_end = site.conference.live.streaming.extend | default: 5 -%}
|
7
7
|
{%- else -%}
|
8
8
|
{%- assign offset_start = 0 -%}
|
9
9
|
{%- assign offset_end = 0 -%}
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
{%- else -%}
|
13
13
|
{%- if page.layout == 'location' -%}
|
14
|
-
{{- site.data.lang[site.conference.lang].location.
|
14
|
+
{{- site.data.lang[site.conference.lang].location.rooms | default: "Rooms" -}}
|
15
15
|
{%- elsif page.layout == 'program' -%}
|
16
16
|
{{- site.data.lang[site.conference.lang].program.title | default: "Program" -}}
|
17
17
|
{%- elsif page.layout == 'speaker-overview' -%}
|
data/_layouts/config.html
CHANGED
@@ -31,9 +31,9 @@
|
|
31
31
|
|
32
32
|
"streaming": {
|
33
33
|
"enable": {{ site.conference.live.streaming.enable | default: "false" }},
|
34
|
-
"pause": {{ site.conference.live.streaming.
|
35
|
-
"prepend": {{ site.conference.live.streaming.
|
36
|
-
"extend": {{ site.conference.live.streaming.
|
34
|
+
"pause": {{ site.conference.live.streaming.pause | default: 60 }},
|
35
|
+
"prepend": {{ site.conference.live.streaming.prepend | default: 5 }},
|
36
|
+
"extend": {{ site.conference.live.streaming.extend | default: 5 }}
|
37
37
|
},
|
38
38
|
|
39
39
|
"demo": {
|
data/_layouts/data.html
CHANGED
@@ -15,6 +15,14 @@
|
|
15
15
|
{%- assign first_room = true -%}
|
16
16
|
{%- for room in site.rooms %}
|
17
17
|
{%- if room.live -%}
|
18
|
+
{%- if room.live.absolute_url -%}
|
19
|
+
{%- assign room_live_href = room.live.absolute_url -%}
|
20
|
+
{%- elsif room.live.relative_url -%}
|
21
|
+
{%- assign room_live_href = room.live.relative_url | prepend: site.baseurl -%}
|
22
|
+
{%- else -%}
|
23
|
+
{%- continue -%}
|
24
|
+
{%- endif -%}
|
25
|
+
|
18
26
|
{%- unless first_room -%}
|
19
27
|
,
|
20
28
|
{%- else -%}
|
@@ -23,7 +31,7 @@
|
|
23
31
|
"{{ room.name }}": {
|
24
32
|
"id": {{ forloop.index }},
|
25
33
|
"name": "{{ room.name }}",
|
26
|
-
"href": "{{
|
34
|
+
"href": "{{ room_live_href }}"
|
27
35
|
}
|
28
36
|
{%- endif -%}
|
29
37
|
{%- endfor %}
|
data/_layouts/location.html
CHANGED
data/_layouts/room.html
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
<!-- title shown in browser: -->
|
12
12
|
<h1 class="display-5 mb-3 d-print-none">
|
13
|
-
{{ site.data.lang[site.conference.lang].location.
|
13
|
+
{{ site.data.lang[site.conference.lang].location.rooms | default: "Rooms" }}
|
14
14
|
</h1>
|
15
15
|
|
16
16
|
{% include partials/navbar_rooms.html %}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-theme-conference
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorenz Schmid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|