jekyll-theme-centos 2.52.0.beta.104 → 2.52.0.beta.106
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/_config.yml +2 -2
- data/_data/base/accordion_schema.yml +6 -0
- data/_data/base/announcement_schema.yml +1 -1
- data/_data/base/artwork_schema.yml +17 -3
- data/_data/base/bits_schema.yml +9 -4
- data/_data/base/breadcrumb_schema.yml +14 -0
- data/_data/base/breakingnews_schema.yml +1 -1
- data/_data/base/calendar_schema.yml +17 -2
- data/_data/base/card_schema.yml +2 -2
- data/_data/base/copyright_schema.yml +7 -17
- data/_data/base/copyvalue_schema.yml +4 -1
- data/_data/base/datatable_schema.yml +3 -3
- data/_data/base/download_schema.yml +42 -16
- data/_data/base/event_schema.yml +1 -1
- data/_data/base/footer_schema.yml +7 -6
- data/_data/base/highlight_schema.yml +7 -5
- data/_data/base/image_schema.yml +1 -1
- data/_data/base/link_schema.yml +13 -19
- data/_data/base/navbar_schema.yml +6 -0
- data/_data/base/preview_schema.yml +8 -4
- data/_data/base/project_schema.yml +4 -2
- data/_data/base/script_schema.yml +4 -4
- data/_data/base/shortcut_schema.yml +2 -2
- data/_data/base/social_schema.yml +2 -2
- data/_data/base/sponsors.yml +3 -2
- data/_data/base/sponsors_schema.yml +20 -0
- data/_data/base/title_schema.yml +14 -0
- data/_data/base/toc_schema.yml +16 -2
- data/_includes/base/accordion-item.html.liquid +11 -32
- data/_includes/base/accordion.html.liquid +3 -29
- data/_includes/base/announcement.html.liquid +8 -35
- data/_includes/base/artwork.html.liquid +5 -38
- data/_includes/base/backtotop.html.liquid +3 -42
- data/_includes/base/bits.html.liquid +26 -74
- data/_includes/base/breadcrumb.html.liquid +15 -49
- data/_includes/base/breakingnews.html.liquid +6 -43
- data/_includes/base/calendar-events.html.liquid +3 -37
- data/_includes/base/calendar-init.html.liquid +7 -63
- data/_includes/base/calendar.html.liquid +3 -34
- data/_includes/base/card.html.liquid +4 -44
- data/_includes/base/color-table.html.liquid +18 -4
- data/_includes/base/configuration_variables-default-cell.html.liquid +6 -50
- data/_includes/base/configuration_variables-nested.html.liquid +6 -7
- data/_includes/base/configuration_variables.html.liquid +9 -11
- data/_includes/base/content.html.liquid +7 -4
- data/_includes/base/copyright.html.liquid +8 -39
- data/_includes/base/copyvalue.html.liquid +3 -70
- data/_includes/base/datatable.html.liquid +4 -40
- data/_includes/base/download.html.liquid +12 -66
- data/_includes/base/download_architecture.html.liquid +29 -117
- data/_includes/base/download_commands.html.liquid +2 -14
- data/_includes/base/download_documentation.html.liquid +13 -47
- data/_includes/base/download_eol.html.liquid +5 -15
- data/_includes/base/download_filevalue.html.liquid +9 -49
- data/_includes/base/download_screenshots.html.liquid +10 -65
- data/_includes/base/download_sections.html.liquid +2 -19
- data/_includes/base/event.html.liquid +8 -63
- data/_includes/base/fontawesome.html.liquid +4 -38
- data/_includes/base/footer.html.liquid +9 -2
- data/_includes/base/head.html.liquid +6 -47
- data/_includes/base/highlight.html.liquid +4 -37
- data/_includes/base/image.html.liquid +5 -22
- data/_includes/base/link.html.liquid +38 -57
- data/_includes/base/locales.html.liquid +6 -26
- data/_includes/base/navbar.html.liquid +16 -45
- data/_includes/base/navindex.html.liquid +40 -111
- data/_includes/base/ogp.html.liquid +17 -83
- data/_includes/base/preview.html.liquid +18 -57
- data/_includes/base/project.html.liquid +4 -29
- data/_includes/base/shortcut.html.liquid +7 -37
- data/_includes/base/social.html.liquid +4 -42
- data/_includes/base/sponsors-cards.html.liquid +4 -55
- data/_includes/base/sponsors-carousel.html.liquid +11 -59
- data/_includes/base/sponsors-data.html.liquid +32 -0
- data/_includes/base/title.html.liquid +5 -42
- data/_includes/base/toc-generator.html.liquid +4 -0
- data/_includes/base/toc.html.liquid +28 -81
- data/_sass/base/_customization.scss +18 -0
- data/_sass/base/_preview.scss +5 -9
- data/assets/icons/favicon.ico +0 -0
- data/assets/js/base/backtotop.js +3 -3
- data/assets/js/base/copyvalue.js +15 -11
- data/assets/js/base/datatable.js +6 -13
- data/assets/js/base/highlight.js +46 -31
- metadata +2 -1
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: Command snippets for one release, rendered as one collapsible item
|
|
5
|
-
inside download_sections.html.liquid's shared documentation/commands/eol
|
|
6
|
-
accordion — release-wide metadata that applies in common to every
|
|
7
|
-
architecture above. Called from download_sections.html.liquid.
|
|
8
|
-
|
|
9
|
-
Required Inputs:
|
|
10
|
-
- commands: Array of {title, lines}
|
|
11
|
-
- accordion_id: Parent accordion's id, for data-bs-parent scoping
|
|
12
|
-
- item_id: This item's unique collapse id
|
|
13
|
-
- expanded: true starts this item open; false starts it closed. Passed
|
|
14
|
-
through from the caller (see download_sections.html.liquid).
|
|
15
|
-
================================================================================
|
|
2
|
+
download_commands: renders a release's commands as one accordion item titled Migration.
|
|
3
|
+
Schema: src/YAML/download_schema.yml
|
|
16
4
|
{% endcomment %}
|
|
17
5
|
{%- capture download_commands_body -%}
|
|
18
6
|
{%- for row in include.commands %}
|
|
@@ -1,54 +1,20 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: Documentation links for one release, rendered as one collapsible
|
|
5
|
-
item inside download_sections.html.liquid's shared documentation/commands/
|
|
6
|
-
eol/screenshots accordion — release-wide metadata that applies in common to
|
|
7
|
-
every architecture above. Called from download_sections.html.liquid.
|
|
8
|
-
|
|
9
|
-
Required Inputs:
|
|
10
|
-
- documentation: Array of {title, link, description}
|
|
11
|
-
- accordion_id: Parent accordion's id, for data-bs-parent scoping
|
|
12
|
-
- item_id: This item's unique collapse id
|
|
13
|
-
- expanded: true starts this item open; false starts it closed. Passed
|
|
14
|
-
through from the caller (see download_sections.html.liquid).
|
|
15
|
-
|
|
16
|
-
An entry's optional `description` switches its own presentation rather than
|
|
17
|
-
attaching a caption to a button: a bare button reads as a call to action
|
|
18
|
-
("do this now"), a mismatched signifier for a full explanatory sentence
|
|
19
|
-
sitting next to it — so once there's a sentence to say, the entry renders as
|
|
20
|
-
one prose paragraph with `title` as the inline link and `description`
|
|
21
|
-
continuing the sentence grammatically (e.g. "Release Notes are continuously
|
|
22
|
-
updated..."), the standard, immediately-recognizable convention for
|
|
23
|
-
referencing a resource from explanatory text. Entries without a description
|
|
24
|
-
still render as a bare button, identical to before this field existed —
|
|
25
|
-
prose and buttons render as two separate groups (prose first, since it's the
|
|
26
|
-
richer content) rather than interleaved, so a documentation list mixing both
|
|
27
|
-
kinds doesn't end up with paragraphs breaking up a button row.
|
|
28
|
-
================================================================================
|
|
2
|
+
download_documentation: renders a release's documentation as one accordion item, entries with a description as sentences and the rest as buttons.
|
|
3
|
+
Schema: src/YAML/download_schema.yml
|
|
29
4
|
{% endcomment %}
|
|
30
|
-
{%-
|
|
31
|
-
|
|
32
|
-
|
|
5
|
+
{%- comment %} An entry with a description renders as prose, since a bare button reads as a call to action; prose and buttons stay in separate groups. {% endcomment %}
|
|
6
|
+
{%- assign download_documentation_prose = "" %}
|
|
7
|
+
{%- assign download_documentation_buttons = "" %}
|
|
8
|
+
{%- for row in include.documentation %}
|
|
9
|
+
{%- if row.title and row.title != "" %}
|
|
33
10
|
{%- if row.description and row.description != "" %}
|
|
34
|
-
{%-
|
|
11
|
+
{%- capture download_documentation_prose %}{{ download_documentation_prose }}
|
|
12
|
+
<p class="mb-2">{%- include base/link.html.liquid name=row.title link=row.link target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" %} {{ row.description }}</p>{% endcapture %}
|
|
13
|
+
{%- else %}
|
|
14
|
+
{%- capture download_documentation_buttons %}{{ download_documentation_buttons }}{%- include base/link.html.liquid class="btn focus-ring btn-outline-primary text-start" name=row.title link=row.link target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}{% endcapture %}
|
|
35
15
|
{%- endif %}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
{%- endif %}
|
|
39
|
-
{%- endfor %}
|
|
40
|
-
{%- endcapture -%}
|
|
41
|
-
{%- capture download_documentation_buttons -%}
|
|
42
|
-
{%- for row in include.documentation %}
|
|
43
|
-
{%- assign has_description = false %}
|
|
44
|
-
{%- if row.description and row.description != "" %}
|
|
45
|
-
{%- assign has_description = true %}
|
|
46
|
-
{%- endif %}
|
|
47
|
-
{%- if row.title and row.title != "" and has_description == false %}
|
|
48
|
-
{%- include base/link.html.liquid class="btn focus-ring btn-outline-primary text-start" role="button" name=row.title link=row.link target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
49
|
-
{%- endif %}
|
|
50
|
-
{%- endfor %}
|
|
51
|
-
{%- endcapture -%}
|
|
16
|
+
{%- endif %}
|
|
17
|
+
{%- endfor %}
|
|
52
18
|
{%- assign download_documentation_prose_stripped = download_documentation_prose | strip %}
|
|
53
19
|
{%- assign download_documentation_buttons_stripped = download_documentation_buttons | strip %}
|
|
54
20
|
{%- capture download_documentation_body -%}
|
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: End-of-life milestones for one release, rendered as one collapsible
|
|
5
|
-
item inside download_sections.html.liquid's shared documentation/commands/
|
|
6
|
-
eol accordion — release-wide metadata that applies in common to every
|
|
7
|
-
architecture above. Called from download_sections.html.liquid.
|
|
8
|
-
|
|
9
|
-
Required Inputs:
|
|
10
|
-
- eol: Array of {date, description}
|
|
11
|
-
- accordion_id: Parent accordion's id, for data-bs-parent scoping
|
|
12
|
-
- item_id: This item's unique collapse id
|
|
13
|
-
- expanded: true starts this item open; false starts it closed. Passed
|
|
14
|
-
through from the caller (see download_sections.html.liquid).
|
|
15
|
-
================================================================================
|
|
2
|
+
download_eol: renders a release's end-of-life milestones as one accordion item.
|
|
3
|
+
Schema: src/YAML/download_schema.yml
|
|
16
4
|
{% endcomment %}
|
|
17
5
|
{%- capture download_eol_body -%}
|
|
18
6
|
<ul class="list-unstyled mb-0">
|
|
19
7
|
{%- for row in include.eol %}
|
|
8
|
+
{%- comment %} The pinned Liquid has no remove_last, so split/join drops the trailing "</p>" markdownify adds. {% endcomment %}
|
|
9
|
+
{%- assign download_eol_description_html = row.description | markdownify | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip %}
|
|
20
10
|
<li class="mb-1">
|
|
21
11
|
{%- if row.date and row.date != "" -%}
|
|
22
12
|
<strong>{{ row.date }}</strong>{% if row.description and row.description != "" %} — {% endif %}
|
|
23
13
|
{%- endif -%}
|
|
24
|
-
{{
|
|
14
|
+
{{ download_eol_description_html }}
|
|
25
15
|
</li>
|
|
26
16
|
{%- endfor %}
|
|
27
17
|
</ul>
|
|
@@ -1,58 +1,16 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: One input-group row pairing a link-to-file icon with its copyable
|
|
5
|
-
text value — the shared shape behind the checksum and signature rows in
|
|
6
|
-
download_architecture.html.liquid's per-architecture box.
|
|
7
|
-
|
|
8
|
-
A page using the copy button below must set `with_copyvalue: true` in its
|
|
9
|
-
front matter — base/copyvalue.html.liquid (loaded globally from
|
|
10
|
-
head.html.liquid, see src/JS/copyvalue.js for the copy-btn contract) is an
|
|
11
|
-
opt-in include, not a global default, despite its own schema listing `true`
|
|
12
|
-
as with_copyvalue's default (that default only covers with_copyvalue_data's
|
|
13
|
-
sub-fields once the feature is already on).
|
|
14
|
-
|
|
15
|
-
Required Inputs:
|
|
16
|
-
- arch_name: Architecture label, used only in the input's aria-label
|
|
17
|
-
(e.g. "Checksum value for x86_64").
|
|
18
|
-
- field: The file's own URL (checksum/signature). Empty renders the
|
|
19
|
-
left icon as a non-interactive glyph instead of a link.
|
|
20
|
-
- field_value: The literal value to render/copy. Callers resolve their own
|
|
21
|
-
`X_value | default: X` fallback before calling this include —
|
|
22
|
-
this include renders field_value as-is.
|
|
23
|
-
- icon: Font Awesome icon class for the left icon (e.g.
|
|
24
|
-
"fa-solid fa-shield-halved").
|
|
25
|
-
- label: Lowercase noun used in tooltip/aria-label text (e.g.
|
|
26
|
-
"checksum", "signature").
|
|
27
|
-
- id_prefix: Page-unique prefix (release id + architecture label, built by
|
|
28
|
-
download_architecture.html.liquid) combined with `label` to
|
|
29
|
-
give the `<input>` a unique id — every form field needs an id
|
|
30
|
-
or name so the browser can autofill/target it correctly, and
|
|
31
|
-
arch_name/label alone aren't page-unique (the same
|
|
32
|
-
architecture repeats across every release/tab on the page).
|
|
33
|
-
|
|
34
|
-
The clickable icon-link (when `field` is present) is rendered via
|
|
35
|
-
base/link.html.liquid — the theme's canonical link component — rather than a
|
|
36
|
-
hand-rolled `<a>`, so it inherits that component's javascript:/data:/vbscript:
|
|
37
|
-
scheme neutralization and escaping. This also means, like the Download and
|
|
38
|
-
Mirror buttons in download_architecture.html.liquid, it only renders when
|
|
39
|
-
`page.with_link` is true; the non-interactive `<span>` fallback below covers
|
|
40
|
-
both an empty `field` and a with_link-disabled page.
|
|
41
|
-
================================================================================
|
|
2
|
+
download_filevalue: renders an input group with a file link icon and a read-only value for one checksum or signature, plus a copy button when page.with_copyvalue is on.
|
|
3
|
+
Schema: src/YAML/download_schema.yml
|
|
42
4
|
{% endcomment %}
|
|
43
5
|
{%- assign download_filevalue_label_cap = include.label | capitalize -%}
|
|
44
6
|
{%- assign download_filevalue_id = include.id_prefix | append: "-" | append: include.label -%}
|
|
45
7
|
{%- assign download_filevalue_open_text = "Open " | append: include.label | append: " file" -%}
|
|
46
8
|
<div class="input-group input-group-sm">
|
|
47
|
-
{%- comment %} .link-primary
|
|
48
|
-
|
|
49
|
-
.
|
|
50
|
-
it wins over .input-group-text's color unconditionally, no custom SCSS or
|
|
51
|
-
cascade ordering required. {% endcomment %}
|
|
52
|
-
{%- if include.field and include.field != "" %}
|
|
9
|
+
{%- comment %} .link-primary compiles with !important, so it overrides the .input-group-text color without custom SCSS. {% endcomment %}
|
|
10
|
+
{%- comment %} base/link.html.liquid renders nothing unless page.with_link is true, so the span stands in for it then. {% endcomment %}
|
|
11
|
+
{%- if include.field and include.field != "" and page.with_link %}
|
|
53
12
|
{%- include base/link.html.liquid
|
|
54
13
|
class="input-group-text link-primary text-decoration-none"
|
|
55
|
-
role="button"
|
|
56
14
|
link=include.field
|
|
57
15
|
icon=include.icon
|
|
58
16
|
aria_label=download_filevalue_open_text
|
|
@@ -62,7 +20,9 @@ both an empty `field` and a with_link-disabled page.
|
|
|
62
20
|
<span class="input-group-text"><i class="{{ include.icon }}"></i></span>
|
|
63
21
|
{%- endif %}
|
|
64
22
|
<input type="text" id="{{ download_filevalue_id }}" class="form-control font-monospace" readonly value="{{ include.field_value | escape }}" aria-label="{{ download_filevalue_label_cap }} value for {{ include.arch_name | escape }}">
|
|
65
|
-
{%- comment %}
|
|
66
|
-
|
|
23
|
+
{%- comment %} Same gate as base/copyvalue.html.liquid: no copy script means no copy button. {% endcomment %}
|
|
24
|
+
{%- if page.with_copyvalue %}
|
|
25
|
+
{%- comment %} data-copy-value must go through escape: the browser decodes attribute entities before the script reads the value. {% endcomment %}
|
|
67
26
|
<button type="button" class="input-group-text copy-btn focus-ring" data-copy-value="{{ include.field_value | escape }}" data-bs-toggle="tooltip" data-bs-title="Copy {{ include.label }} value" aria-label="Copy {{ include.label }} value"><span class="fa-regular fa-copy"></span></button>
|
|
27
|
+
{%- endif %}
|
|
68
28
|
</div>
|
|
@@ -1,85 +1,30 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: Bootstrap carousel of screenshots for one release, rendered as one
|
|
5
|
-
collapsible item inside download_sections.html.liquid's shared
|
|
6
|
-
documentation/commands/eol/screenshots accordion — a sibling of Documentation
|
|
7
|
-
and Migration, not nested inside either of them. Called from
|
|
8
|
-
download_sections.html.liquid.
|
|
9
|
-
|
|
10
|
-
Required Inputs:
|
|
11
|
-
- screenshots: Array of {src, alt, title, description} — title/description
|
|
12
|
-
are optional; when present they render as a Bootstrap carousel caption
|
|
13
|
-
(https://getbootstrap.com/docs/5.3/components/carousel/#captions)
|
|
14
|
-
overlaid on the slide, hidden below md so it doesn't crowd small screens.
|
|
15
|
-
The caption heading is a `<div class="h5">`, not a real `<h5>` — same as
|
|
16
|
-
the accordion-item headers' `<div class="accordion-header h2">` — because
|
|
17
|
-
jekyll-toc auto-injects a "#" anchor into every real heading tag it scans,
|
|
18
|
-
which an overlaid caption doesn't want.
|
|
19
|
-
- image_base_path: Resolved base path under /assets/img/ (see
|
|
20
|
-
download_schema.yml's image_base_path description)
|
|
21
|
-
- release_id: Unique id of the parent tab-pane, used to scope carousel ids
|
|
22
|
-
- accordion_id: Parent accordion's id, for data-bs-parent scoping
|
|
23
|
-
- item_id: This item's unique collapse id
|
|
24
|
-
- expanded: true starts this item open; false starts it closed. Passed
|
|
25
|
-
through from the caller (see download_sections.html.liquid).
|
|
26
|
-
|
|
27
|
-
Each slide is wrapped in Bootstrap's `.ratio` utility, set to a fixed 16:10
|
|
28
|
-
box (`--bs-aspect-ratio: 62.5%` — 800 / 1280) so screenshots of any native
|
|
29
|
-
size crop to a consistent box instead of each slide having its own height.
|
|
30
|
-
16:10 matches actual OS screenshot captures (e.g. 1280x800, a common
|
|
31
|
-
display resolution) — deliberately not the 16:9 `ratio-16x9` modifier class
|
|
32
|
-
artwork.html.liquid uses for its own image presentation
|
|
33
|
-
(artwork_schema.yml's image_class default: `ratio ratio-16x9 rounded
|
|
34
|
-
bg-dark bg-artwork`); real screen captures are rarely 16:9 natively, so
|
|
35
|
-
matching artwork's ratio here would crop more than necessary. Bootstrap
|
|
36
|
-
ships no `ratio-16x10` modifier class, hence the inline `--bs-aspect-ratio`
|
|
37
|
-
override on the base `.ratio` class instead of a second modifier class.
|
|
38
|
-
`object-fit-cover` on the `<img>` itself does the actual cropping — `.ratio`
|
|
39
|
-
alone only stretches its child to fill the box.
|
|
40
|
-
|
|
41
|
-
The carousel skips Bootstrap's `.carousel-dark` modifier: its indicator/
|
|
42
|
-
caption colors are meant to react to whether the underlying image is
|
|
43
|
-
generally light or dark, which fits calm banner photography but not real OS
|
|
44
|
-
screenshots — a single release's slides span stark-white installer screens
|
|
45
|
-
to busy desktop/app-grid content, no single color choice reads clearly
|
|
46
|
-
against all of them. `.download-screenshots-carousel` (see
|
|
47
|
-
src/SASS/_download.scss) instead gives the prev/next icons their own fixed
|
|
48
|
-
dark scrim and the caption its own dark backdrop, so both stay legible over
|
|
49
|
-
any screenshot regardless of image content.
|
|
50
|
-
|
|
51
|
-
`.carousel-inner` and the two control buttons are wrapped in their own
|
|
52
|
-
`.position-relative` div, separate from `.carousel-indicators` — Bootstrap's
|
|
53
|
-
default markup puts indicators inside that same positioned box, overlaid on
|
|
54
|
-
the image (`.carousel-indicators` is `position: absolute; bottom: 0`), which
|
|
55
|
-
is illegible over screenshot content no scrim reliably fixes since a slide's
|
|
56
|
-
content near the bottom edge varies per screenshot. Moving indicators
|
|
57
|
-
outside the wrapper and resetting them to `position: static` in
|
|
58
|
-
_download.scss instead renders them in normal flow below the image — plain
|
|
59
|
-
dots on the page's own background, not an overlay — where they don't need a
|
|
60
|
-
scrim at all. `.position-relative` also keeps the prev/next buttons
|
|
61
|
-
(`top: 0; bottom: 0`, relative to the nearest positioned ancestor) scoped to
|
|
62
|
-
the image's own height instead of stretching down to cover the indicator
|
|
63
|
-
row too.
|
|
64
|
-
================================================================================
|
|
2
|
+
download_screenshots: renders a release's screenshots as a carousel inside one accordion item.
|
|
3
|
+
Schema: src/YAML/download_schema.yml
|
|
65
4
|
{% endcomment %}
|
|
66
5
|
{%- capture download_screenshots_body -%}
|
|
67
6
|
<div class="p-3">
|
|
68
7
|
<div id="carouselScreenshotsIndicators-{{ include.release_id }}" class="carousel slide download-screenshots-carousel" data-bs-ride="true">
|
|
8
|
+
{% comment %} Indicators sit outside .position-relative so they render below the image instead of over screenshot content. {% endcomment -%}
|
|
69
9
|
<div class="position-relative">
|
|
70
10
|
<div class="carousel-inner">
|
|
71
11
|
{%- for row in include.screenshots %}
|
|
12
|
+
{%- comment %} The pinned Liquid has no remove_last, so split/join drops the trailing "</p>" markdownify adds. {% endcomment %}
|
|
13
|
+
{%- assign download_screenshot_title_html = row.title | markdownify | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip %}
|
|
14
|
+
{%- assign download_screenshot_description_html = row.description | markdownify | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip %}
|
|
72
15
|
<div class="carousel-item{% if forloop.first %} active{% endif %}">
|
|
16
|
+
{% comment %} Bootstrap ships no 16:10 ratio class, so the screenshot aspect ratio is set inline. {% endcomment -%}
|
|
73
17
|
<div class="ratio" style="--bs-aspect-ratio: 62.5%;">
|
|
74
18
|
<img class="object-fit-cover" src="{{ site.baseurl }}{{ include.image_base_path }}{{ row.src | escape }}" alt="{{ row.alt | escape }}" />
|
|
75
19
|
</div>
|
|
76
20
|
{%- if row.title and row.title != "" or row.description and row.description != "" %}
|
|
77
21
|
<div class="carousel-caption d-none d-md-block">
|
|
78
22
|
{%- if row.title and row.title != "" %}
|
|
79
|
-
|
|
23
|
+
{% comment %} A div.h5, not an h5, keeps jekyll-toc from adding an anchor to the caption. {% endcomment -%}
|
|
24
|
+
<div class="h5">{{ download_screenshot_title_html }}</div>
|
|
80
25
|
{%- endif %}
|
|
81
26
|
{%- if row.description and row.description != "" %}
|
|
82
|
-
<p>{{
|
|
27
|
+
<p>{{ download_screenshot_description_html }}</p>
|
|
83
28
|
{%- endif %}
|
|
84
29
|
</div>
|
|
85
30
|
{%- endif %}
|
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: Renders one release's architecture/documentation/eol/commands/
|
|
5
|
-
screenshots sections, in a fixed order, each only if its data is present.
|
|
6
|
-
Shared by download.html.liquid's tabbed (multiple releases) and untabbed
|
|
7
|
-
(single release) render paths, since the section content is identical either
|
|
8
|
-
way — only the surrounding tab markup differs. Documentation, commands, eol,
|
|
9
|
-
and screenshots render as sibling items inside one shared Bootstrap accordion
|
|
10
|
-
below the architecture grid — collapsible, so they read as release-wide
|
|
11
|
-
metadata that applies in common to every architecture above rather than
|
|
12
|
-
disconnected trailing content. All start collapsed.
|
|
13
|
-
|
|
14
|
-
Required Inputs:
|
|
15
|
-
- release_data: One release's content object
|
|
16
|
-
- release_id: Unique id for this release, used to scope nested element ids
|
|
17
|
-
(the documentation/commands/eol/screenshots accordion, the screenshots
|
|
18
|
-
carousel's own ids)
|
|
19
|
-
- image_base_path: Resolved base path under /assets/img/
|
|
20
|
-
================================================================================
|
|
2
|
+
download_sections: renders a release's architecture grid, then its screenshots, documentation, commands, and end-of-life items in one accordion.
|
|
3
|
+
Schema: src/YAML/download_schema.yml
|
|
21
4
|
{% endcomment %}
|
|
22
5
|
|
|
23
6
|
{%- if include.release_data.architecture.size > 0 %}
|
|
@@ -1,39 +1,7 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
description, and optional action links.
|
|
6
|
-
================================================================================
|
|
7
|
-
|
|
8
|
-
Design Logic:
|
|
9
|
-
- Alert-based styling: consistent with Bootstrap alert components
|
|
10
|
-
- Icon support: visual identification of event type
|
|
11
|
-
- Color coding: color-based categorization
|
|
12
|
-
- Location details: address and city information optional
|
|
13
|
-
- Date/time display: with location suffix if available
|
|
14
|
-
- Optional action link: "Know more" button for details page
|
|
15
|
-
- Multi-event support: loops through event array
|
|
16
|
-
|
|
17
|
-
Required Inputs:
|
|
18
|
-
- title: Event name/title
|
|
19
|
-
- start: Event start (YYYY-MM-DD for an all-day event, or YYYY-MM-DDTHH:MM
|
|
20
|
-
to give it a specific start time on that same day)
|
|
21
|
-
|
|
22
|
-
Optional Inputs:
|
|
23
|
-
- description: Event description text
|
|
24
|
-
- end: Event inclusive end (same format as start), defaults to start
|
|
25
|
-
- location: Event location name
|
|
26
|
-
- color: Alert color scheme (default: "secondary")
|
|
27
|
-
- icon: Icon class (default: "fa-solid fa-calendar")
|
|
28
|
-
- link: URL to event details page (optional)
|
|
29
|
-
- data: Array of event objects
|
|
30
|
-
|
|
31
|
-
Data Source Hierarchy (priority):
|
|
32
|
-
1. include.data
|
|
33
|
-
2. page.with_event_data
|
|
34
|
-
3. site.data.event
|
|
35
|
-
4. site.data.base.event
|
|
36
|
-
================================================================================
|
|
2
|
+
event: renders each event as an alert with its title, formatted date, location, description, and an optional "Know more" button.
|
|
3
|
+
Data: include.data > page.with_event_data > site.data.event > site.data.base.event
|
|
4
|
+
Schema: src/YAML/event_schema.yml
|
|
37
5
|
{% endcomment %}
|
|
38
6
|
|
|
39
7
|
{%- assign with_event = include.with_event
|
|
@@ -49,38 +17,19 @@ Data Source Hierarchy (priority):
|
|
|
49
17
|
{%- if with_event %}
|
|
50
18
|
|
|
51
19
|
{%- assign with_event_schema = site.data.base.event_schema.properties.with_event_data.items.properties %}
|
|
52
|
-
|
|
53
|
-
{%- comment %} === Presentation === {% endcomment %}
|
|
54
20
|
{%- if with_event_data.size > 0 %}
|
|
55
21
|
<div class="mb-3">
|
|
56
22
|
{%- for event in with_event_data %}
|
|
57
|
-
{%- comment %} --- Defaults --- {% endcomment %}
|
|
58
|
-
{%- assign event_address = event.address | default: with_event_schema.address.default %}
|
|
59
|
-
{%- assign event_city = event.city | default: with_event_schema.city.default %}
|
|
60
23
|
{%- assign event_color = event.color | default: with_event_schema.color.default %}
|
|
61
24
|
{%- assign event_location = event.location | default: with_event_schema.location.default %}
|
|
62
25
|
{%- assign event_description = event.description | default: with_event_schema.description.default %}
|
|
26
|
+
{%- comment %} The pinned Liquid has no remove_last, so split/join drops the trailing "</p>" markdownify adds. {% endcomment %}
|
|
27
|
+
{%- assign event_description_html = event_description | markdownify | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip %}
|
|
63
28
|
|
|
64
|
-
{%- comment %}
|
|
65
|
-
Derive the same style of display string the old free-text `date` field
|
|
66
|
-
used to hold (e.g. "September 19 - 20, 2025") from the structured,
|
|
67
|
-
inclusive `start`/`end` ISO dates — collapsing the month/year whenever
|
|
68
|
-
both sides share it, spelling both out in full otherwise. No date
|
|
69
|
-
arithmetic here, only formatting and string comparison of the formatted
|
|
70
|
-
output; the calendar component (reading this same with_event_data) is
|
|
71
|
-
the one place that does inclusive-to-exclusive end-date arithmetic, in
|
|
72
|
-
JS. See the calendar component's event data contract documentation.
|
|
73
|
-
|
|
74
|
-
A `start` carrying a time-of-day (`YYYY-MM-DDTHH:MM`) is a same-day timed
|
|
75
|
-
event rather than a date range — it gets its own branch below that
|
|
76
|
-
appends the clock time(s) instead of running the range-collapsing logic.
|
|
77
|
-
{% endcomment %}
|
|
29
|
+
{%- comment %} Formats start and end into one display string, collapsing a shared month or year; a start with a time (T) is a same-day timed event. {% endcomment %}
|
|
78
30
|
{%- assign event_start = event.start %}
|
|
79
|
-
{%- if event_start
|
|
31
|
+
{%- if event_start and event_start != "" %}
|
|
80
32
|
{%- assign event_end = event.end | default: event_start %}
|
|
81
|
-
{%- if event_end == "" %}
|
|
82
|
-
{%- assign event_end = event_start %}
|
|
83
|
-
{%- endif %}
|
|
84
33
|
{%- if event_start contains "T" %}
|
|
85
34
|
{%- assign event_date = event_start | date: "%B %-d, %Y" %}
|
|
86
35
|
{%- assign event_start_time = event_start | date: "%-l:%M %p" %}
|
|
@@ -115,13 +64,10 @@ Data Source Hierarchy (priority):
|
|
|
115
64
|
{%- assign event_date = "" %}
|
|
116
65
|
{%- endif %}
|
|
117
66
|
{%- assign event_icon = event.icon | default: with_event_schema.icon.default %}
|
|
118
|
-
{%- assign event_image_url = event.image_url | default: with_event_schema.image_url.default %}
|
|
119
67
|
{%- assign event_link = event.link | default: with_event_schema.link.default %}
|
|
120
68
|
{%- assign event_title = event.title | default: with_event_schema.title.default %}
|
|
121
69
|
|
|
122
70
|
{%- assign event_btn_class = "btn btn-sm text-nowrap btn-" | append: event_color %}
|
|
123
|
-
|
|
124
|
-
{%- comment %} --- HTML --- {% endcomment %}
|
|
125
71
|
<div class="alert alert-{{ event_color }} rounded mb-1" role="alert">
|
|
126
72
|
<div class="d-flex justify-content-between align-items-start">
|
|
127
73
|
{%- if event_icon != "" %}
|
|
@@ -135,7 +81,7 @@ Data Source Hierarchy (priority):
|
|
|
135
81
|
<p class="ms-1 mb-0">{{ event_date }}{% if event_location != "" %} • {{ event_location }}{%- endif %}</p>
|
|
136
82
|
{%- endif %}
|
|
137
83
|
{%- if event_description != "" %}
|
|
138
|
-
<p class="ms-1 mb-0">{{
|
|
84
|
+
<p class="ms-1 mb-0">{{ event_description_html }}</p>
|
|
139
85
|
{%- endif %}
|
|
140
86
|
</div>
|
|
141
87
|
{%- if event_link != "" %}
|
|
@@ -144,7 +90,6 @@ Data Source Hierarchy (priority):
|
|
|
144
90
|
name = "Know more"
|
|
145
91
|
icon = "fa-solid fa-arrow-right"
|
|
146
92
|
icon_position = "end"
|
|
147
|
-
role = "button"
|
|
148
93
|
class = event_btn_class
|
|
149
94
|
color = event_color
|
|
150
95
|
link = event_link
|
|
@@ -1,35 +1,7 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
with integrity checks.
|
|
6
|
-
================================================================================
|
|
7
|
-
|
|
8
|
-
Design Logic:
|
|
9
|
-
- CDN-based library loading with SRI integrity verification
|
|
10
|
-
- Two loading modes: svg+js (default) and css
|
|
11
|
-
- svg+js: JavaScript bundle replaces <i> tags with inline SVGs via DOM mutation;
|
|
12
|
-
enables power transforms, layering, pseudo-element watching
|
|
13
|
-
- css: stylesheet + WOFF2 font files loaded on demand; lighter payload, no DOM cost
|
|
14
|
-
- Format switching: separate head (CSS link) and script (JS) includes; preload hints mode-aware
|
|
15
|
-
- Subresource Integrity (SRI): ensures file hasn't been tampered with
|
|
16
|
-
- Privacy-focused: referrerpolicy="no-referrer"
|
|
17
|
-
|
|
18
|
-
Optional Inputs:
|
|
19
|
-
- type: "preload" for resource hint, "head" for CSS link, "script" for JavaScript
|
|
20
|
-
- mode: "svg+js" (default) or "css" — controls which assets are emitted per type
|
|
21
|
-
- version: Font Awesome version (e.g., "7.0.1")
|
|
22
|
-
- cdn: CDN base URL (default: cdnjs.cloudflare.com)
|
|
23
|
-
- css_bundle_name, js_bundle_name: Bundle identifiers
|
|
24
|
-
- css_bundle_integrity, js_bundle_integrity: SRI hashes
|
|
25
|
-
- data: Font Awesome configuration object
|
|
26
|
-
|
|
27
|
-
Data Source Hierarchy (priority):
|
|
28
|
-
1. include.data
|
|
29
|
-
2. page.with_fontawesome_data
|
|
30
|
-
3. site.data.fontawesome
|
|
31
|
-
4. site.data.base.fontawesome
|
|
32
|
-
================================================================================
|
|
2
|
+
fontawesome: loads Font Awesome from the CDN in css or svg+js mode. head.html.liquid calls it with type="preload", type="head", and type="script".
|
|
3
|
+
Data: include.data > page.with_fontawesome_data > site.data.fontawesome > site.data.base.fontawesome
|
|
4
|
+
Schema: src/YAML/fontawesome_schema.yml
|
|
33
5
|
{% endcomment %}
|
|
34
6
|
|
|
35
7
|
{%- assign with_fontawesome = include.with_fontawesome
|
|
@@ -45,17 +17,13 @@ Data Source Hierarchy (priority):
|
|
|
45
17
|
{%- assign with_fontawesome_schema = site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties %}
|
|
46
18
|
|
|
47
19
|
{%- if with_fontawesome %}
|
|
48
|
-
|
|
49
|
-
{%- comment %} === Presentation === {% endcomment %}
|
|
50
|
-
|
|
51
|
-
{%- comment %} --- Defaults --- {% endcomment %}
|
|
52
20
|
{%- assign fontawesome_version = with_fontawesome_data.version | default: with_fontawesome_schema.version.default %}
|
|
53
21
|
{%- assign fontawesome_cdn = with_fontawesome_data.cdn | default: with_fontawesome_schema.cdn.default %}
|
|
54
22
|
{%- assign fontawesome_css_bundle_name = with_fontawesome_data.css_bundle_name | default: with_fontawesome_schema.css_bundle_name.default %}
|
|
55
23
|
{%- assign fontawesome_css_bundle_integrity = with_fontawesome_data.css_bundle_integrity | default: with_fontawesome_schema.css_bundle_integrity.default %}
|
|
56
24
|
{%- assign fontawesome_js_bundle_name = with_fontawesome_data.js_bundle_name | default: with_fontawesome_schema.js_bundle_name.default %}
|
|
57
25
|
{%- assign fontawesome_js_bundle_integrity = with_fontawesome_data.js_bundle_integrity | default: with_fontawesome_schema.js_bundle_integrity.default %}
|
|
58
|
-
{%- assign fontawesome_mode = with_fontawesome_data.mode | default: with_fontawesome_schema.mode.default
|
|
26
|
+
{%- assign fontawesome_mode = with_fontawesome_data.mode | default: with_fontawesome_schema.mode.default %}
|
|
59
27
|
|
|
60
28
|
{%- capture html_fontawesome_preload %}
|
|
61
29
|
{%- if fontawesome_mode == "css" %}
|
|
@@ -76,8 +44,6 @@ Data Source Hierarchy (priority):
|
|
|
76
44
|
<script src="{{ fontawesome_cdn }}/{{ fontawesome_version }}/js/{{ fontawesome_js_bundle_name }}.min.js" integrity="{{ fontawesome_js_bundle_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
77
45
|
{%- endif %}
|
|
78
46
|
{%- endcapture %}
|
|
79
|
-
|
|
80
|
-
{%- comment %} --- HTML --- {% endcomment %}
|
|
81
47
|
{%- assign type = include.type %}
|
|
82
48
|
{%- case type %}
|
|
83
49
|
{%- when "preload" %}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
footer: renders the site footer with the brand, site description, sponsors carousel, shortcuts, locales, social links, and copyright.
|
|
3
|
+
Data: include.data > page.with_footer_data > site.data.footer > site.data.base.footer
|
|
4
|
+
Schema: src/YAML/footer_schema.yml
|
|
5
|
+
{% endcomment %}
|
|
1
6
|
{%- assign with_footer = include.with_footer
|
|
2
7
|
| default: page.with_footer
|
|
3
8
|
%}
|
|
@@ -19,9 +24,11 @@
|
|
|
19
24
|
{%- assign footer_brand_manifestation = with_footer_data.brand_manifestation | default: with_footer_schema.brand_manifestation.default %}
|
|
20
25
|
{%- assign footer_brand_manifestation_class = with_footer_data.brand_manifestation_class | default: with_footer_schema.brand_manifestation_class.default %}
|
|
21
26
|
|
|
22
|
-
|
|
27
|
+
{%- comment %} Dark color mode gives links colors that stay readable on the dark footer background. {% endcomment %}
|
|
28
|
+
<footer class="{{ footer_class }}" data-bs-theme="dark">
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
{%- comment %} overflow-hidden: gx-5 widens the row's negative margin past the container's padding, which scrolls the page sideways on phones. {% endcomment %}
|
|
31
|
+
<div class="container overflow-hidden">
|
|
25
32
|
<div class="row justify-content-between align-items-start gx-5">
|
|
26
33
|
<div class="col-sm-12 col-lg-4">
|
|
27
34
|
{%- if footer_brand_image != "" %}
|
|
@@ -1,41 +1,6 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Purpose: Generates complete HTML <head> section with meta tags, stylesheets,
|
|
5
|
-
icons, fonts, and conditional library includes.
|
|
6
|
-
================================================================================
|
|
7
|
-
|
|
8
|
-
Design Logic:
|
|
9
|
-
- Comprehensive meta tags: charset, viewport, referrer policy, description, theme-color
|
|
10
|
-
- Dynamic title generation: page title + site title
|
|
11
|
-
- Favicon support: multiple formats (16x16, 32x32, SVG with type, Apple Touch)
|
|
12
|
-
- Google Fonts: Montserrat (5 weights) and Source Code Pro (2 weights) via async stylesheet
|
|
13
|
-
- Breakingnews scroll offset: dynamic CSS calculation
|
|
14
|
-
- Conditional includes: OGP, Highlight.js, DataTables, FontAwesome (SVG+JS), Event Calendar
|
|
15
|
-
- CSS load order: theme stylesheet loads first, then per-component vendor
|
|
16
|
-
CSS (FontAwesome, DataTables, Event Calendar). Components whose vendor CSS
|
|
17
|
-
needs correcting win with higher-specificity selectors in their own SCSS
|
|
18
|
-
partial instead of load order — see _datatable.scss and _calendar.scss.
|
|
19
|
-
- Script loading: Bootstrap base first (defer), then optional extensions, then UI behaviors
|
|
20
|
-
- Bootstrap and FontAwesome preloaded (high-priority fetch); CDN origins preconnected + dns-prefetched per active component
|
|
21
|
-
|
|
22
|
-
Required Inputs:
|
|
23
|
-
- page.title: Current page title
|
|
24
|
-
- site.title: Site name/title
|
|
25
|
-
- site.baseurl: Base URL for asset paths
|
|
26
|
-
|
|
27
|
-
Optional Inputs:
|
|
28
|
-
- page.with_ogp, page.with_fontawesome: Include OGP/Font Awesome SVG+JS (boolean)
|
|
29
|
-
- page.with_breakingnews, page.with_highlight: Include breaking news/highlight
|
|
30
|
-
- page.with_datatable: Include DataTables (boolean)
|
|
31
|
-
- page.with_calendar: Include Event Calendar (boolean)
|
|
32
|
-
- page.with_breakingnews_data: Array of breaking news items
|
|
33
|
-
- page.with_backtotop: Include back-to-top button (boolean)
|
|
34
|
-
- page.with_copyvalue: Include copy-to-clipboard behavior (boolean)
|
|
35
|
-
- page.theme_color, site.theme_color: Override browser chrome color. The
|
|
36
|
-
fallback below is a literal, not read from head_schema.yml — keep both in
|
|
37
|
-
sync if the default ever changes.
|
|
38
|
-
================================================================================
|
|
2
|
+
head: renders the head element with meta tags, icons, fonts, the theme stylesheet, Bootstrap, and each enabled library's CSS and JS.
|
|
3
|
+
Schema: src/YAML/head_schema.yml
|
|
39
4
|
{% endcomment %}
|
|
40
5
|
|
|
41
6
|
<head>
|
|
@@ -47,14 +12,14 @@ Optional Inputs:
|
|
|
47
12
|
{% else -%}
|
|
48
13
|
<title>{{ page.title | escape }} - {{ site.title | escape }}</title>
|
|
49
14
|
{% endif -%}
|
|
50
|
-
<meta name="description" content="{{ page.description | default: page.excerpt | default: page.title_lead | default: site.description | strip_html | truncate: 160 |
|
|
15
|
+
<meta name="description" content="{{ page.description | default: page.excerpt | default: page.title_lead | default: site.description | markdownify | strip_html | strip_newlines | strip | truncate: 160 | escape_once }}" />
|
|
51
16
|
{% include base/ogp.html.liquid %}
|
|
52
17
|
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-16.png" sizes="16x16" />
|
|
53
18
|
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-32.png" sizes="32x32" />
|
|
54
19
|
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon.svg" type="image/svg+xml" sizes="any" />
|
|
55
20
|
<link rel="apple-touch-icon" href="{{ site.baseurl }}/assets/icons/apple-touch-icon.png" sizes="180x180" />
|
|
56
21
|
<link rel="manifest" href="{{ site.baseurl }}/site.webmanifest" />
|
|
57
|
-
{%- assign head_theme_color = page.theme_color | default: site.theme_color | default:
|
|
22
|
+
{%- assign head_theme_color = page.theme_color | default: site.theme_color | default: site.data.base.head_schema.properties.theme_color.default %}
|
|
58
23
|
<meta name="theme-color" content="{{ head_theme_color }}" />
|
|
59
24
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
60
25
|
<link rel="dns-prefetch" href="https://fonts.googleapis.com" />
|
|
@@ -81,9 +46,7 @@ Optional Inputs:
|
|
|
81
46
|
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Source+Code+Pro:ital,wght@0,400;0,700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" />
|
|
82
47
|
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&family=Source+Code+Pro:ital,wght@0,400;0,700&display=swap" /></noscript>
|
|
83
48
|
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/base/stylesheet.min.css" />
|
|
84
|
-
{%- comment %} Sets scroll-margin-top
|
|
85
|
-
the current number of breaking news items, so anchor links land below the
|
|
86
|
-
breaking news bar (and navbar, if present) instead of under it. {%- endcomment %}
|
|
49
|
+
{%- comment %} Sets scroll-margin-top so anchor links land below the breaking news bar and navbar instead of under them. {%- endcomment %}
|
|
87
50
|
{%- assign breakingnews = page.with_breakingnews_data | default: site.data.breakingnews | default: site.data.base.breakingnews %}
|
|
88
51
|
{%- if page.with_breakingnews == true and breakingnews.size > 0 %}
|
|
89
52
|
{%- assign breakingnews_alert_height = site.data.base.breakingnews_schema.properties.breakingnews_alert_height.default %}
|
|
@@ -123,8 +86,6 @@ breaking news bar (and navbar, if present) instead of under it. {%- endcomment %
|
|
|
123
86
|
}
|
|
124
87
|
</style>
|
|
125
88
|
{%- endif %}
|
|
126
|
-
|
|
127
|
-
{%- comment %} CSS dependencies {%- endcomment %}
|
|
128
89
|
{%- include base/fontawesome.html.liquid type="head" %}
|
|
129
90
|
{%- include base/datatable.html.liquid type="head" %}
|
|
130
91
|
{%- include base/calendar.html.liquid type="head" %}
|
|
@@ -132,14 +93,12 @@ breaking news bar (and navbar, if present) instead of under it. {%- endcomment %
|
|
|
132
93
|
{%- comment %} JavaScript base — Bootstrap must execute before all component scripts {%- endcomment %}
|
|
133
94
|
<script src="{{ site.baseurl }}/assets/js/bootstrap.bundle.min.js" defer></script>
|
|
134
95
|
<script src="{{ site.baseurl }}/assets/js/base/init-tooltips.min.js" defer></script>
|
|
135
|
-
|
|
136
|
-
{%- comment %} JavaScript optional library extensions {%- endcomment %}
|
|
137
96
|
{%- include base/fontawesome.html.liquid type="script" %}
|
|
138
97
|
{%- include base/highlight.html.liquid %}
|
|
139
98
|
{%- include base/datatable.html.liquid type="script" %}
|
|
140
99
|
{%- include base/calendar.html.liquid type="script" %}
|
|
141
100
|
|
|
142
|
-
{%- comment %}
|
|
101
|
+
{%- comment %} UI behavior scripts depend on Bootstrap, so they load after it. {%- endcomment %}
|
|
143
102
|
{%- include base/backtotop.html.liquid %}
|
|
144
103
|
{%- include base/copyvalue.html.liquid %}
|
|
145
104
|
</head>
|