elixir-toolkit-theme 4.1.0 → 5.0.0
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 +4 -4
- data/README.md +11 -5
- data/_includes/breadcrumb.html +27 -0
- data/_includes/citation-page.html +19 -0
- data/_includes/contributor-carousel-selection.html +4 -3
- data/_includes/contributor-minitiles-page.html +6 -7
- data/_includes/events.html +1 -1
- data/_includes/footer.html +16 -6
- data/_includes/github-buttons.html +20 -15
- data/_includes/head.html +33 -27
- data/_includes/news.html +1 -1
- data/_includes/pageids-overview.html +1 -1
- data/_includes/related-pages.html +1 -1
- data/_includes/resource-table-all.html +6 -4
- data/_includes/resource-table-page.html +2 -2
- data/_includes/section-navigation-tiles.html +2 -2
- data/_includes/topnav.html +16 -1
- data/_includes/training-table-all.html +1 -1
- data/_layouts/page.html +7 -5
- data/assets/css/main.scss +57 -39
- data/assets/js/custom.js +0 -0
- data/assets/js/toc.js +64 -35
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28d3405180b694d3008b2189a0bb9a16ee0ea46295d1d9e1f54b0c0615dc08c1
|
4
|
+
data.tar.gz: b84be0a971922c139d39379443cddd58f07514d5578c7d38364dc1361c63484f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e72c7d4ed2724a743f37e71223547bdfa2dbd472d050ecb4a8e130d6081bf3c4a1bd9fbd2d4136c58616484bd7bb189a472ca203953944a08f41914175e89180
|
7
|
+
data.tar.gz: 3effd307d58a441330ef53c2b76377d41dac38552bf881e0c87d4f1d844acdf21fc9e1130945ffbb6a8d0389c8a921b59dfe453f4948741de552c405d25c40a6
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ remote_theme: ELIXIR-Belgium/elixir-toolkit-theme
|
|
37
37
|
You can lock it onto a specific version using:
|
38
38
|
|
39
39
|
```yaml
|
40
|
-
remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@
|
40
|
+
remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@5.0.0
|
41
41
|
```
|
42
42
|
|
43
43
|
### Using Ruby Gems (alternative)
|
@@ -50,7 +50,7 @@ gem "elixir-toolkit-theme"
|
|
50
50
|
You can lock it onto a specific version like this:
|
51
51
|
|
52
52
|
```ruby
|
53
|
-
gem "elixir-toolkit-theme", "~>
|
53
|
+
gem "elixir-toolkit-theme", "~> 5.0.0"
|
54
54
|
```
|
55
55
|
|
56
56
|
And add this line to your Jekyll site's `_config.yml`:
|
@@ -81,7 +81,7 @@ NOTE: This way of deploying does not support the tool-tag in the text of the mar
|
|
81
81
|
Add an extra `.gitlab-ci.yml` file in the root of the repo with:
|
82
82
|
|
83
83
|
```yml
|
84
|
-
image: ruby:
|
84
|
+
image: ruby:3.3
|
85
85
|
|
86
86
|
variables:
|
87
87
|
JEKYLL_ENV: production
|
@@ -131,6 +131,7 @@ pages:
|
|
131
131
|
```
|
132
132
|
JEKYLL_ENV=production PAGES_REPO_NWO='USER_OR_ORGANISATION/REPO_NAME' bundle exec jekyll serve --baseurl ""
|
133
133
|
```
|
134
|
+
Where `USER_OR_ORGANISATION/REPO_NAME` is the GitHub USER_OR_ORGANISATION/REPO_NAME (to be found in the url).
|
134
135
|
|
135
136
|
1. To preview your site, in your web browser, navigate to `http://localhost:4000`.
|
136
137
|
|
@@ -151,10 +152,9 @@ This will start the docker container and serve the website locally. Make sure th
|
|
151
152
|
|
152
153
|
- [RDMkit](https://rdmkit.elixir-europe.org/) (CONVERGE)
|
153
154
|
- [WorkflowHub](https://about.workflowhub.eu/) (EOSC-life project)
|
154
|
-
- [RO-crate](https://www.researchobject.org/ro-crate
|
155
|
+
- [RO-crate](https://www.researchobject.org/ro-crate/) (EOSC)
|
155
156
|
- [Infectious Diseases Toolkit](https://www.infectious-diseases-toolkit.org/) (BY-COVID)
|
156
157
|
- [FAIRDOM](https://fair-dom.org/) (FAIRDOM community)
|
157
|
-
- [ABB intranet page at PSB](https://intranet.psb.ugent.be/abb/) (VIB department)
|
158
158
|
- [How-to-Guides](https://australianbiocommons.github.io/how-to-guides/) (Australian BioCommons)
|
159
159
|
- [SPLASH](https://elixir-europe-training.github.io/ELIXIR-Training-SPLASH/) (ELIXIR Training platform)
|
160
160
|
- [1+MG Framework](https://framework.onemilliongenomes.eu/) (GDI)
|
@@ -167,6 +167,12 @@ This will start the docker container and serve the website locally. Make sure th
|
|
167
167
|
- [dHMp norge](https://dhp-stottepakke.github.io/pages/) (ELIXIR Norway)
|
168
168
|
- [Learning-Library](https://patcapon39.github.io/Learning-Library/) (Australian BioCommons)
|
169
169
|
- [ELIXIR-IT Training Platform](https://elixir-iib-training.github.io/site/training_courses) (ELIXIR IT)
|
170
|
+
- [FAIRDOM-SEEK Documentation](https://docs.seek4science.org/) (SEEK community)
|
171
|
+
- [FAIR Lesson Plan Handbook](https://elixir-europe-training.github.io/ELIXIR-TrP-FAIR-Converge/) (ELIXIR Training platform)
|
172
|
+
- [Data Steward Handbook](https://elixir-uk.github.io/elixir-ds-handbook) (ELIXIR RDM Community)
|
173
|
+
- [Fed-A-Crate](https://elixir-europe.github.io/fed-a-crate/how-to-contribute) (ELIXIR Fed-A-Crate project)
|
174
|
+
- [Federated Learning toolkit (FLkit)](https://uhasselt-biomedicaldatasciences.github.io/federated-learning-toolkit/) (UHasselt)
|
175
|
+
- [mTeSS-X](https://elixirtess.github.io/mTeSS-X/) (OSCARS project)
|
170
176
|
- Want your instance here? [Open an issue](https://github.com/ELIXIR-Belgium/elixir-toolkit-theme/issues)
|
171
177
|
|
172
178
|
## Dependencies
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<nav id="breadcrumb" aria-label="breadcrumb">
|
2
|
+
{% assign crumbs = page.url | remove:'/index.html' | split: '/' %}
|
3
|
+
<ol class="breadcrumb">
|
4
|
+
{% if crumbs.size > 0 %}
|
5
|
+
<li class="breadcrumb-item mt-0">
|
6
|
+
<a href="{{ site.baseurl }}/"><i class="fa-solid fa-house fa-xs"></i></a>
|
7
|
+
</li>
|
8
|
+
{% endif %}
|
9
|
+
{% for crumb in crumbs offset: 1 %}
|
10
|
+
{% if forloop.last %}
|
11
|
+
<li class="breadcrumb-item last mt-0" aria-current="page">
|
12
|
+
{{ page.title }}
|
13
|
+
</li>
|
14
|
+
{% else %}
|
15
|
+
{% capture crumb_url %}{{ site.baseurl }}{% assign crumb_limit = forloop.index | plus: 1 %}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: "/" }}{% endfor %}{% endcapture %}
|
16
|
+
{% assign crumb_title = crumb | replace:'-',' ' | replace:'_',' ' | remove:'.html' | capitalize %}
|
17
|
+
{% assign has_index = site.pages | where: "url", crumb_url | first %}
|
18
|
+
<li class="breadcrumb-item mt-0">
|
19
|
+
{% if has_index %}<a href="{{crumb_url}}">{% if has_index.title %}{{ has_index.title }}{% else %}{{ crumb_title }}{% endif %}</a>
|
20
|
+
{% else %}
|
21
|
+
{{ crumb_title }}
|
22
|
+
{% endif %}
|
23
|
+
</li>
|
24
|
+
{% endif %}
|
25
|
+
{% endfor %}
|
26
|
+
</ol>
|
27
|
+
</nav>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
{% if page.page_citation and page.title %}
|
2
|
+
<h2>How to cite this page</h2>
|
3
|
+
<p>
|
4
|
+
{% if page.contributors %}
|
5
|
+
{{ page.contributors | join: ", " }},
|
6
|
+
{% endif %}
|
7
|
+
"<em>{{ page.title }}</em>".
|
8
|
+
{% if site.url %}
|
9
|
+
{{ site.url | remove: "https://www." | remove: "http://www." | remove: "https://" | remove: "http://" }}.
|
10
|
+
{% endif %}
|
11
|
+
{% assign page_url = page.url | absolute_url %}
|
12
|
+
<a href="{{ page_url }}">{{ page_url }}</a> <span id="current_date"></span>.
|
13
|
+
</p>
|
14
|
+
<script>
|
15
|
+
var current_date = new Date().toLocaleDateString('en-uk', { year:"numeric", month:"long", day:"numeric"})
|
16
|
+
document.getElementById("current_date").textContent = "(accessed " + current_date + ")";
|
17
|
+
</script>
|
18
|
+
{% endif %}
|
19
|
+
|
@@ -1,3 +1,4 @@
|
|
1
|
+
{%- assign carousel_counter = carousel_counter | plus: 1 %}
|
1
2
|
{%- assign contributors = site.data.CONTRIBUTORS %}
|
2
3
|
{%- assign allcontrstr = nil %}
|
3
4
|
{%- assign nr = include.col | default: 5 %}
|
@@ -39,7 +40,7 @@
|
|
39
40
|
{%- assign allcontributors = allcontributors | sort %}
|
40
41
|
{%- endunless %}
|
41
42
|
{%- unless allcontributors.size == 0 %}
|
42
|
-
<div id="contributors-carousel" class="carousel carousel-dark slide my-4" data-ride="carousel" data-bs-interval="7000">
|
43
|
+
<div id="contributors-carousel-{{carousel_counter}}" class="carousel carousel-dark slide my-4" data-ride="carousel" data-bs-interval="7000">
|
43
44
|
<div class="carousel-inner">
|
44
45
|
{%- assign counter = 0 %}
|
45
46
|
{%- for contributor in allcontributors %}
|
@@ -111,11 +112,11 @@
|
|
111
112
|
</div>
|
112
113
|
{%- endif %}
|
113
114
|
{%- endfor %}
|
114
|
-
<button class="carousel-control-prev" type="button" data-bs-target="#contributors-carousel" data-bs-slide="prev">
|
115
|
+
<button class="carousel-control-prev" type="button" data-bs-target="#contributors-carousel-{{carousel_counter}}" data-bs-slide="prev">
|
115
116
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
116
117
|
<span class="visually-hidden">Previous</span>
|
117
118
|
</button>
|
118
|
-
<button class="carousel-control-next" type="button" data-bs-target="#contributors-carousel" data-bs-slide="next">
|
119
|
+
<button class="carousel-control-next" type="button" data-bs-target="#contributors-carousel-{{carousel_counter}}" data-bs-slide="next">
|
119
120
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
120
121
|
<span class="visually-hidden">Next</span>
|
121
122
|
</button>
|
@@ -1,8 +1,11 @@
|
|
1
|
-
{%-
|
1
|
+
{%- assign EMPTY = "" | split: "" -%}
|
2
|
+
{%- assign contrib_list = page.contributors | default: EMPTY -%}
|
3
|
+
{%- assign coord_list = page.coordinators | default: EMPTY -%}
|
4
|
+
{%- if contrib_list.size > 0 or coord_list.size > 0 -%}
|
2
5
|
<span class="d-block h2-like fs-2">{{site.theme_variables.contributor-minitiles-page | default: 'Contributors' }}</span>
|
3
6
|
<div class="p-4 rounded mt-4 page-contributors d-flex flex-wrap gap-2">
|
4
7
|
{%- assign contributors = site.data.CONTRIBUTORS %}
|
5
|
-
{%- assign page_contributors =
|
8
|
+
{%- assign page_contributors = contrib_list | concat: coord_list | uniq %}
|
6
9
|
{%- unless include.sort == false %}
|
7
10
|
{%- assign page_contributors = page_contributors | sort %}
|
8
11
|
{%- endunless %}
|
@@ -35,9 +38,7 @@
|
|
35
38
|
<div>
|
36
39
|
{{ contributor }}
|
37
40
|
</div>
|
38
|
-
{%- if page.coordinators %}
|
39
|
-
{%- for coordinator in page.coordinators %}
|
40
|
-
{%- if coordinator == contributor %}
|
41
|
+
{%- if page.coordinators.size != 0 and page.coordinators contains contributor %}
|
41
42
|
<div class="position-absolute top-0 start-100 translate-middle">
|
42
43
|
<div class="rounded-circle coordinator-crown">
|
43
44
|
<a data-bs-toggle="tooltip" data-bs-original-title="Coordinator of the {{page.title}} page.">
|
@@ -46,8 +47,6 @@
|
|
46
47
|
</div>
|
47
48
|
</div>
|
48
49
|
{%- endif %}
|
49
|
-
{%- endfor %}
|
50
|
-
{%- endif %}
|
51
50
|
</button>
|
52
51
|
<div class="dropdown-menu shadow p-0 border-0 contributor-cards">
|
53
52
|
|
data/_includes/events.html
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
{%- if include.title == true%}
|
3
3
|
<h2>{{include.event_type | replace: "_", " " | capitalize}}s</h2>
|
4
4
|
{%- endif %}
|
5
|
-
{%- assign events = site.data.events %}
|
5
|
+
{%- assign events = site.data.events | sort: "startDate" | reverse %}
|
6
6
|
{%- assign count = 0 %}
|
7
7
|
<ul class="list-unstyled mt-3">
|
8
8
|
{%- for event in events %}
|
data/_includes/footer.html
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
+
{%- assign EMPTY = "" | split: "" %}
|
2
|
+
{%- assign footer_columns = site.data.footer.columns | default: EMPTY %}
|
3
|
+
{%- assign footer_copyright = site.data.footer.copyright %}
|
4
|
+
{%- assign footer_extra_line = site.data.footer.extra_line %}
|
5
|
+
{%- if footer_columns != EMPTY or footer_copyright or footer_extra_line %}
|
1
6
|
<footer id="footer">
|
7
|
+
{%- if footer_columns != EMPTY or footer_extra_line %}
|
2
8
|
<div class="container py-4 g-lg-5">
|
9
|
+
{%- if footer_columns != EMPTY %}
|
3
10
|
<div class="row g-4 d-flex justify-content-between">
|
4
11
|
{%- for column in site.data.footer.columns %}
|
5
12
|
{%- if column.type == "image" %}
|
@@ -32,19 +39,21 @@
|
|
32
39
|
{%- endif %}
|
33
40
|
{%- endfor %}
|
34
41
|
</div>
|
35
|
-
{%-
|
42
|
+
{%- endif %}
|
43
|
+
{%- if footer_extra_line %}
|
36
44
|
<div class="row">
|
37
45
|
<div class="text-center pt-4 mb-0">
|
38
|
-
{{
|
46
|
+
{{footer_extra_line | markdownify }}
|
39
47
|
</div>
|
40
48
|
</div>
|
41
|
-
{%-
|
49
|
+
{%- endif %}
|
42
50
|
</div>
|
51
|
+
{%- endif %}
|
43
52
|
<div class="copyright py-4">
|
44
53
|
<div class="container g-lg-5 d-flex justify-content-between flex-column flex-lg-row">
|
45
|
-
{%-
|
46
|
-
<div class="d-flex align-items-center mb-3 mb-lg-0 mx-auto mx-lg-0 text-center">{{
|
47
|
-
{%-
|
54
|
+
{%- if footer_copyright %}
|
55
|
+
<div class="d-flex align-items-center mb-3 mb-lg-0 mx-auto mx-lg-0 text-center">{{ footer_copyright | markdownify }}</div>
|
56
|
+
{%- endif %}
|
48
57
|
<div class="d-flex align-items-center mx-auto ms-lg-4 me-lg-0">
|
49
58
|
<a id="ett-logo" class="text-nowrap me-lg-5 me-xxlg-0" href="https://elixir-belgium.github.io/elixir-toolkit-theme">Built with
|
50
59
|
<svg data-name="ETT logo" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 77.2 77.12">
|
@@ -72,3 +81,4 @@
|
|
72
81
|
</div>
|
73
82
|
</div>
|
74
83
|
</footer>
|
84
|
+
{%- endif %}
|
@@ -1,21 +1,26 @@
|
|
1
|
-
{%-
|
1
|
+
{%- assign show_github_edit_button = site.theme_variables.github_buttons.edit_me | default: true %}
|
2
|
+
{%- assign show_github_history_button = site.theme_variables.github_buttons.history | default: true %}
|
3
|
+
{%- assign show_github_open_issue_button = site.theme_variables.github_buttons.open_issue | default: true %}
|
4
|
+
{%- if show_github_edit_button or show_github_history_button or show_github_open_issue_button %}
|
2
5
|
<div id="edit-me" class="btn-group">
|
3
|
-
{
|
4
|
-
{
|
5
|
-
|
6
|
-
{
|
7
|
-
<a role="button" data-bs-toggle="tooltip"
|
6
|
+
{% if show_github_edit_button %}
|
7
|
+
{% assign repo_url = page.github.repository_url | default: site.github.repository_url %}
|
8
|
+
{% assign repo_branch = page.github.branch | default: site.github.source.branch %}
|
9
|
+
{% assign file_path = page.github.file_path | default: page.path %}
|
10
|
+
<a role="button" data-bs-toggle="tooltip"
|
11
|
+
title="Propose changes to the content of this page on {{site.theme_variables.git_host | default: 'GitHub' }}"
|
12
|
+
href="{{repo_url}}/blob/{{repo_branch}}/{{file_path}}" class="btn btn-sm hover-primary text-primary"><i
|
13
|
+
class="fa-solid fa-pencil-alt"></i></a>
|
8
14
|
{%- endif %}
|
15
|
+
{%- if show_github_open_issue_button %}
|
16
|
+
<a role="button" data-bs-toggle="tooltip" title="Report an issue"
|
17
|
+
href="{{repo_url}}/issues/new?title={{'Issue on page: ' | url_encode }}{{page.title | url_encode }}&body={{'I would like to report an issue on the ' | url_encode }}{{page.title | url_encode }}{{' page at `'| url_encode }}{{page.url | url_encode }}{{'`. Description of the issue:' | url_encode }}"
|
18
|
+
class="btn btn-sm hover-primary text-primary"><i class="fa-solid fa-exclamation"></i></a>
|
9
19
|
{%- endif %}
|
10
|
-
{%- if
|
11
|
-
<a role="button" data-bs-toggle="tooltip" title="
|
12
|
-
|
13
|
-
|
14
|
-
{%- if page.custom_editme %}
|
15
|
-
<a role="button" data-bs-toggle="tooltip" title="Check out the history of this page" href="{{site.github.repository_url}}/commits/{{site.github.source.branch}}/{{page.custom_editme}}" class="btn btn-sm hover-primary text-primary"><i class="fa-solid fa-history"></i></a>
|
16
|
-
{%- else %}
|
17
|
-
<a role="button" data-bs-toggle="tooltip" title="Check out the history of this page" href="{{site.github.repository_url}}/commits/{{site.github.source.branch}}/{{page.path}}" class="btn btn-sm hover-primary text-primary"><i class="fa-solid fa-history"></i></a>
|
18
|
-
{%- endif %}
|
20
|
+
{%- if show_github_history_button %}
|
21
|
+
<a role="button" data-bs-toggle="tooltip" title="Check out the history of this page"
|
22
|
+
href="{{repo_url}}/commits/{{repo_branch}}/{{file_path}}" class="btn btn-sm hover-primary text-primary"><i
|
23
|
+
class="fa-solid fa-history"></i></a>
|
19
24
|
{%- endif %}
|
20
25
|
</div>
|
21
26
|
{%- endif %}
|
data/_includes/head.html
CHANGED
@@ -1,38 +1,42 @@
|
|
1
|
+
{%- capture keywords %}
|
2
|
+
{%- if page.related_pages %}
|
3
|
+
{%- for section in page.related_pages %}
|
4
|
+
{%- unless section[1].size == 0 %}
|
5
|
+
{%- for keywordstr in section[1] %}
|
6
|
+
{%- assign keywordpage = site.pages | where: "page_id", keywordstr | first %}
|
7
|
+
{%- if allkeywords %}
|
8
|
+
{%- assign allkeywords = allkeywords | append: ", " | append: keywordstr | append: ", " | append: keywordpage.title %}
|
9
|
+
{%- else %}
|
10
|
+
{%- assign allkeywords = allkeywords | append: keywordstr | append: ", " | append: keywordpage.title %}
|
11
|
+
{%- endif %}
|
12
|
+
{%- endfor %}
|
13
|
+
{%- endunless %}
|
14
|
+
{%- endfor %}{{allkeywords}}
|
15
|
+
{%- endif %}
|
16
|
+
{%- endcapture %}
|
17
|
+
{%- if page.type %}
|
18
|
+
{%- assign subtitle = page.type | replace: "_", " " %}
|
19
|
+
{%- endif %}
|
20
|
+
{%- capture title %}{% if page.url == "/" %}{{site.title}}{% elsif page.title %}{% if subtitle %}{{subtitle}}: {% endif %}{{ page.title }} | {{ site.title }}{%- else %}{{ site.title }}{% endif %}{% endcapture %}
|
21
|
+
{%- capture description %}{% if page.url == "/" %}{{site.description}}{% elsif page.description %}{{ page.description | strip_html | replace: '\n', ' ' | truncatewords: 30, '...' }}{% elsif page.summary %}{{ page.summary | strip_html | replace: '\n', ' ' | truncatewords: 30, '...' }}{% else %}{{ page.content | strip_html | replace: '\n', ' ' | truncatewords: 30, '...' }}{% endif %}{% endcapture %}
|
1
22
|
<head>
|
2
23
|
<meta charset="utf-8">
|
3
24
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
25
|
+
<title>{{title}}</title>
|
4
26
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
-
<meta name="description" content="{
|
6
|
-
{%- capture keywords %}
|
7
|
-
{%- if page.related_pages %}
|
8
|
-
{%- for section in page.related_pages %}
|
9
|
-
{%- unless section[1].size == 0 %}
|
10
|
-
{%- for keywordstr in section[1] %}
|
11
|
-
{%- assign keywordpage = site.pages | where: "page_id", keywordstr | first %}
|
12
|
-
{%- if allkeywords %}
|
13
|
-
{%- assign allkeywords = allkeywords | append: ", " | append: keywordstr | append: ", " | append: keywordpage.title %}
|
14
|
-
{%- else %}
|
15
|
-
{%- assign allkeywords = allkeywords | append: keywordstr | append: ", " | append: keywordpage.title %}
|
16
|
-
{%- endif %}
|
17
|
-
{%- endfor %}
|
18
|
-
{%- endunless %}
|
19
|
-
{%- endfor %}{{allkeywords}}
|
20
|
-
{%- endif %}
|
21
|
-
{%- endcapture %}
|
27
|
+
<meta name="description" content="{{description}}">
|
22
28
|
<meta name="keywords" content="{{keywords}}">
|
23
|
-
<meta property="og:title" content="{{
|
24
|
-
<meta property="og:description" content="{{
|
29
|
+
<meta property="og:title" content="{{title}}" />
|
30
|
+
<meta property="og:description" content="{{description}}" />
|
31
|
+
<meta property="og:type" content="article">
|
32
|
+
<meta property="og:url" content="{{ page.url | absolute_url }}">
|
25
33
|
<meta property="og:image" content="//{{site.github.url | remove: 'https://' | remove: 'http://'}}/assets/img/apple-touch-icon.png" />
|
26
|
-
<meta name="apple-mobile-web-app-title" content="{{
|
34
|
+
<meta name="apple-mobile-web-app-title" content="{{title}}">
|
27
35
|
<meta name="msapplication-TileColor" content="#{{site.theme_variables.theme_color | default: 0d6efd }}">
|
28
36
|
<meta name="theme-color" content="#{{site.theme_variables.theme_color | default: 0d6efd }}">
|
29
37
|
{%- if page.no_robots %}
|
30
38
|
<meta name="robots" content="noindex" />
|
31
39
|
{%- endif %}
|
32
|
-
{%- if page.type %}
|
33
|
-
{%- assign subtitle = page.type | replace: "_", " " | capitalize %}
|
34
|
-
{%- endif %}
|
35
|
-
<title>{% if page.title %}{% if subtitle %}{{subtitle}}: {% endif %}{{ page.title }} | {{ site.title }}{%- else %}{{ site.title }}{% endif %}</title>
|
36
40
|
<!-- Syntax highlighting -->
|
37
41
|
<link rel="stylesheet" href="{{ 'assets/css/syntax.css' | relative_url }}">
|
38
42
|
<!-- Country flags -->
|
@@ -69,11 +73,12 @@
|
|
69
73
|
<script type="text/javascript" charset="utf8" src="{{ 'assets/js/dataTables.dateTime.min.js' | relative_url }}"></script>
|
70
74
|
<script type="text/javascript" charset="utf8" src="{{ 'assets/js/searchBuilder.bootstrap5.min.js' | relative_url }}"></script>
|
71
75
|
{%- endif %}
|
76
|
+
{%- assign pagelength = site.theme_variables.datatables.pagelength | default: 10 %}
|
72
77
|
<script type="text/javascript">
|
73
78
|
$(document).ready(function () {
|
74
79
|
$('table.display').each(function() {
|
75
80
|
$(this).DataTable({
|
76
|
-
lengthMenu: [[
|
81
|
+
lengthMenu: [[{{ pagelength }}, {{ pagelength | times: 2 }}, {{ pagelength | times: 5 }}, {{ pagelength | times: 10 }}, -1], [{{ pagelength }}, {{ pagelength | times: 2 }}, {{ pagelength | times: 5 }}, {{ pagelength | times: 10 }}, "All"]],
|
77
82
|
stateSave: true,
|
78
83
|
searching: true,
|
79
84
|
{%- if site.theme_variables.datatables.searchbuilder %}
|
@@ -82,13 +87,13 @@
|
|
82
87
|
},
|
83
88
|
{%- endif %}
|
84
89
|
info: true,
|
85
|
-
pageLength:
|
90
|
+
pageLength: {{ pagelength }},
|
86
91
|
language: {
|
87
92
|
searchPlaceholder: "Type here..."
|
88
93
|
},
|
89
94
|
"drawCallback": function ( settings ){
|
90
95
|
var tableId = settings.nTable.id;
|
91
|
-
if(settings.fnRecordsTotal() <
|
96
|
+
if(settings.fnRecordsTotal() < {{ pagelength }}){
|
92
97
|
$('#'+tableId+'_wrapper .dt-length').hide();
|
93
98
|
$('#'+tableId+'_wrapper .dt-paging').hide();
|
94
99
|
$('#'+tableId+'_wrapper .dt-search').hide();
|
@@ -101,6 +106,7 @@
|
|
101
106
|
});
|
102
107
|
</script>
|
103
108
|
{%- endif %}
|
109
|
+
<script src="{{ 'assets/js/custom.js' | relative_url }}?{{site.time | date: '%s'}}"></script>
|
104
110
|
<!-- favicon -->
|
105
111
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ 'assets/img/apple-touch-icon.png' | relative_url }}">
|
106
112
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ 'assets/img/favicon-32x32.png' | relative_url }}">
|
data/_includes/news.html
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
{%- for new in news reversed%}
|
9
9
|
<li>
|
10
10
|
<span class="title mb-1">{{ new.name | escape }}</span>
|
11
|
-
<p class="text-muted"><i class="far fa-calendar me-2"></i><time>{{ new.date | date_to_long_string }}</time>{% if new.linked_pr %} - <i class="fa-solid fa-code-branch me-2"></i><a href="{{ site.github.repository_url | append: '/pull/' | append: new.linked_pr }}">{{new.linked_pr }}</a>{% endif %}</p>
|
11
|
+
<p class="text-muted"><i class="far fa-calendar me-2"></i><time>{{ new.date | date_to_long_string }}</time>{% if new.linked_pr %} - <i class="fa-solid fa-code-branch me-2"></i><a href="{{ site.github.repository_url | append: '/pull/' | append: new.linked_pr }}"><span>{{new.linked_pr }}</span></a>{% endif %}</p>
|
12
12
|
{%- if new.description %}
|
13
13
|
{%- assign word_count = new.description | split: " " | size %}
|
14
14
|
{%- if include.truncate == true and word_count > 40 %}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{%- assign sidebar = site.data.sidebars[include.sidebar]['subitems'] -%}
|
2
2
|
{%- for sections in sidebar %}
|
3
|
-
{%- assign section = sections.title |
|
3
|
+
{%- assign section = sections.title | replace: " ", "_" %}
|
4
4
|
{%- assign section_pages = site.pages | where:"type", section | where_exp: "item", "item.search_exclude != true" | where_exp: "item", "item.page_id != nil" %}
|
5
5
|
{%- unless section_pages.size == 0 %}
|
6
6
|
<h2>{{sections.title}}</h2>
|
@@ -23,7 +23,7 @@
|
|
23
23
|
<img src="{{page_hit.type_img | relative_url}}" class="type-icon me-2" alt="{{page_hit.type}} icon">
|
24
24
|
{%- endif %}
|
25
25
|
{%- if page_hit.type %}
|
26
|
-
<span class=""><small>{{page_hit.type | replace: "_", " "
|
26
|
+
<span class=""><small>{{page_hit.type | replace: "_", " " }}</small></span>
|
27
27
|
{%- endif %}
|
28
28
|
</div>
|
29
29
|
<a class="stretched-link section-title" aria-label="Go to the {{page_hit.title}} page" href="{{ page_hit.url | relative_url }}">
|
@@ -39,6 +39,11 @@
|
|
39
39
|
<thead>
|
40
40
|
<tr class="text-nowrap">
|
41
41
|
<th>Tool or resource
|
42
|
+
{%- if include.tag %}
|
43
|
+
<a data-bs-toggle="tooltip" data-bs-original-title="This is a curated subset of (and not a comprehensive list of all) tools and resources on this topic - you'll typically find only the tools or resources referenced on this page.">
|
44
|
+
<i class="fa-solid fa-info-circle"></i>
|
45
|
+
</a>
|
46
|
+
{%- endif %}
|
42
47
|
</th>
|
43
48
|
<th>Description</th>
|
44
49
|
<th>Related pages</th>
|
@@ -87,7 +92,7 @@
|
|
87
92
|
{%- for tag in tool.related_pages %}
|
88
93
|
{%- unless tag == page.page_id %}
|
89
94
|
{%- assign related_page = site.pages | where:"page_id",tag | first %}
|
90
|
-
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' '
|
95
|
+
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' ' }}"><span class="badge default-badge">{{ related_page.title | truncate: 25 }}</span></a>
|
91
96
|
{%- endunless %}
|
92
97
|
{%- endfor %}
|
93
98
|
{%- endcapture %}
|
@@ -142,9 +147,6 @@
|
|
142
147
|
<thead>
|
143
148
|
<tr class="text-nowrap">
|
144
149
|
<th>Tool or resource
|
145
|
-
<a data-bs-toggle="tooltip" data-bs-original-title="This is a curated list which means that not all tools or resources that exist for this topic are listed here. This is mainly because we do not intend to be a registry. In most cases you will only find back the tools or resources that are mentioned in this page.">
|
146
|
-
<i class="fa-solid fa-info-circle"></i>
|
147
|
-
</a>
|
148
150
|
</th>
|
149
151
|
<th>Description</th>
|
150
152
|
<th>Related pages</th>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
{%- for tag in section[1] %}
|
48
48
|
{%- unless tag == page.page_id %}
|
49
49
|
{%- assign related_page = site.pages | where:"page_id",tag | first %}
|
50
|
-
<a class="nohover" href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' '
|
50
|
+
<a class="nohover" href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' ' }}"><span class="badge default-badge">{{ related_page.title | truncate: 25 }}</span></a>
|
51
51
|
{%- endunless %}
|
52
52
|
{%- endfor %}
|
53
53
|
{%- endunless %}
|
@@ -126,7 +126,7 @@
|
|
126
126
|
{%- for tag in tool.related_pages %}
|
127
127
|
{%- unless tag == page.page_id %}
|
128
128
|
{%- assign related_page = site.pages | where:"page_id",tag | first %}
|
129
|
-
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' '
|
129
|
+
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' ' }}"><span class="badge default-badge">{{ related_page.title | truncate: 25 }}</span></a>
|
130
130
|
{%- endunless %}
|
131
131
|
{%- endfor %}
|
132
132
|
{%- endcapture %}
|
@@ -37,7 +37,7 @@
|
|
37
37
|
<div class="col">
|
38
38
|
<div class="input-group">
|
39
39
|
<span class="input-group-text" id="search-label-tiles"><i class="fa-solid fa-magnifying-glass"></i></span>
|
40
|
-
<input type="text" id="title-search" class="form-control" onkeyup="StartSearch();" placeholder="Find your page..." aria-label="{{page.type | replace: '_', ' '
|
40
|
+
<input type="text" id="title-search" class="form-control" onkeyup="StartSearch();" placeholder="Find your page..." aria-label="{{page.type | replace: '_', ' ' }}" aria-describedby="search-label-tiles">
|
41
41
|
<button class="btn btn-primary" title="Button to clear search" type="button" id="clearsearch">
|
42
42
|
<i class="fa-solid fa-backspace"></i>
|
43
43
|
</button>
|
@@ -90,7 +90,7 @@
|
|
90
90
|
<img src="{{current_page.type_img | relative_url}}" class="type-icon me-2" alt="{{current_page.type}} icon">
|
91
91
|
{%- endif %}
|
92
92
|
{%- if current_page.type %}
|
93
|
-
<span class=""><small>{{current_page.type | replace: "_", " "
|
93
|
+
<span class=""><small>{{current_page.type | replace: "_", " " }}</small></span>
|
94
94
|
{%- endif %}
|
95
95
|
</div>
|
96
96
|
<a class="stretched-link section-title" aria-label="Go to the {{current_page.title}} page" href="{{ current_page.url | relative_url }}">
|
data/_includes/topnav.html
CHANGED
@@ -53,7 +53,22 @@
|
|
53
53
|
{%- endif %}
|
54
54
|
{%- if site.theme_variables.topnav.twitter %}
|
55
55
|
<li class="nav-item">
|
56
|
-
<a class="nav-link ps-2 d-flex align-items-center" href="{{site.theme_variables.topnav.twitter}}"><i class="fa-brands fa-x-twitter me-2"></i>Twitter</a>
|
56
|
+
<a class="nav-link ps-2 d-flex align-items-center" href="{{site.theme_variables.topnav.twitter}}"><i class="fa-brands fa-x-twitter me-2"></i>X-Twitter</a>
|
57
|
+
</li>
|
58
|
+
{%- endif %}
|
59
|
+
{%- if site.theme_variables.topnav.bluesky %}
|
60
|
+
<li class="nav-item">
|
61
|
+
<a class="nav-link ps-2 d-flex align-items-center" href="{{site.theme_variables.topnav.bluesky}}"><i class="fa-brands fa-bluesky me-2"></i>Bluesky</a>
|
62
|
+
</li>
|
63
|
+
{%- endif %}
|
64
|
+
{%- if site.theme_variables.topnav.fosstodon %}
|
65
|
+
<li class="nav-item">
|
66
|
+
<a class="nav-link ps-2 d-flex align-items-center" href="{{site.theme_variables.topnav.fosstodon}}"><i class="fa-brands fa-mastodon me-2"></i>FOSStodon</a>
|
67
|
+
</li>
|
68
|
+
{%- endif %}
|
69
|
+
{%- if site.theme_variables.topnav.linkedin %}
|
70
|
+
<li class="nav-item">
|
71
|
+
<a class="nav-link ps-2 d-flex align-items-center" href="{{site.theme_variables.topnav.linkedin}}"><i class="fa-brands fa-linkedin me-2"></i>LinkedIn</a>
|
57
72
|
</li>
|
58
73
|
{%- endif %}
|
59
74
|
{%- if site.theme_variables.topnav.github or site.theme_variables.topnav.github == nil %}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<thead>
|
5
5
|
<tr class="text-nowrap">
|
6
6
|
<th>Name
|
7
|
-
<a data-bs-toggle="tooltip" data-bs-original-title="This is a curated
|
7
|
+
<a data-bs-toggle="tooltip" data-bs-original-title="This is a curated subset of (and not a comprehensive list of all) training resources on relevant topics - you'll typically find only training resources referenced in pages of this website.">
|
8
8
|
<i class="fa-solid fa-info-circle"></i>
|
9
9
|
</a>
|
10
10
|
</th>
|
data/_layouts/page.html
CHANGED
@@ -3,9 +3,12 @@ layout: default
|
|
3
3
|
---
|
4
4
|
<main id="main" class="order-1{%- if page.toc or page.toc == nil or page.page_img %} add-grid{% endif %}">
|
5
5
|
<div id="intro">
|
6
|
+
{%- if site.theme_variables.breadcrumb %}
|
7
|
+
{% include breadcrumb.html %}
|
8
|
+
{%- endif %}
|
6
9
|
{%- if page.title %}
|
7
|
-
{%- if page.type %}
|
8
|
-
{%- assign subtitle = page.type | replace: "_", " "
|
10
|
+
{%- if page.type and site.theme_variables.breadcrumb != true %}
|
11
|
+
{%- assign subtitle = page.type | replace: "_", " " %}
|
9
12
|
<h1 class="has-subtitle order-1 order-md-0"><span class="d-block text-secondary fs-4 ff-body">{{subtitle}}</span><span class="visually-hidden">:</span> {{ page.title }}
|
10
13
|
{%- else %}
|
11
14
|
<h1>{{ page.title }}
|
@@ -34,12 +37,11 @@ layout: default
|
|
34
37
|
{%- endif %}
|
35
38
|
{% include affiliation-tiles-page.html %}
|
36
39
|
{% include contributor-minitiles-page.html %}
|
40
|
+
{% include citation-page.html %}
|
37
41
|
{%- if site.theme_variables.github_buttons.position == "bottom" %}
|
38
42
|
<div id="github-buttons-wrapper" class="d-flex mt-5">
|
39
|
-
|
43
|
+
{% include github-buttons.html %}
|
40
44
|
</div>
|
41
45
|
{%- endif %}
|
42
46
|
</div>
|
43
47
|
</main>
|
44
|
-
|
45
|
-
|
data/assets/css/main.scss
CHANGED
@@ -10,9 +10,14 @@ permalink: assets/css/main
|
|
10
10
|
@import "bootstrap/functions";
|
11
11
|
$popover-max-width: 12em;
|
12
12
|
$enable-caret: false;
|
13
|
+
$breadcrumb-font-size: 0.85rem;
|
14
|
+
$breadcrumb-divider: '>';
|
15
|
+
$breadcrumb-margin-bottom: 0;
|
13
16
|
$h3-font-size: 1rem * 1.6 !default;
|
14
17
|
$h2-font-size: 1rem * 2.1 !default;
|
15
18
|
$h1-font-size: 1rem * 3.3 !default;
|
19
|
+
$navbar-light-toggler-border-color: transparent;
|
20
|
+
$navbar-dark-toggler-border-color: transparent;
|
16
21
|
$card-border-width: 0;
|
17
22
|
$custom-container-max-widths: (
|
18
23
|
xxxl: 1700px
|
@@ -93,33 +98,34 @@ body img {
|
|
93
98
|
font-family: $font-family-theme !important;
|
94
99
|
}
|
95
100
|
|
101
|
+
// Add external link icon to all urls
|
102
|
+
#content a:is([href^="http"], [href^="//"]):not([href^="{{ site.url }}"]):not([href^="mailto:"]):not([href^="tel:"]):not(:has(> span:only-child)):not(:has(> img)):not(.btn):not(.no-ext-icon)::after {
|
103
|
+
content: "\f35d";
|
104
|
+
font-family: "Font Awesome 6 Free";
|
105
|
+
font-weight: 900;
|
106
|
+
display: inline-block;
|
107
|
+
margin-left: .4em;
|
108
|
+
font-size: .60em;
|
109
|
+
line-height: 1;
|
110
|
+
text-rendering: auto;
|
111
|
+
-webkit-font-smoothing: antialiased;
|
112
|
+
-moz-osx-font-smoothing: grayscale;
|
113
|
+
pointer-events: none;
|
114
|
+
vertical-align: middle;
|
115
|
+
}
|
116
|
+
|
96
117
|
/*-----Layout-----*/
|
97
118
|
|
98
119
|
#main {
|
99
120
|
grid-area: main;
|
100
121
|
}
|
101
122
|
|
102
|
-
|
103
|
-
|
104
|
-
display: grid;
|
105
|
-
grid-template-areas:
|
106
|
-
"intro"
|
107
|
-
"toc"
|
108
|
-
"content";
|
109
|
-
grid-template-rows: auto auto 1fr;
|
110
|
-
}
|
123
|
+
#intro {
|
124
|
+
grid-area: intro;
|
111
125
|
}
|
112
|
-
@include media-breakpoint-up(xl) {
|
113
|
-
#main {
|
114
|
-
grid-template-areas:
|
115
|
-
"intro toc"
|
116
|
-
"content toc";
|
117
|
-
grid-template-rows: auto 1fr;
|
118
|
-
}
|
119
126
|
|
120
|
-
|
121
|
-
|
122
|
-
}
|
127
|
+
#sidebar {
|
128
|
+
grid-area: sidebar;
|
123
129
|
}
|
124
130
|
|
125
131
|
#toc {
|
@@ -136,8 +142,36 @@ body img {
|
|
136
142
|
}
|
137
143
|
}
|
138
144
|
|
145
|
+
@include media-breakpoint-up(md) {
|
146
|
+
#main {
|
147
|
+
display: grid;
|
148
|
+
grid-template-areas:
|
149
|
+
"intro"
|
150
|
+
"toc"
|
151
|
+
"content";
|
152
|
+
grid-template-rows: auto auto 1fr;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
|
157
|
+
@include media-breakpoint-up(lg) {
|
158
|
+
#layout {
|
159
|
+
display: grid;
|
160
|
+
grid-template-areas: "sidebar main";
|
161
|
+
grid-template-columns: 3fr 9fr;
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
139
165
|
@include media-breakpoint-up(xl) {
|
140
|
-
#
|
166
|
+
#main.add-grid {
|
167
|
+
grid-template-areas:
|
168
|
+
"intro toc"
|
169
|
+
"content toc";
|
170
|
+
grid-template-rows: auto 1fr;
|
171
|
+
grid-template-columns: 5fr 2fr;
|
172
|
+
}
|
173
|
+
|
174
|
+
#main.add-grid #toc {
|
141
175
|
top: $spacer * 3;
|
142
176
|
right: 0;
|
143
177
|
z-index: 2;
|
@@ -145,15 +179,12 @@ body img {
|
|
145
179
|
overflow-y: auto;
|
146
180
|
margin-left: $spacer * 3;
|
147
181
|
}
|
148
|
-
}
|
149
182
|
|
150
|
-
#
|
151
|
-
|
183
|
+
#layout {
|
184
|
+
grid-template-columns: 2fr 9fr;
|
185
|
+
}
|
152
186
|
}
|
153
187
|
|
154
|
-
#sidebar {
|
155
|
-
grid-area: sidebar;
|
156
|
-
}
|
157
188
|
|
158
189
|
#content {
|
159
190
|
grid-area: content;
|
@@ -164,19 +195,6 @@ body img {
|
|
164
195
|
}
|
165
196
|
}
|
166
197
|
|
167
|
-
@include media-breakpoint-up(lg) {
|
168
|
-
#layout {
|
169
|
-
display: grid;
|
170
|
-
grid-template-areas: "sidebar main";
|
171
|
-
grid-template-columns: 3fr 9fr;
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
175
|
-
@include media-breakpoint-up(xl) {
|
176
|
-
#layout {
|
177
|
-
grid-template-columns: 2fr 9fr;
|
178
|
-
}
|
179
|
-
}
|
180
198
|
|
181
199
|
/*-----Blockquote-----*/
|
182
200
|
|
data/assets/js/custom.js
ADDED
File without changes
|
data/assets/js/toc.js
CHANGED
@@ -5,85 +5,114 @@
|
|
5
5
|
title: '<i>Jump to...</i>',
|
6
6
|
minimumHeaders: 3,
|
7
7
|
headers: 'h1, h2, h3, h4, h5, h6',
|
8
|
-
listType: 'ol',
|
9
|
-
showEffect: 'show',
|
10
|
-
showSpeed: 'slow',
|
8
|
+
listType: 'ol', // values: [ol|ul]
|
9
|
+
showEffect: 'show', // values: [show|slideDown|fadeIn|none]
|
10
|
+
showSpeed: 'slow', // set to 0 to deactivate effect
|
11
11
|
classes: {
|
12
12
|
list: '',
|
13
13
|
item: '',
|
14
14
|
link: '',
|
15
15
|
toc: ''
|
16
16
|
}
|
17
|
-
}
|
18
|
-
|
17
|
+
};
|
18
|
+
|
19
|
+
// Do not mutate defaults; merge into a fresh object
|
20
|
+
var settings = $.extend({}, defaults, options);
|
19
21
|
|
22
|
+
// Encode fragment identifiers safely (e.g., handle !'()*)
|
20
23
|
function fixedEncodeURIComponent(str) {
|
21
24
|
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
|
22
25
|
return '%' + c.charCodeAt(0).toString(16);
|
23
26
|
});
|
24
27
|
}
|
25
28
|
|
29
|
+
// Build an <a> for a given header; ensure it has an id
|
26
30
|
function createLink(header) {
|
27
|
-
var innerText = header.textContent || header.innerText;
|
28
|
-
|
31
|
+
var innerText = header.textContent || header.innerText || '';
|
32
|
+
if (!header.id) {
|
33
|
+
header.id = innerText.trim()
|
34
|
+
? innerText.trim().replace(/\s+/g, '-').toLowerCase()
|
35
|
+
: ('heading-' + Math.random().toString(36).slice(2, 8)); // fallback id
|
36
|
+
}
|
37
|
+
return "<a class='" + settings.classes.link + "' href='#" +
|
38
|
+
fixedEncodeURIComponent(header.id) + "'>" + innerText + "</a>";
|
29
39
|
}
|
30
40
|
|
41
|
+
// Collect headers and ensure they have IDs (filter out those that still don't)
|
31
42
|
var headers = $(settings.headers).filter(function () {
|
32
|
-
// Ensure headers have IDs
|
33
43
|
if (!this.id) {
|
34
|
-
|
44
|
+
var text = $(this).text().trim();
|
45
|
+
this.id = text ? text.replace(/\s+/g, '-').toLowerCase() : '';
|
35
46
|
}
|
36
47
|
return this.id;
|
37
48
|
});
|
38
49
|
|
39
|
-
var output = $(this);
|
50
|
+
var output = $(this); // the TOC container (e.g., #toc-contents)
|
51
|
+
var $main = $('#main');
|
40
52
|
|
41
|
-
//
|
42
|
-
if (
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
return; // Exit early if there are no headers
|
47
|
-
}
|
53
|
+
// Prevents calling get_level(headers[0]) on undefined and collapses layout/space.
|
54
|
+
if (!headers.length || headers.length < settings.minimumHeaders || !output.length) {
|
55
|
+
$main.removeClass('add-grid'); // collapse layout (your existing side-effect + our flag)
|
56
|
+
output.empty().hide(); // hide/clear inner TOC container
|
57
|
+
return;
|
48
58
|
}
|
49
59
|
|
50
|
-
|
51
|
-
|
52
|
-
}
|
60
|
+
// If speed is 0, disable visual effect
|
61
|
+
if (settings.showSpeed === 0) settings.showEffect = 'none';
|
53
62
|
|
54
|
-
|
63
|
+
// Optional extra class on the container
|
64
|
+
output.addClass(settings.classes.toc);
|
55
65
|
|
56
66
|
var render = {
|
57
|
-
show:
|
67
|
+
show: function () { output.hide().html(html).show(settings.showSpeed); },
|
58
68
|
slideDown: function () { output.hide().html(html).slideDown(settings.showSpeed); },
|
59
|
-
fadeIn:
|
60
|
-
none:
|
69
|
+
fadeIn: function () { output.hide().html(html).fadeIn(settings.showSpeed); },
|
70
|
+
none: function () { output.html(html); }
|
71
|
+
};
|
72
|
+
|
73
|
+
// Resilient parser of header levels (H1..H6 → 1..6). Returns NaN if invalid.
|
74
|
+
var get_level = function (ele) {
|
75
|
+
return (ele && ele.nodeName) ? parseInt(ele.nodeName.replace(/H/i, ''), 10) : NaN;
|
61
76
|
};
|
62
77
|
|
63
|
-
|
64
|
-
var
|
65
|
-
|
78
|
+
// Validate first level before proceeding
|
79
|
+
var level = get_level(headers[0]);
|
80
|
+
if (!isFinite(level)) {
|
81
|
+
output.hide().empty();
|
82
|
+
return;
|
83
|
+
}
|
84
|
+
|
85
|
+
var this_level;
|
66
86
|
var html = settings.title + " <" + settings.listType + " class=\"" + settings.classes.list + "\">";
|
67
87
|
|
88
|
+
// Build nested list based on header levels
|
68
89
|
headers.each(function (_, header) {
|
69
90
|
this_level = get_level(header);
|
70
|
-
if (this_level
|
91
|
+
if (!isFinite(this_level)) return; // skip anything unexpected
|
92
|
+
|
93
|
+
if (this_level === level) { // same level; same indent
|
71
94
|
html += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
|
72
|
-
} else if (this_level <= level) { //
|
95
|
+
} else if (this_level <= level) { // moving up; close lists
|
73
96
|
for (var i = this_level; i < level; i++) {
|
74
|
-
html += "</li></" + settings.listType + ">"
|
97
|
+
html += "</li></" + settings.listType + ">";
|
75
98
|
}
|
76
99
|
html += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
|
77
|
-
} else
|
78
|
-
for (
|
100
|
+
} else { // moving down; open nested lists
|
101
|
+
for (var j = this_level; j > level; j--) {
|
79
102
|
html += "<" + settings.listType + " class=\"" + settings.classes.list + "\">" +
|
80
|
-
|
103
|
+
"<li class=\"" + settings.classes.item + "\">";
|
81
104
|
}
|
82
105
|
html += createLink(header);
|
83
106
|
}
|
84
|
-
level = this_level; // update for
|
107
|
+
level = this_level; // update for next header
|
85
108
|
});
|
109
|
+
|
86
110
|
html += "</" + settings.listType + ">";
|
87
|
-
|
111
|
+
|
112
|
+
// Render with the selected effect
|
113
|
+
(render[settings.showEffect] || render.none)();
|
114
|
+
|
115
|
+
// Add grid + flag on #main (if your layout uses it), and flag #toc so CSS applies margin.
|
116
|
+
$main.addClass('add-grid');
|
88
117
|
};
|
89
118
|
})(jQuery);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elixir-toolkit-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bedroesb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-08-22 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: 0.1.
|
33
|
+
version: 0.1.10
|
34
34
|
type: :runtime
|
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: 0.1.
|
40
|
+
version: 0.1.10
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,7 +79,9 @@ files:
|
|
79
79
|
- _includes/affiliation-tiles-page.html
|
80
80
|
- _includes/affiliation-tiles-selection.html
|
81
81
|
- _includes/banner.html
|
82
|
+
- _includes/breadcrumb.html
|
82
83
|
- _includes/callout.html
|
84
|
+
- _includes/citation-page.html
|
83
85
|
- _includes/contributor-carousel-selection.html
|
84
86
|
- _includes/contributor-minitiles-page.html
|
85
87
|
- _includes/contributor-tiles-all.html
|
@@ -501,6 +503,7 @@ files:
|
|
501
503
|
- assets/js/bootstrap.bundle.min.js
|
502
504
|
- assets/js/bootstrap.bundle.min.js.map
|
503
505
|
- assets/js/clipboard.min.js
|
506
|
+
- assets/js/custom.js
|
504
507
|
- assets/js/dataTables.bootstrap5.min.js
|
505
508
|
- assets/js/dataTables.dateTime.min.js
|
506
509
|
- assets/js/dataTables.searchBuilder.min.js
|