jekyll-theme-conference 3.7.1 → 4.0.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/LICENSE.md +1 -1
- data/README.md +543 -220
- data/UPGRADE_GUIDE.md +177 -0
- data/_data/lang.yml +233 -0
- data/_data/program.yml +12 -0
- data/_includes/{partials/checks.html → checks.html} +31 -8
- data/_includes/footer.html +18 -0
- data/_includes/{partials/get_day_time.html → get_day_time.html} +2 -2
- data/_includes/get_link.html +163 -0
- data/_includes/get_link_tag_streaming.html +24 -0
- data/_includes/{partials/get_link_types.html → get_link_types.html} +1 -1
- data/_includes/get_live_icon.html +14 -0
- data/_includes/{partials/get_live_timestamps.html → get_live_timestamps.html} +1 -1
- data/_includes/get_location_config.html +29 -0
- data/_includes/{partials/get_page_description.html → get_page_description.html} +1 -1
- data/_includes/get_program_config.html +18 -0
- data/_includes/{partials/get_tag_icon.html → get_tag_icon.html} +1 -1
- data/_includes/get_talk_overview_talk.html +65 -0
- data/_includes/{partials/get_talk_time.html → get_talk_time.html} +3 -2
- data/_includes/{partials/get_talk_timestamp.html → get_talk_timestamp.html} +1 -1
- data/_includes/header.html +68 -0
- data/_includes/infobox.html +114 -0
- data/_includes/list_header_live.html +14 -0
- data/_includes/list_header_meta.html +46 -0
- data/_includes/list_header_pwa.html +21 -0
- data/_includes/{partials/list_speakers.html → list_speakers.html} +3 -8
- data/_includes/list_tags.html +4 -0
- data/_includes/modal_link.html +19 -0
- data/_includes/modal_live.html +47 -0
- data/_includes/navbar.html +91 -0
- data/_includes/navbar_pwa.html +46 -0
- data/_includes/navbar_rooms.html +39 -0
- data/_includes/schema_conference.html +144 -0
- data/_includes/schema_location.html +48 -0
- data/_includes/schema_room.html +25 -0
- data/_includes/schema_speaker.html +44 -0
- data/_includes/schema_talk.html +151 -0
- data/_includes/show_live_icon.html +10 -0
- data/_includes/show_room.html +6 -0
- data/_includes/show_talk.html +5 -0
- data/_includes/show_talk_duration.html +3 -0
- data/_includes/show_talk_info.html +24 -0
- data/_includes/show_talk_listed.html +22 -0
- data/_includes/show_talk_time.html +25 -0
- data/_layouts/default.html +2 -2
- data/_layouts/home.html +38 -59
- data/_layouts/{config.html → json-config.html} +20 -17
- data/_layouts/{data.html → json-data.html} +6 -10
- data/_layouts/json-site.html +50 -0
- data/_layouts/location.html +27 -9
- data/_layouts/manifest.html +50 -0
- data/_layouts/page.html +2 -6
- data/_layouts/program.html +53 -62
- data/_layouts/room.html +9 -29
- data/_layouts/speaker-overview.html +6 -6
- data/_layouts/speaker.html +26 -56
- data/_layouts/stream-overview.html +6 -6
- data/_layouts/sw.js +65 -0
- data/_layouts/talk-overview.html +5 -5
- data/_layouts/talk.html +24 -63
- data/assets/css/conference-only.bundle.css +5 -0
- data/assets/css/conference.bundle.css +5 -0
- data/assets/js/conference.bundle.js +76 -0
- data/assets/js/config.json +1 -1
- data/assets/js/data.json +1 -1
- data/assets/js/leaflet.bundle.js +9 -0
- data/assets/js/main.js +23 -4
- data/assets/js/site.json +3 -0
- data/assets/webfonts/bootstrap-icons.woff +0 -0
- data/assets/webfonts/bootstrap-icons.woff2 +0 -0
- metadata +63 -226
- data/_includes/js/conference.js +0 -55
- data/_includes/js/init.js +0 -39
- data/_includes/js/lib/bootstrap.js +0 -6
- data/_includes/js/lib/jquery-3.5.1.min.js +0 -2
- data/_includes/js/lib/leaflet-easybutton.js +0 -376
- data/_includes/js/lib/leaflet-locatecontrol.js +0 -4
- data/_includes/js/lib/leaflet-providers.js +0 -877
- data/_includes/js/lib/leaflet.js +0 -5
- data/_includes/js/lib/popper.min.js +0 -4
- data/_includes/js/lib/syncscroll.js +0 -140
- data/_includes/js/live.js +0 -779
- data/_includes/js/map.js +0 -43
- data/_includes/js/modal.js +0 -78
- data/_includes/js/program.js +0 -41
- data/_includes/partials/footer.html +0 -15
- data/_includes/partials/get_enable_map.html +0 -11
- data/_includes/partials/get_link.html +0 -99
- data/_includes/partials/get_talk_overview_talk.html +0 -81
- data/_includes/partials/header.html +0 -54
- data/_includes/partials/info_bar.html +0 -38
- data/_includes/partials/list_page_meta.html +0 -23
- data/_includes/partials/list_tags.html +0 -7
- data/_includes/partials/modal_link.html +0 -21
- data/_includes/partials/modal_live.html +0 -49
- data/_includes/partials/navbar.html +0 -112
- data/_includes/partials/navbar_rooms.html +0 -36
- data/_includes/partials/show_live_button.html +0 -21
- data/_includes/partials/show_room.html +0 -5
- data/_includes/partials/show_talk.html +0 -5
- data/_includes/partials/show_talk_duration.html +0 -3
- data/_includes/partials/show_talk_time.html +0 -17
- data/_sass/bootstrap/_alert.scss +0 -52
- data/_sass/bootstrap/_badge.scss +0 -54
- data/_sass/bootstrap/_breadcrumb.scss +0 -44
- data/_sass/bootstrap/_button-group.scss +0 -163
- data/_sass/bootstrap/_buttons.scss +0 -142
- data/_sass/bootstrap/_card.scss +0 -286
- data/_sass/bootstrap/_carousel.scss +0 -197
- data/_sass/bootstrap/_close.scss +0 -40
- data/_sass/bootstrap/_code.scss +0 -48
- data/_sass/bootstrap/_custom-forms.scss +0 -524
- data/_sass/bootstrap/_dropdown.scss +0 -192
- data/_sass/bootstrap/_forms.scss +0 -347
- data/_sass/bootstrap/_functions.scss +0 -144
- data/_sass/bootstrap/_grid.scss +0 -73
- data/_sass/bootstrap/_images.scss +0 -42
- data/_sass/bootstrap/_input-group.scss +0 -192
- data/_sass/bootstrap/_jumbotron.scss +0 -17
- data/_sass/bootstrap/_list-group.scss +0 -154
- data/_sass/bootstrap/_media.scss +0 -8
- data/_sass/bootstrap/_mixins.scss +0 -47
- data/_sass/bootstrap/_modal.scss +0 -240
- data/_sass/bootstrap/_nav.scss +0 -123
- data/_sass/bootstrap/_navbar.scss +0 -324
- data/_sass/bootstrap/_pagination.scss +0 -74
- data/_sass/bootstrap/_popover.scss +0 -170
- data/_sass/bootstrap/_print.scss +0 -141
- data/_sass/bootstrap/_progress.scss +0 -47
- data/_sass/bootstrap/_reboot.scss +0 -484
- data/_sass/bootstrap/_root.scss +0 -20
- data/_sass/bootstrap/_spinners.scss +0 -56
- data/_sass/bootstrap/_tables.scss +0 -185
- data/_sass/bootstrap/_toasts.scss +0 -46
- data/_sass/bootstrap/_tooltip.scss +0 -115
- data/_sass/bootstrap/_transitions.scss +0 -20
- data/_sass/bootstrap/_type.scss +0 -125
- data/_sass/bootstrap/_utilities.scss +0 -18
- data/_sass/bootstrap/_variables.scss +0 -1142
- data/_sass/bootstrap/bootstrap-grid.scss +0 -29
- data/_sass/bootstrap/bootstrap-reboot.scss +0 -12
- data/_sass/bootstrap/bootstrap.scss +0 -44
- data/_sass/bootstrap/mixins/_alert.scss +0 -13
- data/_sass/bootstrap/mixins/_background-variant.scss +0 -23
- data/_sass/bootstrap/mixins/_badge.scss +0 -17
- data/_sass/bootstrap/mixins/_border-radius.scss +0 -76
- data/_sass/bootstrap/mixins/_box-shadow.scss +0 -20
- data/_sass/bootstrap/mixins/_breakpoints.scss +0 -123
- data/_sass/bootstrap/mixins/_buttons.scss +0 -110
- data/_sass/bootstrap/mixins/_caret.scss +0 -62
- data/_sass/bootstrap/mixins/_clearfix.scss +0 -7
- data/_sass/bootstrap/mixins/_deprecate.scss +0 -10
- data/_sass/bootstrap/mixins/_float.scss +0 -14
- data/_sass/bootstrap/mixins/_forms.scss +0 -178
- data/_sass/bootstrap/mixins/_gradients.scss +0 -45
- data/_sass/bootstrap/mixins/_grid-framework.scss +0 -80
- data/_sass/bootstrap/mixins/_grid.scss +0 -69
- data/_sass/bootstrap/mixins/_hover.scss +0 -37
- data/_sass/bootstrap/mixins/_image.scss +0 -36
- data/_sass/bootstrap/mixins/_list-group.scss +0 -21
- data/_sass/bootstrap/mixins/_lists.scss +0 -7
- data/_sass/bootstrap/mixins/_nav-divider.scss +0 -11
- data/_sass/bootstrap/mixins/_pagination.scss +0 -22
- data/_sass/bootstrap/mixins/_reset-text.scss +0 -17
- data/_sass/bootstrap/mixins/_resize.scss +0 -6
- data/_sass/bootstrap/mixins/_screen-reader.scss +0 -34
- data/_sass/bootstrap/mixins/_size.scss +0 -7
- data/_sass/bootstrap/mixins/_table-row.scss +0 -39
- data/_sass/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/_sass/bootstrap/mixins/_text-hide.scss +0 -11
- data/_sass/bootstrap/mixins/_text-truncate.scss +0 -8
- data/_sass/bootstrap/mixins/_transition.scss +0 -26
- data/_sass/bootstrap/mixins/_visibility.scss +0 -8
- data/_sass/bootstrap/utilities/_align.scss +0 -8
- data/_sass/bootstrap/utilities/_background.scss +0 -19
- data/_sass/bootstrap/utilities/_borders.scss +0 -75
- data/_sass/bootstrap/utilities/_clearfix.scss +0 -3
- data/_sass/bootstrap/utilities/_display.scss +0 -26
- data/_sass/bootstrap/utilities/_embed.scss +0 -39
- data/_sass/bootstrap/utilities/_flex.scss +0 -51
- data/_sass/bootstrap/utilities/_float.scss +0 -11
- data/_sass/bootstrap/utilities/_interactions.scss +0 -5
- data/_sass/bootstrap/utilities/_overflow.scss +0 -5
- data/_sass/bootstrap/utilities/_position.scss +0 -32
- data/_sass/bootstrap/utilities/_screenreaders.scss +0 -11
- data/_sass/bootstrap/utilities/_shadows.scss +0 -6
- data/_sass/bootstrap/utilities/_sizing.scss +0 -20
- data/_sass/bootstrap/utilities/_spacing.scss +0 -73
- data/_sass/bootstrap/utilities/_stretched-link.scss +0 -19
- data/_sass/bootstrap/utilities/_text.scss +0 -72
- data/_sass/bootstrap/utilities/_visibility.scss +0 -13
- data/_sass/bootstrap/vendor/_rfs.scss +0 -204
- data/_sass/conference.scss +0 -255
- data/_sass/font-awesome/_animated.scss +0 -20
- data/_sass/font-awesome/_bordered-pulled.scss +0 -20
- data/_sass/font-awesome/_core.scss +0 -21
- data/_sass/font-awesome/_fixed-width.scss +0 -6
- data/_sass/font-awesome/_icons.scss +0 -1462
- data/_sass/font-awesome/_larger.scss +0 -23
- data/_sass/font-awesome/_list.scss +0 -18
- data/_sass/font-awesome/_mixins.scss +0 -56
- data/_sass/font-awesome/_rotated-flipped.scss +0 -24
- data/_sass/font-awesome/_screen-reader.scss +0 -5
- data/_sass/font-awesome/_shims.scss +0 -2066
- data/_sass/font-awesome/_stacked.scss +0 -31
- data/_sass/font-awesome/_variables.scss +0 -1479
- data/_sass/font-awesome/brands.scss +0 -23
- data/_sass/font-awesome/fontawesome.scss +0 -16
- data/_sass/font-awesome/regular.scss +0 -23
- data/_sass/font-awesome/scss/_animated.scss +0 -20
- data/_sass/font-awesome/scss/_bordered-pulled.scss +0 -20
- data/_sass/font-awesome/scss/_core.scss +0 -21
- data/_sass/font-awesome/scss/_fixed-width.scss +0 -6
- data/_sass/font-awesome/scss/_icons.scss +0 -1441
- data/_sass/font-awesome/scss/_larger.scss +0 -23
- data/_sass/font-awesome/scss/_list.scss +0 -18
- data/_sass/font-awesome/scss/_mixins.scss +0 -56
- data/_sass/font-awesome/scss/_rotated-flipped.scss +0 -24
- data/_sass/font-awesome/scss/_screen-reader.scss +0 -5
- data/_sass/font-awesome/scss/_shims.scss +0 -2066
- data/_sass/font-awesome/scss/_stacked.scss +0 -31
- data/_sass/font-awesome/scss/_variables.scss +0 -1458
- data/_sass/font-awesome/scss/brands.scss +0 -23
- data/_sass/font-awesome/scss/fontawesome.scss +0 -16
- data/_sass/font-awesome/scss/regular.scss +0 -23
- data/_sass/font-awesome/scss/solid.scss +0 -24
- data/_sass/font-awesome/scss/v4-shims.scss +0 -6
- data/_sass/font-awesome/solid.scss +0 -24
- data/_sass/font-awesome/v4-shims.scss +0 -6
- data/_sass/leaflet/leaflet-easybutton.scss +0 -56
- data/_sass/leaflet/leaflet-locatecontrol.scss +0 -2
- data/_sass/leaflet/leaflet.scss +0 -640
- data/assets/css/main.scss +0 -6
- data/assets/icons/live.svg +0 -57
- data/assets/webfonts/fa-brands-400.eot +0 -0
- data/assets/webfonts/fa-brands-400.svg +0 -3717
- data/assets/webfonts/fa-brands-400.ttf +0 -0
- data/assets/webfonts/fa-brands-400.woff +0 -0
- data/assets/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/webfonts/fa-regular-400.eot +0 -0
- data/assets/webfonts/fa-regular-400.svg +0 -801
- data/assets/webfonts/fa-regular-400.ttf +0 -0
- data/assets/webfonts/fa-regular-400.woff +0 -0
- data/assets/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/webfonts/fa-solid-900.eot +0 -0
- data/assets/webfonts/fa-solid-900.svg +0 -5028
- data/assets/webfonts/fa-solid-900.ttf +0 -0
- data/assets/webfonts/fa-solid-900.woff +0 -0
- data/assets/webfonts/fa-solid-900.woff2 +0 -0
- /data/_includes/{partials/get_day_hash.html → get_day_hash.html} +0 -0
- /data/_includes/{partials/get_page_title.html → get_page_title.html} +0 -0
- /data/_includes/{partials/get_room_live_href.html → get_room_live_href.html} +0 -0
- /data/_includes/{partials/get_time_pronoun.html → get_time_pronoun.html} +0 -0
- /data/_includes/{partials/get_track_properties.html → get_track_properties.html} +0 -0
data/README.md
CHANGED
|
@@ -2,20 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
This is a responsive [Jekyll](http://jekyllrb.com) theme based on [Bootstrap
|
|
5
|
+
This is a responsive [Jekyll](http://jekyllrb.com) theme based on [Bootstrap 5](http://getbootstrap.com) for conferences. It contains
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- multi-day program / schedule,
|
|
8
8
|
- talk and speaker descriptions,
|
|
9
9
|
- maps for directions,
|
|
10
|
-
- real-time indications during the conference,
|
|
11
|
-
-
|
|
10
|
+
- real-time indications during the conference,
|
|
11
|
+
- support for embedded video streaming or recordings
|
|
12
|
+
- support for an all offline progressive web app, and
|
|
13
|
+
- automatic dark mode support based on system preferences.
|
|
12
14
|
|
|
13
|
-
All components such as talks, speakers or rooms are represented as collection of files. The schedule is defined via a simple structure stored in a [YAML](https://en.wikipedia.org/wiki/YAML) file. There is no need for databases and once generated the website consists only of static files. A script and workflows are available for easy import, e.g., of [frab](https://github.com/frab/frab/wiki/Manual#introduction) compatible schedules.
|
|
15
|
+
All components such as talks, speakers or rooms are represented as a collection of files. The schedule is defined via a simple structure stored in a [YAML](https://en.wikipedia.org/wiki/YAML) file. There is no need for databases and once generated the website consists only of static files. A script and workflows are available for easy import, e.g., of [frab](https://github.com/frab/frab/wiki/Manual#introduction) compatible schedules.
|
|
14
16
|
The design is easily customizable and is adapted for mobile uses and printing.
|
|
15
17
|
|
|
16
18
|
The theme was created for the yearly Winterkongress conference of the [Digital Society Switzerland](https://digitale-gesellschaft.ch/). You can see this theme active here:
|
|
17
19
|
|
|
18
|
-
- [Demo: Winterkongress](https://
|
|
20
|
+
- [Demo: Winterkongress](https://winterkongress.ch/)
|
|
21
|
+
|
|
22
|
+
> [!WARNING]
|
|
23
|
+
> If you were using the theme up to version 3, please note the changes to migrate to the new version 4 in the [upgrade guide](UPGRADE_GUIDE.md).
|
|
24
|
+
|
|
19
25
|
|
|
20
26
|
## Table of Contents
|
|
21
27
|
|
|
@@ -23,7 +29,6 @@ The theme was created for the yearly Winterkongress conference of the [Digital S
|
|
|
23
29
|
- [Gem-based Method](#gem-based-method)
|
|
24
30
|
- [Remote Theme Method](#remote-theme-method)
|
|
25
31
|
- [Setup](#setup)
|
|
26
|
-
- [Jump Start](#jump-start)
|
|
27
32
|
- [Automatic Import](#automatic-import)
|
|
28
33
|
- [Automatic Build](#automatic-build)
|
|
29
34
|
- [Configuration](#configuration)
|
|
@@ -32,13 +37,12 @@ The theme was created for the yearly Winterkongress conference of the [Digital S
|
|
|
32
37
|
- [Language](#language)
|
|
33
38
|
- [Timezone](#timezone)
|
|
34
39
|
- [Navigation Bar](#navigation-bar)
|
|
35
|
-
- [
|
|
40
|
+
- [Meta Data for Search Engines and Link Previews](#meta-data-for-search-engines-and-link-previews)
|
|
36
41
|
- [Main Landing Page](#main-landing-page)
|
|
37
|
-
- [Information Boxes](#information-boxes)
|
|
42
|
+
- [Information Boxes & Modals](#information-boxes--modals)
|
|
38
43
|
- [Live Indications & Streaming](#live-indications--streaming)
|
|
39
|
-
- [
|
|
44
|
+
- [Progressive Web App (PWA)](#progressive-web-app-pwa)
|
|
40
45
|
- [Talk Settings](#talk-settings)
|
|
41
|
-
- [Speaker Settings](#speaker-settings)
|
|
42
46
|
- [Location Settings](#location-settings)
|
|
43
47
|
- [Program Settings](#program-settings)
|
|
44
48
|
- [Content](#content)
|
|
@@ -47,21 +51,29 @@ The theme was created for the yearly Winterkongress conference of the [Digital S
|
|
|
47
51
|
- [Speakers](#speakers)
|
|
48
52
|
- [Rooms](#rooms)
|
|
49
53
|
- [Links](#links)
|
|
50
|
-
- [Overview Pages](#overview-pages)
|
|
51
|
-
- [Location / Room Overview](#location--room-overview)
|
|
52
|
-
- [Live Stream Overview](#live-stream-overview)
|
|
54
|
+
- [Overview Pages](#overview-pages)
|
|
53
55
|
- [Additional Pages](#additional-pages)
|
|
54
56
|
- [Design](#design)
|
|
57
|
+
- [Pre-compiled Bundle (Default)](#pre-compiled-bundle-default)
|
|
58
|
+
- [Split Bundle (Custom Bootstrap CSS)](#split-bundle-custom-bootstrap-css)
|
|
59
|
+
- [JavaScript](#javascript)
|
|
55
60
|
- [Development](#development)
|
|
61
|
+
- [Jekyll Theme Development](#jekyll-theme-development)
|
|
62
|
+
- [JavaScript & CSS Development](#javascript--css-development)
|
|
56
63
|
- [License](#license)
|
|
57
64
|
|
|
65
|
+
|
|
58
66
|
## Installation
|
|
59
67
|
|
|
60
|
-
There are three ways to install
|
|
68
|
+
There are three ways to install this theme:
|
|
69
|
+
|
|
70
|
+
1. **Gem-based method**: Install as a [Gem-based theme](https://jekyllrb.com/docs/themes/#understanding-gem-based-themes) (recommended for most users)
|
|
71
|
+
2. **Remote theme method**: Use as a [remote theme](https://github.blog/2017-11-29-use-any-theme-with-github-pages/) (ideal for GitHub Pages)
|
|
72
|
+
3. **Local development**: Clone or fork this repository for local development and customization (see [Development](#development) section)
|
|
61
73
|
|
|
62
74
|
### Gem-based Method
|
|
63
75
|
|
|
64
|
-
With Gem-based themes, directories such as
|
|
76
|
+
With Gem-based themes, directories such as `assets`, `_layouts`, and `_includes` are stored in the theme's gem, hidden from your immediate view. All necessary directories will be read and processed during Jekyll's build process.
|
|
65
77
|
|
|
66
78
|
This allows for easier installation and updating as you don't have to manage any of the theme files. To install:
|
|
67
79
|
|
|
@@ -83,17 +95,17 @@ This allows for easier installation and updating as you don't have to manage any
|
|
|
83
95
|
theme: jekyll-theme-conference
|
|
84
96
|
```
|
|
85
97
|
|
|
86
|
-
4. Continue with the _Setup_ section
|
|
98
|
+
4. Continue with the [_Setup_](#setup) section below to customize the theme and add content for your conference.
|
|
87
99
|
|
|
88
|
-
To update the theme run `bundle update`.
|
|
100
|
+
To update the theme, run `bundle update jekyll-theme-conference`.
|
|
89
101
|
|
|
90
102
|
### Remote Theme Method
|
|
91
103
|
|
|
92
|
-
Remote themes are similar to Gem-based themes
|
|
104
|
+
Remote themes are similar to Gem-based themes but are ideal for sites hosted with GitHub Pages, as they don't require theme whitelisting.
|
|
93
105
|
|
|
94
106
|
To install:
|
|
95
107
|
|
|
96
|
-
1. Create
|
|
108
|
+
1. Create or replace the contents of your `Gemfile` with the following:
|
|
97
109
|
|
|
98
110
|
```ruby
|
|
99
111
|
source "https://rubygems.org"
|
|
@@ -102,7 +114,12 @@ To install:
|
|
|
102
114
|
gem "jekyll-include-cache", group: :jekyll_plugins
|
|
103
115
|
```
|
|
104
116
|
|
|
105
|
-
2. Add `jekyll-include-cache` to the `plugins` array
|
|
117
|
+
2. Add `jekyll-include-cache` to the `plugins` array in your `_config.yml`:
|
|
118
|
+
|
|
119
|
+
```yaml
|
|
120
|
+
plugins:
|
|
121
|
+
- jekyll-include-cache
|
|
122
|
+
```
|
|
106
123
|
|
|
107
124
|
3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command:
|
|
108
125
|
|
|
@@ -110,36 +127,29 @@ To install:
|
|
|
110
127
|
bundle
|
|
111
128
|
```
|
|
112
129
|
|
|
113
|
-
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@
|
|
130
|
+
4. Add `remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@4.0.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
|
114
131
|
|
|
115
|
-
|
|
132
|
+
```yaml
|
|
133
|
+
remote_theme: "DigitaleGesellschaft/jekyll-theme-conference@4.0.0"
|
|
134
|
+
```
|
|
116
135
|
|
|
117
|
-
|
|
136
|
+
5. Continue with the [_Setup_](#setup) section below to customize the theme and add content for your conference.
|
|
118
137
|
|
|
119
|
-
|
|
138
|
+
To update the theme, change the version tag in the `remote_theme` value (e.g., `@4.0.0` to `@v4.1.0`).
|
|
120
139
|
|
|
121
|
-
The schedule defining when and in which room a talk takes place is stored as a [YAML data file](https://jekyllrb.com/docs/datafiles/) under `_data/program.yml`. For further details about it see below in the section _Content_.
|
|
122
140
|
|
|
123
|
-
|
|
141
|
+
## Setup
|
|
124
142
|
|
|
125
|
-
|
|
143
|
+
The different talks, speakers and rooms are stored as a collection of files. Each file contains a small header in form of a YAML block (called [FrontMatter](https://jekyllrb.com/docs/front-matter/)) used to store additional information beside a description. Their exact use and meaning is described further below in the section [_Content_](#content). Additional configuration options can be found in the section [_Configuration_](#configuration).
|
|
126
144
|
|
|
127
|
-
|
|
145
|
+
The schedule defining when and in which room a talk takes place is stored as a [YAML data file](https://jekyllrb.com/docs/datafiles/) under `_data/program.yml`. For further details about it see below in the section [_Content_](#content).
|
|
128
146
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
- `_rooms/`
|
|
132
|
-
- `_speakers/`
|
|
133
|
-
- `_talks/`
|
|
134
|
-
- `index.md`
|
|
135
|
-
- `location/`
|
|
136
|
-
- `program/`
|
|
137
|
-
- `speakers/`
|
|
138
|
-
- `talks/`
|
|
147
|
+
> [!TIP]
|
|
148
|
+
> 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)).
|
|
139
149
|
|
|
140
150
|
### Automatic Import
|
|
141
151
|
|
|
142
|
-
In this repository, you'll find the Python file `_tools/import_schedule.py`. This script allows you to import content from a [frab](https://github.com/frab/frab/wiki/Manual#introduction)-compatible JSON file, such as those exported from [pretalx.com](https://pretalx.com/p/about/).
|
|
152
|
+
In this repository, you'll find the Python file `_tools/import_schedule.py`. This script allows you to import content from a [frab](https://github.com/frab/frab/wiki/Manual#introduction)-compatible JSON file, such as those exported from [pretalx.com](https://pretalx.com/p/about/).
|
|
143
153
|
|
|
144
154
|
1. Copy the files `_tools/import_schedule.py` and `_tools/requirements.txt` from this repository
|
|
145
155
|
|
|
@@ -166,7 +176,7 @@ In this repository, you'll find the Python file `_tools/import_schedule.py`. Thi
|
|
|
166
176
|
|
|
167
177
|
If you prefer not to install the full Ruby/Jekyll toolchain locally, you can leverage [GitHub Actions](https://github.com/features/actions), GitHub's continuous integration platform. This repository includes several example GitHub Actions configuration files in the `_tools/` folder:
|
|
168
178
|
|
|
169
|
-
- `build.yml`: This workflow automatically builds and optimizes the website whenever a new tag starting with `v` (e.g., `v2020.01.01`) is added. It then attaches the generated website as an archive to a release for easy download.
|
|
179
|
+
- `build.yml`: This workflow automatically builds and optimizes the website whenever a new tag starting with `v` (e.g., `v2020.01.01`) is added. It then attaches the generated website as an archive to a release for easy download.
|
|
170
180
|
- `test.yml`: This workflow automatically attempts to build the website upon a new pull request, making it suitable for use as a status check before merging.
|
|
171
181
|
- `schedule.yml`: This workflow automatically generates schedule and content files when a new pull request includes a `schedule.json` file (refer to the 'Automatic Import' section for details). This enables quick content updates from [pretalx.com](https://pretalx.com/p/about/) exports.
|
|
172
182
|
|
|
@@ -174,7 +184,9 @@ To get started, simply copy the desired workflow file to your repository and ada
|
|
|
174
184
|
|
|
175
185
|
- `_tools/build.yml` -> `.github/workflows/build.yml`
|
|
176
186
|
|
|
177
|
-
|
|
187
|
+
> [!IMPORTANT]
|
|
188
|
+
> Please note that the `Gemfile.lock` of your project must be adapted to include specific versions required by GitHub's workflow server, i.e., run `bundle lock --add-platform x86_64-linux` to add support for them.
|
|
189
|
+
|
|
178
190
|
|
|
179
191
|
## Configuration
|
|
180
192
|
|
|
@@ -182,7 +194,7 @@ All configurations and customization for this theme are stored under the `confer
|
|
|
182
194
|
|
|
183
195
|
### Theme Verification
|
|
184
196
|
|
|
185
|
-
Upon building, the theme runs some basic verification to check if all necessary files and configurations are in place. If it encounters an error it shows
|
|
197
|
+
Upon building, the theme runs some basic verification to check if all necessary files and configurations are in place. If it encounters an error it shows this by adding an information bar on all your sites. You can disable this, e.g., in a production environment, by setting `show_errors` to `false` (default: `true`).
|
|
186
198
|
|
|
187
199
|
Example:
|
|
188
200
|
|
|
@@ -191,11 +203,12 @@ conference:
|
|
|
191
203
|
show_errors: false
|
|
192
204
|
```
|
|
193
205
|
|
|
194
|
-
|
|
206
|
+
> [!WARNING]
|
|
207
|
+
> Please be sure to disable this parameter for your production system.
|
|
195
208
|
|
|
196
209
|
### Collection URLs
|
|
197
210
|
|
|
198
|
-
The three required collections containing the files for the talks, speakers and rooms have to be specified in the `_config.yml` file. The first block declares them and sets the URL under which they will later be accessed. The second block defines the default layout for each
|
|
211
|
+
The three required collections containing the files for the talks, speakers and rooms have to be specified in the `_config.yml` file. The first block declares them and sets the URL under which they will later be accessed. The second block defines the default layout for each collection.
|
|
199
212
|
|
|
200
213
|
```yaml
|
|
201
214
|
collections:
|
|
@@ -227,13 +240,14 @@ defaults:
|
|
|
227
240
|
layout: room
|
|
228
241
|
```
|
|
229
242
|
|
|
230
|
-
To change the URL of the collection, simply edit the `permalink` property and replace the `:collection` tag (which translates to `talks`, `speakers` and `rooms`) with your desired value. Please note that the talk and speaker overview pages should
|
|
243
|
+
To change the URL of the collection, simply edit the `permalink` property and replace the `:collection` tag (which translates to `talks`, `speakers` and `rooms`) with your desired value. Please note that the talk and speaker overview pages should reside in a folder of the same name.
|
|
231
244
|
|
|
232
|
-
|
|
245
|
+
> [!NOTE]
|
|
246
|
+
> Please note that while you might want to change the URLs, the name of the three collections (`talks`, `speakers` and `rooms`) is fixed and cannot be changed.
|
|
233
247
|
|
|
234
248
|
### Language
|
|
235
249
|
|
|
236
|
-
To
|
|
250
|
+
To set the theme's language, use the `lang` property. The following languages are supported:
|
|
237
251
|
|
|
238
252
|
- English: `en` (Default)
|
|
239
253
|
- German: `de`
|
|
@@ -247,6 +261,8 @@ conference:
|
|
|
247
261
|
lang: en
|
|
248
262
|
```
|
|
249
263
|
|
|
264
|
+
To add more languages, copy the internationalization file from this repository to `_data/lang.yml`, modify it, and store it in your own repository at the same path.
|
|
265
|
+
|
|
250
266
|
### Timezone
|
|
251
267
|
|
|
252
268
|
Multiple dynamic features such as showing the current day in the program or live indications require correct timing. Define the timezone in which the conference takes place with the `tz` property set to a valid [UTC timezone offset](https://en.wikipedia.org/wiki/List_of_UTC_offsets) in the format `"+/-HH:MM"`:
|
|
@@ -260,7 +276,7 @@ conference:
|
|
|
260
276
|
|
|
261
277
|
### Navigation Bar
|
|
262
278
|
|
|
263
|
-
The navigation bar is located at the top and visible on every site. On the
|
|
279
|
+
The navigation bar is located at the top and visible on every site. On the left, it shows the title of the website (`site.title`) followed by the links listed under the `links` property of the `navigation` property. See the [_Content_](#content) > [_Links_](#links) section below for the available properties per link. Please note that icons are ignored for the navigation bar.
|
|
264
280
|
|
|
265
281
|
Example:
|
|
266
282
|
|
|
@@ -284,6 +300,7 @@ Optionally, a logo or link of your organization hosting the conference can be sh
|
|
|
284
300
|
- the text to show (`name`),
|
|
285
301
|
- an absolute link address (`url`), and
|
|
286
302
|
- optionally a logo to show instead of the text (`img`), whereby the path to the image file relative to the `/assets/images/` folder has to be specified.
|
|
303
|
+
- optionally a dark mode logo (`img_dark`), which will be automatically displayed when the user's system is in dark mode. If not specified, the regular `img` will be used in both light and dark modes.
|
|
287
304
|
|
|
288
305
|
Example:
|
|
289
306
|
|
|
@@ -294,106 +311,205 @@ conference:
|
|
|
294
311
|
logo:
|
|
295
312
|
name: Magic Organisation
|
|
296
313
|
img: 'logo.svg' # inside /assets/images/
|
|
314
|
+
img_dark: 'logo-dark.svg' # optional: dark mode version
|
|
297
315
|
url: 'https://github.com'
|
|
298
316
|
```
|
|
299
317
|
|
|
300
|
-
The navigation bar automatically collapses when the available space is too small (e.g
|
|
318
|
+
The navigation bar automatically collapses when the available space is too small (e.g., on a smaller screen). The breakpoints are given by [Bootstrap](https://getbootstrap.com/docs/5.3/layout/breakpoints/). The default breakpoint is `md` (collapsing if the screen width is smaller than 992px). It can be adapted by setting the `breakpoint` property under the `navigation` property to either `sm`, `md`, `lg`, or `xl`.
|
|
319
|
+
|
|
320
|
+
When installed as a progressive web application (see the [_Progressive Web App (PWA)_](#progressive-web-app-pwa) section below), the navigation bar moves to the bottom. In PWA mode, it displays link icons and ignores links with `live: true`. Please note that the navigation bar has a limited width and no vertical scrolling. To hide an entry in this mode, set `pwa_hide: true` on its link.
|
|
321
|
+
|
|
322
|
+
```yaml
|
|
323
|
+
conference:
|
|
324
|
+
navigation:
|
|
325
|
+
links:
|
|
326
|
+
- name: Program
|
|
327
|
+
icon: calendar4-week
|
|
328
|
+
relative_url: /program/
|
|
329
|
+
- name: Supporters
|
|
330
|
+
pwa_hide: true
|
|
331
|
+
relative_url: /supporters/
|
|
332
|
+
```
|
|
301
333
|
|
|
302
|
-
###
|
|
334
|
+
### Meta Data for Search Engines and Link Previews
|
|
303
335
|
|
|
304
|
-
The theme automatically includes the necessary `<meta>` tags to ease link previewing when sharing links based on the [Open Graph protocol](https://ogp.me/) and [Twitter Cards](https://developer.
|
|
336
|
+
The theme automatically includes the necessary `<meta>` tags to ease link previewing when sharing links based on the [Open Graph protocol](https://ogp.me/) (used by all major social networks and messenger apps) and [Twitter Cards](https://developer.x.com/en/docs/x-for-websites/cards/overview/abouts-cards) (used by X). These tags control how a link is shown when shared via different platforms and apps. The theme also includes [Schema.org](https://schema.org/) JSON-LD structured data to help search engines better understand and display the conference and its talks, potentially showing event cards, speaker information, and enhanced search listings.
|
|
305
337
|
|
|
306
|
-
|
|
338
|
+
Both configurations are organized under the `meta` property.
|
|
307
339
|
|
|
308
|
-
|
|
340
|
+
To generate a meaningful description for each of the schemas and links, the preposition for the conference title as given under the `title` property can be defined by using the `preposition` property. For example, if `title` is set to "Conference 2020" the corresponding `preposition` would be "at". The template can then use it to generate descriptions such as "Talk _at_ Conference 2020".
|
|
309
341
|
|
|
310
342
|
```yaml
|
|
311
343
|
title: Conference 2020
|
|
312
344
|
preposition: "at"
|
|
313
|
-
|
|
314
|
-
...
|
|
315
|
-
|
|
316
|
-
conference:
|
|
317
|
-
link_preview:
|
|
318
|
-
disable: false
|
|
319
|
-
img:
|
|
320
|
-
twitter: "twitter_preview.png" # inside /assets/images/
|
|
321
|
-
open_graph: "facebook_preview.png" # inside /assets/images/
|
|
322
345
|
```
|
|
323
346
|
|
|
324
|
-
|
|
347
|
+
#### Link Previews
|
|
325
348
|
|
|
326
|
-
|
|
349
|
+
Support for link preview is organized under the `link_preview` property part of the `meta` property. It can be disabled by setting `disable` to `true`.
|
|
327
350
|
|
|
328
|
-
|
|
351
|
+
Optionally, an image that is shown as preview for all links can be specified. For sharing via Open Graph an image ratio of 1.91:1 and an ideal size of 1200x630 pixel is recommended. For sharing via Twitter an image ratio of 1.91:1 and a minimal size of 300x157 pixel (better 1200x628 pixel) is recommended. SVG image files are not supported. It is activated through the `img` property under the `link_preview` property containing an image file shown for Open Graph (`open_graph`) and on the Twitter Cards (`twitter`), whereby the path to the image file relative to the `/assets/images/` folder has to be specified.
|
|
329
352
|
|
|
330
|
-
|
|
353
|
+
```yaml
|
|
354
|
+
conference:
|
|
355
|
+
meta:
|
|
356
|
+
link_preview:
|
|
357
|
+
disable: false # Set to true to disable Open Graph and Twitter Card meta tags
|
|
358
|
+
img:
|
|
359
|
+
twitter: "twitter_preview.png" # inside /assets/images/
|
|
360
|
+
open_graph: "facebook_preview.png" # inside /assets/images/
|
|
361
|
+
```
|
|
331
362
|
|
|
332
|
-
|
|
363
|
+
#### Meta Data for Search Engines
|
|
364
|
+
|
|
365
|
+
Support for [Schema.org](https://schema.org/) JSON-LD structured data is organized under the `schema_org` property part of the `meta` property. It can be disabled by setting `disable` to `true`. Different schemas are generated depending on the page type, and these schemas are interconnected. The following schemas are generated:
|
|
366
|
+
- `ConferenceEvent` (main and program page)
|
|
367
|
+
- `Event` (talk pages)
|
|
368
|
+
- `Place` (location and room pages)
|
|
369
|
+
- `Person` (speaker pages)
|
|
370
|
+
|
|
371
|
+
> [!NOTE]
|
|
372
|
+
> Please note that any talk, room, or speaker set to `hide: true` will not be included in the generated schemas or their relations.
|
|
373
|
+
|
|
374
|
+
Optionally, the following properties can be added under the `schema_org` property to provide further information about the conference:
|
|
375
|
+
- Event Status (`event_status`):
|
|
376
|
+
- `scheduled` (default)
|
|
377
|
+
- `cancelled`
|
|
378
|
+
- `postponed`
|
|
379
|
+
- `moved_online`
|
|
380
|
+
- Event Attendance Mode (`event_attendance_mode`):
|
|
381
|
+
- `offline` (default)
|
|
382
|
+
- `online`
|
|
383
|
+
- `mixed`
|
|
384
|
+
- Organizer hosting the conference (`organizer`) with the following properties
|
|
385
|
+
- `name`
|
|
386
|
+
- `url`
|
|
387
|
+
- Call for Participation (`has_participation_offer`) with the following property
|
|
388
|
+
- `url`
|
|
389
|
+
- Ticket offer (`tickets`) with the following optional properties
|
|
390
|
+
- `url`
|
|
391
|
+
- `availability`:
|
|
392
|
+
- `in_stock`
|
|
393
|
+
- `pre_order`
|
|
394
|
+
- `sold_out`
|
|
395
|
+
- `limited_availability`
|
|
396
|
+
- `out_of_stock`
|
|
397
|
+
- `online_only`
|
|
398
|
+
- `in_store_only`
|
|
399
|
+
- `price`
|
|
400
|
+
- `priceCurrency`: Currency code (ISO 4217, e.g., `"USD"`, `"EUR"`, `"CHF"`)
|
|
401
|
+
- Image file path (`img`) relative to the `/assets/images/`
|
|
333
402
|
|
|
334
403
|
```yaml
|
|
335
404
|
conference:
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
405
|
+
schema_org:
|
|
406
|
+
disable: false # Set to true to disable Schema.org JSON-LD structured data
|
|
407
|
+
event_status: "scheduled" # Options: scheduled, cancelled, postponed, moved_online
|
|
408
|
+
event_attendance_mode: "offline" # Options: offline, online, mixed
|
|
409
|
+
organizer: # Organization hosting the conference
|
|
410
|
+
name: "Your Organization Name" # Organization name
|
|
411
|
+
url: "https://example.com" # Organization website URL (optional, can use name or url)
|
|
412
|
+
has_participation_offer: # Call for participation
|
|
413
|
+
url: "https://example.com/register" # URL for participation offer
|
|
414
|
+
tickets: # Ticket offer
|
|
415
|
+
url: "https://example.com/tickets" # URL to purchase tickets
|
|
416
|
+
availability: "in_stock" # Options: in_stock, pre_order, sold_out, limited_availability, out_of_stock, online_only, in_store_only
|
|
417
|
+
price: "50.00" # Price as a string (e.g., "50.00")
|
|
418
|
+
priceCurrency: "USD" # Currency code (ISO 4217, e.g., "USD", "EUR", "CHF")
|
|
419
|
+
img: "conference.png" # inside /assets/images/
|
|
339
420
|
```
|
|
340
421
|
|
|
341
|
-
|
|
422
|
+
### Main Landing Page
|
|
342
423
|
|
|
343
|
-
|
|
424
|
+
The main landing page is shown at the root of the website to greet new visitors. To show it you need to create a `index.md` file in the root of your website's folder and specify its layout as `layout: home`.
|
|
425
|
+
|
|
426
|
+
The main page states your site's title (`site.title`) or a logo instead. The logo can be configured through the `header` property of the main page's FrontMatter containing
|
|
427
|
+
|
|
428
|
+
- a `img` property specifying the path to the image file relative to the `/assets/images/` folder.
|
|
429
|
+
- optionally a `img_dark` property for a dark mode version of the logo, which will be automatically displayed when the user's system is in dark mode. If not specified, the regular `img` will be used in both light and dark modes.
|
|
430
|
+
|
|
431
|
+
The title/logo on the main page is followed by a description of your site (`site.description`) and the content of your `index.md` file. It ends with an optional list of link buttons. See the [_Content_](#content) > [_Links_](#links) section below for the available properties per link.
|
|
344
432
|
|
|
345
433
|
```yaml
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
434
|
+
layout: home
|
|
435
|
+
header:
|
|
436
|
+
img: "main_logo.png"
|
|
437
|
+
img_dark: "main_logo_dark.png" # optional: dark mode version
|
|
438
|
+
links:
|
|
439
|
+
- name: Program
|
|
440
|
+
relative_url: /program/
|
|
441
|
+
- name: Tickets
|
|
442
|
+
disabled: true
|
|
443
|
+
absolute_url: ''
|
|
355
444
|
```
|
|
356
445
|
|
|
357
|
-
### Information Boxes
|
|
446
|
+
### Information Boxes & Modals
|
|
447
|
+
|
|
448
|
+
The theme supports two types of information displays: banners at the top of the page (`bars`) and dialog popups (`modals`). Both can be used to inform your visitors about important news and announcements.
|
|
358
449
|
|
|
359
|
-
One or multiple information banners
|
|
450
|
+
One or multiple information banners can be shown at the top of the website just below the navigation bar. They are prominent and can inform your visitors about important news. They are activated through the `info.bars` property, which contains a list for each information banner to show. Each banner consists of
|
|
360
451
|
|
|
361
452
|
- a title (`title`),
|
|
362
453
|
- a color (`color`) following the Bootstrap color scheme (see below), possible values are:
|
|
363
454
|
- `primary` (your website's main color, normally blue)
|
|
364
455
|
- `secondary` (your website's secondary color, normally grey)
|
|
365
456
|
- `success` (green)
|
|
366
|
-
- `
|
|
457
|
+
- `danger` (red)
|
|
367
458
|
- `warning` (yellow)
|
|
368
459
|
- `info` (blue)
|
|
369
460
|
- `light` (white)
|
|
370
461
|
- `dark` (dark grey)
|
|
371
462
|
- an additional text (`text`, markdown supported),
|
|
372
|
-
- the option to show it on all pages, only the main landing page (`main_only: true`), or all pages except the main landing page (`pages_only: true`)
|
|
463
|
+
- the option to show it on all pages, only the main landing page (`main_only: true`), or all pages except the main landing page (`pages_only: true`),
|
|
464
|
+
- optionally, the number of days to keep the info bar dismissed after a user closes it (`dismissal_days`, default: `7`). Each info bar can have its own dismissal period. Setting `dismissal_days: 0` will disable dismissibility entirely (no close button will be shown, and the info bar cannot be dismissed).
|
|
465
|
+
|
|
466
|
+
Information modals appear as modal dialog popups that overlay the page content, dimming the background. They are useful for displaying important announcements that require user attention. Modals are activated through the `info.modals` property, which contains a list for each information modal to show. Each modal consists of
|
|
467
|
+
|
|
468
|
+
- a title (`title`),
|
|
469
|
+
- an additional text (`text`, markdown supported),
|
|
470
|
+
- the option to show it on all pages, only the main landing page (`main_only: true`), or all pages except the main landing page (`pages_only: true`),
|
|
471
|
+
- optionally, the number of days to keep the info modal dismissed after a user closes it (`dismissal_days`, default: `7`). Each modal can have its own dismissal period. Setting `dismissal_days: 0` will disable dismissibility entirely (cannot be closed).
|
|
472
|
+
|
|
473
|
+
Modals automatically appear when a page loads. The dismissal state is persisted in the browser's localStorage, so users won't see dismissed modals again until the dismissal period expires.
|
|
373
474
|
|
|
374
475
|
Example:
|
|
375
476
|
|
|
376
477
|
```yaml
|
|
377
478
|
conference:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
479
|
+
info:
|
|
480
|
+
# Information modals (shown as modal dialogs)
|
|
481
|
+
modals:
|
|
482
|
+
- title: Important Announcement
|
|
483
|
+
main_only: true
|
|
484
|
+
dismissal_days: 7
|
|
485
|
+
text: This is an information modal that appears as a dialog.
|
|
486
|
+
|
|
487
|
+
# Information bars (shown as alerts at the top of the page)
|
|
488
|
+
bars:
|
|
489
|
+
- title: Sold Out!
|
|
490
|
+
color: primary
|
|
491
|
+
main_only: true
|
|
492
|
+
dismissal_days: 14
|
|
493
|
+
text: |
|
|
494
|
+
We're truly sorry but we are **sold out**.
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
Try again next year.
|
|
499
|
+
- title: Important Notice
|
|
500
|
+
color: warning
|
|
501
|
+
dismissal_days: 0
|
|
502
|
+
text: |
|
|
503
|
+
This is a non-dismissible information banner that will always be visible.
|
|
388
504
|
```
|
|
389
505
|
|
|
390
506
|
### Live Indications & Streaming
|
|
391
507
|
|
|
392
|
-
To help users
|
|
508
|
+
To help users navigate the program during the conference, a _Live_ indication can be shown next to talks that are currently taking place. A small JavaScript function keeps the site automatically up-to-date (without the need to refresh) showing the indication as soon as the talk has started and hiding it once it is over (according to the timetable indicated in the `_data/program.yml` file).
|
|
393
509
|
|
|
394
|
-
This can be further extended if some talks have an associated live stream:
|
|
510
|
+
This can be further extended if some talks have an associated live stream: When clicking one of the live indications, a modal will open containing the corresponding embedded live stream. The URL to the live stream has to be set via `live` property in each room (see the [_Content_](#content) > [_Rooms_](#rooms) section below). Instead of opening the modal an external link can also be used.
|
|
395
511
|
|
|
396
|
-
To activate these functionalities, each day in the `program.yml` file must contain a `date` property (see section _Content_ >
|
|
512
|
+
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
|
|
397
513
|
|
|
398
514
|
- how long a pause between two consecutive talks has to be for the live indication to pause (`stop`),
|
|
399
515
|
- optionally, under the `streaming` property:
|
|
@@ -402,10 +518,6 @@ To activate these functionalities, each day in the `program.yml` file must conta
|
|
|
402
518
|
- how many minutes the stream stays active after a talk (`extend`),
|
|
403
519
|
- how long a pause between two consecutive talks has to be for the stream to pause (`pause`), and
|
|
404
520
|
- an external (absolute) link to which the user will be redirected instead of opening the modal (`external`),
|
|
405
|
-
- optionally, under the `demo` property:
|
|
406
|
-
- 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
|
|
407
|
-
- how long the demonstration should take (`duration`), and
|
|
408
|
-
- how long the pause between two demonstration cycles should be (`pause`).
|
|
409
521
|
|
|
410
522
|
```yaml
|
|
411
523
|
conference:
|
|
@@ -416,50 +528,91 @@ conference:
|
|
|
416
528
|
pause: 60 # in minutes
|
|
417
529
|
prepend: 5 # in minutes
|
|
418
530
|
extend: 5 # in minutes
|
|
419
|
-
|
|
420
|
-
enable: false
|
|
421
|
-
duration: 300 # in seconds
|
|
422
|
-
pause: 10 # in seconds
|
|
531
|
+
external: "https://example.com/stream" # optional: external link instead of modal
|
|
423
532
|
```
|
|
424
533
|
|
|
425
|
-
###
|
|
534
|
+
### Progressive Web App (PWA)
|
|
426
535
|
|
|
427
|
-
|
|
428
|
-
The map contains small control buttons to zoom in and out, center the map back to the initial position, and show the visitors current location (has to be manually activated and granted by the visitor).
|
|
536
|
+
The theme includes built-in support for Progressive Web App (PWA) functionality, allowing your conference website to be installed on users' devices and work offline. PWA functionality is disabled by default. To enable it, multiple manual steps are necessary to add the necessary files:
|
|
429
537
|
|
|
430
|
-
|
|
538
|
+
1. Enable and optionally customize the functionality in your `_config.yml`:
|
|
539
|
+
```yaml
|
|
540
|
+
conference:
|
|
541
|
+
pwa:
|
|
542
|
+
enable: true
|
|
543
|
+
|
|
544
|
+
# Theme color for the PWA (default: Bootstrap primary color, #0d6efd)
|
|
545
|
+
theme_color: "#0d6efd"
|
|
546
|
+
|
|
547
|
+
# Background color for the PWA (default: Bootstrap primary color, #ffffff)
|
|
548
|
+
background_color: "#ffffff"
|
|
549
|
+
|
|
550
|
+
# PWA icons configuration
|
|
551
|
+
icons:
|
|
552
|
+
- img: "icons/icon-192.png"
|
|
553
|
+
sizes: "192x192"
|
|
554
|
+
type: "image/png"
|
|
555
|
+
- img: "icons/icon-512.png"
|
|
556
|
+
sizes: "512x512"
|
|
557
|
+
type: "image/png"
|
|
558
|
+
- img: "icons/maskable-512.png"
|
|
559
|
+
sizes: "512x512"
|
|
560
|
+
type: "image/png"
|
|
561
|
+
purpose: "maskable"
|
|
562
|
+
```
|
|
431
563
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
564
|
+
Icons can be configured as an array of objects containing:
|
|
565
|
+
- `img`: Path to the icon file relative to `/assets/images/` (required)
|
|
566
|
+
- `sizes`: Optional, icon size in format `"WIDTHxHEIGHT"` (e.g., `"192x192"`)
|
|
567
|
+
- `type`: Optional, MIME type (e.g., `"image/png"`)
|
|
568
|
+
- `purpose`: Defaults to `"any"`, see [mdn Manifest Reference](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/icons#purpose) for alternative values
|
|
569
|
+
|
|
570
|
+
2. Create a manifest file in the root of your project, `manifest.json` with the following content:
|
|
571
|
+
```yaml
|
|
572
|
+
---
|
|
573
|
+
layout: manifest
|
|
574
|
+
---
|
|
575
|
+
```
|
|
576
|
+
3. Create a service worker JavaScript file in the root of your project, `sw.js` with the following content:
|
|
577
|
+
```yaml
|
|
578
|
+
---
|
|
579
|
+
layout: sw
|
|
580
|
+
---
|
|
581
|
+
```
|
|
582
|
+
4. Create specified icon files. It is recommended to have at least icons for the following three settings:
|
|
583
|
+
- `size: "192x192"`
|
|
584
|
+
- `size: "512x512"`
|
|
585
|
+
- `size: "512x512", purpose: "maskable"`
|
|
586
|
+
|
|
587
|
+
These icons will be used when users install the app on their devices. You can generate these from a single high-resolution logo using a tool like:
|
|
588
|
+
- [PWA Asset Generator](https://github.com/onderceylan/pwa-asset-generator)
|
|
589
|
+
|
|
590
|
+
> [!NOTE]
|
|
591
|
+
> Please note that when installed as a PWA, the navigation bar moves to the bottom and includes icons. See the [_Navigation Bar_](#navigation-bar) section above for more information.
|
|
439
592
|
|
|
440
593
|
### Talk Settings
|
|
441
594
|
|
|
442
|
-
Talks can optionally be organized into tracks, where each track groups talks under a common subject. Tracks are visually distinct across the website, especially in the program, by a unique color. Additionally, each talk can have one or more associated tags. Both tracks and tags are linked via the talk's
|
|
595
|
+
Talks can optionally be organized into tracks, where each track groups talks under a common subject. Tracks are visually distinct across the website, especially in the program, by a unique color. Additionally, each talk can have one or more associated tags. Both tracks and tags are linked via the talk's Front Matter (refer to the [_Content_](#content) > [_Talks_](#talks) > section below for more details).
|
|
443
596
|
|
|
444
597
|
To define available tracks, add the `tracks` property under the `talks` property in the configuration file. This property is a list of tracks, with each track requiring:
|
|
445
598
|
|
|
446
|
-
- its `name`, which must match the track specified in the talk's
|
|
599
|
+
- its `name`, which must match the track specified in the talk's Front Matter.
|
|
447
600
|
- a color (`color`) following the Bootstrap color scheme (see below), possible values include:
|
|
448
601
|
- `primary` (your website's main color, normally blue)
|
|
449
602
|
- `secondary` (your website's secondary color, normally grey)
|
|
450
603
|
- `success` (green)
|
|
451
|
-
- `
|
|
604
|
+
- `danger` (red)
|
|
452
605
|
- `warning` (yellow)
|
|
453
606
|
- `info` (blue)
|
|
454
607
|
- `light` (white)
|
|
455
608
|
- `dark` (dark grey)
|
|
456
609
|
|
|
457
|
-
Instead of displaying the tag name, you can replace it with an icon. To define tags with icons, add the `tags` property under the `talks property in your configuration file. Each listed tag requires:
|
|
610
|
+
Instead of displaying the tag name, you can replace it with an icon. To define tags with icons, add the `tags` property under the `talks` property in your configuration file. Each listed tag requires:
|
|
458
611
|
|
|
459
|
-
- its `name`, which must match the tag specified in the talk's
|
|
460
|
-
- optionally, an icon to show instead of the tag's name (`icon: ` followed by the [
|
|
612
|
+
- its `name`, which must match the tag specified in the talk's Front Matter.
|
|
613
|
+
- optionally, an icon to show instead of the tag's name (`icon: ` followed by the [Bootstrap Icons](https://icons.getbootstrap.com/) icon name to show).
|
|
461
614
|
|
|
462
|
-
Talks can also have associated links displayed at the end of their content. If these links have an icon (see _Content_ > _Talks_ below), they will also appear on the talk overview page (e.g., to indicate which talks have video recordings).
|
|
615
|
+
Talks can also have associated links displayed at the end of their content. If these links have an icon (see [_Content_](#content) > [_Talks_](#talks) below), they will also appear on the talk overview page (e.g., to indicate which talks have video recordings).
|
|
463
616
|
|
|
464
617
|
Example:
|
|
465
618
|
|
|
@@ -477,93 +630,95 @@ conference:
|
|
|
477
630
|
tags:
|
|
478
631
|
- name: No recording
|
|
479
632
|
icon: video-slash
|
|
480
|
-
|
|
481
|
-
# Hide link icons on talk overview page
|
|
482
|
-
hide_link_icons: false
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
### Speaker Settings
|
|
486
|
-
|
|
487
|
-
In the program as well as the speaker's overview the speaker's first name can be abbreviated to its first letter if present. To do so, add the `show_firstname: true` setting (default: `false`) to the `speakers` property.
|
|
488
|
-
|
|
489
|
-
Example:
|
|
490
|
-
|
|
491
|
-
```yaml
|
|
492
|
-
conference:
|
|
493
|
-
speakers:
|
|
494
|
-
show_firstname: false
|
|
495
633
|
```
|
|
496
634
|
|
|
497
635
|
### Location Settings
|
|
498
636
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
If your `location` overview file is not located under `/location` you can indicate an alternative path by setting the `url` property (default: `/location`) under the `location` property.
|
|
637
|
+
To help users find your venue, an [OpenStreetMap](https://www.openstreetmap.org/) container displaying a map can be shown on the location page as well as the address of the venue. You can define the initial position of the map by setting the default zoom level `default_zoom`, the center coordinates `home_coord`, and the map provider for the tiles `map_provider`. Alternative map providers can be found [here](https://leaflet-extras.github.io/leaflet-providers/preview/).
|
|
638
|
+
The map contains small control buttons to zoom in and out, center the map back to the initial position, and show the visitor's current location (has to be manually activated and granted by the visitor).
|
|
503
639
|
|
|
504
|
-
|
|
640
|
+
Location settings are configured directly in the Front Matter of the location page (the page with `layout: location`). The location page's Front Matter supports the following properties:
|
|
505
641
|
|
|
506
|
-
|
|
642
|
+
- `title`: The title shown in the navigation bar for the location section (defaults to "Location")
|
|
643
|
+
- `hide`: Set to `true` to hide the location page and all room links (default: `false`). Hidden rooms still need to exist in the `_rooms/` directory as references.
|
|
644
|
+
- `map`: Map configuration object with the following properties:
|
|
645
|
+
- `home_coord`: Center coordinates of the map (e.g., `47.37808, 8.53935`)
|
|
646
|
+
- `default_zoom`: Initial zoom level (e.g., `17`)
|
|
647
|
+
- `map_provider`: Tile provider (default: `"OpenStreetMap.Mapnik"`)
|
|
648
|
+
- `postal_address`: Postal address displayed on the location page and used in schema.org structured data. Can contain:
|
|
649
|
+
- `name`: Venue name (e.g., "Zentralwäscherei")
|
|
650
|
+
- `street`: Street address (e.g., "Neue Hard 12")
|
|
651
|
+
- `locality`: City or locality (e.g., "Zurich")
|
|
652
|
+
- `postal_code`: Postal or ZIP code (e.g., "8005")
|
|
653
|
+
- `region`: State, province, or region (e.g., "ZH", "Zurich")
|
|
654
|
+
- `country`: ISO 3166-1 alpha-2 country code (e.g., "CH")
|
|
507
655
|
|
|
508
|
-
Example:
|
|
656
|
+
Example location page (`location/index.md`):
|
|
509
657
|
|
|
510
658
|
```yaml
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
659
|
+
---
|
|
660
|
+
layout: location
|
|
661
|
+
title: Conference Venue
|
|
662
|
+
hide: false
|
|
663
|
+
postal_address:
|
|
664
|
+
name: "Zentralwäscherei"
|
|
665
|
+
street: "Neue Hard 12"
|
|
666
|
+
locality: "Zurich"
|
|
667
|
+
postal_code: "8005"
|
|
668
|
+
region: "ZH"
|
|
669
|
+
country: "CH"
|
|
670
|
+
map:
|
|
671
|
+
default_zoom: 17
|
|
672
|
+
home_coord: 47.37808, 8.53935
|
|
673
|
+
map_provider: "OpenStreetMap.Mapnik"
|
|
674
|
+
---
|
|
675
|
+
|
|
676
|
+
Welcome to our conference venue!
|
|
517
677
|
```
|
|
518
678
|
|
|
519
|
-
The map is based on the [Leaflet](https://leafletjs.com/) JavaScript library. The map object can be customized by adding additional layers with markers, text, or shapes. To do so,
|
|
679
|
+
The map is based on the [Leaflet](https://leafletjs.com/) JavaScript library. The map object can be customized by adding additional layers with markers, text, or shapes. To do so, edit the `assets/js/main.js` file in your project:
|
|
520
680
|
|
|
521
|
-
1.
|
|
522
|
-
2. Await the initialization of the theme's object
|
|
523
|
-
3. Fetch the map object and verify it is set (while the JavaScript code is
|
|
681
|
+
1. The conference JavaScript bundle (`conference.bundle.js`) is automatically loaded and provides all necessary libraries
|
|
682
|
+
2. Await the initialization of the theme's object using `window.conference.awaitReady()`
|
|
683
|
+
3. Fetch the map object and verify it is set (while the JavaScript code is executed on each page, the map object will only exist on the location page)
|
|
524
684
|
4. Modify the map.
|
|
525
685
|
|
|
526
|
-
|
|
686
|
+
The following example for `assets/js/main.js` adds a simple marker to the map:
|
|
527
687
|
|
|
528
688
|
```javascript
|
|
529
|
-
|
|
530
|
-
|
|
689
|
+
window.conference.awaitReady().then(async () => {
|
|
690
|
+
const map = await window.conference.map.getMap();
|
|
531
691
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
window.conference.awaitReady().then(() => {
|
|
535
|
-
const map = window.conference.map.getMap();
|
|
536
|
-
|
|
537
|
-
if (typeof map !== 'undefined') {
|
|
692
|
+
if (map) {
|
|
538
693
|
let main_station = L.marker([47.37785, 8.54035], {
|
|
539
694
|
icon: L.divIcon({
|
|
540
695
|
className: '',
|
|
541
|
-
html: '<span class="
|
|
696
|
+
html: '<span class="bi bi-train-front" aria-hidden="true"></span> Main Station',
|
|
542
697
|
iconSize: [120, 56]
|
|
543
698
|
})
|
|
544
699
|
}).addTo(map);
|
|
545
700
|
}
|
|
546
701
|
});
|
|
547
|
-
|
|
548
702
|
```
|
|
549
703
|
|
|
550
704
|
### Program Settings
|
|
551
705
|
|
|
552
|
-
|
|
706
|
+
Program settings are configured directly in the Front Matter of the program page (the page with `layout: program`). The program page's Front Matter supports the following properties:
|
|
553
707
|
|
|
554
|
-
- The
|
|
555
|
-
-
|
|
556
|
-
|
|
557
|
-
If your `program` file is not located under `/program` you can indicate an alternative path by setting the `url` property (default: `/program`) under the `program` property.
|
|
558
|
-
Example:
|
|
708
|
+
- `title`: The title shown on the program page (defaults to "Program")
|
|
709
|
+
- `time_steps`: The time interval in minutes for each row in the schedule grid (default: `15`)
|
|
710
|
+
- `show_alltimes`: Show time labels for all intervals, not just full hours (default: `false`)
|
|
559
711
|
|
|
560
712
|
```yaml
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
713
|
+
---
|
|
714
|
+
layout: program
|
|
715
|
+
title: Conference Program
|
|
716
|
+
time_steps: 15
|
|
717
|
+
show_alltimes: true
|
|
718
|
+
---
|
|
565
719
|
```
|
|
566
720
|
|
|
721
|
+
|
|
567
722
|
## Content
|
|
568
723
|
|
|
569
724
|
The different talks, speakers and rooms are stored as a collection of files. Each file contains a small header in form of a YAML block (called [FrontMatter](https://jekyllrb.com/docs/front-matter/)) used to store additional information beside a description.
|
|
@@ -571,26 +726,26 @@ The schedule defining when and in which room a talk takes place is stored as a [
|
|
|
571
726
|
|
|
572
727
|
### Schedule / Program
|
|
573
728
|
|
|
574
|
-
The schedule of the conference linking the talks with the rooms and indicating when each talk
|
|
729
|
+
The schedule of the conference linking the talks with the rooms and indicating when each talk takes place and how long it lasts, is set in the `_data/program.yml` file. It contains a list of days, whereby each day contains a list of rooms, whereby each room contains a list of talks.
|
|
575
730
|
|
|
576
731
|
Each day consists of
|
|
577
732
|
|
|
578
733
|
- a list of rooms (`rooms`) in which talks are taking place on that day
|
|
579
734
|
- optionally, the day's `name`, e.g., the weekday
|
|
580
735
|
- optionally, the short form of the day's name (`abbr`), and
|
|
581
|
-
-
|
|
736
|
+
- a `date` in the format `YYYY-MM-DD` (required if live indications are enabled, optional otherwise)
|
|
582
737
|
|
|
583
738
|
Each room consists of
|
|
584
739
|
|
|
585
|
-
- the room's `name` (must correspond to one of the room
|
|
740
|
+
- the room's `name` (must correspond to one of the room identifiers), and
|
|
586
741
|
- a list of talks (`talks`) which also can be empty `[]`.
|
|
587
742
|
|
|
588
743
|
The order of the rooms in the list defines the order of the rooms as shown in the schedule on the program page. For the live-streaming or the room overview the order of the rooms is alphabetical but can be adapted via the [main configuration file](https://jekyllrb.com/docs/collections/#sort-by-front-matter-key).
|
|
589
744
|
|
|
590
745
|
Each talk consists of
|
|
591
746
|
|
|
592
|
-
- a `name` (must correspond to one of the talk
|
|
593
|
-
- a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me)
|
|
747
|
+
- a `name` (must correspond to one of the talk identifiers),
|
|
748
|
+
- a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me) formatted) or `H:M +∆` whereby ∆ is the day offset in relation to the date given for the given day, and
|
|
594
749
|
- an end time `time_end`.
|
|
595
750
|
|
|
596
751
|
The list of talks should (manually) be ordered by time, i.e., the first occurring talk should be listed first.
|
|
@@ -627,7 +782,7 @@ Each talk is represented by a file in the `_talks/` directory. It must begin wit
|
|
|
627
782
|
- one or more existing `speakers` name(s),
|
|
628
783
|
- optionally, a `track` which should match the tracks defined in the site's configuration,
|
|
629
784
|
- optionally, a list of `tags`
|
|
630
|
-
- optionally, a list of `links` (see the _Links_ subsection below for the available properties):
|
|
785
|
+
- optionally, a list of `links` (see the [_Links_](#links) subsection below for the available properties):
|
|
631
786
|
- Links with an `icon` are treated separately and are also included on the talk overview page.
|
|
632
787
|
- Links with `live: true` are only shown below the live stream for the given talk in form of buttons.
|
|
633
788
|
- optionally, `hide: true` if the talk's page should not be linked to.
|
|
@@ -652,11 +807,11 @@ Each speaker is represented by a file in the `_speakers/` directory. It must beg
|
|
|
652
807
|
- the speaker's `name` (used as identifier), as well as its
|
|
653
808
|
- `first_name`,
|
|
654
809
|
- `last_name`,
|
|
655
|
-
- optionally, a list of `links` (see the _Links_ subsection below for the available properties):
|
|
810
|
+
- optionally, a list of `links` (see the [_Links_](#links) subsection below for the available properties):
|
|
656
811
|
- Links with an `icon` are treated separately and are also included on the speaker overview page.
|
|
657
812
|
- optionally, `hide: true` if the speaker's page should not be linked to.
|
|
658
813
|
|
|
659
|
-
If the speaker's name consists only
|
|
814
|
+
If the speaker's name consists of only one word, populate the `last_name` property and leave the `first_name` property empty. The last name is generally used for sorting the speakers.
|
|
660
815
|
|
|
661
816
|
Example:
|
|
662
817
|
|
|
@@ -677,7 +832,7 @@ Each room is represented by a file in the `_rooms/` directory. It must begin wit
|
|
|
677
832
|
|
|
678
833
|
- the room's `name`
|
|
679
834
|
- optionally, `hide: true` if the room's page should not be linked to, and
|
|
680
|
-
- 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:
|
|
835
|
+
- optionally under the `live` property, a URL pointing to a live stream for the given room during the conference (see the section [_Configuration_](#configuration) > [_Live Indications & Streaming_](#live-indications--streaming) above), either:
|
|
681
836
|
- as an `absolute_url`, or
|
|
682
837
|
- a `relative_url`.
|
|
683
838
|
|
|
@@ -694,7 +849,7 @@ live:
|
|
|
694
849
|
|
|
695
850
|
### Links
|
|
696
851
|
|
|
697
|
-
Links are used at different
|
|
852
|
+
Links are used at different locations throughout the theme: They can either be used in the configuration file (for the landing page or the navigation bar), or in talks and for speakers. A link can thereby have the following properties:
|
|
698
853
|
|
|
699
854
|
- the text to show (`name`),
|
|
700
855
|
- the link address:
|
|
@@ -703,8 +858,8 @@ Links are used at different location throughout the theme: They can either be us
|
|
|
703
858
|
- pointing to a _file_ uploaded to the `/documents` folder: `file:`, or
|
|
704
859
|
- pointing to an external _video_: `video:`.
|
|
705
860
|
- optionally, if it is disabled (`disabled: true`),
|
|
706
|
-
- optionally, if it should open in
|
|
707
|
-
- optionally, an icon to show in front of the title (`icon: ` followed by the [
|
|
861
|
+
- optionally, if it should open in an iframe embedded in a popup-like modal (`iframe: true`), and
|
|
862
|
+
- optionally, an icon to show in front of the title (`icon: ` followed by the [Bootstrap Icons](https://icons.getbootstrap.com/) icon name to show).
|
|
708
863
|
|
|
709
864
|
Using the `file:` indicator, the
|
|
710
865
|
|
|
@@ -717,7 +872,7 @@ Using the `file:` indicator, the
|
|
|
717
872
|
Using the `video:` indicator, the
|
|
718
873
|
|
|
719
874
|
- link address is set to an absolute address as given by the value.
|
|
720
|
-
- the link's `iframe:` attribute is set to `true`
|
|
875
|
+
- the link's `iframe:` attribute is set to `true` to embed the video in a popup-like modal having a default iframe ratio of 24:11.
|
|
721
876
|
- the link's `icon:` is set to `video`.
|
|
722
877
|
|
|
723
878
|
Additionally, a _talk_ link can also have the following property:
|
|
@@ -728,8 +883,8 @@ Additionally, a _navigation bar_ or _main landing page_ link can also have the f
|
|
|
728
883
|
|
|
729
884
|
- `live: true` making the link only visible during the conference and adds a live indication.
|
|
730
885
|
- The link is only shown if `name` is set. If `name` is an empty string, "Live Stream" is shown instead.
|
|
731
|
-
- If `name_inactive` is set, its value is used
|
|
732
|
-
- If streaming is enabled and any URL property is omitted, a click on the link will open the streaming modal (see section _Live
|
|
886
|
+
- If `name_inactive` is set, its value is used as a placeholder text while the conference is **not** live. If `name_inactive` is an empty string, "Live Stream" is shown instead.
|
|
887
|
+
- If streaming is enabled and any URL property is omitted, a click on the link will open the streaming modal (see section [_Configuration_](#configuration) > [_Live Indications & Streaming_](#live-indications--streaming) above).
|
|
733
888
|
- `menu` containing another list of links. This creates a dropdown menu of multiple sublinks, while the URL of the parent link is ignored. The sublinks have the same properties as regular links.
|
|
734
889
|
|
|
735
890
|
#### Import link files
|
|
@@ -757,59 +912,172 @@ There exists a Python file in this repository, `_tools/import_resources.py`, whi
|
|
|
757
912
|
python _tools/import_resources.py --help
|
|
758
913
|
```
|
|
759
914
|
|
|
760
|
-
|
|
915
|
+
### Overview Pages
|
|
761
916
|
|
|
762
|
-
For each of the three collections there
|
|
917
|
+
For each of the three collections, there exists a dedicated layout giving an overview of all items in the collection. Furthermore, there exists a layout to show the program as a time schedule. Simply create an empty page and associate the corresponding layout with it:
|
|
763
918
|
|
|
764
919
|
- `talks/index.md` with `layout: talk-overview`
|
|
765
920
|
- `speakers/index.md` with `layout: speaker-overview`
|
|
766
921
|
- `location/index.md` with `layout: location`
|
|
767
922
|
- `program/index.md` with `layout: program`
|
|
768
923
|
|
|
769
|
-
They can be empty but should contain the `layout` property in the
|
|
924
|
+
They can be empty but should contain the `layout` property in the Front Matter header.
|
|
770
925
|
|
|
771
926
|
If you choose a different location for the overview pages you must:
|
|
772
927
|
|
|
773
|
-
-
|
|
774
|
-
-
|
|
928
|
+
- for the `talks` and `speakers` overview files, adapt the URL of the two collections as described further above in the section [_Configuration_](#configuration) > [_Collection URLs_](#collection-urls), and
|
|
929
|
+
- for the `location` and `program` files, adapt the corresponding `url` parameter as described further above in the sections [_Configuration_](#configuration) > [_Location Settings_](#location-settings) and [_Configuration_](#configuration) > [_Program Settings_](#program-settings).
|
|
775
930
|
|
|
776
|
-
###
|
|
931
|
+
### Additional Pages
|
|
777
932
|
|
|
778
|
-
|
|
933
|
+
Additional static pages can easily be added as files and linked to via navigation bar or main landing page.
|
|
779
934
|
|
|
780
|
-
### Live Stream Overview
|
|
781
935
|
|
|
782
|
-
|
|
936
|
+
## Design
|
|
783
937
|
|
|
784
|
-
|
|
938
|
+
The design is based on [Bootstrap 5](http://getbootstrap.com) and is highly customizable. It integrates [Bootstrap Icons](https://icons.getbootstrap.com/) and [Leaflet](https://leafletjs.com/) for mapping. The theme also features automatic dark mode, adapting to user system preferences.
|
|
785
939
|
|
|
786
|
-
|
|
940
|
+
The theme offers three distinct approaches to Bootstrap integration, allowing you to choose the level of customization that suits your needs:
|
|
787
941
|
|
|
788
|
-
|
|
942
|
+
### Pre-compiled Bundle (Default)
|
|
789
943
|
|
|
790
|
-
|
|
944
|
+
This is the default option and requires no setup. As the Bootstrap framework is pre-compiled, direct modifications to its core (e.g., theme colors) are not possible. However, you can add custom styles to `assets/css/main.scss`; these will be loaded last and override existing styles.
|
|
791
945
|
|
|
792
|
-
|
|
793
|
-
|
|
946
|
+
```yaml
|
|
947
|
+
conference:
|
|
948
|
+
custom_style: "none" # or omit this line (default)
|
|
949
|
+
```
|
|
794
950
|
|
|
795
|
-
|
|
951
|
+
The `assets/css/` directory contains:
|
|
796
952
|
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
953
|
+
- `conference.bundle.css`: Complete bundle containing:
|
|
954
|
+
- Pre-compiled Bootstrap 5 framework
|
|
955
|
+
- Bootstrap Icons
|
|
956
|
+
- Leaflet map styles
|
|
957
|
+
- Conference theme customizations
|
|
958
|
+
- `main.scss`: For user-modifiable custom styles.
|
|
800
959
|
|
|
801
|
-
|
|
960
|
+
Including `assets/css/main.scss` in your project is optional. If included, it must begin with a [FrontMatter](https://jekyllrb.com/docs/front-matter/) header for Jekyll recognition:
|
|
802
961
|
|
|
803
|
-
@import "conference";
|
|
804
|
-
```
|
|
805
962
|
|
|
806
|
-
|
|
963
|
+
```scss
|
|
964
|
+
---
|
|
965
|
+
---
|
|
966
|
+
|
|
967
|
+
// Custom styles
|
|
968
|
+
// ...
|
|
969
|
+
```
|
|
970
|
+
|
|
971
|
+
### Split Bundle (Custom Bootstrap CSS)
|
|
972
|
+
|
|
973
|
+
Integrate your own Bootstrap file, such as a theme from [Bootswatch](https://bootswatch.com/). Similar to the default option, `assets/css/main.scss` can be used for additional custom styles, which will override previous styles.
|
|
974
|
+
|
|
975
|
+
```yaml
|
|
976
|
+
conference:
|
|
977
|
+
custom_style: "bootstrap"
|
|
978
|
+
```
|
|
979
|
+
|
|
980
|
+
The `assets/css/` directory contains:
|
|
981
|
+
|
|
982
|
+
- `bootstrap.min.css`: Your custom Bootstrap framework (user-provided).
|
|
983
|
+
- `conference-only.bundle.css`: Complete bundle containing:
|
|
984
|
+
- Bootstrap Icons
|
|
985
|
+
- Leaflet map styles
|
|
986
|
+
- Conference theme customizations
|
|
987
|
+
- `main.scss`: For additional custom styles.
|
|
988
|
+
|
|
989
|
+
Including `assets/css/main.scss` in your project is optional. If included, it must begin with a [FrontMatter](https://jekyllrb.com/docs/front-matter/) header for Jekyll recognition:
|
|
990
|
+
|
|
991
|
+
```scss
|
|
992
|
+
---
|
|
993
|
+
---
|
|
994
|
+
|
|
995
|
+
// Custom styles
|
|
996
|
+
// ...
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
#### Custom SCSS
|
|
1000
|
+
|
|
1001
|
+
Compile your Bootstrap framework by modifying [Bootstrap variables](https://getbootstrap.com/docs/5.3/customize/sass/#variable-defaults). This provides complete control over Bootstrap's SCSS variables, enabling source-level customization.
|
|
1002
|
+
|
|
1003
|
+
The theme simplifies this by including all Bootstrap SCSS source files. These are located in the Gem's `_sass` folder and are automatically overlaid with your project's `_sass` folder.
|
|
1004
|
+
|
|
1005
|
+
While offering the most flexibility, this setup requires several steps:
|
|
1006
|
+
|
|
1007
|
+
1. Configure Jekyll's [SASS compiler](https://jekyllrb.com/docs/assets/#sassscss) in `_config.yml`. Ensure `sass_dir` is either unset (using the default) or points to the `_sass` folder. Output compression is recommended.
|
|
1008
|
+
```yaml
|
|
1009
|
+
sass:
|
|
1010
|
+
sass_dir: _sass # or omit this line
|
|
1011
|
+
style: compressed
|
|
1012
|
+
```
|
|
1013
|
+
2. Configure the theme to use the full custom style setup:
|
|
1014
|
+
```yaml
|
|
1015
|
+
conference:
|
|
1016
|
+
custom_style: "full"
|
|
1017
|
+
```
|
|
1018
|
+
3. Create `_sass/bootstrap-variables.scss` to override Bootstrap variables.
|
|
1019
|
+
```scss
|
|
1020
|
+
// If needed, include Bootstrap functions first
|
|
1021
|
+
@use "bootstrap/functions" as *;
|
|
1022
|
+
|
|
1023
|
+
// Override Bootstrap variables
|
|
1024
|
+
$green: #4ea93f;
|
|
1025
|
+
$primary: $green;
|
|
1026
|
+
```
|
|
1027
|
+
4. Include the compiled conference bundle, incorporating your Bootstrap modifications, in `assets/css/main.scss`:
|
|
1028
|
+
```scss
|
|
1029
|
+
---
|
|
1030
|
+
---
|
|
1031
|
+
|
|
1032
|
+
@use "conference";
|
|
1033
|
+
|
|
1034
|
+
// Custom styles
|
|
1035
|
+
// ...
|
|
1036
|
+
```
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
## JavaScript
|
|
1040
|
+
|
|
1041
|
+
The theme includes a pre-built JavaScript bundle (`assets/js/conference.bundle.js`). This bundle is automatically included in the theme gem, pre-compiled, and minified, requiring no build tools for end users. Please do not modify this file directly.
|
|
1042
|
+
|
|
1043
|
+
To add custom JavaScript, edit the `assets/js/main.js` file in your project. This file loads after the conference bundle, giving you full access to all theme functionality.
|
|
1044
|
+
|
|
1045
|
+
**Available Global Objects:**
|
|
1046
|
+
|
|
1047
|
+
- `window.conference`: Main conference object with the following modules:
|
|
1048
|
+
- `conference.program`: Program navigation and tab management
|
|
1049
|
+
- `conference.map`: Map functionality (if enabled)
|
|
1050
|
+
- `conference.modal`: Modal popup handling
|
|
1051
|
+
- `conference.live`: Live streaming and real-time updates
|
|
1052
|
+
- `conference.awaitReady()`: Promise-based initialization helper
|
|
1053
|
+
- `window.$` / `window.jQuery`: jQuery library
|
|
1054
|
+
- `window.L`: Leaflet map library (if map is enabled)
|
|
1055
|
+
|
|
1056
|
+
**Example Usage:**
|
|
1057
|
+
|
|
1058
|
+
```javascript
|
|
1059
|
+
// Wait for conference to initialize
|
|
1060
|
+
window.conference.awaitReady().then(async () => {
|
|
1061
|
+
// Access the map (returns a promise)
|
|
1062
|
+
const map = await window.conference.map.getMap();
|
|
1063
|
+
if (map) {
|
|
1064
|
+
// Add custom map markers
|
|
1065
|
+
L.marker([47.37785, 8.54035]).addTo(map);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
// Access live data
|
|
1069
|
+
const liveData = window.conference.live.getData();
|
|
1070
|
+
|
|
1071
|
+
// Custom program interactions
|
|
1072
|
+
// ...
|
|
1073
|
+
});
|
|
1074
|
+
```
|
|
807
1075
|
|
|
808
|
-
2. Add your Bootstrap variables in front of the `@import 'conference'` line, e.g., currently the primary color is set internally to green (instead of Bootstrap's default blue): `$primary: #074 !default;`
|
|
809
|
-
3. Add any additional CSS styles after it.
|
|
810
1076
|
|
|
811
1077
|
## Development
|
|
812
1078
|
|
|
1079
|
+
### Jekyll Theme Development
|
|
1080
|
+
|
|
813
1081
|
If you want to modify this theme and see its changes on an existing project, simply indicate in your `Gemfile` that you want to use the local copy of the theme by adding a `path` indication after the gem instantiation:
|
|
814
1082
|
|
|
815
1083
|
```ruby
|
|
@@ -818,8 +1086,63 @@ group :jekyll_plugins do
|
|
|
818
1086
|
end
|
|
819
1087
|
```
|
|
820
1088
|
|
|
1089
|
+
### JavaScript & CSS Development
|
|
1090
|
+
|
|
1091
|
+
The theme's JavaScript and CSS are built using [Vite](https://vitejs.dev/). Source files are located in:
|
|
1092
|
+
|
|
1093
|
+
**JavaScript** (`_js/` directory):
|
|
1094
|
+
```
|
|
1095
|
+
_js/
|
|
1096
|
+
├── main.js # Main entry point
|
|
1097
|
+
├── init.js # Initialization module
|
|
1098
|
+
├── core/
|
|
1099
|
+
│ └── conference.js # Core conference object
|
|
1100
|
+
└── modules/
|
|
1101
|
+
├── program.js # Program navigation
|
|
1102
|
+
├── map.js # Map functionality
|
|
1103
|
+
├── modal.js # Modal popups
|
|
1104
|
+
└── live.js # Live streaming
|
|
1105
|
+
```
|
|
1106
|
+
|
|
1107
|
+
**CSS/SCSS** (`_css/` directory):
|
|
1108
|
+
```
|
|
1109
|
+
_css/
|
|
1110
|
+
├── main.scss # Main entry point (with Bootstrap)
|
|
1111
|
+
├── main-only.scss # Alternative entry point (without Bootstrap)
|
|
1112
|
+
├── bootstrap.scss # Adapted Bootstrap Framework
|
|
1113
|
+
├── bootstrap-variables.scss # Placeholder for custom build of Bootstrap Framework
|
|
1114
|
+
└── theme.scss # Conference-specific styles
|
|
1115
|
+
```
|
|
1116
|
+
|
|
1117
|
+
The CSS source imports libraries from npm:
|
|
1118
|
+
- `bootstrap` - Bootstrap framework
|
|
1119
|
+
- `bootstrap-icons` - Bootstrap Icons
|
|
1120
|
+
- `leaflet` and plugins - Map styles
|
|
1121
|
+
|
|
1122
|
+
To modify the theme's source code and rebuild:
|
|
1123
|
+
|
|
1124
|
+
1. Install dependencies:
|
|
1125
|
+
```bash
|
|
1126
|
+
npm install
|
|
1127
|
+
```
|
|
1128
|
+
|
|
1129
|
+
2. Build the bundles:
|
|
1130
|
+
```bash
|
|
1131
|
+
npm run build
|
|
1132
|
+
```
|
|
1133
|
+
This compiles:
|
|
1134
|
+
- `_js/` → `assets/js/conference.bundle.js`
|
|
1135
|
+
- `_css/` → `assets/css/conference.bundle.css` and `assets/css/conference-only.bundle.css`
|
|
1136
|
+
This copies:
|
|
1137
|
+
- `_css/` + any SASS file from the different framework libraries → `_sass`
|
|
1138
|
+
- Webfonts → `assets/webfonts/`
|
|
1139
|
+
|
|
1140
|
+
3. Test your changes locally:
|
|
1141
|
+
```bash
|
|
1142
|
+
bundle exec jekyll serve
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
|
|
821
1146
|
## License
|
|
822
1147
|
|
|
823
1148
|
This project is licensed under the MIT License. You can view [LICENSE.md](LICENSE.md) for more details.
|
|
824
|
-
|
|
825
|
-
This project redistributes other open source tools and libraries. You can view [REDISTRIBUTED.md](REDISTRIBUTED.md) for third party licenses.
|