jekyll-theme-conference 3.1.1 → 3.2.0

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: 91444cf0a7c14c4e1d4a10547c95fd9c6a10b176db297a2071830f2a634052c0
4
- data.tar.gz: 5c16b5f374876f5bde05ff91c0e121133843f31ad42701ef8336b523933101ba
3
+ metadata.gz: d4f5a6058ed0096854e4b7d4714298ea9bc253a394b8170d3ae2d280bec3913e
4
+ data.tar.gz: 5ed07180716fc59636f3b5a9634fd7d430166796285566751a927ce9f15be913
5
5
  SHA512:
6
- metadata.gz: c2e410318beee836c5d3371185d5e5386f24a28c34061eeb0fc407ec68715326e55f9344021b93c2ded7631df376c45723fbeac84a3e7ae9c5f7a781e981abcc
7
- data.tar.gz: a3a3fefe3e080e42fdf24923fe36189593aeaafd87a2e90624ce42a2fa6ba766a5436201cbb63a5e7b34fba71ea695e05a9ddbadf13352fddc4792c8423444f9
6
+ metadata.gz: '08f8a0a6c90e0c23ee563b18200cbbd902385d388373c5b77ad05c6fda440914825b685771907947f7f2165378e2edd13ef7421d75133bf3e6d38f3ea6c75d8b'
7
+ data.tar.gz: 7095bab0d1cd826c3f1921d203ff67ae51f69c0d218196a0e45530cc227d2c3bab3e3b10529ffa27e840980fef9f9e6ed7cc5c6c3aa111a43ba2d7363bd54ddc
data/README.md CHANGED
@@ -165,7 +165,7 @@ There exists a Python file in this repository, `_tools/create_entries.py`, which
165
165
 
166
166
  In case you do not want to install the entire Ruby/Jekyll toolchain on your machine you can make use of [GitHub Actions](https://github.com/features/actions), Github's continuous integration platform. This repository contains multiple example Github Action configuration files in the `_tools/` folder:
167
167
 
168
- - `build.yml`: automatically builds and minimizes the website upon adding a new tag starting with a `v` (e.g. `v2020.01.01`). It then attaches the generated website as an archive to a release for easy downloading.
168
+ - `build.yml`: automatically builds and minimizes the website upon adding a new tag starting with a `v` (e.g. `v2020.01.01`). It then attaches the generated website as an archive to a release for easy downloading. Requires `purgecss.config.js` to be copied to the project's root too.
169
169
  - `test.yml`: automatically tries to build the website upon a new pull request. It can thus be used as status check before merging.
170
170
  - `schedule.yml`: automatically generates the schedule and content files when a new pull request contains a `schedule.json` file (see the _Automatic Import_subsection above). Thus, it allows quick updates of the site's content from [pretalx.com](https://pretalx.com/p/about/) exports.
171
171
 
@@ -514,7 +514,7 @@ The order of the rooms in the list defines the order of the rooms as shown in th
514
514
  Each talk consists of
515
515
 
516
516
  - a `name` (must correspond to one of the talk identifier),
517
- - a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me) formated), and
517
+ - a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me) formated) or `H:M +∆` whereby ∆ is the day offset in relation to the date given for the given day, and
518
518
  - an end time `time_end`.
519
519
 
520
520
  The list of talks should (manually) be ordered by time, i.e. the first occurring talk should be listed first.
@@ -563,6 +563,8 @@ Each speaker is represented by a file in the `_speakers/` directory. It must beg
563
563
  - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately), and
564
564
  - optionally `hide: true` if the speaker's page should not be linked to.
565
565
 
566
+ If the speaker's name consists only out of one word, populate the `last_name` property and leave the `first_name` property empty. The last name is generally used for sorting the speakers.
567
+
566
568
  ### Rooms
567
569
 
568
570
  Each room is represented by a file in the `_rooms/` directory. It must begin with valid [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) containing
@@ -363,12 +363,21 @@ window.conference.live = (function() {
363
363
  }
364
364
  };
365
365
 
366
+ let getTalks = function (roomName) {
367
+ if (roomName in data.talks) {
368
+ return data.talks[roomName];
369
+ }
370
+ else {
371
+ return false;
372
+ }
373
+ };
374
+
366
375
  let getNextTalk = function (roomName) {
367
376
  // Get talk object for next talk in given room
368
377
  let timeNow = time();
369
- let talksHere = data.talks[roomName];
378
+ let talksHere = getTalks(roomName);
370
379
 
371
- if (typeof talksHere !== "undefined") {
380
+ if (talksHere) {
372
381
  if (timeNow < talksHere[talksHere.length-1].end) {
373
382
  for (var i = 0; i < talksHere.length; i++) {
374
383
  if (timeNow < talksHere[i].end) {
@@ -383,9 +392,9 @@ window.conference.live = (function() {
383
392
  let getNextPause = function (roomName) {
384
393
  // Get time object for next pause in given room
385
394
  let timeNow = time();
386
- let talksHere = data.talks[roomName];
395
+ let talksHere = getTalks(roomName);
387
396
 
388
- if (typeof talksHere !== "undefined") {
397
+ if (talksHere) {
389
398
  if (timeNow < talksHere[talksHere.length-1].end) {
390
399
  for (var i = 1; i < talksHere.length; i++) {
391
400
  if (timeNow < talksHere[i].start && streamPause*60 <= talksHere[i].start - talksHere[i-1].end) {
@@ -420,9 +429,29 @@ window.conference.live = (function() {
420
429
  // Show stream with start/pause/end message (for given room) and keep updated
421
430
  let timeNow = time();
422
431
 
423
- let talksHere = data.talks[roomName];
424
- let roomStart = talksHere[0].start;
425
- let roomEnd = talksHere[talksHere.length-1].end;
432
+ let talksHere = getTalks(roomName);
433
+ let roomStart, roomEnd;
434
+ if (talksHere) {
435
+ roomStart = talksHere[0].start;
436
+ roomEnd = talksHere[talksHere.length-1].end;
437
+ }
438
+ else {
439
+ // If no program for given room, take overall first and last talk
440
+ roomStart = 0;
441
+ roomEnd = 0;
442
+ for (let roomNameTalk in data.talks) {
443
+ talksHere = getTalks(roomNameTalk);
444
+ let crntRoomStart = talksHere[0].start;
445
+ let crntRoomEnd = talksHere[talksHere.length-1].end;
446
+
447
+ if (roomStart == 0 || roomStart > crntRoomStart) {
448
+ roomStart = crntRoomStart;
449
+ }
450
+ if (roomEnd == 0 || roomEnd < crntRoomEnd) {
451
+ roomEnd = crntRoomEnd;
452
+ }
453
+ }
454
+ }
426
455
 
427
456
  if (typeof streamVideoTimer !== "undefined") {
428
457
  clearInterval(streamVideoTimer);
@@ -485,7 +514,7 @@ window.conference.live = (function() {
485
514
  clearInterval(streamInfoTimer);
486
515
  }
487
516
 
488
- if (timeNow >= talkNext.start - streamPause*60) {
517
+ if (talkNext && timeNow >= talkNext.start - streamPause*60) {
489
518
  document.getElementById('stream-info').dataset.time = talkNext.start;
490
519
  document.getElementById('stream-info-time').dataset.time = talkNext.start;
491
520
  updateLive();
@@ -524,8 +553,10 @@ window.conference.live = (function() {
524
553
  streamInfoTimer = setTimeout(setStreamInfo, delayStart(talkNext.start - streamPause*60) * 1000, roomName);
525
554
  }
526
555
  else if (demo) {
527
- let talksHere = data.talks[roomName];
528
- streamInfoTimer = setTimeout(setStreamInfo, delayStart(talksHere[0].start - streamPrepend*60) * 1000, roomName);
556
+ let talksHere = getTalks(roomName);
557
+ if (talksHere) {
558
+ streamInfoTimer = setTimeout(setStreamInfo, delayStart(talksHere[0].start - streamPrepend*60) * 1000, roomName);
559
+ }
529
560
  }
530
561
  }
531
562
  }
@@ -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 < 4 -%}
7
+ {%- elsif site.data.lang.version != 6 -%}
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" -%}
@@ -2,8 +2,9 @@
2
2
  {%- assign t = r.talks | first -%}
3
3
  {%- include partials/get_talk_time.html -%}
4
4
 
5
- {%- if forloop.index == 1 or talk_start_hour < day_start_hour or talk_start_hour == day_start_hour and talk_start_min < day_start_min-%}
5
+ {%- if forloop.index == 1 or talk_start_day < day_start_day or talk_start_day == day_start_day and talk_start_hour < day_start_hour or talk_start_hour == day_start_hour and talk_start_min < day_start_min-%}
6
6
  {%- assign day_start_talk = t -%}
7
+ {%- assign day_start_day = talk_start_day -%}
7
8
  {%- assign day_start_hour = talk_start_hour -%}
8
9
  {%- assign day_start_min = talk_start_min -%}
9
10
  {%- endif -%}
@@ -11,8 +12,9 @@
11
12
  {%- assign t = r.talks | last -%}
12
13
  {%- include partials/get_talk_time.html -%}
13
14
 
14
- {%- if forloop.index == 1 or talk_end_hour > day_end_hour or talk_end_hour == day_end_hour and talk_end_min > day_end_min-%}
15
+ {%- if forloop.index == 1 or talk_end_day > day_end_day or talk_end_day == day_end_day and talk_end_hour > day_end_hour or talk_end_hour == day_end_hour and talk_end_min > day_end_min-%}
15
16
  {%- assign day_end_talk = t -%}
17
+ {%- assign day_end_day = talk_end_day -%}
16
18
  {%- assign day_end_hour = talk_end_hour -%}
17
19
  {%- assign day_end_min = talk_end_min -%}
18
20
  {%- endif -%}
@@ -1,9 +1,24 @@
1
1
  {%- assign talk_start = t.time_start -%}
2
2
  {%- assign talk_end = t.time_end -%}
3
3
 
4
- {%- assign talk_start_hour = talk_start | split: ':' | first -%}
4
+ {%- if talk_start contains ' +' -%}
5
+ {%- assign talk_start_day = talk_start | split: ' +' | last | plus: 0 -%}
6
+ {%- assign talk_start = talk_start | split: ' +' | first -%}
7
+ {%- else -%}
8
+ {%- assign talk_start_day = 0 -%}
9
+ {%- endif -%}
10
+ {%- if talk_end contains ' +' -%}
11
+ {%- assign talk_end_day = talk_end | split: ' +' | last | plus: 0 -%}
12
+ {%- assign talk_end = talk_end | split: ' +' | first -%}
13
+ {%- else -%}
14
+ {%- assign talk_end_day = 0 -%}
15
+ {%- endif -%}
16
+
17
+ {%- assign talk_start_hour = talk_start | split: ':' | first | plus: 0 -%}
5
18
  {%- assign talk_start_min = talk_start | split: ':' | last | divided_by: site.conference.program.time_steps | floor | times: site.conference.program.time_steps -%}
6
- {%- assign talk_end_hour = talk_end | split: ':' | first -%}
19
+ {%- assign talk_end_hour = talk_end | split: ':' | first | plus: 0 -%}
7
20
  {%- assign talk_end_min = talk_end | split: ':' | last | divided_by: site.conference.program.time_steps | ceil | times: site.conference.program.time_steps -%}
8
21
 
9
- {%- assign talk_duration_min = talk_end_hour | minus: talk_start_hour | times: 60 | minus: talk_start_min | plus: talk_end_min -%}
22
+ {%- assign talk_start_hour_24h = talk_start_day | times: 24 | plus: talk_start_hour -%}
23
+ {%- assign talk_end_hour_24h = talk_end_day | times: 24 | plus: talk_end_hour -%}
24
+ {%- assign talk_duration_min = talk_end_hour_24h | minus: talk_start_hour_24h | times: 60 | minus: talk_start_min | plus: talk_end_min -%}
@@ -1,4 +1,9 @@
1
- {%- assign datetime_start = d.date | append: " " | append: t.time_start -%}
2
- {%- assign timestamp_start = datetime_start | date: "%s" -%}
3
- {%- assign datetime_end = d.date | append: " " | append: t.time_end -%}
4
- {%- assign timestamp_end = datetime_end | date: "%s" -%}
1
+ {%- include partials/get_talk_time.html -%}
2
+
3
+ {%- assign datetime_start = d.date | append: " " | append: time_start -%}
4
+ {%- assign add_days_start = talk_start_day | times: 24 | times: 60 | times: 60 -%}
5
+ {%- assign timestamp_start = datetime_start | date: "%s" | plus: add_days_start | date: "%s" -%}
6
+
7
+ {%- assign datetime_end = d.date | append: " " | append: time_end -%}
8
+ {%- assign add_days_end = talk_end_day | times: 24 | times: 60 | times: 60 -%}
9
+ {%- assign timestamp_end = datetime_end | date: "%s" | plus: add_days_end | date: "%s" -%}
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
 
14
14
  <div class="modal-body embed-responsive embed-responsive-16by9">
15
- <iframe class="embed-responsive-item" src="" allowfullscreen></iframe>
15
+ <iframe class="embed-responsive-item" src="" frameborder="none" allowfullscreen="allowfullscreen" seamless="seamless" scrolling="no"></iframe>
16
16
  <div id="stream-placeholder" class="embed-responsive-item d-none justify-content-center align-items-center">
17
17
  <div></div>
18
18
  </div>
data/_layouts/data.html CHANGED
@@ -12,13 +12,19 @@
12
12
  ],
13
13
 
14
14
  "rooms": {
15
+ {%- assign first_room = true -%}
15
16
  {%- for room in site.rooms %}
16
- {%- if room.live %}
17
+ {%- if room.live -%}
18
+ {%- unless first_room -%}
19
+ ,
20
+ {%- else -%}
21
+ {%- assign first_room = false -%}
22
+ {%- endunless %}
17
23
  "{{ room.name }}": {
18
24
  "id": {{ forloop.index }},
19
25
  "name": "{{ room.name }}",
20
26
  "href": "{{ room.live }}"
21
- }{%- unless forloop.last -%},{%- endunless %}
27
+ }
22
28
  {%- endif -%}
23
29
  {%- endfor %}
24
30
  },
@@ -41,18 +47,24 @@
41
47
  },
42
48
 
43
49
  "talks": {
50
+ {%- assign first_room = true -%}
44
51
  {%- for room in site.rooms -%}
45
- {%- assign room_has_talks = false %}
52
+ {%- assign first_talk = true -%}
46
53
  {%- for d in site.data.program.days -%}
47
54
  {%- for r in d.rooms -%}
48
55
  {%- if room.name == r.name and room.live %}
49
56
 
50
- {%- unless room_has_talks %}
57
+ {%- if first_talk -%}
58
+ {%- unless first_room -%}
59
+ ,
60
+ {%- else -%}
61
+ {%- assign first_room = false -%}
62
+ {%- endunless %}
51
63
  "{{ room.name | replace: '"', '\"' }}": [
52
- {%- assign room_has_talks = true %}
64
+ {%- assign first_talk = false %}
53
65
  {%- else -%}
54
66
  ,
55
- {%- endunless -%}
67
+ {%- endif -%}
56
68
 
57
69
  {%- for t in r.talks %}
58
70
  {%- assign talk = site.talks | where: 'name', t.name | first %}
@@ -82,9 +94,9 @@
82
94
  {%- endfor -%}
83
95
  {%- endfor -%}
84
96
 
85
- {%- if room_has_talks %}
86
- ]{%- unless forloop.last -%},{%- endunless -%}
87
- {%- endif -%}
97
+ {%- unless first_talk %}
98
+ ]
99
+ {%- endunless -%}
88
100
  {%- endfor %}
89
101
  }
90
102
  }
data/_layouts/page.html CHANGED
@@ -1,5 +1,9 @@
1
1
  {% include partials/header.html %}
2
2
 
3
+ {% if page.title -%}
4
+ <h1 class="font-weight-light mb-2">{{ page.title }}</h1>
5
+ {%- endif %}
6
+
3
7
  {{ content }}
4
8
 
5
9
  {% include partials/footer.html %}
@@ -61,6 +61,10 @@
61
61
  <tbody>
62
62
  {%- include partials/get_day_time.html -%}
63
63
 
64
+ {%- if day_end_day > day_start_day -%}
65
+ {%- assign day_end_hour = day_end_day | minus: day_start_day | times: 24 | plus: day_end_hour -%}
66
+ {%- endif -%}
67
+
64
68
  {%- assign day_duration_min = day_end_hour | minus: day_start_hour | times: 60 | minus: day_start_min | plus: day_end_min -%}
65
69
  {%- assign nbr_steps = day_duration_min | divided_by: site.conference.program.time_steps -%}
66
70
 
@@ -74,7 +78,12 @@
74
78
  {%- assign z-index-max = 999 -%}
75
79
 
76
80
  {%- for i in (1..nbr_steps) -%}
77
- {%- assign current_hour = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | divided_by: 60 | floor | plus: day_start_hour | modulo: 24 -%}
81
+ {%- assign current_day = 0 -%}
82
+ {%- assign current_hour = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | divided_by: 60 | floor | plus: day_start_hour -%}
83
+ {%- if current_hour >= 24 -%}
84
+ {%- assign current_day = current_hour | divided_by: 24 | floor -%}
85
+ {%- assign current_hour = current_hour | modulo: 24 -%}
86
+ {%- endif -%}
78
87
  {%- assign current_min = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | modulo: 60 -%}
79
88
  {%- if current_min < 10 -%}
80
89
  {%- assign current_time = current_hour | append: ':0' | append: current_min -%}
@@ -106,9 +115,9 @@
106
115
 
107
116
  {%- include partials/get_talk_time.html -%}
108
117
 
109
- {%- assign d_start_hour = current_hour | minus: talk_start_hour -%}
118
+ {%- assign d_start_hour = current_day | minus: talk_start_day | times: 24 | plus: current_hour | minus: talk_start_hour -%}
110
119
  {%- assign d_start_min = current_min | minus: talk_start_min -%}
111
- {%- assign d_end_hour = current_hour | minus: talk_end_hour -%}
120
+ {%- assign d_end_hour = current_day | minus: talk_end_day | times: 24 | plus: current_hour | minus: talk_end_hour -%}
112
121
  {%- assign d_end_min = current_min | minus: talk_end_min -%}
113
122
 
114
123
  {%- assign has_started = false -%}
@@ -127,7 +136,7 @@
127
136
  {%- assign has_ended = true -%}
128
137
  {%- endif -%}
129
138
 
130
- {%- if has_started and has_ended == false -%}
139
+ {%- if has_started == true and has_ended == false -%}
131
140
  {%- assign active_talk = true -%}
132
141
  {%- endif -%}
133
142
 
@@ -156,7 +165,7 @@
156
165
 
157
166
  {%- endfor %}
158
167
 
159
- {%- unless active_talk %}
168
+ {%- unless active_talk == true %}
160
169
  <td class="p-0"></td>
161
170
  {%- endunless -%}
162
171
 
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.1.1
4
+ version: 3.2.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: 2021-02-15 00:00:00.000000000 Z
11
+ date: 2021-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll