mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Auto-format edition-3 templates
This commit is contained in:
@@ -3,10 +3,10 @@
|
||||
{% block title %}Page not found | {{ config.title }}{% endblock title %}
|
||||
|
||||
{% block main %}
|
||||
<h1>Page not found</h1>
|
||||
<p>Sorry, this address is not valid.</p>
|
||||
<h1>Page not found</h1>
|
||||
<p>Sorry, this address is not valid.</p>
|
||||
|
||||
<p><a href="{{ config.base_url | safe }}">Go to the index page</a>.</p>
|
||||
<p><a href="{{ config.base_url | safe }}">Go to the index page</a>.</p>
|
||||
|
||||
<p>If you followed a link on this site, please <a href="https://github.com/phil-opp/blog_os/issues">report it</a>!</p>
|
||||
<p>If you followed a link on this site, please <a href="https://github.com/phil-opp/blog_os/issues">report it</a>!</p>
|
||||
{% endblock main %}
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
<h2 class="masthead-title">
|
||||
<a href="{{ config.base_url | safe }}/edition-3" title="Home">{{ config.title | safe }}</a>
|
||||
</h2>
|
||||
<p><small>{{ config.extra.subtitle | replace(from=" ", to=" ") | safe }} — Third Edition (Alpha Release)</small></p>
|
||||
<p><small>{{ config.extra.subtitle | replace(from=" ", to=" ") | safe }}
|
||||
— Third Edition (Alpha Release)</small></p>
|
||||
{% block header %}{% endblock header %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
{%- endblock description %}
|
||||
|
||||
{% block main %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ page.content | safe }}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ page.content | safe }}
|
||||
{% endblock main %}
|
||||
|
||||
{% block after_main %}
|
||||
<hr>
|
||||
<section>
|
||||
<h2 id="comments">Comments</h2>
|
||||
{{ snippets::giscus(search_term=page.title ~ " (Extra Post)", lang=page.lang) }}
|
||||
</section>
|
||||
<hr>
|
||||
<section>
|
||||
<h2 id="comments">Comments</h2>
|
||||
{{ snippets::giscus(search_term=page.title ~ " (Extra Post)", lang=page.lang) }}
|
||||
</section>
|
||||
{% endblock after_main %}
|
||||
|
||||
@@ -11,11 +11,12 @@
|
||||
<meta name="author" content="{{ config.extra.author.name }}">
|
||||
|
||||
{% if current_url %}
|
||||
<link rel="canonical" href="{{ current_url | safe }}" />
|
||||
<link rel="canonical" href="{{ current_url | safe }}" />
|
||||
{% endif %}
|
||||
<link href="/css/edition-3/main.css" rel="stylesheet">
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS feed for os.phil-opp.com" href="{{ config.base_url | safe }}/rss.xml" />
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS feed for os.phil-opp.com"
|
||||
href="{{ config.base_url | safe }}/rss.xml" />
|
||||
|
||||
<script>
|
||||
let theme = localStorage.getItem("theme");
|
||||
@@ -44,12 +45,13 @@
|
||||
<hr>
|
||||
<div class="theme-switch">
|
||||
<div class="light-switch" onclick="toggle_lights()" title="Switch between light and dark theme"></div>
|
||||
<div class="light-switch-reset" onclick="clear_theme_override()" title="Clear the theme override and go back to the system theme"></div>
|
||||
<div class="light-switch-reset" onclick="clear_theme_override()"
|
||||
title="Clear the theme override and go back to the system theme"></div>
|
||||
</div>
|
||||
<small>
|
||||
© <time datetime="2022">2022</time>. All rights reserved.
|
||||
<a class="spaced" href="https://github.com/phil-opp/blog_os#license">License</a>
|
||||
<a class="spaced" href="{{ get_url(path="@/pages/contact.md") | safe }}">Contact</a>
|
||||
<a class="spaced" href="{{ get_url(path=" @/pages/contact.md") | safe }}">Contact</a>
|
||||
</small>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -11,37 +11,39 @@
|
||||
{% set posts = posts_section.pages %}
|
||||
|
||||
{{ section.content
|
||||
| replace(from="<!-- latest-post -->", to=macros::latest_post(posts=posts))
|
||||
| replace(from="<!-- alpha-warning -->", to=macros::alpha_warning())
|
||||
| safe
|
||||
| replace(from="<!-- latest-post -->", to=macros::latest_post(posts=posts))
|
||||
| replace(from="<!-- alpha-warning -->", to=macros::alpha_warning())
|
||||
| safe
|
||||
}}
|
||||
|
||||
{%- set chapter = "none" -%}
|
||||
{%- for post in posts -%}
|
||||
{%- if post.extra["chapter"] != chapter -%}
|
||||
{%- if not loop.first -%}
|
||||
</ul></div>
|
||||
{%- if post.extra["chapter"] != chapter -%}
|
||||
{%- if not loop.first -%}
|
||||
</ul>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
|
||||
{# Begin new chapter #}
|
||||
{%- set_global chapter = post.extra["chapter"] -%}
|
||||
|
||||
{% set chapter_slug = chapter | slugify %}
|
||||
<div class="posts {{chapter_slug}}">
|
||||
{% set chapter_section = get_section(path = "edition-3/chapters/" ~ chapter_slug ~ "/_index.md" ) %}
|
||||
<h2>{{ chapter_section.title }}</h2>
|
||||
<div class="chapter-introduction">
|
||||
{{ chapter_section.content | safe }}
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{%- endif -%}
|
||||
|
||||
{# Begin new chapter #}
|
||||
{%- set_global chapter = post.extra["chapter"] -%}
|
||||
<li>{{ macros::post_link(page=post) }}</li>
|
||||
|
||||
{% set chapter_slug = chapter | slugify %}
|
||||
<div class="posts {{chapter_slug}}">
|
||||
{% set chapter_section = get_section(path = "edition-3/chapters/" ~ chapter_slug ~ "/_index.md" ) %}
|
||||
<h2>{{ chapter_section.title }}</h2>
|
||||
<div class="chapter-introduction">
|
||||
{{ chapter_section.content | safe }}
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
{%- endif -%}
|
||||
|
||||
<li>{{ macros::post_link(page=post) }}</li>
|
||||
|
||||
{% if loop.last %}
|
||||
</ul></div>
|
||||
{% endif %}
|
||||
{% if loop.last %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{%- endfor -%}
|
||||
|
||||
<hr>
|
||||
@@ -63,22 +65,34 @@
|
||||
<p>{{ status_updates.description }}</p>
|
||||
<ul>
|
||||
{% include "auto/status-updates-truncated.html" %}
|
||||
<li><a href="{{ get_url(path="@/status-update/_index.md") | safe }}"><em>view all »</em></a></li>
|
||||
<li><a href="{{ get_url(path=" @/status-update/_index.md") | safe }}"><em>view all »</em></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="frontpage-section">
|
||||
<h2>Previous Editions</h2>
|
||||
<p>You are currently viewing the third edition of “Writing an OS in Rust”. In case you are interested in the older editions, you can still find them here:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong><a href="{{ get_url(path="@/edition-2/_index.md")}}">Second Edition:</a></strong> The second edition is based on older version of the <code>bootloader</code> crate, which uses the hardware-provided VGA text buffer instead of a pixel-based framebuffer for screen output. Instead of the APIC, the legacy PIC is used for implementing hardware interrupts. The second edition only works on BIOS-based systems, not on the newer UEFI standard. <a class="read-more" href="{{ get_url(path = "edition-2") | safe }}"><em>read the second edition »</em></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong><a href="{{ get_url(path="@/edition-1/_index.md")}}">First Edition:</a></strong> The first edition was already started in 2015. It is very different in many aspects, for example it builds upon the GRUB bootloader instead of using the `bootloader` crate. This means that it requires you to manually write some assembly code and do an elaborate remap of the kernel's virtual pages in order to improve safety.<a class="read-more" href="{{ get_url(path = "edition-1") | safe }}"><em>read the first edition »</em></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<p><em>Note that the older editions are no longer updated and might no longer work or contain outdated information.</em></p>
|
||||
<p>You are currently viewing the third edition of “Writing an OS in Rust”. In case you are interested in the older
|
||||
editions, you can still find them here:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong><a href="{{ get_url(path=" @/edition-2/_index.md")}}">Second Edition:</a></strong> The second
|
||||
edition is based on older version of the <code>bootloader</code> crate, which uses the hardware-provided
|
||||
VGA text buffer instead of a pixel-based framebuffer for screen output. Instead of the APIC, the legacy
|
||||
PIC is used for implementing hardware interrupts. The second edition only works on BIOS-based systems,
|
||||
not on the newer UEFI standard. <a class="read-more" href="{{ get_url(path = " edition-2") | safe
|
||||
}}"><em>read the second edition »</em></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong><a href="{{ get_url(path=" @/edition-1/_index.md")}}">First Edition:</a></strong> The first
|
||||
edition was already started in 2015. It is very different in many aspects, for example it builds upon
|
||||
the GRUB bootloader instead of using the `bootloader` crate. This means that it requires you to manually
|
||||
write some assembly code and do an elaborate remap of the kernel's virtual pages in order to improve
|
||||
safety.<a class="read-more" href="{{ get_url(path = " edition-1") | safe
|
||||
}}"><em>read the first edition »</em></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<p><em>Note that the older editions are no longer updated and might no longer work or contain outdated
|
||||
information.</em></p>
|
||||
</div>
|
||||
|
||||
<div class="">
|
||||
@@ -95,12 +109,13 @@
|
||||
{% set translations = section.translations | group_by(attribute="lang") %}
|
||||
<ul>{%- for lang_code in config.extra.languages -%}
|
||||
{%- if translations[lang_code] and lang_code != lang -%}
|
||||
{%- set translation = translations[lang_code].0 -%}
|
||||
<li data-lang-switch-to="{{ translation.lang }}" class=""><a href="{{ translation.permalink | safe }}">
|
||||
{%- set translation = translations[lang_code].0 -%}
|
||||
<li data-lang-switch-to="{{ translation.lang }}" class=""><a href="{{ translation.permalink | safe }}">
|
||||
{{ trans(key="lang_name", lang = translation.lang) }}
|
||||
</a></li>
|
||||
{%- endif -%}
|
||||
{% endfor %}</ul>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="block">
|
||||
@@ -112,7 +127,11 @@
|
||||
<h2>Repository</h2>
|
||||
<div class="gh-repo-box">
|
||||
<div>
|
||||
<svg viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"></path></svg>
|
||||
<svg viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true">
|
||||
<path fill-rule="evenodd"
|
||||
d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z">
|
||||
</path>
|
||||
</svg>
|
||||
<a href="https://github.com/phil-opp/blog_os" class="repo-link">
|
||||
<span title="blog_os">phil-opp/blog_os</span>
|
||||
</a>
|
||||
@@ -124,16 +143,28 @@
|
||||
|
||||
<p class="stars-forks">
|
||||
<a href="https://github.com/phil-opp/blog_os/stargazers" class="stars">
|
||||
<svg aria-label="stars" viewBox="0 0 14 16" version="1.1" width="14" height="16" role="img"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"></path></svg>
|
||||
<svg aria-label="stars" viewBox="0 0 14 16" version="1.1" width="14" height="16" role="img">
|
||||
<path fill-rule="evenodd"
|
||||
d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z">
|
||||
</path>
|
||||
</svg>
|
||||
{% include "auto/stars.html" %}
|
||||
</a>
|
||||
<a href="https://github.com/phil-opp/blog_os/network/members" class="forks">
|
||||
<svg aria-label="forks" viewBox="0 0 10 16" version="1.1" width="10" height="16" role="img"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"></path></svg>
|
||||
<svg aria-label="forks" viewBox="0 0 10 16" version="1.1" width="10" height="16" role="img">
|
||||
<path fill-rule="evenodd"
|
||||
d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z">
|
||||
</path>
|
||||
</svg>
|
||||
{% include "auto/forks.html" %}
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/sponsors/phil-opp" class="sponsor">
|
||||
<svg viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9 2c-.97 0-1.69.42-2.2 1-.51.58-.78.92-.8 1-.02-.08-.28-.42-.8-1-.52-.58-1.17-1-2.2-1-1.632.086-2.954 1.333-3 3 0 .52.09 1.52.67 2.67C1.25 8.82 3.01 10.61 6 13c2.98-2.39 4.77-4.17 5.34-5.33C11.91 6.51 12 5.5 12 5c-.047-1.69-1.342-2.913-3-3z"></path></svg>
|
||||
<svg viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true">
|
||||
<path fill-rule="evenodd"
|
||||
d="M9 2c-.97 0-1.69.42-2.2 1-.51.58-.78.92-.8 1-.02-.08-.28-.42-.8-1-.52-.58-1.17-1-2.2-1-1.632.086-2.954 1.333-3 3 0 .52.09 1.52.67 2.67C1.25 8.82 3.01 10.61 6 13c2.98-2.39 4.77-4.17 5.34-5.33C11.91 6.51 12 5.5 12 5c-.047-1.69-1.342-2.913-3-3z">
|
||||
</path>
|
||||
</svg>
|
||||
Sponsor
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
|
||||
{% block title %}{{ page.title }} | {{ config.title }}{% endblock title %}
|
||||
{% block header %}
|
||||
{% if lang != "en" -%}
|
||||
<aside id="all-posts-link"><a href="{{ get_url(path="@/edition-3/_index.md") }}/{{ lang }}" title="All Posts">{{ trans(key="all_posts", lang=lang) }}</a></aside>
|
||||
{%- else -%}
|
||||
<aside id="all-posts-link"><a href="{{ get_url(path="@/edition-3/_index.md") }}" title="All Posts">{{ trans(key="all_posts", lang=lang) }}</a></aside>
|
||||
{%- endif %}
|
||||
{% if lang != "en" -%}
|
||||
<aside id="all-posts-link"><a href="{{ get_url(path=" @/edition-3/_index.md") }}/{{ lang }}" title="All Posts">{{
|
||||
trans(key="all_posts", lang=lang) }}</a></aside>
|
||||
{%- else -%}
|
||||
<aside id="all-posts-link"><a href="{{ get_url(path=" @/edition-3/_index.md") }}" title="All Posts">{{
|
||||
trans(key="all_posts", lang=lang) }}</a></aside>
|
||||
{%- endif %}
|
||||
{% endblock header %}
|
||||
|
||||
{% block description -%}
|
||||
@@ -18,7 +20,7 @@
|
||||
|
||||
{% block toc_aside %}
|
||||
<aside id="toc-aside" class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
<h2>{{ trans(key="toc", lang=lang) }}</h2>
|
||||
<h2>{{ trans(key="toc", lang=lang) }}</h2>
|
||||
<ol>
|
||||
{% for h2 in page.toc %}<li>
|
||||
<a href="#{{h2.id | safe}}">{{ h2.title | safe }}</a>
|
||||
@@ -34,119 +36,122 @@
|
||||
{% endblock toc_aside %}
|
||||
|
||||
{% block main %}
|
||||
<div class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
<div class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
<div class="post-title">
|
||||
<h1>{{ page.title }}</h1><span class="post-icon">
|
||||
{%- if page.extra.icon -%}{{page.extra.icon | safe}}{%- endif -%}
|
||||
</span>
|
||||
</div>
|
||||
<time datetime="{{ page.date | date(format="%Y-%m-%d") }}" class="post-date">
|
||||
<time datetime="{{ page.date | date(format=" %Y-%m-%d") }}" class="post-date">
|
||||
{{ page.date | date(format="%b %d, %Y") }}
|
||||
{% if page.extra.updated %} (updated on {{ page.extra.updated | date(format="%b %d, %Y") }}) {% endif %}
|
||||
</time>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ macros::alpha_warning() }}
|
||||
{{ macros::alpha_warning() }}
|
||||
|
||||
{% if page.extra.warning %}
|
||||
<div class="warning">
|
||||
{% if page.extra.warning_short %} <b>{{ page.extra.warning_short }}</b> {% endif %}
|
||||
{{ page.extra.warning | markdown(inline=true) | safe }}
|
||||
</div>
|
||||
{% if page.extra.warning %}
|
||||
<div class="warning">
|
||||
{% if page.extra.warning_short %} <b>{{ page.extra.warning_short }}</b> {% endif %}
|
||||
{{ page.extra.warning | markdown(inline=true) | safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{%- if page.lang != "en" %}
|
||||
<div class="warning{% if page.extra.rtl %} right-to-left{% endif %}">
|
||||
{% set translations = page.translations | filter(attribute="lang", value="en") %}
|
||||
{% set original = translations.0 %}
|
||||
<p>
|
||||
<b>{{ trans(key="translated_content", lang=lang) }}</b>
|
||||
{{ trans(key="translated_content_notice", lang=lang) |
|
||||
replace(from="_original.permalink_", to=original.permalink) |
|
||||
replace(from="_original.title_", to=original.title) | safe }}
|
||||
</p>
|
||||
{%- if page.extra.translators %}
|
||||
<p>
|
||||
{{ trans(key="translated_by", lang=lang) }} {% for user in page.extra.translators -%}
|
||||
{%- if not loop.first -%}
|
||||
{%- if loop.last %} {{ trans(key="word_separator", lang=lang) }} {% else %}, {% endif -%}
|
||||
{%- endif -%}
|
||||
<a href="https://github.com/{{user}}">@{{user}}</a>
|
||||
{%- endfor %}.
|
||||
|
||||
{%- if page.extra.translation_contributors %}
|
||||
<span class="translation_contributors">
|
||||
{{ trans(key="translation_contributors", lang=lang) }} {% for user in page.extra.translation_contributors
|
||||
-%}
|
||||
{%- if not loop.first -%}
|
||||
{%- if loop.last %} {{ trans(key="word_separator", lang=lang) }} {% else %}, {% endif -%}
|
||||
{%- endif -%}
|
||||
<a href="https://github.com/{{user}}">@{{user}}</a>
|
||||
{%- endfor %}.
|
||||
</span>
|
||||
{% endif -%}
|
||||
</p>
|
||||
{% endif -%}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
{{ page.content | replace(from="<!-- toc -->", to=macros::toc(toc=page.toc)) | safe }}
|
||||
</div>
|
||||
|
||||
<div class="post-footer-support{% if page.extra.rtl %} right-to-left{% endif %}">
|
||||
<h2>Support Me</h2>
|
||||
{{ snippets::support() }}
|
||||
</div>
|
||||
|
||||
{% if not page.extra.hide_next_prev %}
|
||||
<hr>
|
||||
<div class="PageNavigation">
|
||||
{% if page.lower %}
|
||||
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||
{% endif %}
|
||||
{% if page.higher %}
|
||||
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
<section>
|
||||
<h2 id="comments" class="{% if page.extra.rtl %}right-to-left{% endif %}">{{ trans(key="comments", lang=lang) }}
|
||||
</h2>
|
||||
|
||||
{% if page.extra.comments_search_term %}
|
||||
{% set search_term=page.extra.comments_search_term %}
|
||||
{% elif page.lang != "en" %}
|
||||
{% set translations = page.translations | filter(attribute="lang", value="en") %}
|
||||
{% set original = translations.0 %}
|
||||
{% set search_term=original.title ~ " (" ~ page.lang ~ ")" %}
|
||||
{% else %}
|
||||
{% set search_term=page.title %}
|
||||
{% endif %}
|
||||
{{ snippets::giscus(search_term=search_term, lang=page.lang) }}
|
||||
|
||||
{%- if page.lang != "en" %}
|
||||
<div class="warning{% if page.extra.rtl %} right-to-left{% endif %}">
|
||||
{% set translations = page.translations | filter(attribute="lang", value="en") %}
|
||||
{% set original = translations.0 %}
|
||||
<p>
|
||||
<b>{{ trans(key="translated_content", lang=lang) }}</b>
|
||||
{{ trans(key="translated_content_notice", lang=lang) |
|
||||
replace(from="_original.permalink_", to=original.permalink) |
|
||||
replace(from="_original.title_", to=original.title) | safe }}
|
||||
</p>
|
||||
{%- if page.extra.translators %}
|
||||
<p>
|
||||
{{ trans(key="translated_by", lang=lang) }} {% for user in page.extra.translators -%}
|
||||
{%- if not loop.first -%}
|
||||
{%- if loop.last %} {{ trans(key="word_separator", lang=lang) }} {% else %}, {% endif -%}
|
||||
{%- endif -%}
|
||||
<a href="https://github.com/{{user}}">@{{user}}</a>
|
||||
{%- endfor %}.
|
||||
|
||||
{%- if page.extra.translation_contributors %}
|
||||
<span class="translation_contributors">
|
||||
{{ trans(key="translation_contributors", lang=lang) }} {% for user in page.extra.translation_contributors -%}
|
||||
{%- if not loop.first -%}
|
||||
{%- if loop.last %} {{ trans(key="word_separator", lang=lang) }} {% else %}, {% endif -%}
|
||||
{%- endif -%}
|
||||
<a href="https://github.com/{{user}}">@{{user}}</a>
|
||||
{%- endfor %}.
|
||||
</span>
|
||||
{% endif -%}
|
||||
</p>
|
||||
{% endif -%}
|
||||
</div>
|
||||
<p class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
{{ trans(key="comments_notice", lang=lang) }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<div class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
{{ page.content | replace(from="<!-- toc -->", to=macros::toc(toc=page.toc)) | safe }}
|
||||
<aside class="page-aside-right">
|
||||
{% if page.translations | length > 1-%}
|
||||
<div class="block" id="language-selector">
|
||||
<h2>Other Languages</h2>
|
||||
{% set translations = page.translations | group_by(attribute="lang") %}
|
||||
<ul>{%- for lang_code in config.extra.languages -%}{%- if translations[lang_code] -%}
|
||||
{%- set translation = translations[lang_code] | first -%}
|
||||
{%- if translation and lang_code != lang -%}
|
||||
<li data-lang-switch-to="{{ translation.lang }}" class=""><a href="{{ translation.permalink | safe }}">
|
||||
{{ trans(key="lang_name", lang = translation.lang) }}
|
||||
</a></li>
|
||||
{%- endif -%}
|
||||
{%- endif -%}{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post-footer-support{% if page.extra.rtl %} right-to-left{% endif %}">
|
||||
<h2>Support Me</h2>
|
||||
{{ snippets::support() }}
|
||||
</div>
|
||||
|
||||
{% if not page.extra.hide_next_prev %}
|
||||
<hr>
|
||||
<div class="PageNavigation">
|
||||
{% if page.lower %}
|
||||
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||
{% endif %}
|
||||
{% if page.higher %}
|
||||
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
<section>
|
||||
<h2 id="comments" class="{% if page.extra.rtl %}right-to-left{% endif %}">{{ trans(key="comments", lang=lang) }}</h2>
|
||||
|
||||
{% if page.extra.comments_search_term %}
|
||||
{% set search_term=page.extra.comments_search_term %}
|
||||
{% elif page.lang != "en" %}
|
||||
{% set translations = page.translations | filter(attribute="lang", value="en") %}
|
||||
{% set original = translations.0 %}
|
||||
{% set search_term=original.title ~ " (" ~ page.lang ~ ")" %}
|
||||
{% else %}
|
||||
{% set search_term=page.title %}
|
||||
{% endif %}
|
||||
{{ snippets::giscus(search_term=search_term, lang=page.lang) }}
|
||||
|
||||
{%- if page.lang != "en" %}
|
||||
<p class="{% if page.extra.rtl %}right-to-left{% endif %}">
|
||||
{{ trans(key="comments_notice", lang=lang) }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<aside class="page-aside-right">
|
||||
{% if page.translations | length > 1-%}
|
||||
<div class="block" id="language-selector">
|
||||
<h2>Other Languages</h2>
|
||||
{% set translations = page.translations | group_by(attribute="lang") %}
|
||||
<ul>{%- for lang_code in config.extra.languages -%}{%- if translations[lang_code] -%}
|
||||
{%- set translation = translations[lang_code] | first -%}
|
||||
{%- if translation and lang_code != lang -%}
|
||||
<li data-lang-switch-to="{{ translation.lang }}" class=""><a href="{{ translation.permalink | safe }}">
|
||||
{{ trans(key="lang_name", lang = translation.lang) }}
|
||||
</a></li>
|
||||
{%- endif -%}
|
||||
{%- endif -%}{% endfor %}</ul>
|
||||
</div>
|
||||
{%- endif %}
|
||||
</aside>
|
||||
{%- endif %}
|
||||
</aside>
|
||||
|
||||
{% endblock main %}
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
<div class="posts neutral">
|
||||
{% for page in section.pages %}
|
||||
<div>
|
||||
<h2 class="post-title"><a href="{{ page.path | safe }}">{{ page.title }}</a></h2>
|
||||
<time datetime="{{ page.date | date(format="%Y-%m-%d") }}" class="post-date" style="margin-bottom: 0.5rem;">
|
||||
{{ page.date | date(format="%b %d, %Y") }}
|
||||
</time>
|
||||
<div class="post-summary" style="margin-bottom: 2rem;">
|
||||
{{ page.summary | safe}}
|
||||
<a class="read-more" href="{{ page.path | safe }}">read more…</a>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="post-title"><a href="{{ page.path | safe }}">{{ page.title }}</a></h2>
|
||||
<time datetime="{{ page.date | date(format=" %Y-%m-%d") }}" class="post-date" style="margin-bottom: 0.5rem;">
|
||||
{{ page.date | date(format="%b %d, %Y") }}
|
||||
</time>
|
||||
<div class="post-summary" style="margin-bottom: 2rem;">
|
||||
{{ page.summary | safe}}
|
||||
<a class="read-more" href="{{ page.path | safe }}">read more…</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
{% block title %}{{ page.title }} | {{ config.title }}{% endblock title %}
|
||||
|
||||
{% block main %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ page.content | safe }}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ page.content | safe }}
|
||||
{% endblock main %}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="canonical" href="{{ config.base_url | safe }}" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="refresh" content="0;url={{ config.base_url | safe }}" />
|
||||
</head>
|
||||
</html>
|
||||
|
||||
<head>
|
||||
<link rel="canonical" href="{{ config.base_url | safe }}" />
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="refresh" content="0;url={{ config.base_url | safe }}" />
|
||||
</head>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -5,34 +5,37 @@
|
||||
{% block title %}{{ page.title }} | {{ config.title }}{% endblock title %}
|
||||
|
||||
{% block main %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
<time datetime="{{ page.date | date(format="%Y-%m-%d") }}" class="post-date">
|
||||
{{ page.date | date(format="%b %d, %Y") }}
|
||||
{% if page.extra.updated %} (updated on {{ page.extra.updated | date(format="%b %d, %Y") }}) {% endif %}
|
||||
</time>
|
||||
{{ page.content | safe }}
|
||||
<h1>{{ page.title }}</h1>
|
||||
<time datetime="{{ page.date | date(format=" %Y-%m-%d") }}" class="post-date">
|
||||
{{ page.date | date(format="%b %d, %Y") }}
|
||||
{% if page.extra.updated %} (updated on {{ page.extra.updated | date(format="%b %d, %Y") }}) {% endif %}
|
||||
</time>
|
||||
{{ page.content | safe }}
|
||||
|
||||
<div>
|
||||
<h2>Thank You!</h2>
|
||||
<p>Thanks a lot to all the contributors this month!</p>
|
||||
<p>I also want to thank all the people who support me on <a href="https://github.com/sponsors/phil-opp">GitHub</a>, <a href="https://www.patreon.com/phil_opp">Patreon</a>, and <a href="https://donorbox.org/phil-opp">Donorbox</a>. It means a lot to me!</p>
|
||||
</div>
|
||||
<div>
|
||||
<h2>Thank You!</h2>
|
||||
<p>Thanks a lot to all the contributors this month!</p>
|
||||
<p>I also want to thank all the people who support me on <a href="https://github.com/sponsors/phil-opp">GitHub</a>,
|
||||
<a href="https://www.patreon.com/phil_opp">Patreon</a>, and <a
|
||||
href="https://donorbox.org/phil-opp">Donorbox</a>. It means a lot to me!
|
||||
</p>
|
||||
</div>
|
||||
{% endblock main %}
|
||||
|
||||
{% block after_main %}
|
||||
<hr>
|
||||
<div class="PageNavigation">
|
||||
{% if page.lower %}
|
||||
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||
{% endif %}
|
||||
{% if page.higher %}
|
||||
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<hr>
|
||||
<section>
|
||||
<h2 id="comments">Comments</h2>
|
||||
{{ snippets::giscus(search_term=page.title, lang=page.lang) }}
|
||||
</section>
|
||||
<hr>
|
||||
<div class="PageNavigation">
|
||||
{% if page.lower %}
|
||||
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||
{% endif %}
|
||||
{% if page.higher %}
|
||||
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<hr>
|
||||
<section>
|
||||
<h2 id="comments">Comments</h2>
|
||||
{{ snippets::giscus(search_term=page.title, lang=page.lang) }}
|
||||
</section>
|
||||
|
||||
{% endblock after_main %}
|
||||
|
||||
@@ -10,11 +10,13 @@
|
||||
<p>{{ section.description }}</p>
|
||||
{% endblock introduction %}
|
||||
|
||||
<div class="status-update-list"><ul>
|
||||
{% include "auto/status-updates.html" %}
|
||||
{% for page in section.pages %}
|
||||
<div class="status-update-list">
|
||||
<ul>
|
||||
{% include "auto/status-updates.html" %}
|
||||
{% for page in section.pages %}
|
||||
<li><b><a href="{{ page.path | safe }}">{{ page.title }}</a></b></li>
|
||||
{% endfor %}
|
||||
</ul></div>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{% endblock main %}
|
||||
|
||||
Reference in New Issue
Block a user