jekyll-theme-conference 3.5.0 → 3.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -10
- data/_includes/js/live.js +30 -13
- data/_includes/js/map.js +4 -4
- 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 +6 -6
- data/_layouts/data.html +9 -1
- data/_layouts/location.html +1 -1
- data/_layouts/room.html +1 -1
- data/_sass/leaflet/{leaflet-easybutton.css → leaflet-easybutton.scss} +0 -0
- data/_sass/leaflet/{leaflet-locatecontrol.css → leaflet-locatecontrol.scss} +0 -0
- data/_sass/leaflet/{leaflet.css → leaflet.scss} +0 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64608f074739a5b9544e9c1e620c7801330e4a22ea778b940018f493b6334100
|
4
|
+
data.tar.gz: 5d74b4841bbfcc28f740a9b5464fbde28b8257dd98499c77e938c56865b15378
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ebd2f83933b0aed0216e34cc7ed10896531dd24c897d465af591cbeecaf8763027358570163b94bf9d920406f4b8268acda84fc72733882ea5904ade4f58ac6
|
7
|
+
data.tar.gz: 0d2c4d6c3e3ee34a390889d1b59153816ac6cdcc0f4a7c1a298e9f79f6b4fbada379b7e0d2335c9c5b3af2d781b69b32e8c4add0162c082400ce7722c6c0c1d0
|
data/README.md
CHANGED
@@ -110,7 +110,7 @@ To install:
|
|
110
110
|
bundle
|
111
111
|
```
|
112
112
|
|
113
|
-
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@
|
113
|
+
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v3.6.1"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
114
114
|
|
115
115
|
5. Continue with the _Setup_ section further below to customize the theme and add some content for your conference
|
116
116
|
|
@@ -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/map.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
window.conference.
|
1
|
+
window.conference.map = (() => {
|
2
2
|
let config;
|
3
3
|
let lang;
|
4
4
|
|
5
5
|
let map;
|
6
6
|
|
7
7
|
const setup = (elId) => {
|
8
|
-
map = L.map(elId).setView(config.
|
8
|
+
map = L.map(elId).setView(config.home_coord, config.default_zoom);
|
9
9
|
|
10
|
-
L.tileLayer.provider(config.
|
10
|
+
L.tileLayer.provider(config.map_provider).addTo(map);
|
11
11
|
|
12
12
|
L.easyButton('far fa-star', () => {
|
13
|
-
map.flyTo(config.
|
13
|
+
map.flyTo(config.home_coord, config.default_zoom);
|
14
14
|
}, lang.location.focus_conf).addTo(map);
|
15
15
|
|
16
16
|
L.control.locate({
|
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
@@ -2,9 +2,9 @@
|
|
2
2
|
{%- include partials/get_enable_map.html -%}
|
3
3
|
{%- if enable_map %}
|
4
4
|
"map": {
|
5
|
-
"map_provider": "{{ site.conference.map.map_provider | default: 'OpenStreetMap.Mapnik' }}",
|
6
|
-
"home_coord": [{{ site.conference.map.home_coord }}],
|
7
|
-
"default_zoom": {{ site.conference.map.default_zoom | default: 17 }}
|
5
|
+
"map_provider": "{{ site.conference.location.map.map_provider | default: 'OpenStreetMap.Mapnik' }}",
|
6
|
+
"home_coord": [{{ site.conference.location.map.home_coord | default: '47.3744489, 47.3744489' }}],
|
7
|
+
"default_zoom": {{ site.conference.location.map.default_zoom | default: 17 }}
|
8
8
|
},
|
9
9
|
{%- endif %}
|
10
10
|
|
@@ -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 %}
|
File without changes
|
File without changes
|
File without changes
|
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.1
|
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-
|
11
|
+
date: 2022-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -244,9 +244,9 @@ files:
|
|
244
244
|
- _sass/font-awesome/scss/v4-shims.scss
|
245
245
|
- _sass/font-awesome/solid.scss
|
246
246
|
- _sass/font-awesome/v4-shims.scss
|
247
|
-
- _sass/leaflet/leaflet-easybutton.
|
248
|
-
- _sass/leaflet/leaflet-locatecontrol.
|
249
|
-
- _sass/leaflet/leaflet.
|
247
|
+
- _sass/leaflet/leaflet-easybutton.scss
|
248
|
+
- _sass/leaflet/leaflet-locatecontrol.scss
|
249
|
+
- _sass/leaflet/leaflet.scss
|
250
250
|
- assets/css/main.scss
|
251
251
|
- assets/icons/live.svg
|
252
252
|
- assets/js/config.json
|
@@ -286,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
286
286
|
- !ruby/object:Gem::Version
|
287
287
|
version: '0'
|
288
288
|
requirements: []
|
289
|
-
rubygems_version: 3.
|
289
|
+
rubygems_version: 3.3.7
|
290
290
|
signing_key:
|
291
291
|
specification_version: 4
|
292
292
|
summary: Jekyll template for a conference website containing program, speaker, talks
|