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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +107 -25
  3. data/_includes/js/conference.js +28 -17
  4. data/_includes/js/init.js +37 -0
  5. data/_includes/js/{bootstrap.js → lib/bootstrap.js} +0 -0
  6. data/_includes/js/{jquery-3.5.1.min.js → lib/jquery-3.5.1.min.js} +0 -0
  7. data/_includes/js/{leaflet-easybutton.js → lib/leaflet-easybutton.js} +0 -0
  8. data/_includes/js/{leaflet-locatecontrol.js → lib/leaflet-locatecontrol.js} +0 -0
  9. data/_includes/js/{leaflet-providers.js → lib/leaflet-providers.js} +0 -0
  10. data/_includes/js/{leaflet.js → lib/leaflet.js} +0 -0
  11. data/_includes/js/{popper.min.js → lib/popper.min.js} +0 -0
  12. data/_includes/js/{syncscroll.js → lib/syncscroll.js} +0 -0
  13. data/_includes/js/live.js +718 -0
  14. data/_includes/js/map.js +38 -0
  15. data/_includes/js/{conference-modal.js → modal.js} +13 -15
  16. data/_includes/js/{conference-program.js → program.js} +10 -17
  17. data/_includes/partials/checks.html +1 -1
  18. data/_includes/partials/footer.html +1 -1
  19. data/_includes/partials/get_enable_map.html +11 -0
  20. data/_includes/partials/get_live_timestamps.html +1 -1
  21. data/_includes/partials/get_page_description.html +23 -0
  22. data/_includes/partials/get_page_title.html +33 -0
  23. data/_includes/partials/get_talk_timestamp.html +2 -2
  24. data/_includes/partials/header.html +7 -4
  25. data/_includes/partials/list_page_meta.html +23 -0
  26. data/_includes/partials/list_speakers.html +11 -5
  27. data/_includes/partials/modal_live.html +3 -2
  28. data/_includes/partials/navbar.html +1 -1
  29. data/_includes/partials/navbar_rooms.html +5 -1
  30. data/_includes/partials/show_live_button.html +2 -2
  31. data/_layouts/config.html +78 -0
  32. data/_layouts/data.html +20 -2
  33. data/_layouts/home.html +1 -1
  34. data/_layouts/location.html +1 -1
  35. data/_layouts/page.html +4 -0
  36. data/_layouts/stream-overview.html +1 -1
  37. data/assets/js/config.json +3 -0
  38. metadata +24 -17
  39. data/_includes/js/conference-live.js +0 -701
  40. data/_includes/js/conference-map.js +0 -45
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4f5a6058ed0096854e4b7d4714298ea9bc253a394b8170d3ae2d280bec3913e
4
- data.tar.gz: 5ed07180716fc59636f3b5a9634fd7d430166796285566751a927ce9f15be913
3
+ metadata.gz: b3463207643540289c9e9bc5f6c7bf57a63d0b1f48f3dc72e4a0dac3f98d2034
4
+ data.tar.gz: 1c475f305b05cea1a9866f025e2d215320b1b20a7c8ce8a79769d3e310732d3e
5
5
  SHA512:
6
- metadata.gz: '08f8a0a6c90e0c23ee563b18200cbbd902385d388373c5b77ad05c6fda440914825b685771907947f7f2165378e2edd13ef7421d75133bf3e6d38f3ea6c75d8b'
7
- data.tar.gz: 7095bab0d1cd826c3f1921d203ff67ae51f69c0d218196a0e45530cc227d2c3bab3e3b10529ffa27e840980fef9f9e6ed7cc5c6c3aa111a43ba2d7363bd54ddc
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---streaming)
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---program)
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---room-overview)
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. It has as only dependency [PyYAML](https://pypi.org/project/PyYAML/):
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 file `_tools/create_entries.py` from this repository
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 PyYAML
154
+ 3. Install the requirements
152
155
 
153
156
  ```bash
154
- pip install pyyaml
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 Import_subsection above). Thus, it allows quick updates of the site's content from [pretalx.com](https://pretalx.com/p/about/) exports.
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 embedded. 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.
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 the functionality, 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
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 if streaming is enabled (`streaming`) with indications
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 a demo mode setting, whereby the JavaScript function cycles through the entire program in five minutes for demonstration purposes (`demo: true`, default: `false`).
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: false
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 `location` layout automatically includes an [OpenStreetMap](https://www.openstreetmap.org/) container to point to your venue. If you want to hide it add the `enable: false` setting (default: `true`) to the `map` property under the `location` property. Otherwise, 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/).
433
- 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).
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
- map:
442
- enable: true
443
- default_zoom: 17
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
- (function() {
459
- let map = window.conference.map;
506
+ (() => {
507
+ const map = window.conference.map;
460
508
 
461
509
  if (typeof map !== 'undefined') {
462
- var main_station = L.marker([47.37785, 8.54035], {
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), and
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 contains a map container (if not disabled, see section _Location Settings_ above) which can be customized. See the section above for further details.
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
 
@@ -1,31 +1,42 @@
1
- // Global app variable
2
- window.conference = {};
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
- // Bootstrap (Style Framework)
5
- {% include js/jquery-3.5.1.min.js %}
6
- {% include js/popper.min.js %}
7
- {% include js/bootstrap.js %}
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/conference-program.js %}
19
+ {% include js/lib/syncscroll.js %}
20
+ {% include js/program.js %}
14
21
 
15
22
  // Leaflet (Map Display)
16
- {% if site.conference.location.hide != true and site.conference.location.map.enable %}
17
- {% include js/leaflet.js %}
18
- {% include js/leaflet-easybutton.js %}
19
- {% include js/leaflet-locatecontrol.js %}
20
- {% include js/leaflet-providers.js %}
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/conference-map.js %}
30
+ {% include js/map.js %}
23
31
  {% endif %}
24
32
 
25
33
  // Modals ("Popups")
26
- {% include js/conference-modal.js %}
34
+ {% include js/modal.js %}
27
35
 
28
36
  // Live and Streaming
29
37
  {% if site.conference.live %}
30
- {% include js/conference-live.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