datalog-theme 0.8.0 → 0.9.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 +4 -4
- data/CHANGELOG.md +84 -0
- data/CITATION.cff +2 -2
- data/README.md +4 -2
- data/_data/i18n/en.yml +321 -0
- data/_data/i18n/es.yml +321 -0
- data/_data/i18n/pt.yml +321 -0
- data/_data/js_manifest.json +16 -0
- data/_includes/components/academic-dashboard.html +4 -4
- data/_includes/components/author-bio.html +21 -11
- data/_includes/components/author-list.html +32 -0
- data/_includes/components/breadcrumbs.html +6 -4
- data/_includes/components/citation-tools.html +18 -58
- data/_includes/components/comments-thread.html +90 -0
- data/_includes/components/contact-form.html +120 -0
- data/_includes/components/correction-report.html +82 -0
- data/_includes/components/enhanced-toc.html +6 -7
- data/_includes/components/hero.html +1 -1
- data/_includes/components/license-link.html +13 -0
- data/_includes/components/license-notice.html +28 -0
- data/_includes/components/moderation-inbox.html +139 -0
- data/_includes/components/post-hero.html +2 -2
- data/_includes/components/reactions.html +49 -0
- data/_includes/components/reading-list.html +34 -0
- data/_includes/components/reading-mode-toggle.html +67 -0
- data/_includes/components/reading-state-bookmark.html +27 -0
- data/_includes/components/reading-state-panel.html +62 -0
- data/_includes/components/reading-state-resume.html +17 -0
- data/_includes/components/reproducibility.html +61 -0
- data/_includes/components/responsive-image.html +3 -3
- data/_includes/components/revision-history.html +39 -0
- data/_includes/components/revision-notice.html +35 -0
- data/_includes/components/series-nav.html +64 -0
- data/_includes/components/subscribe-form.html +88 -0
- data/_includes/components/subscription-manage.html +69 -0
- data/_includes/components/visualization-card.html +1 -1
- data/_includes/components/webmentions.html +48 -0
- data/_includes/csp-meta.html +21 -1
- data/_includes/footer/nav-column.html +1 -1
- data/_includes/footer.html +5 -2
- data/_includes/head.html +64 -52
- data/_includes/header/navigation.html +2 -2
- data/_includes/header.html +1 -1
- data/_includes/layouts/default/article.html +6 -8
- data/_includes/meta/dynamic-services-config.html +14 -0
- data/_includes/meta/math-config.html +12 -5
- data/_includes/meta/person-json.html +27 -0
- data/_includes/meta/publisher.html +45 -0
- data/_includes/meta/schema.html +84 -48
- data/_includes/meta/scholarly.html +122 -0
- data/_includes/meta/scripts-loader.html +2 -0
- data/_includes/meta/webmention-discovery.html +14 -0
- data/_includes/post/related-posts.html +1 -1
- data/_includes/scripts.html +57 -0
- data/_layouts/dataset.html +5 -4
- data/_layouts/default.html +1 -1
- data/_layouts/home.html +2 -2
- data/_layouts/notebook.html +1 -1
- data/_layouts/package.html +8 -7
- data/_layouts/page.html +15 -0
- data/_layouts/portfolio.html +1 -1
- data/_layouts/post.html +94 -25
- data/_layouts/project.html +5 -5
- data/_layouts/research.html +27 -75
- data/_plugins/authors.rb +151 -0
- data/_plugins/citation_exports.rb +93 -0
- data/_plugins/config_validator.rb +223 -20
- data/_plugins/critical_css_check.rb +42 -0
- data/_plugins/i18n.rb +6 -4
- data/_plugins/image_optimizer.rb +240 -186
- data/_plugins/licenses.rb +147 -0
- data/_plugins/math_preprocessor.rb +55 -11
- data/_plugins/references.rb +260 -0
- data/_plugins/reproducibility.rb +167 -0
- data/_plugins/responsive_content.rb +40 -0
- data/_plugins/revisions.rb +102 -0
- data/_plugins/scholarly.rb +55 -0
- data/_plugins/series.rb +104 -0
- data/_plugins/statements.rb +87 -0
- data/_sass/_base.scss +13 -1
- data/_sass/_comments-thread.scss +159 -0
- data/_sass/_layout.scss +402 -1
- data/_sass/_mathematical.scss +38 -1
- data/_sass/_moderation.scss +222 -0
- data/_sass/_post-components.scss +4 -2
- data/_sass/_print.scss +299 -0
- data/_sass/_reactions.scss +89 -0
- data/_sass/_reading-state.scss +290 -0
- data/_sass/_service-forms.scss +204 -0
- data/_sass/_subscriptions.scss +140 -0
- data/_sass/_syntax-highlighting.scss +3 -3
- data/_sass/_theme.scss +11 -0
- data/_sass/_typography.scss +116 -0
- data/_sass/_utilities.scss +5 -0
- data/_sass/_variables.scss +6 -0
- data/_sass/_webmentions.scss +125 -0
- data/assets/js/dist/academic.js +1 -1
- data/assets/js/dist/analytics-dashboard.js +1 -1
- data/assets/js/dist/chunks/chunk-PATLC23F.js +1 -0
- data/assets/js/dist/chunks/chunk-VZ5WKQVA.js +1 -0
- data/assets/js/dist/chunks/chunk-WIRUK3OZ.js +1 -0
- data/assets/js/dist/comments.js +2 -0
- data/assets/js/dist/contact.js +1 -0
- data/assets/js/dist/core.js +1 -1
- data/assets/js/dist/corrections.js +1 -0
- data/assets/js/dist/loader.js +1 -1
- data/assets/js/dist/math.js +1 -1
- data/assets/js/dist/moderation.js +1 -0
- data/assets/js/dist/notebook.js +1 -1
- data/assets/js/dist/reactions.js +1 -0
- data/assets/js/dist/reading-state.js +1 -0
- data/assets/js/dist/search.js +1 -1
- data/assets/js/dist/sources.json +52 -0
- data/assets/js/dist/subscriptions.js +1 -0
- data/assets/js/dist/visualizations.js +2 -2
- data/assets/js/dist/webmentions.js +1 -0
- data/assets/js/loader.js +34 -0
- data/datalog-theme.gemspec +1 -2
- data/lib/datalog/cli.rb +9 -1
- data/lib/datalog/critical_css.rb +168 -0
- data/lib/datalog/plugins/comments.rb +33 -3
- data/lib/datalog/theme/installed_files.rb +113 -0
- data/lib/datalog/theme/repository_checkout.rb +6 -2
- data/lib/datalog/theme/version.rb +5 -1
- data/lib/datalog-theme.rb +1 -0
- metadata +60 -23
- data/assets/js/dist/chunks/chunk-225H5YXE.js +0 -1
data/_layouts/package.html
CHANGED
|
@@ -12,7 +12,7 @@ show_title: false # this layout renders the page's <h1>
|
|
|
12
12
|
{% if page.icon %}
|
|
13
13
|
<span class="package-docs__icon">{{ page.icon }}</span>
|
|
14
14
|
{% endif %}
|
|
15
|
-
{{ page.title }}
|
|
15
|
+
{{ page.title | escape }}
|
|
16
16
|
</h1>
|
|
17
17
|
{% if page.tagline %}
|
|
18
18
|
<p class="package-docs__tagline">{{ page.tagline }}</p>
|
|
@@ -90,12 +90,12 @@ show_title: false # this layout renders the page's <h1>
|
|
|
90
90
|
{% if page.nav_sections %}
|
|
91
91
|
{% for section in page.nav_sections %}
|
|
92
92
|
<div class="package-nav__section">
|
|
93
|
-
<h3 class="package-nav__section-title">{{ section.title }}</h3>
|
|
93
|
+
<h3 class="package-nav__section-title">{{ section.title | escape }}</h3>
|
|
94
94
|
<ul class="package-nav__list">
|
|
95
95
|
{% for item in section.items %}
|
|
96
96
|
<li class="package-nav__item">
|
|
97
97
|
<a href="#{{ item.id }}" class="package-nav__link">
|
|
98
|
-
{{ item.title }}
|
|
98
|
+
{{ item.title | escape }}
|
|
99
99
|
</a>
|
|
100
100
|
</li>
|
|
101
101
|
{% endfor %}
|
|
@@ -171,7 +171,7 @@ show_title: false # this layout renders the page's <h1>
|
|
|
171
171
|
</svg>
|
|
172
172
|
<div>
|
|
173
173
|
<span class="package-docs__footer-nav-label">Previous</span>
|
|
174
|
-
<span class="package-docs__footer-nav-title">{{ page.previous_page.title }}</span>
|
|
174
|
+
<span class="package-docs__footer-nav-title">{{ page.previous_page.title | escape }}</span>
|
|
175
175
|
</div>
|
|
176
176
|
</a>
|
|
177
177
|
{% endif %}
|
|
@@ -180,7 +180,7 @@ show_title: false # this layout renders the page's <h1>
|
|
|
180
180
|
<a href="{{ page.next_page.url | relative_url }}" class="package-docs__footer-nav-link package-docs__footer-nav-link--next">
|
|
181
181
|
<div>
|
|
182
182
|
<span class="package-docs__footer-nav-label">Next</span>
|
|
183
|
-
<span class="package-docs__footer-nav-title">{{ page.next_page.title }}</span>
|
|
183
|
+
<span class="package-docs__footer-nav-title">{{ page.next_page.title | escape }}</span>
|
|
184
184
|
</div>
|
|
185
185
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
186
186
|
<polyline points="9 18 15 12 9 6"></polyline>
|
|
@@ -224,13 +224,14 @@ show_title: false # this layout renders the page's <h1>
|
|
|
224
224
|
observer.observe(heading);
|
|
225
225
|
});
|
|
226
226
|
|
|
227
|
-
//
|
|
227
|
+
// Scroll to anchor targets. The stylesheet's scroll-behavior decides whether
|
|
228
|
+
// the scroll is smooth, so reduced-motion preferences are respected.
|
|
228
229
|
document.querySelectorAll('.package-nav__link[href^="#"]').forEach(link => {
|
|
229
230
|
link.addEventListener('click', (e) => {
|
|
230
231
|
e.preventDefault();
|
|
231
232
|
const target = document.querySelector(link.getAttribute('href'));
|
|
232
233
|
if (target) {
|
|
233
|
-
target.scrollIntoView({
|
|
234
|
+
target.scrollIntoView({ block: 'start' });
|
|
234
235
|
history.pushState(null, null, link.getAttribute('href'));
|
|
235
236
|
}
|
|
236
237
|
});
|
data/_layouts/page.html
CHANGED
|
@@ -11,6 +11,21 @@ layout: default
|
|
|
11
11
|
{% endif %}
|
|
12
12
|
<div class="page-content">
|
|
13
13
|
{{ content }}
|
|
14
|
+
{%- if page.contact_form %}
|
|
15
|
+
{%- comment -%} The contact and collaboration form, or the email address without a backend {%- endcomment %}
|
|
16
|
+
{% include components/contact-form.html %}
|
|
17
|
+
{%- endif %}
|
|
18
|
+
{%- if page.subscription_manage %}
|
|
19
|
+
{%- comment -%} Where the newsletter's emails lead: confirm, change topics, unsubscribe {%- endcomment %}
|
|
20
|
+
{% include components/subscription-manage.html %}
|
|
21
|
+
{%- endif %}
|
|
22
|
+
{%- if page.subscribe_form %}
|
|
23
|
+
{% include components/subscribe-form.html where='page' %}
|
|
24
|
+
{%- endif %}
|
|
25
|
+
{%- if page.moderation_inbox %}
|
|
26
|
+
{%- comment -%} The moderation inbox: a shell; the service authenticates every request {%- endcomment %}
|
|
27
|
+
{% include components/moderation-inbox.html %}
|
|
28
|
+
{%- endif %}
|
|
14
29
|
</div>
|
|
15
30
|
</div>
|
|
16
31
|
</section>
|
data/_layouts/portfolio.html
CHANGED
|
@@ -4,7 +4,7 @@ show_title: false # this layout renders the page's <h1>
|
|
|
4
4
|
---
|
|
5
5
|
<article class="portfolio-item">
|
|
6
6
|
<header class="portfolio-header">
|
|
7
|
-
<h1>{{ page.title }}</h1>
|
|
7
|
+
<h1>{{ page.title | escape }}</h1>
|
|
8
8
|
{% if page.hero_image %}
|
|
9
9
|
<div class="portfolio-hero-media">
|
|
10
10
|
{% assign hero_alt = page.hero_alt | default: page.title %}
|
data/_layouts/post.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
layout: default
|
|
3
|
-
schema_type:
|
|
3
|
+
schema_type: TechArticle
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
{% assign localization_config = site.theme_options.localization %}
|
|
@@ -34,11 +34,15 @@ schema_type: TechnicalArticle
|
|
|
34
34
|
|
|
35
35
|
{%- comment -%} Canonical URL & author info {%- endcomment -%}
|
|
36
36
|
{% assign canonical_url = page.url | absolute_url %}
|
|
37
|
-
{% assign
|
|
38
|
-
{% assign
|
|
37
|
+
{% assign authors = page | page_authors %}
|
|
38
|
+
{% assign contributors = page | page_contributors %}
|
|
39
39
|
|
|
40
40
|
{%- comment -%} Tag/Category flags {%- endcomment -%}
|
|
41
41
|
{% assign post_tags = page.tags %}
|
|
42
|
+
{% assign tag_archive_path = site.tag_archive.path | default: '/tags/' %}
|
|
43
|
+
{% assign category_archive_path = site.category_archive.path | default: '/categories/' %}
|
|
44
|
+
{% assign tag_archive_page = site.pages | where: 'url', tag_archive_path | first %}
|
|
45
|
+
{% assign category_archive_page = site.pages | where: 'url', category_archive_path | first %}
|
|
42
46
|
{% assign has_tags = false %}
|
|
43
47
|
{% if post_tags and post_tags.size > 0 %}{% assign has_tags = true %}{% endif %}
|
|
44
48
|
{% assign has_categories = false %}
|
|
@@ -50,14 +54,14 @@ schema_type: TechnicalArticle
|
|
|
50
54
|
{%- comment -%} Breadcrumb navigation {%- endcomment -%}
|
|
51
55
|
{% include components/breadcrumbs.html %}
|
|
52
56
|
|
|
53
|
-
<div class="post-wrapper" itemscope itemtype="https://schema.org/
|
|
57
|
+
<div class="post-wrapper" itemscope itemtype="https://schema.org/TechArticle">
|
|
54
58
|
<meta itemprop="url" content="{{ canonical_url }}" />
|
|
55
59
|
<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}" />
|
|
56
60
|
{% if page.last_modified_at or page.updated %}
|
|
57
61
|
<meta itemprop="dateModified" content="{{ page.last_modified_at | default: page.updated | date_to_xmlschema }}" />
|
|
58
62
|
{% endif %}
|
|
59
|
-
|
|
60
|
-
<meta itemprop="publisher" content="{{
|
|
63
|
+
{% include meta/publisher.html %}
|
|
64
|
+
<meta itemprop="publisher" content="{{ publisher_name | escape }}" />
|
|
61
65
|
<meta itemprop="timeRequired" content="{{ time_required }}" />
|
|
62
66
|
{% if difficulty %}<meta itemprop="learningResourceType" content="{{ difficulty }}" />{% endif %}
|
|
63
67
|
{% if has_tags %}<meta itemprop="keywords" content="{{ post_tags | join: ', ' }}" />{% endif %}
|
|
@@ -69,17 +73,28 @@ schema_type: TechnicalArticle
|
|
|
69
73
|
<dt class="post-meta-term">{% t 'post.meta.published' %}</dt>
|
|
70
74
|
<dd class="post-meta-definition">{{ page.date | localize_date: date_format }}</dd>
|
|
71
75
|
</div>
|
|
76
|
+
{%- comment -%} The last change, when it fell on another day than the publication {%- endcomment -%}
|
|
77
|
+
{% assign modified = page.last_modified_at | default: page.updated %}
|
|
78
|
+
{% if modified %}
|
|
79
|
+
{% assign modified_day = modified | date: '%F' %}
|
|
80
|
+
{% assign published_day = page.date | date: '%F' %}
|
|
81
|
+
{% if modified_day != published_day %}
|
|
82
|
+
<div>
|
|
83
|
+
<dt class="post-meta-term">{% t 'post.meta.updated' %}</dt>
|
|
84
|
+
<dd class="post-meta-definition">{{ modified | localize_date: date_format }}</dd>
|
|
85
|
+
</div>
|
|
86
|
+
{% endif %}
|
|
87
|
+
{% endif %}
|
|
72
88
|
<div>
|
|
73
|
-
<dt class="post-meta-term">{% t 'post.meta.author' %}</dt>
|
|
74
|
-
<dd class="post-meta-definition">
|
|
75
|
-
<span itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
76
|
-
<span itemprop="name">{{ author_name }}</span>
|
|
77
|
-
{% if author_affiliation %}
|
|
78
|
-
<span class="post-author-affiliation" itemprop="affiliation">{{ author_affiliation }}</span>
|
|
79
|
-
{% endif %}
|
|
80
|
-
</span>
|
|
81
|
-
</dd>
|
|
89
|
+
<dt class="post-meta-term">{% if authors.size > 1 %}{% t 'post.meta.authors' %}{% else %}{% t 'post.meta.author' %}{% endif %}</dt>
|
|
90
|
+
<dd class="post-meta-definition">{% include components/author-list.html people=authors %}</dd>
|
|
82
91
|
</div>
|
|
92
|
+
{% if contributors.size > 0 %}
|
|
93
|
+
<div>
|
|
94
|
+
<dt class="post-meta-term">{% t 'post.meta.contributors' %}</dt>
|
|
95
|
+
<dd class="post-meta-definition">{% include components/author-list.html people=contributors property='contributor' %}</dd>
|
|
96
|
+
</div>
|
|
97
|
+
{% endif %}
|
|
83
98
|
<div>
|
|
84
99
|
<dt class="post-meta-term">{% t 'post.meta.reading_time' %}</dt>
|
|
85
100
|
<dd class="post-meta-definition"><span data-reading-time>{{ reading_label }}</span></dd>
|
|
@@ -111,6 +126,17 @@ schema_type: TechnicalArticle
|
|
|
111
126
|
</dl>
|
|
112
127
|
</section>
|
|
113
128
|
|
|
129
|
+
{%- comment -%} The reader's tools: save for later and reading mode; and the article's address on paper {%- endcomment -%}
|
|
130
|
+
<div class="post-tools">
|
|
131
|
+
{% include components/reading-state-bookmark.html %}
|
|
132
|
+
{% include components/reading-mode-toggle.html %}
|
|
133
|
+
</div>
|
|
134
|
+
{% include components/reading-state-resume.html %}
|
|
135
|
+
<p class="post-print-source print-only">{% t 'post.print.source' %} {{ canonical_url }}{% if page.doi %} · DOI {{ page.doi | escape }}{% endif %}</p>
|
|
136
|
+
|
|
137
|
+
{%- comment -%} The newest correction or update, with a link to the revision history {%- endcomment -%}
|
|
138
|
+
{% include components/revision-notice.html page=page date_format=date_format %}
|
|
139
|
+
|
|
114
140
|
{% if has_tags or has_categories %}
|
|
115
141
|
<section class="post-taxonomy" aria-labelledby="post-taxonomy-heading">
|
|
116
142
|
<h2 id="post-taxonomy-heading" class="visually-hidden">{% t 'post.topics_heading' %}</h2>
|
|
@@ -118,13 +144,13 @@ schema_type: TechnicalArticle
|
|
|
118
144
|
{% if has_tags %}
|
|
119
145
|
{% for tag in post_tags %}
|
|
120
146
|
{% assign tag_slug = tag | slugify %}
|
|
121
|
-
<li
|
|
147
|
+
<li>{% if tag_archive_page %}<a class="post-tag" href="{{ tag_archive_path | append: '#' | append: tag_slug | relative_url }}">{{ tag | escape }}</a>{% else %}<span class="post-tag">{{ tag | escape }}</span>{% endif %}</li>
|
|
122
148
|
{% endfor %}
|
|
123
149
|
{% endif %}
|
|
124
150
|
{% if has_categories %}
|
|
125
151
|
{% for category in page.categories %}
|
|
126
152
|
{% assign cat_slug = category | slugify %}
|
|
127
|
-
<li
|
|
153
|
+
<li>{% if category_archive_page %}<a class="post-tag post-category" href="{{ category_archive_path | append: '#' | append: cat_slug | relative_url }}">{{ category | escape }}</a>{% else %}<span class="post-tag post-category">{{ category | escape }}</span>{% endif %}</li>
|
|
128
154
|
{% endfor %}
|
|
129
155
|
{% endif %}
|
|
130
156
|
</ul>
|
|
@@ -134,6 +160,9 @@ schema_type: TechnicalArticle
|
|
|
134
160
|
{%- comment -%} Editorial provenance (why_this_exists, evidence, methodology, reviewed_at) {%- endcomment -%}
|
|
135
161
|
{% include components/content-provenance.html page=page date_format=date_format %}
|
|
136
162
|
|
|
163
|
+
{%- comment -%} The article's series: every part in order, and the previous and next ones {%- endcomment -%}
|
|
164
|
+
{% include components/series-nav.html page=page %}
|
|
165
|
+
|
|
137
166
|
{%- comment -%} Enhanced social sharing {%- endcomment -%}
|
|
138
167
|
{% include components/social-share.html url=canonical_url title=page.title description=page.excerpt %}
|
|
139
168
|
|
|
@@ -148,12 +177,30 @@ schema_type: TechnicalArticle
|
|
|
148
177
|
</div>
|
|
149
178
|
</div>
|
|
150
179
|
|
|
180
|
+
{%- comment -%} The previous and next parts of the series, for a reader who has finished this one {%- endcomment -%}
|
|
181
|
+
{% include components/series-nav.html page=page compact=true %}
|
|
182
|
+
|
|
183
|
+
{%- comment -%} Was this useful? A reaction without a comment, on a site with a backend {%- endcomment -%}
|
|
184
|
+
{% include components/reactions.html %}
|
|
185
|
+
|
|
186
|
+
{%- comment -%} The reader's own: resume prompt, highlights and notes, kept in the browser {%- endcomment -%}
|
|
187
|
+
{% include components/reading-state-panel.html %}
|
|
188
|
+
|
|
189
|
+
{%- comment -%} The code, data and environment behind the analysis {%- endcomment -%}
|
|
190
|
+
{% include components/reproducibility.html page=page %}
|
|
191
|
+
|
|
192
|
+
{%- comment -%} Report an error: structured feedback to the author, on a site with a backend {%- endcomment -%}
|
|
193
|
+
{% include components/correction-report.html %}
|
|
194
|
+
|
|
195
|
+
{%- comment -%} What changed since publication (revisions in front matter) {%- endcomment -%}
|
|
196
|
+
{% include components/revision-history.html page=page date_format=date_format %}
|
|
197
|
+
|
|
151
198
|
<section class="post-interactive" aria-label="{% t 'post.interactive.label' %}">
|
|
152
199
|
{% if page.interactive_components and page.interactive_components.size > 0 %}
|
|
153
200
|
<ul class="post-interactive-list">
|
|
154
201
|
{% for demo in page.interactive_components %}
|
|
155
202
|
<li>
|
|
156
|
-
<strong>{{ demo.title }}</strong>
|
|
203
|
+
<strong>{{ demo.title | escape }}</strong>
|
|
157
204
|
{% if demo.description %}<p>{{ demo.description }}</p>{% endif %}
|
|
158
205
|
{% if demo.url %}<p><a href="{{ demo.url | relative_url }}" target="_blank" rel="noopener noreferrer">{% t 'post.interactive.launch' %}</a></p>{% endif %}
|
|
159
206
|
</li>
|
|
@@ -195,22 +242,44 @@ schema_type: TechnicalArticle
|
|
|
195
242
|
</section>
|
|
196
243
|
{% endif %}
|
|
197
244
|
|
|
245
|
+
{%- comment -%} What other websites said about this article, apart from the comments hosted here {%- endcomment -%}
|
|
246
|
+
{% include components/webmentions.html %}
|
|
247
|
+
|
|
248
|
+
{%- comment -%} Reuse terms: the licence of the text and figures, and of the code samples {%- endcomment -%}
|
|
249
|
+
{% include components/license-notice.html page=page %}
|
|
250
|
+
|
|
198
251
|
{%- comment -%} ===== Citation tools & badges ===== {%- endcomment -%}
|
|
199
252
|
{% assign citation_key = page.citation_key | default: page.slug | default: page.title | slugify %}
|
|
200
|
-
{% assign citation_authors = page.authors | default: page.author | default: author_name %}
|
|
201
253
|
{% include components/citation-tools.html
|
|
202
254
|
title=page.title
|
|
203
|
-
authors=
|
|
255
|
+
authors=authors
|
|
204
256
|
date=page.date
|
|
205
257
|
url=canonical_url
|
|
206
258
|
citation_key=citation_key
|
|
207
|
-
publisher=site.author.affiliation
|
|
208
259
|
citation_type='article'
|
|
209
260
|
doi=page.doi %}
|
|
210
261
|
{% include components/open-science-badges.html %}
|
|
211
262
|
|
|
212
|
-
{%- comment -%}
|
|
213
|
-
|
|
263
|
+
{%- comment -%}
|
|
264
|
+
Author cards: a full card for a single author, or for each author with
|
|
265
|
+
`author_cards: detailed`; a compact card each for several authors;
|
|
266
|
+
none with `author_cards: false`.
|
|
267
|
+
{%- endcomment -%}
|
|
268
|
+
{% unless page.author_cards == false %}
|
|
269
|
+
{% assign detailed_cards = false %}
|
|
270
|
+
{% if authors.size == 1 or page.author_cards == 'detailed' %}{% assign detailed_cards = true %}{% endif %}
|
|
271
|
+
{% for author in authors %}
|
|
272
|
+
{% if detailed_cards %}
|
|
273
|
+
{% include components/author-bio.html person=author %}
|
|
274
|
+
{% else %}
|
|
275
|
+
{% include components/author-bio.html person=author compact=true %}
|
|
276
|
+
{% endif %}
|
|
277
|
+
{% endfor %}
|
|
278
|
+
{% endunless %}
|
|
279
|
+
|
|
280
|
+
{%- comment -%} The newsletter form at the end of the article, when subscriptions.placement says so {%- endcomment -%}
|
|
281
|
+
{% assign subscribe_placement = site.subscriptions.placement | default: 'footer' %}
|
|
282
|
+
{% if subscribe_placement contains 'post' %}{% include components/subscribe-form.html where='post' %}{% endif %}
|
|
214
283
|
|
|
215
284
|
{%- comment -%} ===== Robust related posts (no where_exp, no nil sort) ===== {%- endcomment -%}
|
|
216
285
|
{% include post/related-posts.html page=page date_format=date_format %}
|
|
@@ -219,7 +288,7 @@ schema_type: TechnicalArticle
|
|
|
219
288
|
{% if page.previous %}
|
|
220
289
|
<div class="post-prev">
|
|
221
290
|
<span class="post-pagination-label">Previous</span>
|
|
222
|
-
<a href="{{ page.previous.url | relative_url }}">{{ page.previous.title }}</a>
|
|
291
|
+
<a href="{{ page.previous.url | relative_url }}">{{ page.previous.title | escape }}</a>
|
|
223
292
|
{% if page.previous.tags and page.tags %}
|
|
224
293
|
{% assign shared_prev = '' %}
|
|
225
294
|
{% for tag in page.tags %}
|
|
@@ -238,7 +307,7 @@ schema_type: TechnicalArticle
|
|
|
238
307
|
{% if page.next %}
|
|
239
308
|
<div class="post-next">
|
|
240
309
|
<span class="post-pagination-label">Next</span>
|
|
241
|
-
<a href="{{ page.next.url | relative_url }}">{{ page.next.title }}</a>
|
|
310
|
+
<a href="{{ page.next.url | relative_url }}">{{ page.next.title | escape }}</a>
|
|
242
311
|
{% if page.next.tags and page.tags %}
|
|
243
312
|
{% assign shared_next = '' %}
|
|
244
313
|
{% for tag in page.tags %}
|
data/_layouts/project.html
CHANGED
|
@@ -8,9 +8,9 @@ show_title: false # this layout renders the page's <h1>
|
|
|
8
8
|
<header class="project-case__header">
|
|
9
9
|
<div class="project-case__intro">
|
|
10
10
|
<p class="project-case__eyebrow">{% t 'project.header.eyebrow' %}</p>
|
|
11
|
-
<h1 class="project-case__title" itemprop="name">{{ page.title }}</h1>
|
|
11
|
+
<h1 class="project-case__title" itemprop="name">{{ page.title | escape }}</h1>
|
|
12
12
|
{% if page.description %}
|
|
13
|
-
<p class="project-case__description" itemprop="description">{{ page.description }}</p>
|
|
13
|
+
<p class="project-case__description" itemprop="description">{{ page.description | escape }}</p>
|
|
14
14
|
{% endif %}
|
|
15
15
|
</div>
|
|
16
16
|
<div class="project-case__meta">
|
|
@@ -192,7 +192,7 @@ show_title: false # this layout renders the page's <h1>
|
|
|
192
192
|
<ul class="project-case__related">
|
|
193
193
|
{% for project in page.related_projects %}
|
|
194
194
|
<li>
|
|
195
|
-
{% if project.url %}<a href="{{ project.url | relative_url }}">{{ project.title | default: project }}</a>{% else %}<span>{{ project.title | default: project }}</span>{% endif %}
|
|
195
|
+
{% if project.url %}<a href="{{ project.url | relative_url }}">{{ project.title | default: project | escape }}</a>{% else %}<span>{{ project.title | default: project | escape }}</span>{% endif %}
|
|
196
196
|
{% if project.description %}<p>{{ project.description }}</p>{% endif %}
|
|
197
197
|
</li>
|
|
198
198
|
{% endfor %}
|
|
@@ -209,10 +209,10 @@ show_title: false # this layout renders the page's <h1>
|
|
|
209
209
|
{% endif %}
|
|
210
210
|
|
|
211
211
|
{% assign citation_key = page.citation_key | default: page.slug | default: page.title | slugify %}
|
|
212
|
-
{% assign citation_authors = page
|
|
212
|
+
{% assign citation_authors = page | page_authors %}
|
|
213
213
|
{% assign citation_date = page.date | default: page.last_updated %}
|
|
214
214
|
{% assign citation_url = page.url | absolute_url %}
|
|
215
|
-
{% include components/citation-tools.html title=page.title authors=citation_authors date=citation_date url=citation_url citation_key=citation_key
|
|
215
|
+
{% include components/citation-tools.html title=page.title authors=citation_authors date=citation_date url=citation_url citation_key=citation_key citation_type='software' doi=page.doi %}
|
|
216
216
|
|
|
217
217
|
{% include components/open-science-badges.html %}
|
|
218
218
|
|
data/_layouts/research.html
CHANGED
|
@@ -3,8 +3,7 @@ layout: default
|
|
|
3
3
|
schema_type: ScholarlyArticle
|
|
4
4
|
---
|
|
5
5
|
{% assign date_format = site.date_format | default: '%B %-d, %Y' %}
|
|
6
|
-
{% assign
|
|
7
|
-
{% assign authors = authors_source | arrayify %}
|
|
6
|
+
{% assign authors = page | page_authors %}
|
|
8
7
|
{% assign publication_name = page.publication | default: page.journal | default: page.conference %}
|
|
9
8
|
{% assign publication_status = page.publication_status | default: page.status %}
|
|
10
9
|
{% assign doi = page.doi %}
|
|
@@ -20,7 +19,13 @@ schema_type: ScholarlyArticle
|
|
|
20
19
|
{% assign methodology_content = page.methodology %}
|
|
21
20
|
{% assign results_content = page.results %}
|
|
22
21
|
{% assign data_availability = page.data_availability %}
|
|
23
|
-
{
|
|
22
|
+
{%- comment -%} `reproducibility` is free text here, or a map of artifacts for the panel (components/reproducibility.html). {%- endcomment -%}
|
|
23
|
+
{% capture reproducibility_shape %}{{ page.reproducibility | jsonify | slice: 0, 1 }}{% endcapture %}
|
|
24
|
+
{% if reproducibility_shape == '{' %}
|
|
25
|
+
{% assign reproducibility = page.reproducibility_notes %}
|
|
26
|
+
{% else %}
|
|
27
|
+
{% assign reproducibility = page.reproducibility | default: page.reproducibility_notes %}
|
|
28
|
+
{% endif %}
|
|
24
29
|
{% assign peer_review = page.peer_review | default: page.peer_review_notes %}
|
|
25
30
|
{% assign version_history = page.version_history %}
|
|
26
31
|
{% assign appendices = page.appendices %}
|
|
@@ -28,12 +33,12 @@ schema_type: ScholarlyArticle
|
|
|
28
33
|
{% assign references = page.references %}
|
|
29
34
|
{% assign references_array = references | arrayify %}
|
|
30
35
|
{% assign funding = page.funding %}
|
|
31
|
-
{% assign rights = page.rights
|
|
32
|
-
{% assign
|
|
36
|
+
{% assign rights = page.rights %}
|
|
37
|
+
{% assign research_license = page | page_license %}
|
|
33
38
|
{% assign show_publications = page.show_publications | default: false %}
|
|
34
39
|
|
|
35
40
|
<div class="research-wrapper" itemscope itemtype="https://schema.org/ScholarlyArticle">
|
|
36
|
-
<meta itemprop="headline" content="{{ page.title }}" />
|
|
41
|
+
<meta itemprop="headline" content="{{ page.title | escape }}" />
|
|
37
42
|
{% if page.date %}
|
|
38
43
|
<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}" />
|
|
39
44
|
{% endif %}
|
|
@@ -51,15 +56,15 @@ schema_type: ScholarlyArticle
|
|
|
51
56
|
{% endif %}
|
|
52
57
|
|
|
53
58
|
<header class="research-header" aria-labelledby="research-title">
|
|
54
|
-
<h1 id="research-title" class="research-title">{{ page.title }}</h1>
|
|
59
|
+
<h1 id="research-title" class="research-title">{{ page.title | escape }}</h1>
|
|
55
60
|
|
|
56
61
|
<div class="research-authors" aria-label="Authors">
|
|
57
62
|
<h2 class="visually-hidden">Authors</h2>
|
|
58
63
|
<ul class="research-author-list">
|
|
59
64
|
{% for author in authors %}
|
|
60
|
-
{% assign author_name = author.name |
|
|
61
|
-
{% assign author_affiliation = author.affiliation |
|
|
62
|
-
{% assign author_orcid = author.orcid
|
|
65
|
+
{% assign author_name = author.name | escape %}
|
|
66
|
+
{% assign author_affiliation = author.affiliation | escape %}
|
|
67
|
+
{% assign author_orcid = author.orcid %}
|
|
63
68
|
{% assign author_email = author.email | default: author.contact %}
|
|
64
69
|
<li class="research-author" itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
65
70
|
<span class="research-author-name" itemprop="name">{{ author_name }}</span>
|
|
@@ -125,6 +130,11 @@ schema_type: ScholarlyArticle
|
|
|
125
130
|
<dt>Rights</dt>
|
|
126
131
|
<dd>{{ rights }}</dd>
|
|
127
132
|
</div>
|
|
133
|
+
{% elsif research_license %}
|
|
134
|
+
<div>
|
|
135
|
+
<dt>Rights</dt>
|
|
136
|
+
<dd>{% include components/license-link.html license=research_license %}</dd>
|
|
137
|
+
</div>
|
|
128
138
|
{% endif %}
|
|
129
139
|
</dl>
|
|
130
140
|
|
|
@@ -197,67 +207,7 @@ schema_type: ScholarlyArticle
|
|
|
197
207
|
</section>
|
|
198
208
|
{% endif %}
|
|
199
209
|
|
|
200
|
-
|
|
201
|
-
<h2 id="citation-exports-heading">Citation exports</h2>
|
|
202
|
-
{% capture bibtex_authors %}
|
|
203
|
-
{% for author in authors %}
|
|
204
|
-
{% assign author_name = author.name | default: author %}
|
|
205
|
-
{{ author_name | strip }}{% unless forloop.last %} and {% endunless %}
|
|
206
|
-
{% endfor %}
|
|
207
|
-
{% endcapture %}
|
|
208
|
-
{% capture bibtex_entry %}
|
|
209
|
-
@article{ {{ citation_key }},
|
|
210
|
-
title = { {{ page.title | strip }} },
|
|
211
|
-
author = { {{ bibtex_authors | strip }} },
|
|
212
|
-
{% if publication_name %}journal = { {{ publication_name | strip }} },{% endif %}
|
|
213
|
-
{% if page.date %}year = { {{ page.date | date: '%Y' }} },{% endif %}
|
|
214
|
-
{% if doi %}doi = { {{ doi }} },{% endif %}
|
|
215
|
-
{% if page.publisher %}publisher = { {{ page.publisher }} },{% endif %}
|
|
216
|
-
{% if page.volume %}volume = { {{ page.volume }} },{% endif %}
|
|
217
|
-
{% if page.number %}number = { {{ page.number }} },{% endif %}
|
|
218
|
-
{% if page.pages %}pages = { {{ page.pages }} },{% endif %}
|
|
219
|
-
}
|
|
220
|
-
{% endcapture %}
|
|
221
|
-
{% capture ris_entry %}
|
|
222
|
-
TY - JOUR
|
|
223
|
-
TI - {{ page.title | strip }}
|
|
224
|
-
{% if publication_name %}JO - {{ publication_name | strip }}
|
|
225
|
-
{% endif %}
|
|
226
|
-
{% if page.date %}PY - {{ page.date | date: '%Y/%m/%d' }}
|
|
227
|
-
{% endif %}
|
|
228
|
-
{% for author in authors %}{% assign author_name = author.name | default: author %}AU - {{ author_name | strip }}
|
|
229
|
-
{% endfor %}
|
|
230
|
-
{% if doi %}DO - {{ doi }}
|
|
231
|
-
{% endif %}
|
|
232
|
-
ER -
|
|
233
|
-
{% endcapture %}
|
|
234
|
-
{% capture endnote_entry %}
|
|
235
|
-
%0 Journal Article
|
|
236
|
-
%T {{ page.title | strip }}
|
|
237
|
-
{% for author in authors %}{% assign author_name = author.name | default: author %}%A {{ author_name | strip }}
|
|
238
|
-
{% endfor %}
|
|
239
|
-
{% if publication_name %}%J {{ publication_name | strip }}
|
|
240
|
-
{% endif %}
|
|
241
|
-
{% if page.date %}%D {{ page.date | date: '%Y' }}
|
|
242
|
-
{% endif %}
|
|
243
|
-
{% if doi %}%R {{ doi }}
|
|
244
|
-
{% endif %}
|
|
245
|
-
{% endcapture %}
|
|
246
|
-
<div class="citation-export-grid">
|
|
247
|
-
<article>
|
|
248
|
-
<h3>BibTeX</h3>
|
|
249
|
-
<textarea readonly aria-label="BibTeX citation">{{ bibtex_entry | strip }}</textarea>
|
|
250
|
-
</article>
|
|
251
|
-
<article>
|
|
252
|
-
<h3>RIS</h3>
|
|
253
|
-
<textarea readonly aria-label="RIS citation">{{ ris_entry | strip }}</textarea>
|
|
254
|
-
</article>
|
|
255
|
-
<article>
|
|
256
|
-
<h3>EndNote</h3>
|
|
257
|
-
<textarea readonly aria-label="EndNote citation">{{ endnote_entry | strip }}</textarea>
|
|
258
|
-
</article>
|
|
259
|
-
</div>
|
|
260
|
-
</section>
|
|
210
|
+
{% include components/citation-tools.html authors=authors journal=publication_name %}
|
|
261
211
|
|
|
262
212
|
<section class="research-body" itemprop="articleBody">
|
|
263
213
|
{% if methodology_content %}
|
|
@@ -321,6 +271,8 @@ ER -
|
|
|
321
271
|
</section>
|
|
322
272
|
{% endif %}
|
|
323
273
|
|
|
274
|
+
{% include components/reproducibility.html page=page %}
|
|
275
|
+
|
|
324
276
|
{% if supplementary or appendices %}
|
|
325
277
|
<section class="research-appendices" aria-labelledby="appendix-heading">
|
|
326
278
|
<h2 id="appendix-heading">Appendix and supplementary materials</h2>
|
|
@@ -335,7 +287,7 @@ ER -
|
|
|
335
287
|
<li>
|
|
336
288
|
<article class="appendix-item">
|
|
337
289
|
{% if appendix.title %}
|
|
338
|
-
<h3>{{ appendix.title }}</h3>
|
|
290
|
+
<h3>{{ appendix.title | escape }}</h3>
|
|
339
291
|
{% endif %}
|
|
340
292
|
{% if appendix.content %}
|
|
341
293
|
{{ appendix.content | markdownify }}
|
|
@@ -381,7 +333,7 @@ ER -
|
|
|
381
333
|
{% for publication in group_items %}
|
|
382
334
|
<li class="publication-list__item">
|
|
383
335
|
<article>
|
|
384
|
-
<h4 class="publication-title">{{ publication.title }}</h4>
|
|
336
|
+
<h4 class="publication-title">{{ publication.title | escape }}</h4>
|
|
385
337
|
{% assign publication_authors = publication.authors | arrayify %}
|
|
386
338
|
{% if publication_authors and publication_authors.size > 0 %}
|
|
387
339
|
<p class="publication-authors">{{ publication_authors | join: ', ' }}</p>
|
|
@@ -404,7 +356,7 @@ ER -
|
|
|
404
356
|
{% for publication in publication_entries %}
|
|
405
357
|
<li class="publication-list__item">
|
|
406
358
|
<article>
|
|
407
|
-
<h4 class="publication-title">{{ publication.title }}</h4>
|
|
359
|
+
<h4 class="publication-title">{{ publication.title | escape }}</h4>
|
|
408
360
|
{% assign publication_authors = publication.authors | arrayify %}
|
|
409
361
|
{% if publication_authors and publication_authors.size > 0 %}
|
|
410
362
|
<p class="publication-authors">{{ publication_authors | join: ', ' }}</p>
|
|
@@ -444,7 +396,7 @@ ER -
|
|
|
444
396
|
<li>
|
|
445
397
|
<article class="version-entry">
|
|
446
398
|
<header>
|
|
447
|
-
<strong>{{ version.version | default: version.title | default: version }}</strong>
|
|
399
|
+
<strong>{{ version.version | default: version.title | default: version | escape }}</strong>
|
|
448
400
|
{% if version.date %}<span class="version-date">{{ version.date | localize_date: date_format }}</span>{% endif %}
|
|
449
401
|
</header>
|
|
450
402
|
{% if version.notes %}
|