devops4lib-jekyll-theme-conference 0.0.1
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 +7 -0
- data/LICENSE.md +9 -0
- data/README.md +781 -0
- data/_includes/js/conference.js +55 -0
- data/_includes/js/init.js +39 -0
- data/_includes/js/lib/a_popper.min.js +4 -0
- data/_includes/js/lib/bootstrap.js +6 -0
- data/_includes/js/lib/jquery-3.5.1.min.js +2 -0
- data/_includes/js/lib/leaflet-easybutton.js +376 -0
- data/_includes/js/lib/leaflet-locatecontrol.js +4 -0
- data/_includes/js/lib/leaflet-providers.js +877 -0
- data/_includes/js/lib/leaflet.js +5 -0
- data/_includes/js/lib/syncscroll.js +140 -0
- data/_includes/js/live.js +779 -0
- data/_includes/js/map.js +43 -0
- data/_includes/js/modal.js +78 -0
- data/_includes/js/program.js +41 -0
- data/_includes/partials/checks.html +69 -0
- data/_includes/partials/footer.html +18 -0
- data/_includes/partials/get_day_hash.html +20 -0
- data/_includes/partials/get_day_time.html +21 -0
- data/_includes/partials/get_enable_map.html +11 -0
- data/_includes/partials/get_link.html +85 -0
- data/_includes/partials/get_link_types.html +15 -0
- data/_includes/partials/get_live_timestamps.html +49 -0
- data/_includes/partials/get_main_category.html +9 -0
- data/_includes/partials/get_page_description.html +23 -0
- data/_includes/partials/get_page_title.html +33 -0
- data/_includes/partials/get_room_live_href.html +8 -0
- data/_includes/partials/get_talk_time.html +24 -0
- data/_includes/partials/get_talk_timestamp.html +15 -0
- data/_includes/partials/get_time_pronoun.html +6 -0
- data/_includes/partials/header.html +67 -0
- data/_includes/partials/info_bar.html +38 -0
- data/_includes/partials/list_categories.html +4 -0
- data/_includes/partials/list_page_meta.html +23 -0
- data/_includes/partials/list_speakers.html +22 -0
- data/_includes/partials/list_sub_categories.html +8 -0
- data/_includes/partials/modal_link.html +21 -0
- data/_includes/partials/modal_live.html +49 -0
- data/_includes/partials/navbar.html +97 -0
- data/_includes/partials/navbar_rooms.html +36 -0
- data/_includes/partials/show_live_button.html +21 -0
- data/_includes/partials/show_room.html +5 -0
- data/_includes/partials/show_talk.html +5 -0
- data/_includes/partials/show_talk_duration.html +3 -0
- data/_includes/partials/show_talk_time.html +17 -0
- data/_layouts/config.html +78 -0
- data/_layouts/data.html +126 -0
- data/_layouts/default.html +5 -0
- data/_layouts/home.html +87 -0
- data/_layouts/location.html +25 -0
- data/_layouts/page.html +13 -0
- data/_layouts/program.html +201 -0
- data/_layouts/room.html +70 -0
- data/_layouts/speaker-overview.html +47 -0
- data/_layouts/speaker.html +111 -0
- data/_layouts/stream-overview.html +43 -0
- data/_layouts/talk-overview.html +112 -0
- data/_layouts/talk.html +123 -0
- data/_sass/bootstrap/_alert.scss +52 -0
- data/_sass/bootstrap/_badge.scss +54 -0
- data/_sass/bootstrap/_breadcrumb.scss +44 -0
- data/_sass/bootstrap/_button-group.scss +163 -0
- data/_sass/bootstrap/_buttons.scss +142 -0
- data/_sass/bootstrap/_card.scss +286 -0
- data/_sass/bootstrap/_carousel.scss +197 -0
- data/_sass/bootstrap/_close.scss +40 -0
- data/_sass/bootstrap/_code.scss +48 -0
- data/_sass/bootstrap/_custom-forms.scss +524 -0
- data/_sass/bootstrap/_dropdown.scss +192 -0
- data/_sass/bootstrap/_forms.scss +347 -0
- data/_sass/bootstrap/_functions.scss +144 -0
- data/_sass/bootstrap/_grid.scss +73 -0
- data/_sass/bootstrap/_images.scss +42 -0
- data/_sass/bootstrap/_input-group.scss +192 -0
- data/_sass/bootstrap/_jumbotron.scss +17 -0
- data/_sass/bootstrap/_list-group.scss +154 -0
- data/_sass/bootstrap/_media.scss +8 -0
- data/_sass/bootstrap/_mixins.scss +47 -0
- data/_sass/bootstrap/_modal.scss +240 -0
- data/_sass/bootstrap/_nav.scss +123 -0
- data/_sass/bootstrap/_navbar.scss +324 -0
- data/_sass/bootstrap/_pagination.scss +74 -0
- data/_sass/bootstrap/_popover.scss +170 -0
- data/_sass/bootstrap/_print.scss +141 -0
- data/_sass/bootstrap/_progress.scss +47 -0
- data/_sass/bootstrap/_reboot.scss +484 -0
- data/_sass/bootstrap/_root.scss +20 -0
- data/_sass/bootstrap/_spinners.scss +56 -0
- data/_sass/bootstrap/_tables.scss +185 -0
- data/_sass/bootstrap/_toasts.scss +46 -0
- data/_sass/bootstrap/_tooltip.scss +115 -0
- data/_sass/bootstrap/_transitions.scss +20 -0
- data/_sass/bootstrap/_type.scss +125 -0
- data/_sass/bootstrap/_utilities.scss +18 -0
- data/_sass/bootstrap/_variables.scss +1142 -0
- data/_sass/bootstrap/bootstrap-grid.scss +29 -0
- data/_sass/bootstrap/bootstrap-reboot.scss +12 -0
- data/_sass/bootstrap/bootstrap.scss +44 -0
- data/_sass/bootstrap/mixins/_alert.scss +13 -0
- data/_sass/bootstrap/mixins/_background-variant.scss +23 -0
- data/_sass/bootstrap/mixins/_badge.scss +17 -0
- data/_sass/bootstrap/mixins/_border-radius.scss +76 -0
- data/_sass/bootstrap/mixins/_box-shadow.scss +20 -0
- data/_sass/bootstrap/mixins/_breakpoints.scss +123 -0
- data/_sass/bootstrap/mixins/_buttons.scss +110 -0
- data/_sass/bootstrap/mixins/_caret.scss +62 -0
- data/_sass/bootstrap/mixins/_clearfix.scss +7 -0
- data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
- data/_sass/bootstrap/mixins/_float.scss +14 -0
- data/_sass/bootstrap/mixins/_forms.scss +178 -0
- data/_sass/bootstrap/mixins/_gradients.scss +45 -0
- data/_sass/bootstrap/mixins/_grid-framework.scss +80 -0
- data/_sass/bootstrap/mixins/_grid.scss +69 -0
- data/_sass/bootstrap/mixins/_hover.scss +37 -0
- data/_sass/bootstrap/mixins/_image.scss +36 -0
- data/_sass/bootstrap/mixins/_list-group.scss +21 -0
- data/_sass/bootstrap/mixins/_lists.scss +7 -0
- data/_sass/bootstrap/mixins/_nav-divider.scss +11 -0
- data/_sass/bootstrap/mixins/_pagination.scss +22 -0
- data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
- data/_sass/bootstrap/mixins/_resize.scss +6 -0
- data/_sass/bootstrap/mixins/_screen-reader.scss +34 -0
- data/_sass/bootstrap/mixins/_size.scss +7 -0
- data/_sass/bootstrap/mixins/_table-row.scss +39 -0
- data/_sass/bootstrap/mixins/_text-emphasis.scss +17 -0
- data/_sass/bootstrap/mixins/_text-hide.scss +11 -0
- data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
- data/_sass/bootstrap/mixins/_transition.scss +26 -0
- data/_sass/bootstrap/mixins/_visibility.scss +8 -0
- data/_sass/bootstrap/utilities/_align.scss +8 -0
- data/_sass/bootstrap/utilities/_background.scss +19 -0
- data/_sass/bootstrap/utilities/_borders.scss +75 -0
- data/_sass/bootstrap/utilities/_clearfix.scss +3 -0
- data/_sass/bootstrap/utilities/_display.scss +26 -0
- data/_sass/bootstrap/utilities/_embed.scss +39 -0
- data/_sass/bootstrap/utilities/_flex.scss +51 -0
- data/_sass/bootstrap/utilities/_float.scss +11 -0
- data/_sass/bootstrap/utilities/_interactions.scss +5 -0
- data/_sass/bootstrap/utilities/_overflow.scss +5 -0
- data/_sass/bootstrap/utilities/_position.scss +32 -0
- data/_sass/bootstrap/utilities/_screenreaders.scss +11 -0
- data/_sass/bootstrap/utilities/_shadows.scss +6 -0
- data/_sass/bootstrap/utilities/_sizing.scss +20 -0
- data/_sass/bootstrap/utilities/_spacing.scss +73 -0
- data/_sass/bootstrap/utilities/_stretched-link.scss +19 -0
- data/_sass/bootstrap/utilities/_text.scss +72 -0
- data/_sass/bootstrap/utilities/_visibility.scss +13 -0
- data/_sass/bootstrap/vendor/_rfs.scss +204 -0
- data/_sass/conference.scss +255 -0
- data/_sass/font-awesome/_animated.scss +20 -0
- data/_sass/font-awesome/_bordered-pulled.scss +20 -0
- data/_sass/font-awesome/_core.scss +21 -0
- data/_sass/font-awesome/_fixed-width.scss +6 -0
- data/_sass/font-awesome/_icons.scss +1462 -0
- data/_sass/font-awesome/_larger.scss +23 -0
- data/_sass/font-awesome/_list.scss +18 -0
- data/_sass/font-awesome/_mixins.scss +56 -0
- data/_sass/font-awesome/_rotated-flipped.scss +24 -0
- data/_sass/font-awesome/_screen-reader.scss +5 -0
- data/_sass/font-awesome/_shims.scss +2066 -0
- data/_sass/font-awesome/_stacked.scss +31 -0
- data/_sass/font-awesome/_variables.scss +1479 -0
- data/_sass/font-awesome/brands.scss +23 -0
- data/_sass/font-awesome/fontawesome.scss +16 -0
- data/_sass/font-awesome/regular.scss +23 -0
- data/_sass/font-awesome/scss/_animated.scss +20 -0
- data/_sass/font-awesome/scss/_bordered-pulled.scss +20 -0
- data/_sass/font-awesome/scss/_core.scss +21 -0
- data/_sass/font-awesome/scss/_fixed-width.scss +6 -0
- data/_sass/font-awesome/scss/_icons.scss +1441 -0
- data/_sass/font-awesome/scss/_larger.scss +23 -0
- data/_sass/font-awesome/scss/_list.scss +18 -0
- data/_sass/font-awesome/scss/_mixins.scss +56 -0
- data/_sass/font-awesome/scss/_rotated-flipped.scss +24 -0
- data/_sass/font-awesome/scss/_screen-reader.scss +5 -0
- data/_sass/font-awesome/scss/_shims.scss +2066 -0
- data/_sass/font-awesome/scss/_stacked.scss +31 -0
- data/_sass/font-awesome/scss/_variables.scss +1458 -0
- data/_sass/font-awesome/scss/brands.scss +23 -0
- data/_sass/font-awesome/scss/fontawesome.scss +16 -0
- data/_sass/font-awesome/scss/regular.scss +23 -0
- data/_sass/font-awesome/scss/solid.scss +24 -0
- data/_sass/font-awesome/scss/v4-shims.scss +6 -0
- data/_sass/font-awesome/solid.scss +24 -0
- data/_sass/font-awesome/v4-shims.scss +6 -0
- data/_sass/leaflet/leaflet-easybutton.scss +56 -0
- data/_sass/leaflet/leaflet-locatecontrol.scss +2 -0
- data/_sass/leaflet/leaflet.scss +640 -0
- data/assets/css/main.scss +6 -0
- data/assets/icons/live.svg +57 -0
- data/assets/js/config.json +3 -0
- data/assets/js/data.json +3 -0
- data/assets/js/main.js +4 -0
- data/assets/webfonts/fa-brands-400.eot +0 -0
- data/assets/webfonts/fa-brands-400.svg +3717 -0
- 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 +801 -0
- 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 +5028 -0
- 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
- metadata +296 -0
data/_includes/js/map.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
window.conference.map = (() => {
|
|
2
|
+
let config;
|
|
3
|
+
let lang;
|
|
4
|
+
|
|
5
|
+
let map;
|
|
6
|
+
|
|
7
|
+
const setup = (elId) => {
|
|
8
|
+
map = L.map(elId).setView(config.home_coord, config.default_zoom);
|
|
9
|
+
|
|
10
|
+
L.tileLayer.provider(config.map_provider).addTo(map);
|
|
11
|
+
|
|
12
|
+
L.easyButton('far fa-star', () => {
|
|
13
|
+
map.flyTo(config.home_coord, config.default_zoom);
|
|
14
|
+
}, lang.focus_conf).addTo(map);
|
|
15
|
+
|
|
16
|
+
L.control.locate({
|
|
17
|
+
flyTo: true,
|
|
18
|
+
strings: {
|
|
19
|
+
title: lang.focus_me
|
|
20
|
+
}
|
|
21
|
+
}).addTo(map);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const init = (c, l) => {
|
|
25
|
+
config = c;
|
|
26
|
+
lang = l;
|
|
27
|
+
|
|
28
|
+
const elId = 'map';
|
|
29
|
+
|
|
30
|
+
if (document.getElementById(elId)) {
|
|
31
|
+
setup(elId);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const getMap = () => {
|
|
36
|
+
return map
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
init: init,
|
|
41
|
+
getMap: getMap
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
window.conference.modal = (() => {
|
|
2
|
+
|
|
3
|
+
const show = (el, event) => {
|
|
4
|
+
const button = $(event.relatedTarget);
|
|
5
|
+
|
|
6
|
+
const href = button.data('href');
|
|
7
|
+
const format = button.data('format');
|
|
8
|
+
const title = button.data('title');
|
|
9
|
+
const subtitle = button.data('subtitle');
|
|
10
|
+
const footer = button.data('footer');
|
|
11
|
+
|
|
12
|
+
const modal = $(el);
|
|
13
|
+
modal.find('iframe').attr('src', href);
|
|
14
|
+
|
|
15
|
+
if (title) {
|
|
16
|
+
if (format == 'html') {
|
|
17
|
+
modal.find('.modal-title h3').html(title);
|
|
18
|
+
if (subtitle) {
|
|
19
|
+
modal.find('.modal-title h5').html(subtitle).removeClass('d-none');
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
modal.find('.modal-title h5').text('').addClass('d-none');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
modal.find('.modal-title h3').text(title);
|
|
27
|
+
if (subtitle) {
|
|
28
|
+
modal.find('.modal-title h5').text(subtitle).removeClass('d-none');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
modal.find('.modal-title h5').text('').addClass('d-none');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
modal.find('.modal-title h3').text('');
|
|
37
|
+
modal.find('.modal-title h5').text('').addClass('d-none');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (footer) {
|
|
41
|
+
modal.find('.modal-footer').removeClass('d-none');
|
|
42
|
+
if (format == 'html') {
|
|
43
|
+
modal.find('.modal-footer p').html(footer);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
modal.find('.modal-footer p').text(footer);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
modal.find('.modal-footer').addClass('d-none');
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const hide = (el) => {
|
|
55
|
+
const modal = $(el);
|
|
56
|
+
|
|
57
|
+
modal.find('.modal-title h3').text('');
|
|
58
|
+
modal.find('.modal-title h5').text('').addClass('d-none');
|
|
59
|
+
modal.find('iframe').attr('src', '');
|
|
60
|
+
modal.find('.modal-footer p').html('');
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const init = () => {
|
|
64
|
+
const elSel = '#link-modal';
|
|
65
|
+
|
|
66
|
+
$(elSel).on('show.bs.modal', function (event) {
|
|
67
|
+
show(this, event);
|
|
68
|
+
});
|
|
69
|
+
$(elSel).on('hide.bs.modal', function () {
|
|
70
|
+
hide(this);
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
init: init
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
})();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
window.conference.program = (() => {
|
|
2
|
+
const updateHash = (hash) => {
|
|
3
|
+
const scrollPosition = document.documentElement.scrollTop;
|
|
4
|
+
window.location.hash = hash;
|
|
5
|
+
document.documentElement.scrollTop = scrollPosition;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const init = () => {
|
|
9
|
+
if ($("#day-list")) {
|
|
10
|
+
// Switch to day if page load with hash
|
|
11
|
+
const hash = window.location.hash;
|
|
12
|
+
if (hash) {
|
|
13
|
+
$('#day-list a[href="' + hash + '"]').tab("show");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Switch to day if today
|
|
17
|
+
else {
|
|
18
|
+
const now = new Date();
|
|
19
|
+
const tsNow = Math.floor(now.getTime() / 1000);
|
|
20
|
+
|
|
21
|
+
$('a[data-toggle="tab"]').each(function () {
|
|
22
|
+
const tsMidnight = new Date($(this).data("ts") * 1000);
|
|
23
|
+
|
|
24
|
+
if (tsMidnight <= tsNow < tsMidnight + 24 * 60 * 60) {
|
|
25
|
+
$(this).tab("show");
|
|
26
|
+
updateHash(this.hash);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Add current selected day as hash to URL while keeping current scrolling position
|
|
32
|
+
$('a[data-toggle="tab"]').on("shown.bs.tab", function () {
|
|
33
|
+
updateHash(this.hash);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
init: init,
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{%- assign errors = '' | split: ',' -%}
|
|
2
|
+
|
|
3
|
+
{%- unless site.data.lang.version -%}
|
|
4
|
+
{%- unless site.conference.lang == "en" -%}
|
|
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/main/_data/lang.yml) to you local website folder?" -%}
|
|
6
|
+
{%- endunless -%}
|
|
7
|
+
{%- elsif site.data.lang.version != 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/main/_data/lang.yml)." -%}
|
|
9
|
+
{%- endunless -%}
|
|
10
|
+
{%- unless site.conference.lang == "en" or site.conference.lang == "de" or site.conference.lang == "fr" or site.conference.lang == "pt" -%}
|
|
11
|
+
{%- assign errors = errors | push : "Unknown language selected for `site.conference.lang` parameter. Supported are `en`, `de`, `fr`, and `pt`." -%}
|
|
12
|
+
{%- endunless -%}
|
|
13
|
+
|
|
14
|
+
{%- assign main_category_size = site.conference.talks.main_categories | size -%}
|
|
15
|
+
{%- if main_category_size == 0 -%}
|
|
16
|
+
{%- assign errors = errors | push : "Your `_config.yml` configuration file does not define any main category for your talks. Have you set the `conference.talks.main_categories` property? See also [Talk Settings](https://github.com/DigitaleGesellschaft/jekyll-theme-conference/#talk-settings) section in the theme's README file." -%}
|
|
17
|
+
{%- endif -%}
|
|
18
|
+
|
|
19
|
+
{%- assign nbr_days = site.data.program.days | size -%}
|
|
20
|
+
{%- if nbr_days == 0 -%}
|
|
21
|
+
{%- assign errors = errors | push : "Your schedule in `_data/program.yml` does not seem to contain any days. Have you already created the file?" -%}
|
|
22
|
+
{%- endif -%}
|
|
23
|
+
{%- if site.conference.live -%}
|
|
24
|
+
{%- for d in site.data.program.days -%}
|
|
25
|
+
{%- unless d.date or d.date == "" -%}
|
|
26
|
+
{%- assign error_msg = "Day " | append: forloop.index | append: " in your schedule should have a (non-empty) `date` property." -%}
|
|
27
|
+
{%- assign errors = errors | push : error_msg -%}
|
|
28
|
+
{%- endunless -%}
|
|
29
|
+
{%- endfor -%}
|
|
30
|
+
{%- endif -%}
|
|
31
|
+
|
|
32
|
+
{%- assign nbr_rooms = site.rooms | size -%}
|
|
33
|
+
{%- if nbr_rooms == 0 -%}
|
|
34
|
+
{%- assign errors = errors | push : "The `rooms` collection does not seem to contain any entry. Have you accidentially renamed the collection or is your `_rooms/` folder empty?" -%}
|
|
35
|
+
{%- else -%}
|
|
36
|
+
{%- for room in site.rooms -%}
|
|
37
|
+
{%- assign nbr_rooms_name = site.rooms | where: 'name', room.name | size %}
|
|
38
|
+
{%- if nbr_rooms_name > 1 -%}
|
|
39
|
+
{%- assign error_msg = "The room with the `name` _" | append: room.name | append: "_ oocures more than once but should be unique." -%}
|
|
40
|
+
{%- assign errors = errors | push : error_msg -%}
|
|
41
|
+
{%- endif -%}
|
|
42
|
+
{%- endfor -%}
|
|
43
|
+
{%- endif -%}
|
|
44
|
+
|
|
45
|
+
{%- assign nbr_speakers = site.speakers | size -%}
|
|
46
|
+
{%- if nbr_speakers == 0 -%}
|
|
47
|
+
{%- assign errors = errors | push : "The `speakers` collection does not seem to contain any entry. Have you accidentially renamed the collection or is your `_speakers/` folder empty?" -%}
|
|
48
|
+
{%- else -%}
|
|
49
|
+
{%- for speaker in site.speakers -%}
|
|
50
|
+
{%- assign nbr_speakers_name = site.speakers | where: 'name', speaker.name | size %}
|
|
51
|
+
{%- if nbr_speakers_name > 1 -%}
|
|
52
|
+
{%- assign error_msg = "The speaker with the `name` _" | append: speaker.name | append: "_ oocures more than once but should be unique." -%}
|
|
53
|
+
{%- assign errors = errors | push : error_msg -%}
|
|
54
|
+
{%- endif -%}
|
|
55
|
+
{%- endfor -%}
|
|
56
|
+
{%- endif -%}
|
|
57
|
+
|
|
58
|
+
{%- assign nbr_talks = site.talks | size -%}
|
|
59
|
+
{%- if nbr_talks == 0 -%}
|
|
60
|
+
{%- assign errors = errors | push : "The `talks` collection does not seem to contain any entry. Have you accidentially renamed the collection or is your `_talks/` folder empty?" -%}
|
|
61
|
+
{%- else -%}
|
|
62
|
+
{%- for talk in site.talks -%}
|
|
63
|
+
{%- assign nbr_talks_name = site.talks | where: 'name', talk.name | size %}
|
|
64
|
+
{%- if nbr_talks_name > 1 -%}
|
|
65
|
+
{%- assign error_msg = "The talk with the `name` _" | append: talk.name | append: "_ oocures more than once but should be unique." -%}
|
|
66
|
+
{%- assign errors = errors | push : error_msg -%}
|
|
67
|
+
{%- endif -%}
|
|
68
|
+
{%- endfor -%}
|
|
69
|
+
{%- endif -%}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
</main>
|
|
3
|
+
<footer class="container"></footer>
|
|
4
|
+
|
|
5
|
+
{%- include partials/modal_link.html -%}
|
|
6
|
+
|
|
7
|
+
{%- if site.conference.live.streaming.enable -%}
|
|
8
|
+
{%- include partials/modal_live.html -%}
|
|
9
|
+
{%- endif -%}
|
|
10
|
+
|
|
11
|
+
<!-- Append build time to avoid caching of live program embedded in JavaScript file -->
|
|
12
|
+
<script src="{{ site.baseurl }}/assets/js/main.js?t={{ site.time | date: "%s" }}" type="module"></script>
|
|
13
|
+
|
|
14
|
+
<div id="lux-footer-container">
|
|
15
|
+
<lux-library-footer></lux-library-footer>
|
|
16
|
+
</div>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{%- assign day_index = forloop.index -%}
|
|
2
|
+
|
|
3
|
+
{%- if d.abbr -%}
|
|
4
|
+
{%- assign day_hash = d.abbr -%}
|
|
5
|
+
{%- assign day_abbr = d.abbr -%}
|
|
6
|
+
{%- elsif d.name -%}
|
|
7
|
+
{%- assign day_hash = d.name -%}
|
|
8
|
+
{%- assign day_abbr = d.name -%}
|
|
9
|
+
{%- else -%}
|
|
10
|
+
{%- assign day_hash = site.data.lang[site.conference.lang].live.time.day | append: "-" | append: day_index -%}
|
|
11
|
+
{%- assign day_abbr = site.data.lang[site.conference.lang].live.time.day | capitalize | append: " " | append: day_index -%}
|
|
12
|
+
{%- endif -%}
|
|
13
|
+
|
|
14
|
+
{%- assign day_hash = day_hash | downcase | url_encode -%}
|
|
15
|
+
|
|
16
|
+
{%- if d.name -%}
|
|
17
|
+
{%- assign day_name = d.name -%}
|
|
18
|
+
{%- else -%}
|
|
19
|
+
{%- assign day_name = day_abbr -%}
|
|
20
|
+
{%- endif -%}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{%- for r in d.rooms -%}
|
|
2
|
+
{%- assign t = r.talks | first -%}
|
|
3
|
+
{%- include partials/get_talk_time.html -%}
|
|
4
|
+
|
|
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
|
+
{%- assign day_start_talk = t -%}
|
|
7
|
+
{%- assign day_start_day = talk_start_day -%}
|
|
8
|
+
{%- assign day_start_hour = talk_start_hour -%}
|
|
9
|
+
{%- assign day_start_min = talk_start_min -%}
|
|
10
|
+
{%- endif -%}
|
|
11
|
+
|
|
12
|
+
{%- assign t = r.talks | last -%}
|
|
13
|
+
{%- include partials/get_talk_time.html -%}
|
|
14
|
+
|
|
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-%}
|
|
16
|
+
{%- assign day_end_talk = t -%}
|
|
17
|
+
{%- assign day_end_day = talk_end_day -%}
|
|
18
|
+
{%- assign day_end_hour = talk_end_hour -%}
|
|
19
|
+
{%- assign day_end_min = talk_end_min -%}
|
|
20
|
+
{%- endif -%}
|
|
21
|
+
{%- endfor -%}
|
|
@@ -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,85 @@
|
|
|
1
|
+
|
|
2
|
+
{%- assign link_disabled = link.disabled -%}
|
|
3
|
+
{%- assign link_icon = link.icon -%}
|
|
4
|
+
{%- assign link_iframe = link.iframe -%}
|
|
5
|
+
|
|
6
|
+
{%- if link.absolute_url -%}
|
|
7
|
+
{%- assign link_href = link.absolute_url -%}
|
|
8
|
+
|
|
9
|
+
{%- elsif link.relative_url -%}
|
|
10
|
+
{%- assign link_href = link.relative_url | prepend: site.baseurl -%}
|
|
11
|
+
|
|
12
|
+
{%- elsif link.file -%}
|
|
13
|
+
{%- assign link_icon = "file-alt" -%}
|
|
14
|
+
|
|
15
|
+
{%- if talk -%}
|
|
16
|
+
{%- assign link_href = link.file | prepend: '/documents/slides/' | prepend: site.baseurl -%}
|
|
17
|
+
|
|
18
|
+
{%- elsif speaker -%}
|
|
19
|
+
{%- assign link_href = link.file | prepend: '/documents/bio/' | prepend: site.baseurl -%}
|
|
20
|
+
|
|
21
|
+
{%- else -%}
|
|
22
|
+
{%- assign link_href = link.file | prepend: '/documents/' | prepend: site.baseurl -%}
|
|
23
|
+
|
|
24
|
+
{%- endif -%}
|
|
25
|
+
|
|
26
|
+
{%- elsif link.video -%}
|
|
27
|
+
{%- assign link_href = link.video -%}
|
|
28
|
+
{%- assign link_icon = "video" -%}
|
|
29
|
+
{%- assign link_iframe = true -%}
|
|
30
|
+
|
|
31
|
+
{%- if talk -%}
|
|
32
|
+
{%- capture modal_title -%}
|
|
33
|
+
{%- if talk.hide -%}
|
|
34
|
+
{{ talk.name }}
|
|
35
|
+
{%- else -%}
|
|
36
|
+
<a class="text-reset" href="{{ talk.url | prepend: site.baseurl }}">
|
|
37
|
+
{{ talk.name }}
|
|
38
|
+
</a>
|
|
39
|
+
{%- endif -%}
|
|
40
|
+
{%- endcapture -%}
|
|
41
|
+
{%- capture modal_subtitle -%}
|
|
42
|
+
{%- include partials/list_speakers.html -%}
|
|
43
|
+
{%- endcapture -%}
|
|
44
|
+
|
|
45
|
+
{%- elsif speaker -%}
|
|
46
|
+
{%- capture modal_title -%}
|
|
47
|
+
{%- if speaker.hide -%}
|
|
48
|
+
{{ speaker.first_name }} {{ speaker.last_name }}
|
|
49
|
+
{%- else -%}
|
|
50
|
+
<a class="text-reset" href="{{ speaker.url | prepend: site.baseurl }}">
|
|
51
|
+
{{ speaker.first_name }} {{ speaker.last_name }}
|
|
52
|
+
</a>
|
|
53
|
+
{%- endif -%}
|
|
54
|
+
{%- endcapture -%}
|
|
55
|
+
{%- assign modal_footer = link.name -%}
|
|
56
|
+
|
|
57
|
+
{%- endif -%}
|
|
58
|
+
|
|
59
|
+
{%- else -%}
|
|
60
|
+
{%- assign link_disabled = true -%}
|
|
61
|
+
|
|
62
|
+
{%- endif -%}
|
|
63
|
+
|
|
64
|
+
{%- capture link_tag -%}
|
|
65
|
+
{%- if link.disabled -%}
|
|
66
|
+
<a class="disabled{% if link_styleclass %} {{ link_styleclass }}{% endif %}" href="#">
|
|
67
|
+
|
|
68
|
+
{%- elsif link_iframe -%}
|
|
69
|
+
<a {% if link_styleclass %}class="{{ link_styleclass }}"{% endif %} title="{{ link.name }}" data-toggle="modal" data-target="#link-modal" data-href="{{ link_href }}" href="#" {% if modal_title -%}
|
|
70
|
+
data-format='html' data-title="{{ modal_title | strip_newlines | escape }}" {%- if modal_subtitle %} data-subtitle="{{ modal_subtitle | strip_newlines | escape }}"{%- endif -%}
|
|
71
|
+
{%- elsif link.name -%}
|
|
72
|
+
data-format='text' data-title="{{ link.name }}"
|
|
73
|
+
{%- endif %} {% if modal_footer -%}
|
|
74
|
+
data-format='html' data-footer="{{ modal_footer | strip_newlines | escape }}"
|
|
75
|
+
{%- elsif link.description -%}
|
|
76
|
+
data-format='text' data-footer="{{ link.description }}"
|
|
77
|
+
{%- endif %}>
|
|
78
|
+
|
|
79
|
+
{%- else -%}
|
|
80
|
+
<a{% if link_styleclass %} class="{{ link_styleclass }}"{% endif %} href="{{ link_href }}" title="{{ link.name }}">
|
|
81
|
+
|
|
82
|
+
{%- endif -%}
|
|
83
|
+
{%- endcapture -%}
|
|
84
|
+
|
|
85
|
+
{%- assign link_styleclass = "" -%}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{%- if talk -%}
|
|
2
|
+
{%- assign links = talk.links -%}
|
|
3
|
+
{%- else if speaker -%}
|
|
4
|
+
{%- assign links = speaker.links -%}
|
|
5
|
+
{%- endif -%}
|
|
6
|
+
|
|
7
|
+
{%- assign has_icon_links = false -%}
|
|
8
|
+
{%- assign has_regular_links = false -%}
|
|
9
|
+
{%- for link in links -%}
|
|
10
|
+
{%- if link.icon or link.file or link.video -%}
|
|
11
|
+
{%- assign has_icon_links = true -%}
|
|
12
|
+
{%- else -%}
|
|
13
|
+
{%- assign has_regular_links = true -%}
|
|
14
|
+
{%- endif -%}
|
|
15
|
+
{%- endfor -%}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{%- assign min_pause = site.conference.live.stop | default: 240 -%}
|
|
2
|
+
{%- assign min_pause = min_pause | times: 60 -%}
|
|
3
|
+
|
|
4
|
+
{%- if site.conference.live.streaming.enable -%}
|
|
5
|
+
{%- assign offset_start = site.conference.live.streaming.prepend | default: 5 -%}
|
|
6
|
+
{%- assign offset_end = site.conference.live.streaming.extend | default: 5 -%}
|
|
7
|
+
{%- else -%}
|
|
8
|
+
{%- assign offset_start = 0 -%}
|
|
9
|
+
{%- assign offset_end = 0 -%}
|
|
10
|
+
{%- endif -%}
|
|
11
|
+
|
|
12
|
+
{%- assign live_starts = "" -%}
|
|
13
|
+
{%- assign live_ends = "" -%}
|
|
14
|
+
|
|
15
|
+
{%- for d in site.data.program.days -%}
|
|
16
|
+
{%- for r in d.rooms -%}
|
|
17
|
+
{%- assign last_end = 0 -%}
|
|
18
|
+
|
|
19
|
+
{%- for t in r.talks -%}
|
|
20
|
+
{%- include partials/get_talk_timestamp.html -%}
|
|
21
|
+
|
|
22
|
+
{%- assign last_pause = timestamp_start | minus: last_end -%}
|
|
23
|
+
|
|
24
|
+
{%- if forloop.last == true or last_pause >= min_pause and forloop.index0 > 0 -%}
|
|
25
|
+
{%- if forloop.last -%}
|
|
26
|
+
{%- assign last_end = timestamp_end -%}
|
|
27
|
+
{%- endif -%}
|
|
28
|
+
|
|
29
|
+
{%- assign live_end = offset_end | times: 60 | plus: last_end %}
|
|
30
|
+
{%- if live_ends == "" -%}
|
|
31
|
+
{%- assign live_ends = live_end -%}
|
|
32
|
+
{%- else -%}
|
|
33
|
+
{%- assign live_ends = live_ends | append: "," | append: live_end -%}
|
|
34
|
+
{%- endif -%}
|
|
35
|
+
{%- endif -%}
|
|
36
|
+
|
|
37
|
+
{%- if forloop.index0 == 0 or last_pause >= min_pause -%}
|
|
38
|
+
{%- assign live_start = offset_start | times: -60 | plus: timestamp_start -%}
|
|
39
|
+
{%- if live_starts == "" -%}
|
|
40
|
+
{%- assign live_starts = live_start -%}
|
|
41
|
+
{%- else -%}
|
|
42
|
+
{%- assign live_starts = live_starts | append: "," | append: live_start -%}
|
|
43
|
+
{%- endif -%}
|
|
44
|
+
{%- endif -%}
|
|
45
|
+
|
|
46
|
+
{%- assign last_end = timestamp_end -%}
|
|
47
|
+
{%- endfor -%}
|
|
48
|
+
{%- endfor -%}
|
|
49
|
+
{%- endfor -%}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{%- for main_cat in site.conference.talks.main_categories -%}
|
|
2
|
+
{%- for cat in talk.categories -%}
|
|
3
|
+
{%- if cat == main_cat.name -%}
|
|
4
|
+
{%- assign main_cat = main_cat.name -%}
|
|
5
|
+
{%- assign main_cat_color = main_cat.color -%}
|
|
6
|
+
{%- break -%}
|
|
7
|
+
{%- endif -%}
|
|
8
|
+
{%- endfor -%}
|
|
9
|
+
{%- endfor -%}
|
|
@@ -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.rooms | default: "Rooms" -}}
|
|
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 -%}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% assign room_live_href = '' -%}
|
|
2
|
+
{%- if room.live -%}
|
|
3
|
+
{%- if room.live.absolute_url -%}
|
|
4
|
+
{%- assign room_live_href = room.live.absolute_url -%}
|
|
5
|
+
{%- elsif room.live.relative_url -%}
|
|
6
|
+
{%- assign room_live_href = room.live.relative_url | prepend: site.baseurl -%}
|
|
7
|
+
{%- endif -%}
|
|
8
|
+
{%- endif -%}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{%- assign talk_start = t.time_start | default: "00:00" -%}
|
|
2
|
+
{%- assign talk_end = t.time_end | default: "00:00" -%}
|
|
3
|
+
|
|
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 -%}
|
|
18
|
+
{%- assign talk_start_min = talk_start | split: ':' | last | divided_by: site.conference.program.time_steps | floor | times: site.conference.program.time_steps -%}
|
|
19
|
+
{%- assign talk_end_hour = talk_end | split: ':' | first | plus: 0 -%}
|
|
20
|
+
{%- assign talk_end_min = talk_end | split: ':' | last | divided_by: site.conference.program.time_steps | ceil | times: site.conference.program.time_steps -%}
|
|
21
|
+
|
|
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 -%}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{%- include partials/get_talk_time.html -%}
|
|
2
|
+
|
|
3
|
+
{%- assign datetime_start = d.date | append: "T" | append: talk_start | append: ":00" -%}
|
|
4
|
+
{%- if site.conference.tz -%}
|
|
5
|
+
{%- assign datetime_start = datetime_start | append: site.conference.tz -%}
|
|
6
|
+
{%- endif -%}
|
|
7
|
+
{%- assign add_days_start = talk_start_day | times: 24 | times: 60 | times: 60 -%}
|
|
8
|
+
{%- assign timestamp_start = datetime_start | date: "%s" | plus: add_days_start | date: "%s" -%}
|
|
9
|
+
|
|
10
|
+
{%- assign datetime_end = d.date | append: "T" | append: talk_end | append: ":00" -%}
|
|
11
|
+
{%- if site.conference.tz -%}
|
|
12
|
+
{%- assign datetime_end = datetime_end | append: site.conference.tz -%}
|
|
13
|
+
{%- endif -%}
|
|
14
|
+
{%- assign add_days_end = talk_end_day | times: 24 | times: 60 | times: 60 -%}
|
|
15
|
+
{%- assign timestamp_end = datetime_end | date: "%s" | plus: add_days_end | date: "%s" -%}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{%- assign nbr_days = site.data.program.days | size -%}
|
|
2
|
+
{%- if nbr_days > 1 and day_abbr -%}
|
|
3
|
+
{%- assign time_pronoun = site.data.lang[site.conference.lang].pronoun.on_ | default: "on" -%}
|
|
4
|
+
{%- else -%}
|
|
5
|
+
{%- assign time_pronoun = site.data.lang[site.conference.lang].pronoun.at | default: "at" -%}
|
|
6
|
+
{%- endif -%}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="{{ site.conference.lang | default: 'en' }}">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
|
|
8
|
+
{% include partials/get_page_title.html -%}
|
|
9
|
+
<title>
|
|
10
|
+
{{- page_title -}}
|
|
11
|
+
{%- unless page_title == empty %} - {% endunless -%}
|
|
12
|
+
{{- site.title -}}
|
|
13
|
+
</title>
|
|
14
|
+
{% include partials/list_page_meta.html %}
|
|
15
|
+
|
|
16
|
+
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/main.css?t={{ site.time | date: "%s" }}" />
|
|
17
|
+
|
|
18
|
+
<link rel="preload" as="font" href="{{ site.baseurl }}/assets/webfonts/fa-regular-400.woff2" type="font/woff2" crossorigin="anonymous" />
|
|
19
|
+
<link rel="preload" as="font" href="{{ site.baseurl }}/assets/webfonts/fa-solid-900.woff2" type="font/woff2" crossorigin="anonymous" />
|
|
20
|
+
{%- if site.conference.live %}
|
|
21
|
+
<link rel="prefetch" as="image" href="{{ site.baseurl }}/assets/icons/live.svg" type="image/svg+xml" crossorigin="anonymous" />
|
|
22
|
+
<link rel="prefetch" as="fetch" href="{{ site.baseurl }}/assets/js/data.json" type="application/json" crossorigin="anonymous" />
|
|
23
|
+
{%- endif %}
|
|
24
|
+
|
|
25
|
+
{%- if site.conference.live.streaming.enable %}
|
|
26
|
+
{%- for room in site.rooms %}
|
|
27
|
+
{%- if room.live %}
|
|
28
|
+
{%- include partials/get_room_live_href.html %}
|
|
29
|
+
{%- if room_live_href %}
|
|
30
|
+
<link rel="preconnect" href="{{ room_live_href }}" />
|
|
31
|
+
{%- endif %}
|
|
32
|
+
{%- endif %}
|
|
33
|
+
{%- endfor %}
|
|
34
|
+
{%- endif %}
|
|
35
|
+
|
|
36
|
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
|
|
37
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.1/dist/js/bootstrap.bundle.min.js" ></script>
|
|
38
|
+
|
|
39
|
+
<link rel="stylesheet" href="https://unpkg.com/lux-design-system@5.6.3/dist/style.css">
|
|
40
|
+
<script type="importmap">
|
|
41
|
+
{
|
|
42
|
+
"imports": {
|
|
43
|
+
"vue": "https://unpkg.com/vue@3.2.47/dist/vue.esm-browser.prod.js",
|
|
44
|
+
"lux-design-system": "https://unpkg.com/lux-design-system@5.6.3/dist/lux-styleguidist.mjs"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
</script>
|
|
48
|
+
</head>
|
|
49
|
+
|
|
50
|
+
<body class="pb-4">
|
|
51
|
+
<header>
|
|
52
|
+
<!-- navigation bar (web only): -->
|
|
53
|
+
{%- include partials/navbar.html -%}
|
|
54
|
+
|
|
55
|
+
{%- unless page.url == "/" -%}
|
|
56
|
+
<!-- site title (print only): -->
|
|
57
|
+
<div class="container d-none d-print-block mt-4 mb-4">
|
|
58
|
+
<h1 class="display-4">
|
|
59
|
+
{{ site.title }}
|
|
60
|
+
</h1>
|
|
61
|
+
</div>
|
|
62
|
+
{%- endunless -%}
|
|
63
|
+
|
|
64
|
+
</header>
|
|
65
|
+
<main class="container">
|
|
66
|
+
|
|
67
|
+
{%- include partials/info_bar.html -%}
|