Skip to content
Snippets Groups Projects
Unverified Commit b4991b90 authored by kogeletey's avatar kogeletey
Browse files

[feature]: header now it is possible describe it in a separate file.

[feature]: multilingual support header, footer with specifying languages for links, alert with specifying `translations` array, see example in config.toml, header.toml, alert.toml
[maintenance]: footer remove default settings
parent 99186c61
No related branches found
No related tags found
No related merge requests found
......@@ -64,11 +64,9 @@ favicon = "assets/favicon.ico"
languages = ["en","ru"]
# header title
header.name = "Karzok"
header_file = "content/header.toml"
# github
#version = "https://api.github.com/repos/kogeletey/karzok/releases/latest"
#localcdn = true
devmode = true
......@@ -82,19 +80,17 @@ repo_branch = "develop"
alert_file = "content/alert.toml"
[[extra.header_left]]
text = "Reference"
link = "$base_url/reference"
[[extra.footer]]
lang = "en"
text = "powered by <a href=\"https://karzok.re128.org\"> karzok</a>"
[[extra.header_right]]
link = "https://github.com/kogeletey/karzok"
svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2z" fill="currentColor"></path></svg>'
[[extra.footer]]
lang = "ru"
text = "запущен с помощью <a href=\"https://karzok.re128.org\"> karzok</a>"
[[extra.header_right]]
link = "https://sr.ht/~kogeletey/karzok"
svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M11.5 3a9.5 9.5 0 1 1 0 19a9.5 9.5 0 0 1 0-19zm0 1a8.5 8.5 0 1 0 0 17a8.5 8.5 0 0 0 0-17z" fill="currentColor"></path></svg>'
[[extra.footer]]
version = "https://api.github.com/repos/kogeletey/karzok/releases/latest"
[[extra.footer]]
text = "license: MIT"
[[extra.header_right]]
text = "External Link"
link = "https://karzok.re128.org"
target = "_blank"
......@@ -2,3 +2,11 @@ text = "This a staging site, use production <a href=\"https://karzok.re128.org\"
bg_color = "#ffdc00"
text_color = "#111"
#dismissable = true
[[translations]]
lang = "en"
text = "This a staging site, use production <a href=\"https://karzok.re128.org\"> here </a>"
[[translations]]
lang = "ru"
text = "Это промежуточный сайт, лучше используйте <a href=\"https://karzok.re128.org\"> этот </a>"
name = "Karzok"
[[left]]
lang = "en"
text = "Reference"
link = "@/reference"
[[left]]
lang = "ru"
text = "Спецификация"
link = "@/reference"
[[right]]
link = "https://github.com/kogeletey/karzok"
svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2z" fill="currentColor"></path></svg>'
[[right]]
link = "https://sr.ht/~kogeletey/karzok"
svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M11.5 3a9.5 9.5 0 1 1 0 19a9.5 9.5 0 0 1 0-19zm0 1a8.5 8.5 0 1 0 0 17a8.5 8.5 0 0 0 0-17z" fill="currentColor"></path></svg>'
[[right]]
lang = "ru"
text = "Внешняя ссылка"
link = "https://karzok.re128.org"
target = "_blank"
[[right]]
lang = "en"
text = "External Link"
link = "https://karzok.re128.org"
target = "_blank"
......@@ -3,28 +3,30 @@
{# footer in the page #}
{% macro footer() %}
{% if config.extra.footer%}
<footer>
<ul>
{% if config.extra.footer %}
{% for item in config.extra.footer%}
{% for item in config.extra.footer %}
{% if item.lang and item.lang == lang and item.text %}
<li>
<span> {{ item.text | safe }} </span>
</li>
{% elif not item.lang and item.text %}
<li>
<span> {{ item.text | safe }} </span>
</li>
{% elif item.version and not item.text %}
{% set path = load_data(url=item.version, format="json") %}
<li>
<span {% if item.url %}<a href="{{ item.url }}"/> {% endif %}{{ item.text }} </a></span>
</li>
{% endfor %}
{% else %}
<li>
<span> powered by <a href="https://karzok.re128.org"> karzok </a></span>
</li>
<li>
{% if config.extra.version and not config.extra.footer %}
{% set path = load_data(url=config.extra.version, format="json") %}
<a href="{{ path.html_url }}"> <span> {{ path.tag_name }} </span> </a>
{%endif%}
</li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
</footer>
{% endif %}
{% endmacro %}
{% macro title_or_last(component, offset=2) %}
{% set length = component.components | length %}
{% set last = component.components | last %}
......
......@@ -4,6 +4,9 @@
{{ top_nav::alert(file=config.extra.alert_file) }}
{% endif %}
{% set current_link = current_url | safe | trim_end_matches(pat="/") %}
{% if config.extra.header_file %}
{% set h = load_data(path=config.extra.header_file | safe) %}
{% endif %}
<header>
<nav aria-label="section navigation" itemscope itemtype="http://shema.org/SiteNavigationElement">
<ul>
......@@ -13,14 +16,20 @@
<div class="logotype">
<img width="31" height="31" alt="favicon" src="{{ get_url(path=config.extra.logotype)}}" />
</div>
{% else %}
{% elif config.extra.header.name %}
<span> {{ config.extra.header.name | default(value="Home") }}</span>
{% elif h %}
<span> {{ h.name | default(value="Home") }}</span>
{% endif %}
</a>
</li>
{% if config.extra.header_left %}
{% for item in config.extra.header_left %}
{{ top_nav::links(item=item,current_url=current_url) }}
{{ top_nav::links(item=item,current_url=current_url) }}
{% endfor %}
{% elif h %}
{% for item in h.left %}
{{ top_nav::links(item=item,current_url=current_url) }}
{% endfor %}
{% endif %}
</ul>
......@@ -39,9 +48,12 @@
{% for item in config.extra.header_right %}
{{ top_nav::links(item=item,current_url=current_url) }}
{% endfor %}
{% endif %}
<li class="separator">
{% if config.extra.devmode %}
{% elif h.right %}
{% for item in h.right %}
{{ top_nav::links(item=item,current_url=current_url) }}
{% endfor %}
{% endif %}
<li class="separator">
{% if config.languages and config.extra.languages %}
<div class="dropdown">
<button class="vector" aria-expanded="false">
......@@ -62,7 +74,6 @@
{% endfor %}
</ul>
</div>
{% endif %}
{% endif %}
<button class="toggle vector" type="button" aria-label="Toggle mode">
<span class="svg">
......@@ -97,7 +108,15 @@
color: {{ alert.text_color }};
"
{% endif %}>
<span> {{ alert.text | safe }} </span>
{% if alert.translations %}
{% for trs in alert.translations %}
{% if trs.lang == lang %}
<span> {{ trs.text | safe }} </span>
{% endif %}
{% endfor %}
{% else %}
<span> {{ alert.text | safe }} </span>
{% endif %}
{% if alert.dismissable %}
<button aria-label="close alert">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" width="22" height="22" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M24 9.4L22.6 8L16 14.6L9.4 8L8 9.4l6.6 6.6L8 22.6L9.4 24l6.6-6.6l6.6 6.6l1.4-1.4l-6.6-6.6L24 9.4z" fill="currentColor"></path></svg>
......@@ -110,7 +129,10 @@
{% endmacro %}
{% macro links(item,current_url) %}
{% set item_link = item.link | replace(from = "$base_url", to=config.base_url) %}
{% set item_link = item.link | replace(from = "@", to=config.base_url) %}
{% if item.lang and lang != config.default_language %}
{% set item_link = item.link | replace(from="@", to=config.base_url ~ "/" ~ lang) %}
{% endif %}
{% set item_target = item.target | default(value="_self") %}
<li>
{% if item.svg %}
......@@ -122,17 +144,22 @@
{% endif %}
</a>
{% endif %}
{% if item.text %}
<a aria-label="{% if item.alt %} {{ item.alt }} {% else %} {{ item.text }} {%endif%}" itemprop="url" href=" {{ item_link | safe }}"
<a aria-label="{% if item.alt %} {{ item.alt }} {% elif item.text %} {{ item.text }} {% elif item.lang and item.lang == lang %} {{ item.text }} {% endif %}" itemprop="url" href=" {{ item_link | safe }}"
{% if item_target != "_blank" %}
class="{% if current_url is starting_with(item_link) %} active {% endif %}"
{% endif %}
target="{{ item_target }}">
<span> {{ item.text }}
{% if item.lang and item.lang == lang %}
<span> {{ item.text }}
{% if item_target == "_blank" %}
<svg width="16" height="16" viewBox="0 0 32 32"><path fill="currentColor" d="M10 6v2h12.59L6 24.59L7.41 26L24 9.41V22h2V6H10z"/></svg>
{% endif %}</span>
{% elif not item.lang and item.text %}
<span> {{ item.text }}
{% if item_target == "_blank" %}
<svg width="16" height="16" viewBox="0 0 32 32"><path fill="currentColor" d="M10 6v2h12.59L6 24.59L7.41 26L24 9.41V22h2V6H10z"/></svg>
{% endif %}</span>
{% endif %}
</a>
{% endif %}
</li>
{% endmacro %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment