jekyll-theme-conference 3.4.0 → 3.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50470940d27a0744cdf32312e829e73af0c6375241575e6eb074695edfee7028
4
- data.tar.gz: 1444781b0f41ffc7d267fe324b9cfabb5afd709ee27c24d95bd6b34d02d57060
3
+ metadata.gz: b2ae0a8593b5af0caa18dddfbb46fc921b089d9f932ba6c3af44d787669c99c0
4
+ data.tar.gz: de8cf5e47442a94d1f411ad6309cfd3d4ae2f964e341e4f9b1f47e14de7eca1e
5
5
  SHA512:
6
- metadata.gz: 872ad7d006fbcb1c552dc863982d037e3eb9ba2ca8e8aab9d785d9e55ba0651c19c367ce03a0280317947e5ad2352b40eefc66a47e6bb5e3cbc1a3c36d298d91
7
- data.tar.gz: 8000b8d73b08f71554efad482cd8cf5518db22b01fc3828c985b669e5b013819785f4c41369ef5007ea375bf49f0b5b2195864e79d88c9d55bb089c9b5149388
6
+ metadata.gz: 3d347ca521f8ff60e328e9d6e1b0fa1557d78ac4dfd598f681ca2f3aba9683ea95d31b8d053295d5fd5cbe8c8cc7f56628a25b4eaf1a7149696b1611d6e1d84c
7
+ data.tar.gz: 6ef6506cb582b1620e4fa78b13b561b129076c208b2ca98993ea20c83faf77f12f2d28706dbac7a2cc944311133d585ce19b95dcd6cebfd44991b6f632de83fd
data/README.md CHANGED
@@ -35,20 +35,20 @@ The theme was originally created for the yearly Winterkongress conference of the
35
35
  * [Open Graph Link Preview](#open-graph-link-preview)
36
36
  * [Main Landing Page](#main-landing-page)
37
37
  * [Information Boxes](#information-boxes)
38
- * [Live Indications & Streaming](#live-indications---streaming)
38
+ * [Live Indications & Streaming](#live-indications--streaming)
39
39
  * [Map](#map)
40
40
  * [Talk Settings](#talk-settings)
41
41
  * [Speaker Settings](#speaker-settings)
42
42
  * [Location Settings](#location-settings)
43
43
  * [Program Settings](#program-settings)
44
44
  - [Content](#content)
45
- * [Schedule / Program](#schedule---program)
45
+ * [Schedule / Program](#schedule--program)
46
46
  * [Talks](#talks)
47
47
  * [Speakers](#speakers)
48
48
  * [Rooms](#rooms)
49
49
  * [Links](#links)
50
50
  - [Overview Pages](#overview-pages)
51
- * [Location / Room Overview](#location---room-overview)
51
+ * [Location / Room Overview](#location--room-overview)
52
52
  * [Live Stream Overview](#live-stream-overview)
53
53
  * [Additional Pages](#additional-pages)
54
54
  - [Design](#design)
@@ -590,7 +590,8 @@ Each talk is represented by a file in the `_talks/` directory. It must begin wit
590
590
  - the talk's `name` (used as identifier),
591
591
  - one or more existing `speakers` name(s),
592
592
  - optionally one or more `categories` of which one should be a main category as defined in the site's configuration,
593
- - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately and are also included on the talk overview page), and
593
+ - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately and are also included on the talk overview page),
594
+ - optionally a list of `live: links` (see the _Links_ subsection below for the available properties per link) which are shown below the live stream for the given talk in form of buttons, and
594
595
  - optionally `hide: true` if the talk's page should not be linked to.
595
596
 
596
597
  ### Speakers
@@ -15,9 +15,9 @@ window.conference.live = (function() {
15
15
 
16
16
  let data;
17
17
 
18
- let confStart = {{ conf_start }};
19
- let confEnd = {{ conf_end }};
20
- let confDur = confEnd - confStart;
18
+ const confStart = {{ conf_start }};
19
+ const confEnd = {{ conf_end }};
20
+ const confDur = confEnd - confStart;
21
21
 
22
22
  let freezeTime = false;
23
23
  let timeFrozen = 0;
@@ -34,34 +34,34 @@ window.conference.live = (function() {
34
34
  let streamVideoTimer;
35
35
  let streamInfoTimer;
36
36
 
37
- let loadData = function () {
37
+ const loadData = function () {
38
38
  // Fetch schedule from external file
39
39
  $.getJSON('{{ site.baseurl }}/assets/js/data.json', function(json) {
40
40
  data = json;
41
41
  });
42
42
  };
43
43
 
44
- let getData = function () {
44
+ const getData = function () {
45
45
  // Return data
46
46
  return data;
47
47
  };
48
48
 
49
- let mod = function (n, m) {
49
+ const mod = function (n, m) {
50
50
  // Absolute modulo
51
51
  return ((n % m) + m) % m;
52
52
  };
53
53
 
54
- let timeNow = function () {
54
+ const timeNow = function () {
55
55
  // Current timestamp in seconds
56
56
  return Math.floor(Date.now() / 1000);
57
57
  };
58
58
 
59
- let timeCont = function () {
59
+ const timeCont = function () {
60
60
  // Continuous time (respecting previous pauses)
61
61
  return timeNow() - timeOffset;
62
62
  };
63
63
 
64
- let timeCycle = function () {
64
+ const timeCycle = function () {
65
65
  // Cyclic timestamp in seconds
66
66
  let actTime = timeNow();
67
67
  let relTime = mod(actTime, durDemo + 2*durPause) / (durDemo + 2*durPause);
@@ -69,7 +69,7 @@ window.conference.live = (function() {
69
69
  return cycleTime;
70
70
  };
71
71
 
72
- let time = function () {
72
+ const time = function () {
73
73
  // Return app time
74
74
  if (freezeTime) {
75
75
  return timeFrozen;
@@ -82,7 +82,7 @@ window.conference.live = (function() {
82
82
  }
83
83
  };
84
84
 
85
- let pauseTime = function () {
85
+ const pauseTime = function () {
86
86
  // Pause app time
87
87
  if (!freezeTime) {
88
88
  timeFrozen = time();
@@ -92,7 +92,7 @@ window.conference.live = (function() {
92
92
  }
93
93
  };
94
94
 
95
- let continueTime = function () {
95
+ const continueTime = function () {
96
96
  // Continue app time
97
97
  if (freezeTime) {
98
98
  freezeTime = false;
@@ -101,7 +101,7 @@ window.conference.live = (function() {
101
101
  }
102
102
  };
103
103
 
104
- let resetTime = function () {
104
+ const resetTime = function () {
105
105
  // Reset app time
106
106
  timeOffset = 0;
107
107
  freezeTime = false;
@@ -109,7 +109,7 @@ window.conference.live = (function() {
109
109
  startUpdate();
110
110
  };
111
111
 
112
- let setTime = function (newTime, newDay) {
112
+ const setTime = function (newTime, newDay) {
113
113
  // Set and pause app time
114
114
  pauseTime();
115
115
 
@@ -137,7 +137,7 @@ window.conference.live = (function() {
137
137
  update();
138
138
  };
139
139
 
140
- let getTime = function () {
140
+ const getTime = function () {
141
141
  // Return app time as string
142
142
  let tConvert = time();
143
143
 
@@ -149,7 +149,7 @@ window.conference.live = (function() {
149
149
  return dStr +" "+ h +":"+ (m < 10 ? "0" : "") + m;
150
150
  };
151
151
 
152
- let timeUnit = function () {
152
+ const timeUnit = function () {
153
153
  // App time refresh rate
154
154
  if (demo) {
155
155
  return 0.1;
@@ -159,7 +159,7 @@ window.conference.live = (function() {
159
159
  }
160
160
  };
161
161
 
162
- let delayStart = function (startTime) {
162
+ const delayStart = function (startTime) {
163
163
  // Seconds until given startTime occurs
164
164
  let tNow = time();
165
165
  let tUnit = timeUnit();
@@ -179,18 +179,17 @@ window.conference.live = (function() {
179
179
  }
180
180
  };
181
181
 
182
- let toggleDemo = function () {
183
- // Toggle app demo mode
184
- demo = !demo;
185
- resetTime();
186
- };
187
-
188
- let demoOn = function () {
189
- // Return app demo status
190
- return demo;
182
+ let model = {
183
+ set demo(value) {
184
+ demo = value;
185
+ resetTime();
186
+ },
187
+ get demo() {
188
+ return demo;
189
+ }
191
190
  };
192
191
 
193
- let updateLive = function () {
192
+ const updateLive = function () {
194
193
  // Update status all live elements in DOM
195
194
  let tNow = time();
196
195
  let liveShow = document.getElementsByClassName('live-show');
@@ -322,7 +321,7 @@ window.conference.live = (function() {
322
321
  }
323
322
  };
324
323
 
325
- let startUpdateLive = function () {
324
+ const startUpdateLive = function () {
326
325
  // Start update timer to update live elements in DOM
327
326
  stopUpdateLive();
328
327
  updateLive();
@@ -339,7 +338,7 @@ window.conference.live = (function() {
339
338
  }
340
339
  };
341
340
 
342
- let stopUpdateLive = function () {
341
+ const stopUpdateLive = function () {
343
342
  // stopUpdate update timer to update live elements in DOM
344
343
  if (typeof liveTimer !== "undefined") {
345
344
  clearInterval(liveTimer);
@@ -347,13 +346,13 @@ window.conference.live = (function() {
347
346
  };
348
347
 
349
348
  {% if site.conference.live.streaming -%}
350
- let streamPause = {{ site.conference.live.streaming.time_pause | default: 60 }}; // in minutes
351
- let streamPrepend = {{ site.conference.live.streaming.time_prepend | default: 5 }}; // in minutes
352
- let streamExtend = {{ site.conference.live.streaming.time_extend | default: 5 }}; // in minutes
349
+ const streamPause = {{ site.conference.live.streaming.time_pause | default: 60 }}; // in minutes
350
+ const streamPrepend = {{ site.conference.live.streaming.time_prepend | default: 5 }}; // in minutes
351
+ const streamExtend = {{ site.conference.live.streaming.time_extend | default: 5 }}; // in minutes
353
352
 
354
353
  let streamModal;
355
354
 
356
- let getRoom = function (roomName) {
355
+ const getRoom = function (roomName) {
357
356
  // Return room object for given room name
358
357
  if (roomName in data.rooms) {
359
358
  return data.rooms[roomName];
@@ -363,7 +362,7 @@ window.conference.live = (function() {
363
362
  }
364
363
  };
365
364
 
366
- let getTalks = function (roomName) {
365
+ const getTalks = function (roomName) {
367
366
  if (roomName in data.talks) {
368
367
  return data.talks[roomName];
369
368
  }
@@ -372,7 +371,7 @@ window.conference.live = (function() {
372
371
  }
373
372
  };
374
373
 
375
- let getNextTalk = function (roomName) {
374
+ const getNextTalk = function (roomName) {
376
375
  // Get talk object for next talk in given room
377
376
  let timeNow = time();
378
377
  let talksHere = getTalks(roomName);
@@ -389,7 +388,7 @@ window.conference.live = (function() {
389
388
  return false;
390
389
  };
391
390
 
392
- let getNextPause = function (roomName) {
391
+ const getNextPause = function (roomName) {
393
392
  // Get time object for next pause in given room
394
393
  let timeNow = time();
395
394
  let talksHere = getTalks(roomName);
@@ -409,7 +408,7 @@ window.conference.live = (function() {
409
408
  return false;
410
409
  };
411
410
 
412
- let setStreamIframeContent = function (content) {
411
+ const setStreamIframeContent = function (content) {
413
412
  // Set stream modal iframe to show given text
414
413
  streamModal.find('iframe').attr('src', '');
415
414
  streamModal.find('iframe').addClass('d-none');
@@ -417,14 +416,14 @@ window.conference.live = (function() {
417
416
  streamModal.find('#stream-placeholder').addClass('d-flex');
418
417
  };
419
418
 
420
- let setStreamIframeSrc = function (href) {
419
+ const setStreamIframeSrc = function (href) {
421
420
  // Set stream modal iframe to show given URL
422
421
  streamModal.find('iframe').attr('src', href);
423
422
  streamModal.find('#stream-placeholder').addClass('d-none').removeClass('d-flex');
424
423
  streamModal.find('iframe').removeClass('d-none');
425
424
  };
426
425
 
427
- let setStreamVideo = function (roomName) {
426
+ const setStreamVideo = function (roomName) {
428
427
  // Update stream modal iframe:
429
428
  // Show stream with start/pause/end message (for given room) and keep updated
430
429
  let timeNow = time();
@@ -504,7 +503,7 @@ window.conference.live = (function() {
504
503
  }
505
504
  };
506
505
 
507
- let setStreamInfo = function (roomName) {
506
+ const setStreamInfo = function (roomName) {
508
507
  // Update stream modal info bar:
509
508
  // Show next talk and speaker (for given room) and keep updated
510
509
  let timeNow = time();
@@ -527,7 +526,7 @@ window.conference.live = (function() {
527
526
  streamModal.find('#stream-info-talk').text(talkNext.name).attr('href', talkNext.href);
528
527
 
529
528
  let speakerStr = '';
530
- for (var i = 0; i < talkNext.speakers.length; i++) {
529
+ for (let i = 0; i < talkNext.speakers.length; i++) {
531
530
  let speaker = data.speakers[talkNext.speakers[i]];
532
531
  if (speaker.href == '') {
533
532
  speakerStr += speaker.name +', '
@@ -539,6 +538,27 @@ window.conference.live = (function() {
539
538
  speakerStr = speakerStr.slice(0, -2);
540
539
  streamModal.find('#stream-info-speakers').html(speakerStr);
541
540
 
541
+ if (talkNext.live_links) {
542
+ let linksStr = '';
543
+ for (let i = 0; i < talkNext.live_links.length; i++) {
544
+ const link = talkNext.live_links[i];
545
+
546
+ linksStr += '<a href="' + link.href + '" class="btn btn-light m-1'
547
+ if (link.disabled) {
548
+ linksStr += ' disabled';
549
+ }
550
+ linksStr += '">';
551
+ if (link.icon) {
552
+ linksStr += '<i class="fas fa-' + link.icon + '"></i>&nbsp;';
553
+ }
554
+ linksStr += link.name + '</a>';
555
+ }
556
+ streamModal.find('#stream-info-links').html(linksStr).removeClass('d-none');
557
+ }
558
+ else {
559
+ streamModal.find('#stream-info-links').addClass('d-none');
560
+ }
561
+
542
562
  streamModal.find('#stream-info').removeClass('d-none');
543
563
 
544
564
  if (!freezeTime) {
@@ -562,7 +582,7 @@ window.conference.live = (function() {
562
582
  }
563
583
  };
564
584
 
565
- let setStream = function (roomName) {
585
+ const setStream = function (roomName) {
566
586
  // Update stream modal (iframe and info bar) for given room
567
587
  streamModal.find('.modal-footer .btn').removeClass('active');
568
588
  streamModal.find('#stream-select').val(0);
@@ -578,7 +598,7 @@ window.conference.live = (function() {
578
598
  streamModal.find('#stream-select').val(room.id);
579
599
  };
580
600
 
581
- let updateStream = function () {
601
+ const updateStream = function () {
582
602
  // Update stream modal for currently active room button
583
603
  if (streamModal.hasClass('show')) {
584
604
  let activeButton = streamModal.find('.modal-footer .btn.active');
@@ -590,7 +610,7 @@ window.conference.live = (function() {
590
610
  }
591
611
  };
592
612
 
593
- let stopUpdateStream = function () {
613
+ const stopUpdateStream = function () {
594
614
  // Stop stream modal update timer
595
615
  if (typeof streamVideoTimer !== "undefined") {
596
616
  clearInterval(streamVideoTimer);
@@ -600,14 +620,14 @@ window.conference.live = (function() {
600
620
  }
601
621
  };
602
622
 
603
- let hideModal = function () {
623
+ const hideModal = function () {
604
624
  // Close stream modal
605
625
  streamModal.find('iframe').attr('src', '');
606
626
  streamModal.find('.modal-footer .btn').removeClass('active');
607
627
  streamModal.find('#stream-select').selectedIndex = -1;
608
628
  };
609
629
 
610
- let setupStream = function () {
630
+ const setupStream = function () {
611
631
  // Setup events when modal opens/closes
612
632
  streamModal = $('#stream-modal');
613
633
 
@@ -638,43 +658,43 @@ window.conference.live = (function() {
638
658
  });
639
659
  };
640
660
 
641
- let setup = function () {
661
+ const setup = function () {
642
662
  loadData();
643
663
  startUpdateLive();
644
664
  setupStream();
645
665
  };
646
666
 
647
- let update = function () {
667
+ const update = function () {
648
668
  updateLive();
649
669
  updateStream();
650
670
  };
651
671
 
652
- let startUpdate = function () {
672
+ const startUpdate = function () {
653
673
  startUpdateLive();
654
674
  updateStream();
655
675
  };
656
676
 
657
- let stopUpdate = function () {
677
+ const stopUpdate = function () {
658
678
  stopUpdateLive();
659
679
  stopUpdateStream();
660
680
  };
661
681
 
662
682
  {%- else -%}
663
683
 
664
- let setup = function () {
684
+ const setup = function () {
665
685
  loadData();
666
686
  startUpdateLive();
667
687
  };
668
688
 
669
- let update = function () {
689
+ const update = function () {
670
690
  updateLive();
671
691
  };
672
692
 
673
- let startUpdate = function () {
693
+ const startUpdate = function () {
674
694
  startUpdateLive();
675
695
  };
676
696
 
677
- let stopUpdate = function () {
697
+ const stopUpdate = function () {
678
698
  stopUpdateLive();
679
699
  };
680
700
 
@@ -690,8 +710,7 @@ window.conference.live = (function() {
690
710
  setTime: setTime,
691
711
  getTime: getTime,
692
712
 
693
- toggleDemo: toggleDemo,
694
- demo: demoOn,
713
+ demo: model.demo,
695
714
  durDemo: durDemo,
696
715
  durPause: durPause
697
716
  };
@@ -1,9 +1,9 @@
1
1
  {%- include partials/get_talk_time.html -%}
2
2
 
3
- {%- assign datetime_start = d.date | append: " " | append: time_start -%}
3
+ {%- assign datetime_start = d.date | append: " " | append: talk_start -%}
4
4
  {%- assign add_days_start = talk_start_day | times: 24 | times: 60 | times: 60 -%}
5
5
  {%- assign timestamp_start = datetime_start | date: "%s" | plus: add_days_start | date: "%s" -%}
6
6
 
7
- {%- assign datetime_end = d.date | append: " " | append: time_end -%}
7
+ {%- assign datetime_end = d.date | append: " " | append: talk_end -%}
8
8
  {%- assign add_days_end = talk_end_day | times: 24 | times: 60 | times: 60 -%}
9
9
  {%- assign timestamp_end = datetime_end | date: "%s" | plus: add_days_end | date: "%s" -%}
@@ -26,17 +26,18 @@
26
26
  </p>
27
27
  <p class="font-weight-light mb-0" id="stream-info-speakers"></p>
28
28
  </div>
29
+ <div class="align-self-center m-0 mt-1" id="stream-info-links"></div>
29
30
  </div>
30
31
 
31
32
  <div class="modal-footer justify-content-around">
32
- {%- for room in site.rooms -%}
33
+ {% for room in site.rooms -%}
33
34
  <a id="stream-button{{ forloop.index }}" href="#" class="btn btn-outline-primary d-none d-sm-inline {% unless room.live %}disabled{% endunless %}" role="button" data-room="{{ room.name }}">
34
35
  {{ room.name }}
35
36
  </a>
36
37
  {%- endfor %}
37
38
  <div class="form-group w-100 d-block d-sm-none">
38
39
  <select class="form-control" id="stream-select">
39
- {%- for room in site.rooms -%}
40
+ {% for room in site.rooms -%}
40
41
  <option value="{{ forloop.index }}" {% unless room.live %}disabled{% endunless %}>{{ room.name }}</option>
41
42
  {%- endfor %}
42
43
  </select>
data/_layouts/data.html CHANGED
@@ -88,6 +88,23 @@
88
88
  {%- include partials/get_talk_timestamp.html %}
89
89
  "start": {{ timestamp_start }},
90
90
  "end": {{ timestamp_end }}
91
+
92
+ {%- if talk.live.links -%},
93
+ "live_links": [
94
+ {%- for link in talk.live.links %}
95
+ {
96
+ "name": "{{ link.name | replace: '"', '\"' }}",
97
+ "href": "{{ link.absolute_url | replace: '"', '%22' }}"
98
+ {%- if link.icon -%},
99
+ "icon": "{{ link.icon | replace: '"', '\"' }}"
100
+ {%- endif %}
101
+ {%- if link.disabled -%},
102
+ "disabled": true
103
+ {%- endif %}
104
+ }{%- unless forloop.last -%},{%- endunless -%}
105
+ {%- endfor %}
106
+ ]
107
+ {%- endif %}
91
108
  }{%- unless forloop.last -%},{%- endunless -%}
92
109
  {%- endfor -%}
93
110
  {%- endif -%}
@@ -18,7 +18,7 @@
18
18
  <div class="row">
19
19
  {%- endif %}
20
20
 
21
- <div class="col-md">
21
+ <div class="col-md mb-4">
22
22
  <h3>{{ room.name }}</h3>
23
23
  <div class="embed-responsive embed-responsive-16by9">
24
24
  <iframe class="embed-responsive-item" src="{{ room.live }}" allowfullscreen></iframe>
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.0
4
+ version: 3.4.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-01-24 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll