jekyll-theme-conference 3.4.0 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
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