jekyll-theme-conference 2.1.1 → 2.2.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: 4c643a0e8bd01e58afe44d26b8ef92322de94b904963a0d77c375a173bdcee41
4
- data.tar.gz: 805184fecbf95cb9acf1eea02b5065d5bfc5043c961b05813133ebd82aa22bde
3
+ metadata.gz: 3a820e9261baf5ca2c75c14099c2719e2e42b88c3a7f2feebd2e037f31a55690
4
+ data.tar.gz: c85ac7f1cd763f6735a5b7661b6717d83e40d716f32c76e8b3a4943ea706d25e
5
5
  SHA512:
6
- metadata.gz: c4847d23b59679008f7b67db989e32f3e932714f21e7cf0ce9e939ef7444a4de84221c0e42696989e9550019b396d8e84e76ff948def06ba1ee81c2948ddf892
7
- data.tar.gz: 75e4e1ecdb73138ceb6f23782a7547d0d19f85ecd936a785c2d979cf3cb28b45c1272c3f6754c948cb90f82fffb11078811eadf32ebf29af08f964916a4afaf7
6
+ metadata.gz: cfd4cf001957a9a73a5f570df19c6e8c258113b30790480fb73e7d15dbc8c9e72348337e7af473b7314a019d82b48d94b90d2b78570aef317276db122f1d16be
7
+ data.tar.gz: 2632e796cdfa81dbec9b2488510d281931ccfe1f9b928fd940dd3a5263abf74fd019a4a0dd3a424eadc20e008d6d5076d62037e35ea91a35d9f147de2e649f23
data/README.md CHANGED
@@ -113,7 +113,7 @@ In case you do not want to install the entire Ruby/Jekyll toolchain on your mach
113
113
 
114
114
  All configurations and customization for this theme are stored under the `conference` property in the `_config.yml` file. You can find an example configuration containing most of the here discussed parameters under `_config.example.yml` in this repository.
115
115
 
116
- ### Theme Verifications
116
+ ### Theme Verification
117
117
 
118
118
  Upon building the theme runs some basic verification to check if all necessary files and configurations are in place. If it encounters an error it shows so in adding an information bar on all your sites. You can disable this, e.g. in a production environment, by setting `show_errors` to `false` (default: `true`).
119
119
 
@@ -181,11 +181,11 @@ conference:
181
181
 
182
182
  ### Navigation Bar
183
183
 
184
- The navigation bar is located at the top and visible on every site. On the right it show the title of the website (`site.title`) followed by the links listed under the `links` property of the `navigation` property. Each link consists of
184
+ The navigation bar is located at the top and visible on every site. On the right it show the title of the website (`site.title`) followed by the links listed under the `links` property of the `navigation` property. See the _Content_ > _Links_ section below for the available properties per link.
185
185
 
186
- - the text to show (`name`),
187
- - a relative (`relative_url`) or absolute link address (`absolute_url`) or a collapsed menu listing additional sublinks (`menu`), and
188
- - optionally if it is disabled (`disabled: true`).
186
+ Additionally, a navigation bar link can also have the following properties:
187
+
188
+ - `menu` containing another list of links. This creates a dropdown menu of multiple sublinks. The sublinks have the same properties as regular links (see the _Content_ > _Links_ section).
189
189
 
190
190
  Example:
191
191
 
@@ -237,11 +237,7 @@ conference:
237
237
  img: 'main_logo.png'
238
238
  ```
239
239
 
240
- The title/logo on the main page is followed by a description of your site (`site.description`) and the content of your `index.md` file. It ends with an optional list of links in the form of buttons. Each link consists of
241
-
242
- - the text to show (`name`),
243
- - a relative (`relative_url`) or absolute link address (`absolute_url`) or a collapsed menu listing additional sublinks (`menu`), and
244
- - optionally if it is disabled (`disabled: true`).
240
+ The title/logo on the main page is followed by a description of your site (`site.description`) and the content of your `index.md` file. It ends with an optional list of links in the form of buttons. See the _Content_ > _Links_ section below for the available properties per link.
245
241
 
246
242
  Example:
247
243
 
@@ -290,7 +286,7 @@ conference:
290
286
  Try again next year.
291
287
  ```
292
288
 
293
- ### Talk Settings: Main Categories
289
+ ### Talk Settings: Main Categories and Icons
294
290
 
295
291
  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:
296
292
 
@@ -305,6 +301,8 @@ Each talk can have one or multiple categories associated via FrontMatter (see th
305
301
  - `light` (white)
306
302
  - `dark` (dark grey)
307
303
 
304
+ Each talk can have associated links listed at the end of its content. If these links have an icon associated (see _Content_ > _Talks_ below), they are also shown on the talk overview page (e.g. to show in the overview which talk has a video recording and which not). To disable the showing of icon links on the overview page, set the `hide_icons` property to `true` (default: `false`).
305
+
308
306
  Example:
309
307
 
310
308
  ```yaml
@@ -316,6 +314,8 @@ conference:
316
314
  color: info
317
315
  - name: Cat B
318
316
  color: success
317
+ # Hide icons on talk overview page
318
+ hide_icons: false
319
319
  ```
320
320
 
321
321
  ### Speaker Settings: First name
@@ -413,13 +413,9 @@ Example:
413
413
  Each talk is represented by a file in the `_talks/` directory. It must begin with valid [YAML Front Matter](https://jekyllrb.com/docs/frontmatter/) containing
414
414
 
415
415
  - the talk's `name` (used as identifier),
416
- - one or more existing `speakers` name(s), and
417
- - optionally one or more `categories` of which one should be a main category as defined in the site's configuration
418
- - optionally a list of `links` whereby each link element consist of
419
- - a `name`, and
420
- - either an absolute link `href` or a `file` name (of a file stored under `/documents/`)
421
- - optionally a `icon` property indicating the name of a [FontAwesome](https://fontawesome.com/icons?d=gallery&s=solid&m=free) icon to be shown in front of the link name (links with icons are shown separately and above regular links without icons)
422
- - optionally a `iframe` property which if set to `true` opens a modal instead where the link's source is embedded in a iframe (e.g. for embedding videos thus having a default iframe ratio of 24:11)
416
+ - one or more existing `speakers` name(s),
417
+ - optionally one or more `categories` of which one should be a main category as defined in the site's configuration,
418
+ - 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
423
419
  - optionally `hide: true` if the talk's page should not be linked to.
424
420
 
425
421
  ### Speakers
@@ -429,9 +425,7 @@ Each speaker is represented by a file in the `_speakers/` directory. It must beg
429
425
  - the speaker's `name` (used as identifier), as well as its
430
426
  - `first_name`,
431
427
  - `last_name`,
432
- - optionally a list of `links` whereby each link element consist of
433
- - a `name`, and
434
- - either an absolute link `href` or a `file` name (of a file stored under `/documents/`)
428
+ - optionally a list of `links` (see the _Links_ subsection below for the available properties per link; links with icons are treated separately), and
435
429
  - optionally `hide: true` if the speaker's page should not be linked to.
436
430
 
437
431
  ### Rooms
@@ -441,6 +435,32 @@ Each room is represented by a file in the `_rooms/` directory. It must begin wit
441
435
  - the room's `name`, and
442
436
  - optionally `hide: true` if the room's page should not be linked to.
443
437
 
438
+ ### Links
439
+
440
+ Links are used at different location throughout the theme: They can either be used in the configuration file (for the landing page or the navigation bar), or in talks and for speakers. A link can thereby have the following properties:
441
+
442
+ - the text to show (`name`),
443
+ - optionally if it is disabled (`disabled: true`),
444
+ - optionally if it should open in a iframe embedded in a popup-like modal in the site it self (`iframe: true`, e.g. for embedding videos thus having a default iframe ratio of 24:11)
445
+ - optionally an icon to show (indicating the name of a [FontAwesome](https://fontawesome.com/icons?d=gallery&s=solid&m=free) icon to be shown if supported at the given location)
446
+ - the actual link address:
447
+ + given relatively to the site's base address: `relative_url:`,
448
+ + given absolute: `absolute_url:`,
449
+ + pointing to a file uploaded to the `/documents` folder (for talks `/documents/slides`, for speakers `/documents/bio`): `file:`
450
+ + pointing to an external video: `video:`
451
+
452
+ Using the `file:` indicator, the relative address is automatically set as well as the icon. Using the `video:` indicator, the link is automatically configured to open in an iframe with a corresponding title and the icon is set.
453
+
454
+ Example:
455
+
456
+ ```yaml
457
+ links:
458
+ - name: Slides
459
+ file: slides.pdf
460
+ - name: Recording
461
+ video: https://media.ccc.de/
462
+ ```
463
+
444
464
 
445
465
  ## Overview Pages
446
466
 
@@ -19,17 +19,32 @@
19
19
  $('#link-modal').on('show.bs.modal', function (event) {
20
20
  var button = $(event.relatedTarget);
21
21
 
22
- var title = button.data('title');
23
22
  var href = button.data('href');
23
+ var header = button.data('header');
24
+ var title = button.data('title');
25
+ var footer = button.data('footer');
24
26
  var desc = button.data('desc');
25
27
 
26
28
  var modal = $(this);
27
- modal.find('.modal-title').text(title);
28
29
  modal.find('iframe').attr('src', href);
29
30
 
30
- if (desc) {
31
+ if (header) {
32
+ modal.find('.modal-title').html(header);
33
+ }
34
+ else if (title) {
35
+ modal.find('.modal-title').text(title);
36
+ }
37
+ else {
38
+ modal.find('.modal-title').text('')
39
+ }
40
+
41
+ if (footer) {
42
+ modal.find('.modal-footer').removeClass('d-none')
43
+ modal.find('.modal-description').html(footer);
44
+ }
45
+ else if (desc) {
31
46
  modal.find('.modal-footer').removeClass('d-none')
32
- modal.find('.modal-description').html(desc);
47
+ modal.find('.modal-description').text(desc);
33
48
  }
34
49
  else {
35
50
  modal.find('.modal-footer').addClass('d-none')
@@ -14,7 +14,7 @@
14
14
  <div class="modal-body">
15
15
  <iframe src="" frameborder="0" allowfullscreen></iframe>
16
16
  </div>
17
- <div class="modal-footer">
17
+ <div class="modal-footer justify-content-start">
18
18
  <p class="modal-description"></p>
19
19
  </div>
20
20
  </div>
@@ -0,0 +1,73 @@
1
+
2
+ {% assign link_icon = link.icon %}
3
+ {% assign link_iframe = link.iframe %}
4
+
5
+ {% if link.absolute_url %}
6
+ {% assign link_href = link.absolute_url %}
7
+
8
+ {% elsif link.relative_url %}
9
+ {% assign link_href = link.relative_url | prepend: site.baseurl %}
10
+
11
+ {% elsif link.file %}
12
+ {% assign link_icon = "file-alt" %}
13
+
14
+ {% if talk %}
15
+ {% assign link_href = link.file | prepend: '/documents/slides/' | prepend: site.baseurl %}
16
+
17
+ {% elsif speaker %}
18
+ {% assign link_href = link.file | prepend: '/documents/bio/' | prepend: site.baseurl %}
19
+
20
+ {% else %}
21
+ {% assign link_href = link.file | prepend: '/documents/' | prepend: site.baseurl %}
22
+
23
+ {% endif %}
24
+
25
+ {% elsif link.video %}
26
+ {% assign link_href = link.video %}
27
+ {% assign link_icon = "video" %}
28
+ {% assign link_iframe = true %}
29
+
30
+ {% if talk %}
31
+ {% capture modal_header %}
32
+ <h3 class="font-weight-light">{{ talk.name }}</h3>
33
+ <p class="mb-0 font-weight-light">
34
+ {% include partials/list_speakers.html %}
35
+ </p>
36
+ {% endcapture %}
37
+
38
+ {% elsif speaker %}
39
+ {% capture modal_header %}
40
+ <h3 class="mb-0 font-weight-light">
41
+ {{ speaker.first_name }} {{ speaker.last_name }}
42
+ </h3>
43
+ {% endcapture %}
44
+ {% assign modal_desc = link.name %}
45
+
46
+ {% endif %}
47
+
48
+ {% endif %}
49
+
50
+ {% capture link_tag -%}
51
+ {%- if link.disabled -%}
52
+ <a class="disabled{% if link_styleclass %} {{ link_styleclass }}{% endif %}">
53
+
54
+ {%- elsif link_iframe -%}
55
+ <a class="cursor-pointer{% if link_styleclass %} {{ link_styleclass }}{% endif %}" title="{{ link.name }}" data-toggle="modal" data-target="#link-modal" data-href="{{ link_href }}" {% if modal_header -%}
56
+ data-header="{{ modal_header | strip_newlines | escape }}"
57
+ {%- elsif modal_title -%}
58
+ data-title="{{ modal_title }}"
59
+ {%- elsif link.name -%}
60
+ data-title="{{ link.name }}"
61
+ {%- endif %} {% if modal_footer -%}
62
+ data-footer="{{ modal_footer | strip_newlines | escape }}"
63
+ {%- elsif modal_desc -%}
64
+ data-desc="{{ modal_desc }}"
65
+ {%- elsif link.description -%}
66
+ data-desc="{{ link.description }}"
67
+ {%- endif %}>
68
+
69
+ {%- else -%}
70
+ <a{% if link_styleclass %} class="{{ link_styleclass }}"{% endif %} href="{{ link_href }}" title="{{ link.name }}">
71
+
72
+ {%- endif -%}
73
+ {%- endcapture %}
@@ -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 %}
@@ -16,30 +16,23 @@
16
16
  {{ link.name }}
17
17
  </a>
18
18
  <div class="dropdown-menu" aria-labelledby="navbar-dropdown{{ forloop.index0 }}">
19
- {% for sublink in link.menu %}
20
- {% if sublink.disabled %}
21
- <a class="dropdown-item disabled" href="#">
22
- {{ sublink.name }}
23
- </a>
24
- {% else %}
25
- <a class="dropdown-item" href="{% if sublink.absolute_url %}{{ sublink.absolute_url }}{% else %}{{ sublink.relative_url | prepend: site.baseurl }}{% endif %}">
26
- {{ sublink.name }}
27
- </a>
28
- {% endif %}
19
+ {% assign parent_link = link %}
20
+ {% for link in parent_link.menu %}
21
+ {% assign link_styleclass = "dropdown-item" %}
22
+ {% include partials/get_link.html %}
23
+ {{ link_tag }}
24
+ {{ link.name }}
25
+ </a>
29
26
  {% endfor %}
30
27
  </div>
31
28
  </li>
32
29
  {% else %}
33
30
  <li class="nav-item {% if page.url contains link.relative_url %}active{% endif %}">
34
- {% if link.disabled %}
35
- <a class="nav-link disabled" href="#">
36
- {{ link.name }}
37
- </a>
38
- {% else %}
39
- <a class="nav-link" href="{% if link.absolute_url %}{{ link.absolute_url }}{% else %}{{ link.relative_url | prepend: site.baseurl }}{% endif %}">
40
- {{ link.name }}
41
- </a>
42
- {% endif %}
31
+ {% assign link_styleclass = "nav-link" %}
32
+ {% include partials/get_link.html %}
33
+ {{ link_tag }}
34
+ {{ link.name }}
35
+ </a>
43
36
  </li>
44
37
  {% endif %}
45
38
  {% endfor %}
@@ -24,15 +24,11 @@
24
24
  {% if site.conference.main.links %}
25
25
  <p class="lead d-print-none">
26
26
  {% for link in site.conference.main.links %}
27
- {% if link.disabled %}
28
- <a class="btn btn-outline-primary btn-lg mt-2 disabled" href="#">
29
- {{ link.name }}
30
- </a>
31
- {% else %}
32
- <a class="btn btn-outline-primary btn-lg mt-2" href="{% if link.absolute_url %}{{ link.absolute_url }}{% else %}{{ link.relative_url | prepend: site.baseurl }}{% endif %}" role="button">
33
- {{ link.name }}
34
- </a>
35
- {% endif %}
27
+ {% assign link_styleclass = "btn btn-outline-primary btn-lg mt-2" %}
28
+ {% include partials/get_link.html %}
29
+ {{ link_tag }}
30
+ {{ link.name }}
31
+ </a>
36
32
  {% endfor %}
37
33
  </p>
38
34
  {% endif %}
@@ -12,16 +12,41 @@
12
12
 
13
13
  {{ content }}
14
14
 
15
- {% if speaker.links %}
15
+ {% include partials/get_link_types.html %}
16
+
17
+ {% if has_icon_links %}
18
+ <ul class="list-unstyled">
19
+ {% for link in speaker.links %}
20
+ {% assign link_styleclass = "" %}
21
+ {% include partials/get_link.html %}
22
+
23
+ {% if link_icon %}
24
+ <li class="mb-1 ml-2">
25
+ {{ link_tag }}
26
+ <i class="fas fa-{{ link_icon }} pr-1"></i>
27
+ {{ link.name }}
28
+ </a>
29
+ </li>
30
+ {% endif %}
31
+ {% endfor %}
32
+ </ul>
33
+ {% endif %}
34
+
35
+ {% if has_regular_links %}
16
36
  <h5 class="mt-4 mb-1">{{ site.data.lang[site.conference.lang].more_information }}:</h5>
37
+
17
38
  <ul class="list-unstyled">
18
39
  {% for link in speaker.links %}
19
- <li class="mb-1 ml-2 pl-2 border-soft-primary">
20
- {% include partials/get_link_href.html %}
21
- <a class="text-reset" href="{{ link_href }}">
22
- {{ link.name }}
23
- </a>
24
- </li>
40
+ {% assign link_styleclass = "text-reset" %}
41
+ {% include partials/get_link.html %}
42
+
43
+ {% unless link_icon %}
44
+ <li class="mb-1 ml-2 pl-2 border-soft-primary">
45
+ {{ link_tag }}
46
+ {{ link.name }}
47
+ </a>
48
+ </li>
49
+ {% endunless %}
25
50
  {% endfor %}
26
51
  </ul>
27
52
  {% endif %}
@@ -31,24 +31,15 @@
31
31
  <p class="mb-0">
32
32
  {% include partials/list_sub_categories.html %}
33
33
 
34
- {% assign has_icon_links = false %}
35
- {% for link in talk.links %}
36
- {% if link.icon %}
37
- {% assign has_icon_links = true %}
38
- {% endif %}
39
- {% endfor %}
40
-
41
- {% if has_icon_links %}
34
+ {% include partials/get_link_types.html %}
35
+ {% if has_icon_links and site.conference.talks.hide_icons != true %}
42
36
  <span class="{% if has_sub_categories %}ml-1{% endif %}">
43
37
  {% for link in talk.links %}
44
- {% if link.icon %}
45
- {% include partials/get_link_href.html %}
46
- {%- if link.iframe -%}
47
- <a class="text-secondary ml-1 cursor-pointer" data-toggle="modal" data-target="#link-modal" data-title="{{ link.name }}" data-href="{{ link_href }}" title="{{ link.name }}">
48
- {%- else -%}
49
- <a class="text-secondary ml-1" href="{{ link_href }}" title="{{ link.name }}">
50
- {%- endif -%}
51
- <i class="fas fa-{{ link.icon }} pr-1"></i></a>
38
+ {% assign link_styleclass = "" %}
39
+ {% include partials/get_link.html %}
40
+ {% if link_icon %}
41
+ {{ link_tag -}}
42
+ <i class="fas fa-{{ link_icon }} pr-1"></i></a>
52
43
  {% endif %}
53
44
  {% endfor %}
54
45
  </span>
@@ -56,28 +56,18 @@
56
56
 
57
57
  {{ content }}
58
58
 
59
- {% assign has_icon_links = false %}
60
- {% assign has_regular_links = false %}
61
- {% for link in talk.links %}
62
- {% if link.icon %}
63
- {% assign has_icon_links = true %}
64
- {% else %}
65
- {% assign has_regular_links = true %}
66
- {% endif %}
67
- {% endfor %}
59
+ {% include partials/get_link_types.html %}
68
60
 
69
61
  {% if has_icon_links %}
70
62
  <ul class="list-unstyled">
71
63
  {% for link in talk.links %}
72
- {% if link.icon %}
64
+ {% assign link_styleclass = "" %}
65
+ {% include partials/get_link.html %}
66
+
67
+ {% if link_icon %}
73
68
  <li class="mb-1 ml-2">
74
- {% include partials/get_link_href.html %}
75
- {% if link.iframe %}
76
- <a class="cursor-pointer" data-toggle="modal" data-target="#link-modal" data-title="{{ link.name }}" data-href="{{ link_href }}">
77
- {% else %}
78
- <a href="{{ link_href }}">
79
- {% endif %}
80
- <i class="fas fa-{{ link.icon }} pr-1"></i>
69
+ {{ link_tag }}
70
+ <i class="fas fa-{{ link_icon }} pr-1"></i>
81
71
  {{ link.name }}
82
72
  </a>
83
73
  </li>
@@ -91,14 +81,12 @@
91
81
 
92
82
  <ul class="list-unstyled">
93
83
  {% for link in talk.links %}
94
- {% unless link.icon %}
84
+ {% assign link_styleclass = "text-reset" %}
85
+ {% include partials/get_link.html %}
86
+
87
+ {% unless link_icon %}
95
88
  <li class="mb-1 ml-2 pl-2 border-soft-primary">
96
- {% include partials/get_link_href.html %}
97
- {% if link.iframe %}
98
- <a class="cursor-pointer text-reset" data-toggle="modal" data-target="#link-modal" data-title="{{ link.name }}" data-href="{{ link_href }}">
99
- {% else %}
100
- <a class="text-reset" href="{{ link_href }}">
101
- {% endif %}
89
+ {{ link_tag }}
102
90
  {{ link.name }}
103
91
  </a>
104
92
  </li>
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: 2.1.1
4
+ version: 2.2.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: 2020-11-01 00:00:00.000000000 Z
11
+ date: 2020-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -72,7 +72,8 @@ files:
72
72
  - _includes/js/syncscroll.js
73
73
  - _includes/partials/checks.html
74
74
  - _includes/partials/footer.html
75
- - _includes/partials/get_link_href.html
75
+ - _includes/partials/get_link.html
76
+ - _includes/partials/get_link_types.html
76
77
  - _includes/partials/get_main_category.html
77
78
  - _includes/partials/get_talk_time.html
78
79
  - _includes/partials/header.html
@@ -1,5 +0,0 @@
1
- {% if link.file %}
2
- {% assign link_href = link.file | prepend: '/documents/' | prepend: site.baseurl %}
3
- {% else %}
4
- {% assign link_href = link.href %}
5
- {% endif %}