jekyll-theme-conference 3.2.0 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +107 -25
- data/_includes/js/conference.js +28 -17
- data/_includes/js/init.js +37 -0
- data/_includes/js/{bootstrap.js → lib/bootstrap.js} +0 -0
- data/_includes/js/{jquery-3.5.1.min.js → lib/jquery-3.5.1.min.js} +0 -0
- data/_includes/js/{leaflet-easybutton.js → lib/leaflet-easybutton.js} +0 -0
- data/_includes/js/{leaflet-locatecontrol.js → lib/leaflet-locatecontrol.js} +0 -0
- data/_includes/js/{leaflet-providers.js → lib/leaflet-providers.js} +0 -0
- data/_includes/js/{leaflet.js → lib/leaflet.js} +0 -0
- data/_includes/js/{popper.min.js → lib/popper.min.js} +0 -0
- data/_includes/js/{syncscroll.js → lib/syncscroll.js} +0 -0
- data/_includes/js/live.js +718 -0
- data/_includes/js/map.js +38 -0
- data/_includes/js/{conference-modal.js → modal.js} +13 -15
- data/_includes/js/{conference-program.js → program.js} +10 -17
- data/_includes/partials/checks.html +1 -1
- data/_includes/partials/footer.html +1 -1
- data/_includes/partials/get_enable_map.html +11 -0
- data/_includes/partials/get_live_timestamps.html +1 -1
- data/_includes/partials/get_page_description.html +23 -0
- data/_includes/partials/get_page_title.html +33 -0
- data/_includes/partials/get_talk_timestamp.html +2 -2
- data/_includes/partials/header.html +7 -4
- data/_includes/partials/list_page_meta.html +23 -0
- data/_includes/partials/list_speakers.html +11 -5
- data/_includes/partials/modal_live.html +3 -2
- data/_includes/partials/navbar.html +1 -1
- data/_includes/partials/navbar_rooms.html +5 -1
- data/_includes/partials/show_live_button.html +2 -2
- data/_layouts/config.html +78 -0
- data/_layouts/data.html +20 -2
- data/_layouts/home.html +1 -1
- data/_layouts/location.html +1 -1
- data/_layouts/page.html +4 -0
- data/_layouts/stream-overview.html +1 -1
- data/assets/js/config.json +3 -0
- metadata +24 -17
- data/_includes/js/conference-live.js +0 -701
- data/_includes/js/conference-map.js +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3463207643540289c9e9bc5f6c7bf57a63d0b1f48f3dc72e4a0dac3f98d2034
|
4
|
+
data.tar.gz: 1c475f305b05cea1a9866f025e2d215320b1b20a7c8ce8a79769d3e310732d3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a250438190ceec15cfc5bebf1d73dffa1a07c0f3c5056b39ff180273abdd37dc16c0b8e2a69e16f7493730ac4cb017b86a08c6890933f714fc91010742a15e12
|
7
|
+
data.tar.gz: d1fec1808da818d9d241ecd3dede1253f60f4e4d2fde4b260433b32d57b8e0bc4714c1afa00a0746e7317fadb0de61f323f48ca7443b9d80610d5781bfd635d3
|
data/README.md
CHANGED
@@ -32,24 +32,27 @@ The theme was originally created for the yearly Winterkongress conference of the
|
|
32
32
|
* [Collection URLs](#collection-urls)
|
33
33
|
* [Language](#language)
|
34
34
|
* [Navigation Bar](#navigation-bar)
|
35
|
+
* [Open Graph Link Preview](#open-graph-link-preview)
|
35
36
|
* [Main Landing Page](#main-landing-page)
|
36
37
|
* [Information Boxes](#information-boxes)
|
37
|
-
* [Live Indications & Streaming](#live-indications
|
38
|
+
* [Live Indications & Streaming](#live-indications--streaming)
|
39
|
+
* [Map](#map)
|
38
40
|
* [Talk Settings](#talk-settings)
|
39
41
|
* [Speaker Settings](#speaker-settings)
|
40
42
|
* [Location Settings](#location-settings)
|
41
43
|
* [Program Settings](#program-settings)
|
42
44
|
- [Content](#content)
|
43
|
-
* [Schedule / Program](#schedule
|
45
|
+
* [Schedule / Program](#schedule--program)
|
44
46
|
* [Talks](#talks)
|
45
47
|
* [Speakers](#speakers)
|
46
48
|
* [Rooms](#rooms)
|
47
49
|
* [Links](#links)
|
48
50
|
- [Overview Pages](#overview-pages)
|
49
|
-
* [Location / Room Overview](#location
|
51
|
+
* [Location / Room Overview](#location--room-overview)
|
50
52
|
* [Live Stream Overview](#live-stream-overview)
|
51
53
|
* [Additional Pages](#additional-pages)
|
52
54
|
- [Design](#design)
|
55
|
+
- [Development](#development)
|
53
56
|
- [License](#license)
|
54
57
|
|
55
58
|
|
@@ -137,9 +140,9 @@ In order to be up and running simply use the default content of this repository
|
|
137
140
|
|
138
141
|
### Automatic Import
|
139
142
|
|
140
|
-
There exists a Python file in this repository, `_tools/create_entries.py`, which can be used to import content from a [frab](https://github.com/frab/frab/wiki/Manual#introduction) compatible JSON file (e.g. from [pretalx.com](https://pretalx.com/p/about/)) or a CSV table and generate the different talk, speakers and room files automatically.
|
143
|
+
There exists a Python file in this repository, `_tools/create_entries.py`, which can be used to import content from a [frab](https://github.com/frab/frab/wiki/Manual#introduction) compatible JSON file (e.g. from [pretalx.com](https://pretalx.com/p/about/)) or a CSV table and generate the different talk, speakers and room files automatically.
|
141
144
|
|
142
|
-
1. Copy the
|
145
|
+
1. Copy the files `_tools/create_entries.py` and `_tools/requirements.txt` from this repository
|
143
146
|
|
144
147
|
2. Create a virtual environment and activate it
|
145
148
|
|
@@ -148,10 +151,10 @@ There exists a Python file in this repository, `_tools/create_entries.py`, which
|
|
148
151
|
source venv/bin/activate
|
149
152
|
```
|
150
153
|
|
151
|
-
3. Install
|
154
|
+
3. Install the requirements
|
152
155
|
|
153
156
|
```bash
|
154
|
-
pip install
|
157
|
+
pip install -r _tools/requirements.txt
|
155
158
|
```
|
156
159
|
|
157
160
|
4. Execute the script, e.g. to show the help type
|
@@ -167,7 +170,7 @@ In case you do not want to install the entire Ruby/Jekyll toolchain on your mach
|
|
167
170
|
|
168
171
|
- `build.yml`: automatically builds and minimizes the website upon adding a new tag starting with a `v` (e.g. `v2020.01.01`). It then attaches the generated website as an archive to a release for easy downloading. Requires `purgecss.config.js` to be copied to the project's root too.
|
169
172
|
- `test.yml`: automatically tries to build the website upon a new pull request. It can thus be used as status check before merging.
|
170
|
-
- `schedule.yml`: automatically generates the schedule and content files when a new pull request contains a `schedule.json` file (see the _Automatic
|
173
|
+
- `schedule.yml`: automatically generates the schedule and content files when a new pull request contains a `schedule.json` file (see the _Automatic Import_ subsection above). Thus, it allows quick updates of the site's content from [pretalx.com](https://pretalx.com/p/about/) exports.
|
171
174
|
|
172
175
|
To get started, simply copy the desired workflow file to your repository and adapt it to your needs:
|
173
176
|
|
@@ -281,9 +284,32 @@ conference:
|
|
281
284
|
...
|
282
285
|
logo:
|
283
286
|
name: Magic Organisation
|
287
|
+
img: 'logo.svg' # inside /assets/images/
|
284
288
|
url: 'https://github.com'
|
285
289
|
```
|
286
290
|
|
291
|
+
### Open Graph Link Preview
|
292
|
+
|
293
|
+
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.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards). These tags control how a link is presented when shared via different platform and apps. In order to disable these `<meta>` tags add the `disable: true` setting (default: `false`) to the `link_preview` property.
|
294
|
+
|
295
|
+
In order to generate a meaningful description for each of the 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".
|
296
|
+
|
297
|
+
Optionally, an image which 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:1 and a minimal size of 600x600 pixel (better 1200x1200 pixel) is recommended. SVG image files are not supported. It is activate 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.
|
298
|
+
|
299
|
+
```yaml
|
300
|
+
title: Conference 2020
|
301
|
+
preposition: 'at'
|
302
|
+
|
303
|
+
...
|
304
|
+
|
305
|
+
conference:
|
306
|
+
link_preview:
|
307
|
+
disable: false
|
308
|
+
img:
|
309
|
+
twitter: 'twitter_preview.png' # inside /assets/images/
|
310
|
+
open_graph: 'facebook_preview.png' # inside /assets/images/
|
311
|
+
```
|
312
|
+
|
287
313
|
### Main Landing Page
|
288
314
|
|
289
315
|
The main landing page is shown at the root of the website to greet new visitors. In order 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: main`. The remaining customizations are specified in the `_config.yml` file.
|
@@ -354,27 +380,50 @@ conference:
|
|
354
380
|
|
355
381
|
In order to help users navigating the program during the congress, a _Live_ indication can be shown next to talks which are currently taking place. A small JavaScript functions 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).
|
356
382
|
|
357
|
-
This can be further extended if some of the talks have an associated live stream: Upon clicking one of the live indications a modal will open containing the corresponding live stream
|
383
|
+
This can be further extended if some of the talks have an associated live stream: Upon 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_ > _Room_ section below). Instead of opening the modal an external link can also be used.
|
358
384
|
|
359
|
-
In order to activate
|
385
|
+
In order to activate these functionalities, each day in the `program.yml` file must contain a `date` property (see section _Content_ > _Schedule / Program_ below) and the `live` property has to be set in the configuration file containing
|
360
386
|
|
361
387
|
- how long a pause between two consecutive talks has to be for the live indication to pause (`time_stop`),
|
362
|
-
- optionally
|
388
|
+
- optionally under the `streaming` property:
|
389
|
+
+ if streaming should be enabled (`enable`), and if enabled
|
363
390
|
+ how many minutes the stream goes active before a talk (`time_prepend`),
|
364
391
|
+ how many minutes the stream stays active after a talk (`time_extend`),
|
365
392
|
+ how long a pause between two consecutive talks has to be for the stream to pause (`time_pause`), and
|
366
393
|
+ optionally an external (absolute) link to which the user will be redirected instead of opening the modal (`external`),
|
367
|
-
- optionally
|
394
|
+
- optionally under the `demo` property:
|
395
|
+
+ 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
|
396
|
+
+ how long the demonstration should take (`duration`), and
|
397
|
+
+ how long the pause between two demonstration cycle should be (`pause`).
|
368
398
|
|
369
399
|
```yaml
|
370
400
|
conference:
|
371
401
|
live:
|
372
402
|
time_stop: 240 # in minutes
|
373
403
|
streaming:
|
404
|
+
enable: true
|
374
405
|
time_pause: 60 # in minutes
|
375
406
|
time_prepend: 5 # in minutes
|
376
407
|
time_extend: 5 # in minutes
|
377
|
-
demo:
|
408
|
+
demo:
|
409
|
+
enable: false
|
410
|
+
duration: 300 # in seconds
|
411
|
+
pause: 10 # in seconds
|
412
|
+
```
|
413
|
+
|
414
|
+
### Map
|
415
|
+
|
416
|
+
In order to help users finding your venue, an [OpenStreetMap](https://www.openstreetmap.org/) container displaying a map can be shown on any page. The map's initial position is globally defined and thus the same for all map containers. 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/).
|
417
|
+
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).
|
418
|
+
|
419
|
+
The map can be added to any page by setting `map: true` in its Front Matter or on the location main page by setting `conference.location.map: true` (see _Location Settings_ section below).
|
420
|
+
|
421
|
+
```yaml
|
422
|
+
conference:
|
423
|
+
map:
|
424
|
+
default_zoom: 17
|
425
|
+
home_coord: 47.37808, 8.53935
|
426
|
+
map_provider: "OpenStreetMap.Mapnik"
|
378
427
|
```
|
379
428
|
|
380
429
|
### Talk Settings
|
@@ -429,8 +478,9 @@ In order to hide all rooms add the `hide: true` setting (default: `false`) to th
|
|
429
478
|
|
430
479
|
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.
|
431
480
|
|
432
|
-
The
|
433
|
-
|
481
|
+
The location main page shows a navigation bar listing all the different rooms by name. Due to the quirks of Jekyll, the main page itself cannot be listed by title as defined in its Front Matter. Instead the title of the main landing page for the navigation bar is taken from the language files and defaults to "Directions". In order to change this, you can either change the language files directly (see the _Language_ section above), or you provide an alternative title by setting the `navbar_title` to the desired title under the `location` property.
|
482
|
+
|
483
|
+
The `location` layout can include a map to point to your venue by adding the `map: true` setting (default: `true`) to the `location` property. See the _Map_ section above for more information.
|
434
484
|
|
435
485
|
Example:
|
436
486
|
|
@@ -438,11 +488,9 @@ Example:
|
|
438
488
|
conference:
|
439
489
|
location:
|
440
490
|
hide: false
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
home_coord: 47.37808, 8.53935
|
445
|
-
map_provider: "OpenStreetMap.Mapnik"
|
491
|
+
url: '/location'
|
492
|
+
navbar_title: 'Location'
|
493
|
+
map: true
|
446
494
|
```
|
447
495
|
|
448
496
|
The map is based on the JavaScript Library [Leaflet](https://leafletjs.com/) and can be customized by editing the `assets/js/main.js` file, e.g. adding additional layers with markers, text, or shapes to the map. To start, copy simply the file from this repository and make use of the initialized global variable `window.conference.map` pointing to the Leaflet container.
|
@@ -455,11 +503,11 @@ Example:
|
|
455
503
|
|
456
504
|
{% include js/conference.js %}
|
457
505
|
|
458
|
-
(
|
459
|
-
|
506
|
+
(() => {
|
507
|
+
const map = window.conference.map;
|
460
508
|
|
461
509
|
if (typeof map !== 'undefined') {
|
462
|
-
|
510
|
+
let main_station = L.marker([47.37785, 8.54035], {
|
463
511
|
icon: L.divIcon({
|
464
512
|
className: '',
|
465
513
|
html: '<span class="fas fa-train"></span> Main Station',
|
@@ -550,7 +598,8 @@ Each talk is represented by a file in the `_talks/` directory. It must begin wit
|
|
550
598
|
- the talk's `name` (used as identifier),
|
551
599
|
- one or more existing `speakers` name(s),
|
552
600
|
- optionally one or more `categories` of which one should be a main category as defined in the site's configuration,
|
553
|
-
- optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately and are also included on the talk overview page),
|
601
|
+
- optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately and are also included on the talk overview page),
|
602
|
+
- optionally a list of `live: links` (see the _Links_ subsection below for the available properties per link) which are shown below the live stream for the given talk in form of buttons, and
|
554
603
|
- optionally `hide: true` if the talk's page should not be linked to.
|
555
604
|
|
556
605
|
### Speakers
|
@@ -604,6 +653,29 @@ Example:
|
|
604
653
|
video: https://media.ccc.de/
|
605
654
|
```
|
606
655
|
|
656
|
+
There exists a Python file in this repository, `_tools/import_resources.py`, which can be used to import resources such as slides and other documents from [pretalx.com](https://pretalx.com/p/about/)) via its API. It automatically downloads all files, stores them and updates the links of the talks concerned.
|
657
|
+
|
658
|
+
1. Copy the files `_tools/import_resources.py` and `_tools/requirements.txt` from this repository
|
659
|
+
|
660
|
+
2. Create a virtual environment and activate it
|
661
|
+
|
662
|
+
```bash
|
663
|
+
python -m venv venv
|
664
|
+
source venv/bin/activate
|
665
|
+
```
|
666
|
+
|
667
|
+
3. Install the requirements
|
668
|
+
|
669
|
+
```bash
|
670
|
+
pip install -r _tools/requirements.txt
|
671
|
+
```
|
672
|
+
|
673
|
+
4. Execute the script, e.g. to show the help type
|
674
|
+
|
675
|
+
```bash
|
676
|
+
python _tools/import_resources.py --help
|
677
|
+
```
|
678
|
+
|
607
679
|
|
608
680
|
## Overview Pages
|
609
681
|
|
@@ -623,7 +695,7 @@ If you choose a different location for the overview pages you must:
|
|
623
695
|
|
624
696
|
### Location / Room Overview
|
625
697
|
|
626
|
-
The `location` layout
|
698
|
+
The `location` layout can include a map container (if not disabled, see the _Location Settings_ section above) which can be customized (see the _Map_ section above).
|
627
699
|
|
628
700
|
### Live Stream Overview
|
629
701
|
|
@@ -633,6 +705,7 @@ The `stream-overview` layout contains all active streams on a single page (see t
|
|
633
705
|
|
634
706
|
Additional static pages can easily be added as files and linked to via navigation bar or main landing page (see above on how to).
|
635
707
|
|
708
|
+
Each of these pages can include a map at its end (e.g. to point to your venue) by adding the `map: true` setting to its Front Matter. See the _Map_ section above for more information.
|
636
709
|
|
637
710
|
## Design
|
638
711
|
|
@@ -655,6 +728,15 @@ Custom Bootstrap themes or simple color schemes such as designed with [Bootstrap
|
|
655
728
|
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;`
|
656
729
|
3. Add any additional CSS styles after it.
|
657
730
|
|
731
|
+
## Development
|
732
|
+
|
733
|
+
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:
|
734
|
+
|
735
|
+
```ruby
|
736
|
+
group :jekyll_plugins do
|
737
|
+
gem "jekyll-theme-conference", path: "../[path to your local theme]"
|
738
|
+
end
|
739
|
+
```
|
658
740
|
|
659
741
|
## License
|
660
742
|
|
data/_includes/js/conference.js
CHANGED
@@ -1,31 +1,42 @@
|
|
1
|
-
//
|
2
|
-
|
1
|
+
// Libraries
|
2
|
+
// Bootstrap (Style Framework)
|
3
|
+
{% include js/lib/jquery-3.5.1.min.js %}
|
4
|
+
{% include js/lib/popper.min.js %}
|
5
|
+
{% include js/lib/bootstrap.js %}
|
3
6
|
|
4
|
-
//
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
// FontAwesome (Icons)
|
8
|
+
// Imported via CSS and webfonts
|
9
|
+
|
10
|
+
// Conference
|
11
|
+
window.conference = {
|
12
|
+
config: {
|
13
|
+
baseurl: '{{ site.baseurl }}'
|
14
|
+
}
|
15
|
+
};
|
8
16
|
|
9
|
-
// FontAwesome (Icons)
|
10
|
-
// Imported via CSS and webfonts
|
11
17
|
|
12
18
|
// Program
|
13
|
-
{% include js/
|
19
|
+
{% include js/lib/syncscroll.js %}
|
20
|
+
{% include js/program.js %}
|
14
21
|
|
15
22
|
// Leaflet (Map Display)
|
16
|
-
{%
|
17
|
-
|
18
|
-
{% include js/leaflet
|
19
|
-
{% include js/leaflet-
|
20
|
-
{% include js/leaflet-
|
23
|
+
{% include partials/get_enable_map.html %}
|
24
|
+
{% if enable_map %}
|
25
|
+
{% include js/lib/leaflet.js %}
|
26
|
+
{% include js/lib/leaflet-easybutton.js %}
|
27
|
+
{% include js/lib/leaflet-locatecontrol.js %}
|
28
|
+
{% include js/lib/leaflet-providers.js %}
|
21
29
|
|
22
|
-
{% include js/
|
30
|
+
{% include js/map.js %}
|
23
31
|
{% endif %}
|
24
32
|
|
25
33
|
// Modals ("Popups")
|
26
|
-
{% include js/
|
34
|
+
{% include js/modal.js %}
|
27
35
|
|
28
36
|
// Live and Streaming
|
29
37
|
{% if site.conference.live %}
|
30
|
-
{% include js/
|
38
|
+
{% include js/live.js %}
|
31
39
|
{% endif %}
|
40
|
+
|
41
|
+
// Load configuration and start initialization
|
42
|
+
{% include js/init.js %}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
const init = () => {
|
2
|
+
// Load configuration
|
3
|
+
const request = new Request(window.conference.config.baseurl + '/assets/js/config.json');
|
4
|
+
|
5
|
+
fetch(request)
|
6
|
+
.then(response =>
|
7
|
+
response.json()
|
8
|
+
)
|
9
|
+
.then(config => {
|
10
|
+
// Add configuration to global scope
|
11
|
+
window.conference.config = Object.assign(window.conference.config, config);
|
12
|
+
|
13
|
+
// Execute initialization functions
|
14
|
+
for (const [name, module] of Object.entries(window.conference)) {
|
15
|
+
if (name == 'config') {
|
16
|
+
continue;
|
17
|
+
}
|
18
|
+
|
19
|
+
let c;
|
20
|
+
if (name in config) {
|
21
|
+
c = config[name];
|
22
|
+
}
|
23
|
+
let l;
|
24
|
+
if (name in config.lang) {
|
25
|
+
l = config.lang[name];
|
26
|
+
}
|
27
|
+
|
28
|
+
module.init(c, l)
|
29
|
+
}
|
30
|
+
|
31
|
+
})
|
32
|
+
.catch((error) => {
|
33
|
+
console.log(error);
|
34
|
+
});
|
35
|
+
};
|
36
|
+
|
37
|
+
init();
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|