jekyll-theme-conference 5.0.0 → 5.1.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 +15 -4
- data/_data/conference_assets.yml +3 -3
- data/_includes/conference_config.json +4 -0
- data/_layouts/program.html +33 -2
- data/_sass/theme.scss +37 -0
- data/assets/css/conference-only.bundle.css +1 -1
- data/assets/css/conference.bundle.css +1 -1
- data/assets/js/conference.bundle.js +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a5353ee32af4f6ced22ff385c1b11fde3890565bb91a5b4f153f3c132e481787
|
|
4
|
+
data.tar.gz: 3ae2ef5964c7acd100117d99deb52a0ed0eab47e43ca56e56e87130e839f5bdc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b6823ef3ca588de7151db744ef2476a588b742be1ae39d19f1701912a331eb29ce888eece6c6914fa97174a4d1fc0be00f9d80cceeabf8832234f0116091a180
|
|
7
|
+
data.tar.gz: 2f9663c8b996f3718c08cb4c3621d507e4891b6925da20d53c747f6fb3c5b19b22c55817f596896874db769d3782e00cf7723f0ed33e832d640a8441827bf185
|
data/README.md
CHANGED
|
@@ -130,21 +130,24 @@ To install:
|
|
|
130
130
|
bundle
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v5.
|
|
133
|
+
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v5.1.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
|
134
134
|
|
|
135
135
|
```yaml
|
|
136
|
-
remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v5.
|
|
136
|
+
remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@v5.1.0"
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
5. Continue with the [_Setup_](#setup) section below to customize the theme and add content for your conference.
|
|
140
140
|
|
|
141
|
-
To update the theme, change the version tag in the `remote_theme` value (e.g., `@
|
|
141
|
+
To update the theme, change the version tag in the `remote_theme` value (e.g., `@v5.0.0` to `@v5.1.0`).
|
|
142
142
|
|
|
143
143
|
|
|
144
144
|
## Setup
|
|
145
145
|
|
|
146
146
|
Add the talks, speakers, rooms and the schedule of your conference as described in the section [_Content_](#content), and adapt the theme as described in the section [_Configuration_](#configuration). The tools below import them or build the site for you.
|
|
147
147
|
|
|
148
|
+
> [!TIP]
|
|
149
|
+
> To get started quickly, use the [template repository](https://github.com/DigitaleGesellschaft/jekyll-theme-conference-template): its `main` branch is an empty site ready to be filled, its `demo` branch showcases the theme with a fictional conference.
|
|
150
|
+
|
|
148
151
|
> [!TIP]
|
|
149
152
|
> Please note that the generated website can be large containing many unnecessary whitespaces. It is recommended to minimize the generated output files before uploading them to a server (e.g., with [minify](https://github.com/tdewolff/minify)).
|
|
150
153
|
|
|
@@ -499,7 +502,10 @@ This can be further extended if some talks have an associated live stream: When
|
|
|
499
502
|
|
|
500
503
|
To activate these functionalities, each day in the `program.yml` file must contain a `date` property (see section [_Content_](#content) > [Schedule / Program](#schedule--program) below) and the `live` property has to be set in the configuration file containing
|
|
501
504
|
|
|
502
|
-
- optionally, how long a pause between two consecutive talks has to be for the live indication to pause (`stop`, default: `240`),
|
|
505
|
+
- optionally, how long a pause between two consecutive talks has to be for the live indication to pause (`stop`, default: `240`),
|
|
506
|
+
- optionally, under the `now_line` property, a horizontal line in the program marking the current time (behind the talks):
|
|
507
|
+
- if it is shown (`enable`, default: `true`), and
|
|
508
|
+
- its colour, one of Bootstrap's theme colours (`color`, default: `danger`), and
|
|
503
509
|
- optionally, under the `streaming` property:
|
|
504
510
|
- if streaming should be enabled (`enable`), and if enabled
|
|
505
511
|
- how many minutes the stream goes active before a talk (`prepend`, default: `5`),
|
|
@@ -512,6 +518,9 @@ To activate these functionalities, each day in the `program.yml` file must conta
|
|
|
512
518
|
conference:
|
|
513
519
|
live:
|
|
514
520
|
stop: 240 # in minutes
|
|
521
|
+
now_line:
|
|
522
|
+
enable: true
|
|
523
|
+
color: danger # Bootstrap theme colour, e.g. primary
|
|
515
524
|
streaming:
|
|
516
525
|
enable: true
|
|
517
526
|
pause: 60 # in minutes
|
|
@@ -1124,6 +1133,7 @@ To add custom JavaScript, edit the `assets/js/main.js` file in your project. Thi
|
|
|
1124
1133
|
- `conference.modal`: Links (e.g. videos) in a modal
|
|
1125
1134
|
- `conference.embed`: Embedded streams on the stream overview page
|
|
1126
1135
|
- `conference.live`: Live indications following the program (incl. `setTime("09:30", "2026-02-20")`, `getTime()`, `pauseTime()`, `continueTime()`, `resetTime()` for testing)
|
|
1136
|
+
- `conference.nowline`: Line at the current time in the program
|
|
1127
1137
|
- `conference.stream`: Live stream modal
|
|
1128
1138
|
- `conference.infobox`: Dismissal of information boxes and modals
|
|
1129
1139
|
- `conference.darkmode`: Dark mode according to the system preference
|
|
@@ -1184,6 +1194,7 @@ _js/
|
|
|
1184
1194
|
├── live.js # Live indications
|
|
1185
1195
|
├── map.js # Map functionality
|
|
1186
1196
|
├── modal.js # Links in a modal
|
|
1197
|
+
├── nowline.js # Line at the current time in the program
|
|
1187
1198
|
├── program.js # Program days as tabs
|
|
1188
1199
|
├── pwa.js # Service worker registration
|
|
1189
1200
|
└── stream.js # Live stream modal
|
data/_data/conference_assets.yml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Generated by `npm run build`: content hashes of the bundles
|
|
2
|
-
css/conference-only.bundle.css: "
|
|
3
|
-
css/conference.bundle.css: "
|
|
2
|
+
css/conference-only.bundle.css: "f974cce9aa"
|
|
3
|
+
css/conference.bundle.css: "9f1fdccf8d"
|
|
4
4
|
css/map.bundle.css: "b607a13fcd"
|
|
5
|
-
js/conference.bundle.js: "
|
|
5
|
+
js/conference.bundle.js: "40d51faa7c"
|
data/_layouts/program.html
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
{%- include get_edition.html -%}
|
|
2
2
|
{%- include get_location_config.html -%}
|
|
3
3
|
{% include header.html %}
|
|
4
|
+
{%- comment -%} Line at the current time (_js/modules/nowline.js) {%- endcomment -%}
|
|
5
|
+
{%- assign now_line = false -%}
|
|
6
|
+
{%- if edition_live and edition_live.now_line.enable != false -%}
|
|
7
|
+
{%- assign now_line = true -%}
|
|
8
|
+
{%- endif %}
|
|
4
9
|
{% assign nbr_days = edition_program.days | size -%}
|
|
5
10
|
|
|
6
11
|
<h1 class="display-5 {% if nbr_days > 1 -%} mb-2 {%- else -%} mb-4 {%- endif %} text-break">
|
|
@@ -57,6 +62,16 @@
|
|
|
57
62
|
<tbody>
|
|
58
63
|
{%- include get_day_time.html -%}
|
|
59
64
|
|
|
65
|
+
{%- if now_line and d.date -%}
|
|
66
|
+
{%- comment -%} End of the day's last row, e.g. 01:00 the next day (minutes may be 60 after rounding) {%- endcomment -%}
|
|
67
|
+
{%- assign now_hour = day_end_hour | prepend: "0" | slice: -2, 2 -%}
|
|
68
|
+
{%- assign now_offset = day_end_day | times: 1440 | plus: day_end_min | times: 60 -%}
|
|
69
|
+
{%- assign now_end = d.date | append: "T" | append: now_hour | append: ":00:00" | date: "%s" | plus: now_offset -%}
|
|
70
|
+
|
|
71
|
+
{%- comment -%} Rows before the day's start lie after midnight {%- endcomment -%}
|
|
72
|
+
{%- assign now_start_min = day_start_hour | times: 60 | plus: day_start_min -%}
|
|
73
|
+
{%- endif -%}
|
|
74
|
+
|
|
60
75
|
{%- if day_end_day > day_start_day -%}
|
|
61
76
|
{%- assign day_end_hour = day_end_day | minus: day_start_day | times: 24 | plus: day_end_hour -%}
|
|
62
77
|
{%- endif -%}
|
|
@@ -85,7 +100,20 @@
|
|
|
85
100
|
{% assign current_min = current_time | split: ":" | last | plus: 0 %}
|
|
86
101
|
{%- endunless -%}
|
|
87
102
|
|
|
88
|
-
|
|
103
|
+
{%- if now_line and d.date -%}
|
|
104
|
+
{%- comment -%} Start of the row, e.g. 09:15 {%- endcomment -%}
|
|
105
|
+
{%- assign now_hour = current_hour | prepend: "0" | slice: -2, 2 -%}
|
|
106
|
+
{%- assign now_min = current_min | prepend: "0" | slice: -2, 2 -%}
|
|
107
|
+
{%- assign now_row_min = current_hour | times: 60 | plus: current_min -%}
|
|
108
|
+
{%- assign now_days = day_start_day -%}
|
|
109
|
+
{%- if now_row_min < now_start_min -%}
|
|
110
|
+
{%- assign now_days = now_days | plus: 1 -%}
|
|
111
|
+
{%- endif -%}
|
|
112
|
+
{%- assign now_offset = now_days | times: 86400 -%}
|
|
113
|
+
{%- assign now_row = d.date | append: "T" | append: now_hour | append: ":" | append: now_min | append: ":00" | date: "%s" | plus: now_offset -%}
|
|
114
|
+
{%- endif %}
|
|
115
|
+
|
|
116
|
+
<tr class="h-100" {%- if now_line and d.date %} data-time="{{ now_row }}" {%- endif %}>
|
|
89
117
|
|
|
90
118
|
{%- if current_min == 0 or page.time_steps == "start" -%}
|
|
91
119
|
<th scope="row" class="program-time text-end">
|
|
@@ -114,7 +142,7 @@
|
|
|
114
142
|
{%- endif -%}
|
|
115
143
|
</th>
|
|
116
144
|
{%- else -%}
|
|
117
|
-
<th scope="row">
|
|
145
|
+
<th scope="row" class="program-time">
|
|
118
146
|
{%- comment -%} Time for screen readers only {%- endcomment -%}
|
|
119
147
|
<span class="visually-hidden">
|
|
120
148
|
{%- if current_min < 10 -%}
|
|
@@ -223,6 +251,9 @@
|
|
|
223
251
|
{%- endfor %}
|
|
224
252
|
</tbody>
|
|
225
253
|
</table>
|
|
254
|
+
{%- if now_line and d.date %}
|
|
255
|
+
<div class="program-now bg-{{ edition_live.now_line.color | default: 'danger' }} d-none" data-end="{{ now_end }}" aria-hidden="true"></div>
|
|
256
|
+
{%- endif %}
|
|
226
257
|
</div>
|
|
227
258
|
|
|
228
259
|
{%- if nbr_days > 1 %}
|
data/_sass/theme.scss
CHANGED
|
@@ -41,10 +41,15 @@
|
|
|
41
41
|
td.program-talk[rowspan] {
|
|
42
42
|
border-width: 0 0 2px 0.25rem !important;
|
|
43
43
|
border-bottom-color: var(--bs-body-bg) !important;
|
|
44
|
+
|
|
45
|
+
// Above the line at the current time
|
|
46
|
+
position: relative;
|
|
47
|
+
z-index: 1;
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
.program-table-container {
|
|
52
|
+
position: relative;
|
|
48
53
|
scroll-snap-type: x mandatory;
|
|
49
54
|
scroll-padding-left: 4rem;
|
|
50
55
|
|
|
@@ -53,6 +58,38 @@
|
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
|
|
61
|
+
// Line at the current time (_js/modules/nowline.js): above empty cells,
|
|
62
|
+
// below talks and the time column
|
|
63
|
+
.program-now {
|
|
64
|
+
position: absolute;
|
|
65
|
+
height: 2px;
|
|
66
|
+
margin-top: -1px;
|
|
67
|
+
pointer-events: none;
|
|
68
|
+
|
|
69
|
+
@media print {
|
|
70
|
+
display: none;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Its part in the time column: a box like the line (a gradient would be
|
|
75
|
+
// rounded to pixels differently), behind the label (z-index -1 within the
|
|
76
|
+
// sticky cell)
|
|
77
|
+
.program-now-cell::after {
|
|
78
|
+
content: "";
|
|
79
|
+
position: absolute;
|
|
80
|
+
top: var(--program-now-top);
|
|
81
|
+
left: 0;
|
|
82
|
+
right: 0;
|
|
83
|
+
z-index: -1;
|
|
84
|
+
height: var(--program-now-height);
|
|
85
|
+
background-color: var(--program-now-color);
|
|
86
|
+
pointer-events: none;
|
|
87
|
+
|
|
88
|
+
@media print {
|
|
89
|
+
display: none;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
56
93
|
// Speaker Columns
|
|
57
94
|
@mixin generate-col-count-classes($max-cols: 6) {
|
|
58
95
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.bi{vertical-align:-.125em;width:1em;height:1em}.program-table{border-collapse:separate!important;border-spacing:1rem 0!important}.program-table .program-time{z-index:900;width:4rem;min-width:4rem;max-width:4rem;position:sticky;left:0}.program-table .program-talk{width:15rem;min-width:15rem;max-width:15rem}.program-table td.program-talk[rowspan]{border-width:0 0 2px .25rem!important;border-bottom-color:var(--bs-body-bg)!important}.program-table-container{scroll-snap-type:x mandatory;scroll-padding-left:4rem}.program-table-container tbody .program-talk{scroll-snap-align:start}.col-count-1{column-count:1}.col-count-2{column-count:2}.col-count-3{column-count:3}.col-count-4{column-count:4}.col-count-5{column-count:5}.col-count-6{column-count:6}@media (min-width:576px){.col-count-sm-1{column-count:1}.col-count-sm-2{column-count:2}.col-count-sm-3{column-count:3}.col-count-sm-4{column-count:4}.col-count-sm-5{column-count:5}.col-count-sm-6{column-count:6}}@media (min-width:768px){.col-count-md-1{column-count:1}.col-count-md-2{column-count:2}.col-count-md-3{column-count:3}.col-count-md-4{column-count:4}.col-count-md-5{column-count:5}.col-count-md-6{column-count:6}}@media (min-width:992px){.col-count-lg-1{column-count:1}.col-count-lg-2{column-count:2}.col-count-lg-3{column-count:3}.col-count-lg-4{column-count:4}.col-count-lg-5{column-count:5}.col-count-lg-6{column-count:6}}@media (min-width:1200px){.col-count-xl-1{column-count:1}.col-count-xl-2{column-count:2}.col-count-xl-3{column-count:3}.col-count-xl-4{column-count:4}.col-count-xl-5{column-count:5}.col-count-xl-6{column-count:6}}@media (min-width:1400px){.col-count-xxl-1{column-count:1}.col-count-xxl-2{column-count:2}.col-count-xxl-3{column-count:3}.col-count-xxl-4{column-count:4}.col-count-xxl-5{column-count:5}.col-count-xxl-6{column-count:6}}.col-count{break-inside:avoid-column}.alert>p:last-of-type{margin-bottom:0}.home-header-img{width:100%}@media (min-width:768px){.home-header-img{width:75%}}.mode-light{display:initial}.mode-dark,[data-bs-theme=dark] .mode-light{display:none}[data-bs-theme=dark] .mode-dark{display:initial}.d-pwa-block{display:none}@media (display-mode:standalone),(display-mode:fullscreen){.d-pwa-none{display:none}.d-pwa-block{display:block}body{flex-direction:column;display:flex}.footer-pwa{z-index:1030;margin-top:auto;position:sticky;bottom:0}}[data-pwa=true] .d-pwa-none{display:none}[data-pwa=true] .d-pwa-block{display:block}[data-pwa=true] body{flex-direction:column;display:flex}[data-pwa=true] .footer-pwa{z-index:1030;margin-top:auto;position:sticky;bottom:0}#map,#map .map-consent{min-height:400px}.live-button{color:#fff;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity,1))}.live-button:hover{color:#ccc}.btn-outline-primary{--bs-btn-color:var(--bs-primary-text-emphasis)}[data-bs-theme=dark] .btn-outline-secondary{--bs-btn-color:var(--bs-secondary-color);--bs-btn-border-color:var(--bs-border-color)}[data-bs-theme=dark] .live-button{color:#000;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity,1))}[data-bs-theme=dark] .live-button:hover{color:#000}.live-icon{width:.75em;height:.75em}@keyframes live-icon-pulse{0%,6%{opacity:0}8%,to{opacity:1}}@keyframes live-icon-arc-small{0%,8%{opacity:0}10%,to{opacity:1}}@keyframes live-icon-arc-large{0%,10%{opacity:0}12%,to{opacity:1}}.live-icon .live-icon-arc-small{animation:8s infinite live-icon-pulse}.live-icon .live-icon-arc-medium{animation:8s infinite live-icon-arc-small}.live-icon .live-icon-arc-large{animation:8s infinite live-icon-arc-large}@media (prefers-reduced-motion:reduce){.live-icon .live-icon-arc-small,.live-icon .live-icon-arc-medium,.live-icon .live-icon-arc-large{animation:none}}
|
|
1
|
+
.bi{vertical-align:-.125em;width:1em;height:1em}.program-table{border-collapse:separate!important;border-spacing:1rem 0!important}.program-table .program-time{z-index:900;width:4rem;min-width:4rem;max-width:4rem;position:sticky;left:0}.program-table .program-talk{width:15rem;min-width:15rem;max-width:15rem}.program-table td.program-talk[rowspan]{z-index:1;position:relative;border-width:0 0 2px .25rem!important;border-bottom-color:var(--bs-body-bg)!important}.program-table-container{scroll-snap-type:x mandatory;scroll-padding-left:4rem;position:relative}.program-table-container tbody .program-talk{scroll-snap-align:start}.program-now{pointer-events:none;height:2px;margin-top:-1px;position:absolute}@media print{.program-now{display:none}}.program-now-cell:after{content:"";top:var(--program-now-top);z-index:-1;height:var(--program-now-height);background-color:var(--program-now-color);pointer-events:none;position:absolute;left:0;right:0}@media print{.program-now-cell:after{display:none}}.col-count-1{column-count:1}.col-count-2{column-count:2}.col-count-3{column-count:3}.col-count-4{column-count:4}.col-count-5{column-count:5}.col-count-6{column-count:6}@media (min-width:576px){.col-count-sm-1{column-count:1}.col-count-sm-2{column-count:2}.col-count-sm-3{column-count:3}.col-count-sm-4{column-count:4}.col-count-sm-5{column-count:5}.col-count-sm-6{column-count:6}}@media (min-width:768px){.col-count-md-1{column-count:1}.col-count-md-2{column-count:2}.col-count-md-3{column-count:3}.col-count-md-4{column-count:4}.col-count-md-5{column-count:5}.col-count-md-6{column-count:6}}@media (min-width:992px){.col-count-lg-1{column-count:1}.col-count-lg-2{column-count:2}.col-count-lg-3{column-count:3}.col-count-lg-4{column-count:4}.col-count-lg-5{column-count:5}.col-count-lg-6{column-count:6}}@media (min-width:1200px){.col-count-xl-1{column-count:1}.col-count-xl-2{column-count:2}.col-count-xl-3{column-count:3}.col-count-xl-4{column-count:4}.col-count-xl-5{column-count:5}.col-count-xl-6{column-count:6}}@media (min-width:1400px){.col-count-xxl-1{column-count:1}.col-count-xxl-2{column-count:2}.col-count-xxl-3{column-count:3}.col-count-xxl-4{column-count:4}.col-count-xxl-5{column-count:5}.col-count-xxl-6{column-count:6}}.col-count{break-inside:avoid-column}.alert>p:last-of-type{margin-bottom:0}.home-header-img{width:100%}@media (min-width:768px){.home-header-img{width:75%}}.mode-light{display:initial}.mode-dark,[data-bs-theme=dark] .mode-light{display:none}[data-bs-theme=dark] .mode-dark{display:initial}.d-pwa-block{display:none}@media (display-mode:standalone),(display-mode:fullscreen){.d-pwa-none{display:none}.d-pwa-block{display:block}body{flex-direction:column;display:flex}.footer-pwa{z-index:1030;margin-top:auto;position:sticky;bottom:0}}[data-pwa=true] .d-pwa-none{display:none}[data-pwa=true] .d-pwa-block{display:block}[data-pwa=true] body{flex-direction:column;display:flex}[data-pwa=true] .footer-pwa{z-index:1030;margin-top:auto;position:sticky;bottom:0}#map,#map .map-consent{min-height:400px}.live-button{color:#fff;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity,1))}.live-button:hover{color:#ccc}.btn-outline-primary{--bs-btn-color:var(--bs-primary-text-emphasis)}[data-bs-theme=dark] .btn-outline-secondary{--bs-btn-color:var(--bs-secondary-color);--bs-btn-border-color:var(--bs-border-color)}[data-bs-theme=dark] .live-button{color:#000;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity,1))}[data-bs-theme=dark] .live-button:hover{color:#000}.live-icon{width:.75em;height:.75em}@keyframes live-icon-pulse{0%,6%{opacity:0}8%,to{opacity:1}}@keyframes live-icon-arc-small{0%,8%{opacity:0}10%,to{opacity:1}}@keyframes live-icon-arc-large{0%,10%{opacity:0}12%,to{opacity:1}}.live-icon .live-icon-arc-small{animation:8s infinite live-icon-pulse}.live-icon .live-icon-arc-medium{animation:8s infinite live-icon-arc-small}.live-icon .live-icon-arc-large{animation:8s infinite live-icon-arc-large}@media (prefers-reduced-motion:reduce){.live-icon .live-icon-arc-small,.live-icon .live-icon-arc-medium,.live-icon .live-icon-arc-large{animation:none}}
|