jekyll-theme-conference 3.1.4 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d71db73a3994c514ebc0e7e8bd0c96905deb68f38dce861dd4bc21ba56b730ae
4
- data.tar.gz: a4e171604b41298e1ecb60ffe429a4b2ae2bb9ff961d01ea0be35230ba635903
3
+ metadata.gz: 50470940d27a0744cdf32312e829e73af0c6375241575e6eb074695edfee7028
4
+ data.tar.gz: 1444781b0f41ffc7d267fe324b9cfabb5afd709ee27c24d95bd6b34d02d57060
5
5
  SHA512:
6
- metadata.gz: 90add66ec86e0c30982031847189e4874a48cf7e0f5982350026fa8935464ff1465351af4a77cfb5e6e0d9ff8e9de1f5224e69b25efe93557008017a18a2fb31
7
- data.tar.gz: 33f11b1a586ec07e1155b25bbab2461541a97c77a813d5ee72e60252e547392eb6c309282d4edfbb53b37b59d910b7213e27242d254e116fd27ee0c07546e666
6
+ metadata.gz: 872ad7d006fbcb1c552dc863982d037e3eb9ba2ca8e8aab9d785d9e55ba0651c19c367ce03a0280317947e5ad2352b40eefc66a47e6bb5e3cbc1a3c36d298d91
7
+ data.tar.gz: 8000b8d73b08f71554efad482cd8cf5518db22b01fc3828c985b669e5b013819785f4c41369ef5007ea375bf49f0b5b2195864e79d88c9d55bb089c9b5149388
data/README.md CHANGED
@@ -32,9 +32,11 @@ 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
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)
@@ -50,6 +52,7 @@ The theme was originally created for the yearly Winterkongress conference of the
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.
@@ -377,6 +403,21 @@ conference:
377
403
  demo: false
378
404
  ```
379
405
 
406
+ ### Map
407
+
408
+ 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/).
409
+ 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).
410
+
411
+ 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).
412
+
413
+ ```yaml
414
+ conference:
415
+ map:
416
+ default_zoom: 17
417
+ home_coord: 47.37808, 8.53935
418
+ map_provider: "OpenStreetMap.Mapnik"
419
+ ```
420
+
380
421
  ### Talk Settings
381
422
 
382
423
  Each talk can have one or multiple categories associated via FrontMatter (see the _Individual Pages: Talks_ section below for more details). Some of these categories can be elevated to so called main categories". These are used to color group the talks across the entire website, particularly in the program. In order to do so add the `main_categories` property under the `talks` property. It consists of a list of all main categories. Each main category consists of:
@@ -429,8 +470,9 @@ In order to hide all rooms add the `hide: true` setting (default: `false`) to th
429
470
 
430
471
  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
472
 
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).
473
+ 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.
474
+
475
+ 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
476
 
435
477
  Example:
436
478
 
@@ -438,11 +480,9 @@ Example:
438
480
  conference:
439
481
  location:
440
482
  hide: false
441
- map:
442
- enable: true
443
- default_zoom: 17
444
- home_coord: 47.37808, 8.53935
445
- map_provider: "OpenStreetMap.Mapnik"
483
+ url: '/location'
484
+ navbar_title: 'Location'
485
+ map: true
446
486
  ```
447
487
 
448
488
  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.
@@ -514,7 +554,7 @@ The order of the rooms in the list defines the order of the rooms as shown in th
514
554
  Each talk consists of
515
555
 
516
556
  - a `name` (must correspond to one of the talk identifier),
517
- - a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me) formated), and
557
+ - a starting time `time_start` given as `H:M` ([`strftime`](http://www.strfti.me) formated) or `H:M +∆` whereby ∆ is the day offset in relation to the date given for the given day, and
518
558
  - an end time `time_end`.
519
559
 
520
560
  The list of talks should (manually) be ordered by time, i.e. the first occurring talk should be listed first.
@@ -563,6 +603,8 @@ Each speaker is represented by a file in the `_speakers/` directory. It must beg
563
603
  - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately), and
564
604
  - optionally `hide: true` if the speaker's page should not be linked to.
565
605
 
606
+ If the speaker's name consists only out of one word, populate the `last_name` property and leave the `first_name` property empty. The last name is generally used for sorting the speakers.
607
+
566
608
  ### Rooms
567
609
 
568
610
  Each room is represented by a file in the `_rooms/` directory. It must begin with valid [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) containing
@@ -602,6 +644,29 @@ Example:
602
644
  video: https://media.ccc.de/
603
645
  ```
604
646
 
647
+ 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.
648
+
649
+ 1. Copy the files `_tools/import_resources.py` and `_tools/requirements.txt` from this repository
650
+
651
+ 2. Create a virtual environment and activate it
652
+
653
+ ```bash
654
+ python -m venv venv
655
+ source venv/bin/activate
656
+ ```
657
+
658
+ 3. Install the requirements
659
+
660
+ ```bash
661
+ pip install -r _tools/requirements.txt
662
+ ```
663
+
664
+ 4. Execute the script, e.g. to show the help type
665
+
666
+ ```bash
667
+ python _tools/import_resources.py --help
668
+ ```
669
+
605
670
 
606
671
  ## Overview Pages
607
672
 
@@ -621,7 +686,7 @@ If you choose a different location for the overview pages you must:
621
686
 
622
687
  ### Location / Room Overview
623
688
 
624
- 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.
689
+ 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).
625
690
 
626
691
  ### Live Stream Overview
627
692
 
@@ -631,6 +696,7 @@ The `stream-overview` layout contains all active streams on a single page (see t
631
696
 
632
697
  Additional static pages can easily be added as files and linked to via navigation bar or main landing page (see above on how to).
633
698
 
699
+ 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.
634
700
 
635
701
  ## Design
636
702
 
@@ -653,6 +719,15 @@ Custom Bootstrap themes or simple color schemes such as designed with [Bootstrap
653
719
  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;`
654
720
  3. Add any additional CSS styles after it.
655
721
 
722
+ ## Development
723
+
724
+ 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:
725
+
726
+ ```ruby
727
+ group :jekyll_plugins do
728
+ gem "jekyll-theme-conference", path: "../[path to your local theme]"
729
+ end
730
+ ```
656
731
 
657
732
  ## License
658
733
 
@@ -2,9 +2,9 @@ window.conference.mapConfig = (function() {
2
2
 
3
3
  let map;
4
4
 
5
- let mapProvider = "{{ site.conference.location.map.map_provider | default: 'OpenStreetMap.Mapnik' }}";
6
- let homeCoord = [{{ site.conference.location.map.home_coord }}];
7
- let zoomLevel = {{ site.conference.location.map.default_zoom | default: 17 }};
5
+ let mapProvider = "{{ site.conference.map.map_provider | default: 'OpenStreetMap.Mapnik' }}";
6
+ let homeCoord = [{{ site.conference.map.home_coord }}];
7
+ let zoomLevel = {{ site.conference.map.default_zoom | default: 17 }};
8
8
 
9
9
  let setup = function (elId) {
10
10
  map = L.map(elId).setView(homeCoord, zoomLevel);
@@ -13,7 +13,8 @@ window.conference = {};
13
13
  {% include js/conference-program.js %}
14
14
 
15
15
  // Leaflet (Map Display)
16
- {% if site.conference.location.hide != true and site.conference.location.map.enable %}
16
+ {% include partials/get_enable_map.html %}
17
+ {% if enable_map %}
17
18
  {% include js/leaflet.js %}
18
19
  {% include js/leaflet-easybutton.js %}
19
20
  {% include js/leaflet-locatecontrol.js %}
@@ -4,7 +4,7 @@
4
4
  {%- unless site.conference.lang == "en" -%}
5
5
  {%- assign errors = errors | push : "The internationalization file containing different strings for this template seems to be missing. Have you copied the `_data/lang.yml` file from the [theme's repository](https://github.com/DigitaleGesellschaft/jekyll-theme-conference/blob/master/_data/lang.yml) to you local website folder?" -%}
6
6
  {%- endunless -%}
7
- {%- elsif site.data.lang.version < 4 -%}
7
+ {%- elsif site.data.lang.version != 7 -%}
8
8
  {%- assign errors = errors | push : "The internationalization file in `_data/lang.yml` seems to be outdated and does not correspond to the current version of the theme. Grab the current version from the [theme's repository](https://github.com/DigitaleGesellschaft/jekyll-theme-conference/blob/master/_data/lang.yml)." -%}
9
9
  {%- endunless -%}
10
10
  {%- unless site.conference.lang == "en" or site.conference.lang == "de" or site.conference.lang == "fr" or site.conference.lang == "pt" -%}
@@ -2,8 +2,9 @@
2
2
  {%- assign t = r.talks | first -%}
3
3
  {%- include partials/get_talk_time.html -%}
4
4
 
5
- {%- if forloop.index == 1 or talk_start_hour < day_start_hour or talk_start_hour == day_start_hour and talk_start_min < day_start_min-%}
5
+ {%- if forloop.index == 1 or talk_start_day < day_start_day or talk_start_day == day_start_day and talk_start_hour < day_start_hour or talk_start_hour == day_start_hour and talk_start_min < day_start_min-%}
6
6
  {%- assign day_start_talk = t -%}
7
+ {%- assign day_start_day = talk_start_day -%}
7
8
  {%- assign day_start_hour = talk_start_hour -%}
8
9
  {%- assign day_start_min = talk_start_min -%}
9
10
  {%- endif -%}
@@ -11,8 +12,9 @@
11
12
  {%- assign t = r.talks | last -%}
12
13
  {%- include partials/get_talk_time.html -%}
13
14
 
14
- {%- if forloop.index == 1 or talk_end_hour > day_end_hour or talk_end_hour == day_end_hour and talk_end_min > day_end_min-%}
15
+ {%- if forloop.index == 1 or talk_end_day > day_end_day or talk_end_day == day_end_day and talk_end_hour > day_end_hour or talk_end_hour == day_end_hour and talk_end_min > day_end_min-%}
15
16
  {%- assign day_end_talk = t -%}
17
+ {%- assign day_end_day = talk_end_day -%}
16
18
  {%- assign day_end_hour = talk_end_hour -%}
17
19
  {%- assign day_end_min = talk_end_min -%}
18
20
  {%- endif -%}
@@ -0,0 +1,11 @@
1
+ {%- if site.conference.location.map -%}
2
+ {%- assign enable_map = true -%}
3
+ {%- else -%}
4
+ {%- assign enable_map = false -%}
5
+ {%- for page in site.pages -%}
6
+ {%- if page.map -%}
7
+ {%- assign enable_map = true -%}
8
+ {%- break -%}
9
+ {%- endif -%}
10
+ {%- endfor -%}
11
+ {%- endif -%}
@@ -0,0 +1,23 @@
1
+ {%- unless site.preposition == empty -%}
2
+ {%- assign preposition = site.preposition -%}
3
+ {%- else -%}
4
+ {%- assign preposition = '-' -%}
5
+ {%- endunless -%}
6
+
7
+ {%- capture page_description -%}
8
+ {%- if page.layout == 'talk' -%}
9
+ {{ site.data.lang[site.conference.lang].talk.title | default: 'Talk' }} {{ site.data.lang[site.conference.lang].pronoun.by | default: 'by'}} {% include partials/list_speakers.html text_only=true %} {{ preposition }} {{ site.title }}
10
+ {%- elsif page.layout == 'speaker' -%}
11
+ {{ site.data.lang[site.conference.lang].speaker.title | default: 'Speaker' }} {{ preposition }} {{ site.title }}
12
+ {%- elsif site.description -%}
13
+ {{ site.description }}
14
+ {%- endif -%}
15
+ {%- endcapture -%}
16
+
17
+ {%- if page_description.empty and include.default -%}
18
+ {%- assign page_description = include.default -%}
19
+ {%- endif -%}
20
+
21
+ {%- if include.replace_quotes -%}
22
+ {%- assign page_description = page_description | replace: '"', "'" -%}
23
+ {%- endif -%}
@@ -0,0 +1,33 @@
1
+ {%- capture page_title -%}
2
+ {%- if page.layout == 'room' -%}
3
+ {{- page.name -}}
4
+ {%- elsif page.layout == 'speaker' -%}
5
+ {{- page.first_name }} {{ page.last_name -}}
6
+ {%- elsif page.layout == 'talk' -%}
7
+ {{- page.name -}}
8
+
9
+ {%- elsif page.title -%}
10
+ {{- page.title -}}
11
+
12
+ {%- else -%}
13
+ {%- if page.layout == 'location' -%}
14
+ {{- site.data.lang[site.conference.lang].location.title | default: "Location" -}}
15
+ {%- elsif page.layout == 'program' -%}
16
+ {{- site.data.lang[site.conference.lang].program.title | default: "Program" -}}
17
+ {%- elsif page.layout == 'speaker-overview' -%}
18
+ {{- site.data.lang[site.conference.lang].speaker.overview | default: "Speakers" -}}
19
+ {%- elsif page.layout == 'stream-overview' -%}
20
+ {{ site.data.lang[site.conference.lang].live.stream | default: "Live Streams" }}
21
+ {%- elsif page.layout == 'talk-overview' -%}
22
+ {{- site.data.lang[site.conference.lang].talk.overview | default: "Talks" -}}
23
+ {%- endif -%}
24
+ {%- endif -%}
25
+ {%- endcapture -%}
26
+
27
+ {%- if page_title == empty and include.default -%}
28
+ {%- assign page_title = include.default -%}
29
+ {%- endif -%}
30
+
31
+ {%- if include.replace_quotes -%}
32
+ {%- assign page_title = page_title | replace: '"', "'" -%}
33
+ {%- endif -%}
@@ -1,9 +1,24 @@
1
1
  {%- assign talk_start = t.time_start -%}
2
2
  {%- assign talk_end = t.time_end -%}
3
3
 
4
- {%- assign talk_start_hour = talk_start | split: ':' | first -%}
4
+ {%- if talk_start contains ' +' -%}
5
+ {%- assign talk_start_day = talk_start | split: ' +' | last | plus: 0 -%}
6
+ {%- assign talk_start = talk_start | split: ' +' | first -%}
7
+ {%- else -%}
8
+ {%- assign talk_start_day = 0 -%}
9
+ {%- endif -%}
10
+ {%- if talk_end contains ' +' -%}
11
+ {%- assign talk_end_day = talk_end | split: ' +' | last | plus: 0 -%}
12
+ {%- assign talk_end = talk_end | split: ' +' | first -%}
13
+ {%- else -%}
14
+ {%- assign talk_end_day = 0 -%}
15
+ {%- endif -%}
16
+
17
+ {%- assign talk_start_hour = talk_start | split: ':' | first | plus: 0 -%}
5
18
  {%- assign talk_start_min = talk_start | split: ':' | last | divided_by: site.conference.program.time_steps | floor | times: site.conference.program.time_steps -%}
6
- {%- assign talk_end_hour = talk_end | split: ':' | first -%}
19
+ {%- assign talk_end_hour = talk_end | split: ':' | first | plus: 0 -%}
7
20
  {%- assign talk_end_min = talk_end | split: ':' | last | divided_by: site.conference.program.time_steps | ceil | times: site.conference.program.time_steps -%}
8
21
 
9
- {%- assign talk_duration_min = talk_end_hour | minus: talk_start_hour | times: 60 | minus: talk_start_min | plus: talk_end_min -%}
22
+ {%- assign talk_start_hour_24h = talk_start_day | times: 24 | plus: talk_start_hour -%}
23
+ {%- assign talk_end_hour_24h = talk_end_day | times: 24 | plus: talk_end_hour -%}
24
+ {%- assign talk_duration_min = talk_end_hour_24h | minus: talk_start_hour_24h | times: 60 | minus: talk_start_min | plus: talk_end_min -%}
@@ -1,4 +1,9 @@
1
- {%- assign datetime_start = d.date | append: " " | append: t.time_start -%}
2
- {%- assign timestamp_start = datetime_start | date: "%s" -%}
3
- {%- assign datetime_end = d.date | append: " " | append: t.time_end -%}
4
- {%- assign timestamp_end = datetime_end | date: "%s" -%}
1
+ {%- include partials/get_talk_time.html -%}
2
+
3
+ {%- assign datetime_start = d.date | append: " " | append: time_start -%}
4
+ {%- assign add_days_start = talk_start_day | times: 24 | times: 60 | times: 60 -%}
5
+ {%- assign timestamp_start = datetime_start | date: "%s" | plus: add_days_start | date: "%s" -%}
6
+
7
+ {%- assign datetime_end = d.date | append: " " | append: time_end -%}
8
+ {%- assign add_days_end = talk_end_day | times: 24 | times: 60 | times: 60 -%}
9
+ {%- assign timestamp_end = datetime_end | date: "%s" | plus: add_days_end | date: "%s" -%}
@@ -5,16 +5,19 @@
5
5
  <meta charset="utf-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
 
8
+ {% include partials/get_page_title.html -%}
8
9
  <title>
9
- {% unless page.name contains '.' %}{{ page.name }} - {% else %}{% if page.title %}{{ page.title }} - {% endif %}{% endunless %}{{ site.title }}
10
+ {{- page_title -}}
11
+ {%- unless page_title == empty %} - {% endunless -%}
12
+ {{- site.title -}}
10
13
  </title>
11
- <meta name="description" content="{{ site.description }}" />
14
+ {% include partials/list_page_meta.html %}
12
15
 
13
16
  <link rel="stylesheet" href="{{ site.baseurl }}/assets/css/main.css?t={{ site.time | date: "%s" }}" />
14
17
 
15
18
  <link rel="preload" as="font" href="{{ site.baseurl }}/assets/webfonts/fa-regular-400.woff2" type="font/woff2" crossorigin="anonymous" />
16
19
  <link rel="preload" as="font" href="{{ site.baseurl }}/assets/webfonts/fa-solid-900.woff2" type="font/woff2" crossorigin="anonymous" />
17
- {% if site.conference.live -%}
20
+ {%- if site.conference.live %}
18
21
  <link rel="prefetch" as="image" href="{{ site.baseurl }}/assets/icons/live.svg" type="image/svg+xml" crossorigin="anonymous" />
19
22
  <link rel="prefetch" as="fetch" href="{{ site.baseurl }}/assets/js/data.json" type="application/json" crossorigin="anonymous" />
20
23
  {%- endif %}
@@ -0,0 +1,23 @@
1
+ {% unless site.conference.link_preview.disable -%}
2
+ {%- include partials/get_page_title.html default=site.title replace_quotes=true -%}
3
+ {%- include partials/get_page_description.html default=site.title replace_quotes=true -%}
4
+
5
+ <meta name="description" content="{{ page_description }}" />
6
+
7
+ <meta name="twitter:card" content="summary" />
8
+ {%- if site.conference.link_preview.img and site.conference.link_preview.img.twitter %}
9
+ <meta name="twitter:image" content="{{ site.conference.link_preview.img.twitter | prepend: '/assets/images/' | prepend: site.baseurl | prepend: site.url }}" />
10
+ {%- endif %}
11
+ <meta name="twitter:title" content="{{ page_title }}" />
12
+ <meta name="twitter:description" content="{{ page_description }}" />
13
+
14
+ <meta property="og:site_name" content="{{ site.title }}" />
15
+ {%- if site.conference.link_preview.img and site.conference.link_preview.img.open_graph %}
16
+ <meta property="og:image" content="{{ site.conference.link_preview.img.open_graph | prepend: '/assets/images/' | prepend: site.baseurl | prepend: site.url }}" />
17
+ {%- endif %}
18
+ <meta property="og:url" content="{{ page.url | prepend: site.baseurl | prepend: site.url }}" />
19
+ <meta property="og:title" content="{{ page_title }}" />
20
+ <meta property="og:description" content="{{ page_description }}" />
21
+ <meta property="og:type" content="website" />
22
+
23
+ {%- endunless %}
@@ -1,4 +1,4 @@
1
- {%- for speaker_name in talk.speakers -%}
1
+ {% for speaker_name in talk.speakers -%}
2
2
  {%- assign speaker = site.speakers | where: 'name', speaker_name | first -%}
3
3
  {%- if site.conference.speakers.show_firstname -%}
4
4
  {%- assign speaker_short = speaker.first_name | append: ' ' | append: speaker.last_name -%}
@@ -6,11 +6,17 @@
6
6
  {%- assign speaker_short = speaker.first_name | slice: 0 | append : '. ' | append: speaker.last_name -%}
7
7
  {%- endif -%}
8
8
 
9
- {%- if speaker.hide -%}
10
- {{ speaker_short }}
9
+ {%- if speaker.hide or include.text_only -%}
10
+ {{- speaker_short -}}
11
11
  {%- else -%}
12
- <a class="text-reset" href="{{ speaker.url | prepend: site.baseurl }}">{{ speaker_short }}</a>
12
+ <a class="text-reset" href="{{ speaker.url | prepend: site.baseurl }}">
13
+ {{- speaker_short -}}
14
+ </a>
13
15
  {%- endif -%}
14
- {%- if forloop.last != true %}, {% endif -%}
16
+
17
+ {%- unless forloop.last %}
18
+ {%- assign forloop_index_before_last = talk.speakers.size | minus: 1 -%}
19
+ {% if forloop.index == forloop_index_before_last and include.text_only %} {{ site.data.lang[site.conference.lang].pronoun.and | default: 'and' }} {% else %}, {% endif -%}
20
+ {%- endunless -%}
15
21
 
16
22
  {%- endfor -%}
@@ -1,7 +1,11 @@
1
1
  <ul class="nav nav-pills d-print-none mb-3">
2
2
  <li class="nav-item">
3
3
  <a class="nav-link {% if page.name contains 'index' %}active{% endif %}" href="{{ site.conference.location.url | prepend: site.baseurl }}">
4
- {{ site.data.lang[site.conference.lang].location.directions | default: "Directions" }}
4
+ {% if site.conference.location.navbar_title -%}
5
+ {{- site.conference.location.navbar_title -}}
6
+ {%- else -%}
7
+ {{- site.data.lang[site.conference.lang].location.directions | default: "Directions" -}}
8
+ {%- endif %}
5
9
  </a>
6
10
  </li>
7
11
  {%- for room in site.rooms -%}
@@ -18,7 +18,7 @@
18
18
 
19
19
  {{ content }}
20
20
 
21
- {% if site.conference.location.map.enable %}
21
+ {% if site.conference.location.map %}
22
22
  <div id="map" class="mt-4 mb-3"></div>
23
23
  {% endif %}
24
24
 
data/_layouts/page.html CHANGED
@@ -6,4 +6,8 @@
6
6
 
7
7
  {{ content }}
8
8
 
9
+ {% if page.map %}
10
+ <div id="map" class="mt-4 mb-3"></div>
11
+ {% endif %}
12
+
9
13
  {% include partials/footer.html %}
@@ -61,6 +61,10 @@
61
61
  <tbody>
62
62
  {%- include partials/get_day_time.html -%}
63
63
 
64
+ {%- if day_end_day > day_start_day -%}
65
+ {%- assign day_end_hour = day_end_day | minus: day_start_day | times: 24 | plus: day_end_hour -%}
66
+ {%- endif -%}
67
+
64
68
  {%- assign day_duration_min = day_end_hour | minus: day_start_hour | times: 60 | minus: day_start_min | plus: day_end_min -%}
65
69
  {%- assign nbr_steps = day_duration_min | divided_by: site.conference.program.time_steps -%}
66
70
 
@@ -74,7 +78,12 @@
74
78
  {%- assign z-index-max = 999 -%}
75
79
 
76
80
  {%- for i in (1..nbr_steps) -%}
77
- {%- assign current_hour = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | divided_by: 60 | floor | plus: day_start_hour | modulo: 24 -%}
81
+ {%- assign current_day = 0 -%}
82
+ {%- assign current_hour = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | divided_by: 60 | floor | plus: day_start_hour -%}
83
+ {%- if current_hour >= 24 -%}
84
+ {%- assign current_day = current_hour | divided_by: 24 | floor -%}
85
+ {%- assign current_hour = current_hour | modulo: 24 -%}
86
+ {%- endif -%}
78
87
  {%- assign current_min = i | minus: 1 | times: site.conference.program.time_steps | plus: day_start_min | modulo: 60 -%}
79
88
  {%- if current_min < 10 -%}
80
89
  {%- assign current_time = current_hour | append: ':0' | append: current_min -%}
@@ -106,9 +115,9 @@
106
115
 
107
116
  {%- include partials/get_talk_time.html -%}
108
117
 
109
- {%- assign d_start_hour = current_hour | minus: talk_start_hour -%}
118
+ {%- assign d_start_hour = current_day | minus: talk_start_day | times: 24 | plus: current_hour | minus: talk_start_hour -%}
110
119
  {%- assign d_start_min = current_min | minus: talk_start_min -%}
111
- {%- assign d_end_hour = current_hour | minus: talk_end_hour -%}
120
+ {%- assign d_end_hour = current_day | minus: talk_end_day | times: 24 | plus: current_hour | minus: talk_end_hour -%}
112
121
  {%- assign d_end_min = current_min | minus: talk_end_min -%}
113
122
 
114
123
  {%- assign has_started = false -%}
@@ -127,7 +136,7 @@
127
136
  {%- assign has_ended = true -%}
128
137
  {%- endif -%}
129
138
 
130
- {%- if has_started and has_ended == false -%}
139
+ {%- if has_started == true and has_ended == false -%}
131
140
  {%- assign active_talk = true -%}
132
141
  {%- endif -%}
133
142
 
@@ -156,7 +165,7 @@
156
165
 
157
166
  {%- endfor %}
158
167
 
159
- {%- unless active_talk %}
168
+ {%- unless active_talk == true %}
160
169
  <td class="p-0"></td>
161
170
  {%- endunless -%}
162
171
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-conference
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.4
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorenz Schmid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-18 00:00:00.000000000 Z
11
+ date: 2022-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.4
33
+ version: 2.2.32
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.1.4
40
+ version: 2.2.32
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -78,16 +78,20 @@ files:
78
78
  - _includes/partials/footer.html
79
79
  - _includes/partials/get_day_hash.html
80
80
  - _includes/partials/get_day_time.html
81
+ - _includes/partials/get_enable_map.html
81
82
  - _includes/partials/get_link.html
82
83
  - _includes/partials/get_link_types.html
83
84
  - _includes/partials/get_live_timestamps.html
84
85
  - _includes/partials/get_main_category.html
86
+ - _includes/partials/get_page_description.html
87
+ - _includes/partials/get_page_title.html
85
88
  - _includes/partials/get_talk_time.html
86
89
  - _includes/partials/get_talk_timestamp.html
87
90
  - _includes/partials/get_time_pronoun.html
88
91
  - _includes/partials/header.html
89
92
  - _includes/partials/info_bar.html
90
93
  - _includes/partials/list_categories.html
94
+ - _includes/partials/list_page_meta.html
91
95
  - _includes/partials/list_speakers.html
92
96
  - _includes/partials/list_sub_categories.html
93
97
  - _includes/partials/modal_link.html
@@ -279,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
283
  - !ruby/object:Gem::Version
280
284
  version: '0'
281
285
  requirements: []
282
- rubygems_version: 3.2.3
286
+ rubygems_version: 3.2.32
283
287
  signing_key:
284
288
  specification_version: 4
285
289
  summary: Jekyll template for a conference website containing program, speaker, talks