1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
{%- set separator = config.extra.separator | default(value="•") -%}
{%- set rel_attributes = macros_rel_attributes::rel_attributes() | trim -%}
{%- set blank_target = macros_target_attribute::target_attribute(new_tab=config.markdown.external_links_target_blank) -%}
{#- Feed icon -#}
{%- set feed_url = feed_utils::get_feed_url() -%}
{%- set should_show_feed = feed_utils::should_show_footer_feed_icon() == "true" -%}
{%- set should_show_footer_icons = should_show_feed or config.extra.socials or config.extra.email -%}
<footer>
<section>
<nav class="socials nav-navs">
{%- if should_show_footer_icons -%}
<ul>
{%- if should_show_feed -%}
<li>
<a class="nav-links no-hover-padding social" rel="{{ rel_attributes }}" {{ blank_target }} href="{{ get_url(path=feed_url, lang=lang, trailing_slash=false) | safe }}">
<img loading="lazy" alt="feed" title="feed" src="{{ get_url(path='/social_icons/rss.svg') }}">
</a>
</li>
{%- endif -%}
{# Mail icon #}
{%- if config.extra.email -%}
{%- set email_already_encoded = (config.extra.email is not containing("@")) -%}
{%- set email_needs_decoding = email_already_encoded or config.extra.encode_plaintext_email -%}
{%- if email_already_encoded -%}
{%- set encoded_email = config.extra.email -%}
{# Verify the pre-encoded e-mail is valid (i.e. contains an '@') #}
{%- set decoded_email = encoded_email | base64_decode -%}
{%- if '@' not in decoded_email -%}
{{ throw(message="ERROR: The provided e-mail appears to be base64-encoded, but does not decode to a valid e-mail address.")}}
{%- endif -%}
{%- elif config.extra.encode_plaintext_email -%}
{%- set encoded_email = config.extra.email | base64_encode -%}
{%- endif -%}
<li class="{% if email_needs_decoding %}js{% endif %}">
{%- if email_needs_decoding -%}
<a class="nav-links no-hover-padding social" href="#" data-encoded-email="{{ encoded_email | safe }}">
{%- else -%}
<a class="nav-links no-hover-padding social" href="mailto:{{ config.extra.email | safe }}">
{%- endif -%}
<img loading="lazy" alt="email" title="email" src="{{ get_url(path='social_icons/email.svg') }}">
</a>
</li>
{%- endif -%}
{%- if config.extra.socials %}
{% for social in config.extra.socials %}
<li>
<a class="nav-links no-hover-padding social" rel="{{ rel_attributes }} me" {{ blank_target }} href="{{ social.url | safe }}">
<img loading="lazy" alt="{{ social.name }}" title="{{ social.name }}" src="{{ get_url(path='social_icons/' ~ social.icon ~ '.svg') }}">
</a>
</li>
{% endfor %}
{% endif %}
</ul>
{% endif %}
</nav>
{# Footer menu #}
<nav class="nav-navs">
{%- if config.extra.footer_menu %}
<small>
<ul>
{% for menu in config.extra.footer_menu %}
<li>
{%- set trailing_slash = menu.trailing_slash | default(value=true) -%}
{%- if menu.url == "sitemap.xml" -%}
{%- set url = get_url(path=menu.url, trailing_slash=trailing_slash) -%}
{%- elif menu.url is starting_with("http") -%}
{%- if menu.trailing_slash -%}
{%- set url = menu.url ~ "/" -%}
{%- else -%}
{%- set url = menu.url -%}
{%- endif -%}
{%- else -%}
{%- set url = get_url(path=menu.url, lang=lang, trailing_slash=trailing_slash) -%}
{%- endif -%}
<a class="nav-links no-hover-padding" href="{{ url }}">
{{ macros_translate::translate(key=menu.name, default=menu.name, language_strings=language_strings) }}
</a>
</li>
{% endfor %}
</ul>
</small>
{% endif %}
</nav>
<div class="credits">
<small>
{% include "partials/copyright.html" %}
{# Shows "Powered by Zola & tabi" notice #}
{{ macros_translate::translate(key="powered_by", default="Powered by", language_strings=language_strings) }}
<a rel="{{ rel_attributes }}" {{ blank_target }} href="https://nixos.org/">NixOS</a>,
<a rel="{{ rel_attributes }}" {{ blank_target }} href="https://vpsfree.org/">vpsFree</a>,
<a rel="{{ rel_attributes }}" {{ blank_target }} href="https://www.getzola.org">Zola</a>
{{ macros_translate::translate(key="and", default="&", language_strings=language_strings) }}
<a rel="{{ rel_attributes }}" {{ blank_target }} href="https://github.com/welpo/tabi">tabi</a>.
Backed up by
<a rel="{{ rel_attributes }}" {{ blank_target }} href="https://www.rsync.net/">rsync</a>.
{# Shows link to remote repository #}
{%- if config.extra.remote_repository_url and config.extra.show_remote_source | default(value=true) -%}
{{ separator }}
<a rel="{{ rel_attributes }}" {{ blank_target }} href="{{ config.extra.remote_repository_url }}">
{{ macros_translate::translate(key="site_source", default="Site source", language_strings=language_strings) }}
</a>
{%- endif -%}
</small>
</div>
</section>
{# Load the decoding script if email is encoded #}
{%- if email_needs_decoding -%}
<script src="{{ get_url(path='js/decodeMail.min.js') }}" async></script>
{%- endif -%}
{# Modal structure for search #}
{%- if config.build_search_index -%}
{% include "partials/search_modal.html" %}
{%- endif -%}
</footer>
|