Removed old PHP code, migrated to Python and Flask

Update .dockerignore, .env, and 503 more files...
This commit is contained in:
2024-10-20 16:20:37 +02:00
parent 169e4b4fe0
commit a930331d6c
394 changed files with 4705 additions and 190131 deletions

View File

@@ -0,0 +1,7 @@
{% extends "base_www.jinja" %}
{% block main_content %}
{% block content_filters %}{% endblock %}
<hr class="subtle">
{% block content_listing %}{% endblock %}
{% endblock %}

View File

@@ -0,0 +1,99 @@
{% extends "base_www.jinja" %}
{% block head_title %}{{ l10n("head.title", "about", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("head.description", "about", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-user t-size-16 mr-s t-muted"></i>{{ l10n("header.title", "about", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n("intro.title", "about", user_lang)) }}
<img src="/resources/NibblePoker/images/about/profile-pic.jpg"
alt="" class="r-r img-profile f-right m-xs ml-xxs"
draggable="false">
{{ render_paragraph(l10n("intro.text.01", "about", user_lang) + l10n("intro.text.02", "about", user_lang)) }}
{{ render_paragraph(l10n("intro.text.10", "about", user_lang) + l10n("intro.text.11", "about", user_lang)) }}
{{ render_paragraph(l10n("intro.text.20", "about", user_lang) + l10n("intro.text.21", "about", user_lang)) }}
<!--{{ render_h1(l10n("tenets.title", "about", user_lang)) }}
<p class="mt-xs ml-s t-bold">
TODO
</p>-->
{{ render_h1(l10n("future.title", "about", user_lang)) }}
{{ render_paragraph(l10n("future.text.01", "about", user_lang) + l10n("future.text.02", "about", user_lang)) }}
{{ render_paragraph(l10n("future.text.10", "about", user_lang)) }}
{{ render_paragraph(l10n("future.text.20", "about", user_lang)) }}
{{ render_h1(l10n("financing.title", "about", user_lang)) }}
{{ render_paragraph(l10n("financing.text.01", "about", user_lang) + l10n("financing.text.02", "about", user_lang)) }}
{{ render_paragraph(l10n("financing.text.10", "about", user_lang)) }}
{{ render_paragraph(l10n("financing.text.20", "about", user_lang) + l10n("financing.text.21", "about", user_lang)) }}
<div class="grid col-2 col-medium-1">
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center mt-s mx-s">
<thead>
<tr>
<th>{{ l10n("financing.part.service", "about", user_lang) }}</th>
<th>{{ l10n("financing.part.cost.yearly", "about", user_lang) }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ l10n("financing.part.domain.lu", "about", user_lang) }}</td>
<td>17,00 €</td>
</tr>
<tr>
<td>{{ l10n("financing.part.domain.com", "about", user_lang) }}</td>
<td>14,50 €</td>
</tr>
<tr>
<td>{{ l10n("financing.part.proxy.europe", "about", user_lang) }}</td>
<td>14,50 €</td>
</tr>
<tr>
<td>{{ l10n("financing.part.proxy.america", "about", user_lang) }}</td>
<td>13,00 €</td>
</tr>
<tr>
<td>{{ l10n("financing.part.electricity", "about", user_lang) }}</td>
<td>&pm;32,00 €</td>
</tr>
<tr>
<td><b class="f-right">{{ l10n("financing.part.cost.yearly.total", "about", user_lang) }}:</b></td>
<td>&pm;89,00 €</td>
</tr>
</tbody>
</table>
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center mt-s mx-s">
<thead>
<tr>
<th>{{ l10n("financing.part.equipment", "about", user_lang) }}</th>
<th>{{ l10n("financing.part.cost", "about", user_lang) }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ l10n("financing.part.nanopir4s", "about", user_lang) }}</td>
<td>&pm;80,00 €</td>
</tr>
<tr>
<td>{{ l10n("financing.part.storage", "about", user_lang) }}</td>
<td>&pm;10,00 €</td>
</tr>
<tr>
<td><b class="f-right">{{ l10n("financing.part.cost.total", "about", user_lang) }}:</b></td>
<td>&pm;90,00 €
</td>
</tr>
</tbody>
</table>
</div>
<p class="mt-xs ml-s t-super-muted t-center">
{{ l10n("financing.text.isp", "about", user_lang) }}
</p>
{% endblock %}

View File

@@ -0,0 +1,25 @@
{% extends "base_www.jinja" %}
{% block head_title %}{{ l10n("head.title", "contact", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("head.description", "contact", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-mailbox t-size-16 mr-s t-muted"></i>{{ l10n("header.title", "contact", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n("email.title", "contact", user_lang), "fad fa-mail-bulk", "herwin.bozet@gmail.com") }}
<p class="m-s">
<a href="mailto:Herwin Bozet<herwin.bozet@gmail.com>?subject=Contact%20via%20NibblePoker.lu" class="a-hidden button-link">
<button class="p-xs r-s border b-light success"><i class="fad fa-external-link-alt mr-xs"></i>{{ l10n("email.compose", "contact", user_lang) }}</button>
</a>
</p>
{{ render_h1(l10n("twitter.title", "contact", user_lang), "fab fa-twitter", "@NibblePoker") }}
<p class="m-s">
<a href="https://twitter.com/messages/compose?recipient_id=937370791334895616" class="a-hidden button-link">
<button class="p-xs r-s border b-light primary"><i class="fad fa-external-link-alt mr-xs"></i>{{ l10n("twitter.compose", "contact", user_lang) }}</button>
</a>
</p>
{% endblock %}

121
templates/pages/debug.jinja Normal file
View File

@@ -0,0 +1,121 @@
{% if standalone %}
{% extends "base_standalone.jinja" %}
{% else %}
{% extends "base_www.jinja" %}
{% endif %}
{% block head_title %}{{ l10n("head.title", "debug", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("head.title", "debug", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-bug t-size-16 mr-s t-muted"></i>{{ l10n("header.title", "debug", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n("host.title", "debug", user_lang )) }}
<div class="p-s pb-0">
<div class="overflow-x-auto t-nowrap">
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center">
<thead>
<tr>
<th>{{ l10n("tables.field", "debug", user_lang ) }}</th>
<th>{{ l10n("tables.value", "debug", user_lang ) }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ l10n("host.requested", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
<tr>
<td>{{ l10n("host.domain", "debug", user_lang ) }}</td>
<td><kbd>{{ escape(domain_host) }}</kbd></td>
</tr>
<tr>
<td>{{ l10n("host.uri", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
<tr>
<td>{{ l10n("host.tld", "debug", user_lang ) }}</td>
<td><kbd>{{ escape(domain_tld) }}</kbd></td>
</tr>
<tr>
<td>{{ l10n("host.waffle", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
<tr>
<td>{{ l10n("host.bouneschlupp", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
</tbody>
</table>
</div>
</div>
{{ render_h1(l10n("lang.title", "debug", user_lang )) }}
<div class="p-s pb-0">
<div class="overflow-x-auto t-nowrap">
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center">
<thead>
<tr>
<th>{{ l10n("tables.field", "debug", user_lang ) }}</th>
<th>{{ l10n("tables.value", "debug", user_lang ) }}</th>
</tr>
</thead>
<tbody>
<!--<tr>
<td>{{ l10n("lang.compile-date", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>-->
<tr>
<td>{{ l10n("lang.default", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
<tr>
<td>{{ l10n("lang.user", "debug", user_lang ) }}</td>
<td><kbd>{{ user_lang }}</kbd></td>
</tr>
<tr>
<td>{{ l10n("lang.header.raw", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
<tr>
<td>{{ l10n("lang.header.processed", "debug", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
</tbody>
</table>
</div>
</div>
{{ render_h1(l10n("client.title", "debug", user_lang )) }}
<div class="p-s pb-0">
<div class="overflow-x-auto t-nowrap">
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center">
<thead>
<tr>
<th>{{ l10n("tables.field", "debug", user_lang ) }}</th>
<th>{{ l10n("tables.value", "debug", user_lang ) }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ l10n("cpu.architecture", "commons", user_lang ) + " (" + l10n("server", "commons", user_lang ) + ")" }}</td>
<td><kbd>TODO</kbd></td>
</tr>
<tr>
<td>{{ l10n("cpu.architecture", "commons", user_lang ) }} (JS)</td>
<td><kbd>TODO</kbd></td>
</tr>
<tr>
<td>{{ l10n("user-agent", "commons", user_lang ) }}</td>
<td><kbd>???</kbd></td>
</tr>
</tbody>
</table>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,29 @@
{% if standalone %}
{% extends "base_standalone.jinja" %}
{% else %}
{% extends "base_www.jinja" %}
{% endif %}
{% block head_title %}{{ l10n(error_key + ".head.title", "errors", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n(error_key + ".head.description", "errors", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-exclamation-triangle t-size-16 mr-s t-muted"></i>{{ l10n(error_key + ".header.title", "errors", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n(error_key + ".header.title", "errors", user_lang)) }}
<p class="mt-xs mx-s t-bold t-size-12">{{ l10n(error_key + ".head.description", "errors", user_lang) }}</p>
{% if error_code >= 400 and error_code <= 499 %}
<img id="error-page-skit"
src="{{ url_for("static", filename="resources/NibblePoker/images/drawings/computer_v1_danger_strong.png") }}"
alt="{{ l10n("skit.pc.warn.alt", "errors", user_lang) }}"
draggable="false">
{% elif error_code >= 500 and error_code <= 599 %}
<img id="error-page-skit"
src="{{ url_for("static", filename="resources/NibblePoker/images/drawings/computer_v1_dead_strong.png") }}"
alt="{{ l10n("skit.pc.dead.alt", "errors", user_lang) }}"
draggable="false">
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,64 @@
{% if standalone %}
{% extends "base_standalone.jinja" %}
{% else %}
{% extends "base_www.jinja" %}
{% endif %}
{% block head_title %}{{ l10n("head.title", "links", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("head.title", "links", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-link t-size-16 mr-s t-muted"></i>{{ l10n("header.title", "links", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n("social.title", "links", user_lang )) }}
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fab fa-twitter mr-xs"></i>
<a href="https://twitter.com/NibblePoker">{{ l10n("twitter.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("twitter.text.1", "links", user_lang ) }}</p>
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fab fa-github mr-xs"></i>
<a href="https://github.com/aziascreations">{{ l10n("github.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("github.text.1", "links", user_lang ) }}</p>
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fab fa-github mr-xs"></i>
<a href="https://github.com/NibblePoker">{{ l10n("github_pro.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("github_pro.text.1", "links", user_lang ) }}</p>
{{ render_h1(l10n("work.title", "links", user_lang )) }}
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fab fa-linkedin mr-xs"></i>
<a href="https://www.linkedin.com/in/herwin-bozet/">{{ l10n("linkedin.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("linkedin.text.1", "links", user_lang ) }}</p>
{{ render_h1(l10n("misc.title", "links", user_lang )) }}
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fad fa-download mr-xs"></i>
<a href="https://files.nibblepoker.lu/">{{ l10n("files.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("files.text.1", "links", user_lang ) }}</p>
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fad fa-archive mr-xs"></i>
<a href="https://archives.nibblepoker.lu/">{{ l10n("archives.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("archives.text.1", "links", user_lang ) }}</p>
<p class="mt-s ml-s t-w-600 t-size-12">
<i class="fa-duotone fa-code-branch mr-xs"></i>
<a href="https://git.nibblepoker.lu/">{{ l10n("gitea.title", "links", user_lang ) }}</a>
</p>
<p class="mt-xxs ml-l">{{ l10n("gitea.text.1", "links", user_lang ) }}</p>
{% endblock %}

View File

@@ -0,0 +1,183 @@
{% if standalone %}
{% extends "base_standalone.jinja" %}
{% else %}
{% extends "base_www.jinja" %}
{% endif %}
{% block head_title %}{{ l10n("head.title", "privacy", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("head.title", "privacy", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-user-secret t-size-16 mr-s t-muted"></i>{{ l10n("header.title", "privacy", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n("introduction.title", "privacy", user_lang), "fad fa-info") }}
{{ render_paragraph(l10n("introduction.text.1", "privacy", user_lang)) }}
{{ render_paragraph(l10n("introduction.text.2", "privacy", user_lang) +
'<br><i class="fad fa-globe ml-s t-size-8"></i>
<a href="https://gdpr.eu/privacy-notice/">
https://gdpr.eu/
</a><br>
<i class="fad fa-globe ml-s t-size-8"></i>
<a href="https://eur-lex.europa.eu/legal-content/ALL/?uri=CELEX%3A32016R0679">
https://eur-lex.europa.eu/
</a>')}}
{{ render_h1(l10n("v2.data.title", "privacy", user_lang), "fad fa-database") }}
{{ render_paragraph(l10n("v2.data.intro.1", "privacy", user_lang) +
'<br>' + l10n("v2.data.intro.2", "privacy", user_lang)) }}
{{ render_paragraph(l10n('v2.data.private.1', "privacy", user_lang) +
'<ul><li>' + l10n('v2.data.private_list.1', "privacy", user_lang) +
'</li><li>' + l10n('v2.data.private_list.2', "privacy", user_lang) +
'</li></ul>') }}
{{ render_paragraph(l10n('v2.data.non_private.1', "privacy", user_lang) +
'<ul><li>' + l10n('v2.data.non_private_list.1', "privacy", user_lang) +
'</li><li>' + l10n('v2.data.non_private_list.2', "privacy", user_lang) +
'</li></ul>') }}
{{ render_paragraph(l10n("v2.data.end.1", "privacy", user_lang)) }}
{{ render_paragraph(l10n("v2.data.end.2", "privacy", user_lang) +
'<br>' + l10n("v2.data.end.3", "privacy", user_lang)) }}
{{ render_paragraph(l10n("v2.data.end.4", "privacy", user_lang)) }}
{{ render_paragraph(l10n("v2.data.end.5", "privacy", user_lang) +
'<br>' + l10n("v2.data.end.6", "privacy", user_lang)) }}
{{ render_h1(l10n("v2.data_dns.title", "privacy", user_lang), "fad fa-database") }}
{{ render_paragraph(l10n("v2.data_dns.intro.1", "privacy", user_lang) +
'<br>' + l10n("v2.data_dns.intro.2", "privacy", user_lang)) }}
{{ render_paragraph(l10n('v2.data_dns.private.1', "privacy", user_lang) +
'<ul><li>' + l10n('v2.data_dns.private_list.1', "privacy", user_lang) +
'</li></ul>') }}
{{ render_paragraph(l10n('v2.data_dns.non_private.1', "privacy", user_lang) +
'<ul><li>' + l10n('v2.data_dns.non_private_list.1', "privacy", user_lang) +
'</li><li>' + l10n('v2.data_dns.non_private_list.2', "privacy", user_lang) +
'</li></ul>') }}
{{ render_paragraph(l10n("v2.data_dns.end.1", "privacy", user_lang)) }}
{{ render_h1(l10n("v2.third.title", "privacy", user_lang), "fad fa-handshake") }}
{{ render_paragraph(l10n("v2.third.intro.1", "privacy", user_lang) +
'<br>' + l10n("v2.third.intro.2", "privacy", user_lang)) }}
{{ render_paragraph(l10n("v2.third.intro.3", "privacy", user_lang)) }}
{{ render_paragraph(l10n('v2.third.intro.4', "privacy", user_lang) +
'<br><i class="fad fa-globe ml-s t-size-8"></i>IONOS' +
'<a class="ml-s" href="https://www.ionos.fr/terms-gtc/clause-de-confidentialite/">' +
l10n('french', "langs", user_lang) + '</a>' +
'<a class="ml-s" href="https://www.ionos.com/terms-gtc/privacy-policy/">' +
l10n('english', "langs", user_lang) + '</a>' +
'<br><i class="fad fa-globe ml-s t-size-8"></i>ChicagoVPS' +
'<a class="ml-s" href="https://www.chicagovps.net/wp-content/uploads/2023/07/Terms-and-Conditions-ChicagoVPS.pdf">' +
l10n('english', "langs", user_lang) + '</a>') }}
{{ render_h1(l10n("v2.cookies.title", "privacy", user_lang), "fad fa-cookie-bite") }}
{{ render_paragraph(l10n("v2.cookies.intro.1", "privacy", user_lang)) }}
<!--printMainHeader(l10n("v2.personal.title"), "fad fa-fist-raised")
<p class="mt-xs ml-s">
print(l10n('v2.personal.disabled.intro'))
<br>
<span class="ml-s">
<i class="fad fa-circle t-size-6"></i>&nbsp&nbsp print(l10n('v2.personal.disabled.list.1'))
</span>
<br>
<span class="ml-s">
<i class="fad fa-circle t-size-6"></i>&nbsp&nbsp print(l10n('v2.personal.disabled.list.2'))
</span>
<br>
<span class="ml-s">
<i class="fad fa-circle t-size-6"></i>&nbsp&nbsp print(l10n('v2.personal.disabled.list.3'))
</span>
</p>
<p class="mt-s ml-s">
print(l10n('v2.personal.tracking.text.1'))<br>
print(l10n('v2.personal.tracking.text.2'))<br>
print(l10n('v2.personal.tracking.text.3'))
</p>
<p class="mt-s ml-s">
print(l10n('v2.personal.transparency.text.1'))
</p>
<p class="mt-s ml-s">
print(l10n('v2.personal.recommendations'))
<br>
<i class="fad fa-globe ml-s t-size-8"></i>
<a href="https://www.enisa.europa.eu/publications/privacy-considerations-of-online-behavioural-tracking">https://www.enisa.europa.eu/publications/privacy-considerations-of-online-behavioural-tracking</a>
<span class="ml-s">(print(l10n('english')))</span>
</p>-->
{{ render_h1(l10n("v2.update.title", "privacy", user_lang), "fad fa-sync-alt") }}
{{ render_paragraph(l10n("v2.update.intro.1", "privacy", user_lang)) }}
{{ render_paragraph('<i class="fad fa-calendar-alt"></i>' + l10n("v2.update.history.1.date", "privacy", user_lang) +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2021-12-04_en.txt">' +
l10n('english', "langs", user_lang) + '</a></span>' +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2021-12-04_fr.txt">' +
l10n('french', "langs", user_lang) + '</a></span>' +
'<br><ul>' +
'<li>' + l10n('v2.update.history.1.desc.1', "privacy", user_lang) + '</li>' +
'</ul>' )}}
{{ render_paragraph('<i class="fad fa-calendar-alt"></i>' + l10n("v2.update.history.2.date", "privacy", user_lang) +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2022-03-18_en.txt">' +
l10n('english', "langs", user_lang) + '</a></span>' +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2022-03-18_fr.txt">' +
l10n('french', "langs", user_lang) + '</a></span>' +
'<br><ul>' +
'<li>' + l10n('v2.update.history.2.desc.1', "privacy", user_lang) + '</li>' +
'<li>' + l10n('v2.update.history.2.desc.2', "privacy", user_lang) + '</li>' +
'<li>' + l10n('v2.update.history.2.desc.3', "privacy", user_lang) + '</li>' +
'</ul>' )}}
{{ render_paragraph('<i class="fad fa-calendar-alt"></i>' + l10n("v2.update.history.3.date", "privacy", user_lang) +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2022-09-09_en.txt">' +
l10n('english', "langs", user_lang) + '</a></span>' +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2022-09-09_fr.txt">' +
l10n('french', "langs", user_lang) + '</a></span>' +
'<br><ul>' +
'<li>' + l10n('v2.update.history.3.desc.1', "privacy", user_lang) + '</li>' +
'<li><ul>' +
'<li>' + l10n('v2.update.history.3.desc.1.1', "privacy", user_lang) + '</li>' +
'<li>' + l10n('v2.update.history.3.desc.1.2', "privacy", user_lang) + '</li>' +
'</ul></li>' +
'<li>' + l10n('v2.update.history.3.desc.2', "privacy", user_lang) + '</li>' +
'</ul>' )}}
{{ render_paragraph('<i class="fad fa-calendar-alt"></i>' + l10n("v2.update.history.4.date", "privacy", user_lang) +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2023-11-11_en.txt">' +
l10n('english', "langs", user_lang) + '</a></span>' +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2023-11-11_fr.txt">' +
l10n('french', "langs", user_lang) + '</a></span>' +
'<br><ul>' +
'<li>' + l10n('v2.update.history.4.desc.1', "privacy", user_lang) + '</li>' +
'<li><ul>' +
'<li>' + l10n('v2.update.history.4.desc.1.1', "privacy", user_lang) + '</li>' +
'</ul></li>' +
'<li>' + l10n('v2.update.history.4.desc.2', "privacy", user_lang) + '</li>' +
'</ul>' )}}
{{ render_paragraph('<i class="fad fa-calendar-alt"></i>' + l10n("v2.update.history.5.date", "privacy", user_lang) +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2023-11-30_en.txt">' +
l10n('english', "langs", user_lang) + '</a></span>' +
'<span class="ml-l"><i class="fad fa-globe t-size-8"></i><a href="/privacy/privacy_2023-11-30_fr.txt">' +
l10n('french', "langs", user_lang) + '</a></span>' +
'<br><ul>' +
'<li>' + l10n('v2.update.history.5.desc.1', "privacy", user_lang) + '</li>' +
'<li>' + l10n('v2.update.history.5.desc.2', "privacy", user_lang) + '</li>' +
'</ul>' )}}
{{ render_paragraph(l10n("v2.update.end.2", "privacy", user_lang)) }}
{{ render_h1(l10n("contact.title", "privacy", user_lang), "fad fa-mailbox") }}
{{ render_paragraph(l10n("contact.text.1", "privacy", user_lang) +
'<br><i class="fad fa-at t-size-8 ml-s"></i><a href="mailto:herwin.bozet@gmail.com">herwin.bozet@gmail.com</a>') }}
{{ render_h1(l10n("complaint.title", "privacy", user_lang), "fad fa-gavel") }}
{{ render_paragraph(l10n("complaint.text.1", "privacy", user_lang)) }}
{{ render_paragraph(l10n('complaint.text.2', "privacy", user_lang) +
'<br><i class="fad fa-globe ml-s t-size-8"></i>' +
'<a href="https://ec.europa.eu/info/law/law-topic/data-protection/reform/rights-citizens/redress/what-should-i-do-if-i-think-my-personal-data-protection-rights-havent-been-respected_en">https://ec.europa.eu/</a>' +
'<span class="ml-s">(' + l10n('english', "langs", user_lang) + ')</span>' +
'<br><i class="fad fa-globe ml-s t-size-8"></i>' +
'<a href="https://gegevensbeschermingsautoriteit.be/citoyen/agir/introduire-une-plainte">https://gegevensbeschermingsautoriteit.be/</a>' +
'<span class="ml-s">(' + l10n('french', "langs", user_lang) + ')</span>' ) }}
{% endblock %}

View File

@@ -0,0 +1,40 @@
{% extends "pages/_content_index.jinja" %}
{% block head_title %}{{ l10n("search.head.title", "projects", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("search.head.title", "projects", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-briefcase t-size-16 mr-s t-muted"></i>{{ l10n("header.root", "projects", user_lang) }}<span class="mobile-hide">
<span class="mx-s t-size-15">❱</span>{{ l10n("header.search", "projects", user_lang) }}</span>
{% endblock %}
{% block content_filters %}
[Project filters here !]
{% endblock %}
{% block content_listing %}
{% for project_id, project_data in get_projects().items() %}
<div class="p-s border r-m">
<a href="{{ l10n_url_abs('/content/' + project_id, raw_lang) }}" class="a-hidden">
<div class="content-search-entry">
<img class="content-search-image mr-s r-l"
src="{{ url_for("static", filename=project_data.metadata.index.image_url) }}"
alt="TODO">
<h3 class="mb-xs">
{{ l10n(project_data.metadata.index.title_key, project_id, lang) }}
</h3>
<p>{{ l10n(project_data.metadata.index.preamble_key, project_id, lang) }}</p>
</div>
</a>
<p class="mt-xs">
<i class="fad fa-tags t-size-8"></i>
{% for project_tag in project_data.metadata.general.tags %}
<a href="{{ l10n_url_abs('/content/?tags=' + project_tag, raw_lang) }}" class="ml-xs">#{{ project_tag }}</a>
{% endfor %}
</p>
</div>
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,53 @@
{% if standalone %}
{% extends "base_standalone.jinja" %}
{% else %}
{% extends "base_www.jinja" %}
{% endif %}
{% block head_title %}{{ l10n("head.title", "home", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("head.title", "home", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-home t-size-16 mr-s t-muted"></i>{{ l10n("header.title", "home", user_lang) }}
{% endblock %}
{% block main_content %}
{{ render_h1(l10n("intro.title", "home", user_lang, ["NibblePoker." + domain_tld] )) }}
{{ render_paragraph(l10n("intro.text.1", "home", user_lang)) }}
{{ render_paragraph(l10n("intro.text.2", "home", user_lang)) }}
{{ render_h2(l10n("updates.title", "home", user_lang)) }}
<p><i class="fad fa-calendar-alt mr-xs"></i>{{ l10n("updates.4.date", "home", user_lang) }}</p>
<ul>
<li>{{ l10n("updates.4.text.1", "home", user_lang) }}</li>
<li>{{ l10n("updates.4.text.2", "home", user_lang) }}</li>
<li>{{ l10n("updates.4.text.3", "home", user_lang) }}</li>
<li>{{ l10n("updates.text.privacy", "home", user_lang) }}</li>
</ul>
<p><i class="fad fa-calendar-alt mr-xs"></i>{{ l10n("updates.3.date", "home", user_lang) }}</p>
<ul>
<li>{{ l10n("updates.3.text.1", "home", user_lang) }}</li>
<li>{{ l10n("updates.3.text.2", "home", user_lang) }}</li>
<li>{{ l10n("updates.3.text.3", "home", user_lang) }}</li>
<li>{{ l10n("updates.text.privacy", "home", user_lang) }}</li>
</ul>
<p><i class="fad fa-calendar-alt mr-xs"></i>{{ l10n("updates.2.date", "home", user_lang) }}</p>
<ul>
<li>{{ l10n("updates.2.text.1", "home", user_lang) }}</li>
<li>{{ l10n("updates.2.text.2", "home", user_lang) }}</li>
<li>{{ l10n("updates.2.text.3", "home", user_lang) }}</li>
<li>{{ l10n("updates.2.text.4", "home", user_lang) }}</li>
<li>{{ l10n("updates.text.privacy", "home", user_lang) }}</li>
</ul>
<p><i class="fad fa-calendar-alt mr-xs"></i>{{ l10n("updates.1.date", "home", user_lang) }}</p>
<ul>
<li>{{ l10n("updates.1.text.1", "home", user_lang) }}</li>
<li>{{ l10n("updates.text.privacy", "home", user_lang) }}</li>
</ul>
{% endblock %}

View File

@@ -0,0 +1,40 @@
{% extends "pages/_content_index.jinja" %}
{% block head_title %}{{ l10n("search.head.title", "projects", user_lang) }}{% endblock %}
{% block head_description %}{{ l10n("search.head.title", "projects", user_lang) }}{% endblock %}
{% block header_title %}
<i class="fad fa-briefcase t-size-16 mr-s t-muted"></i>{{ l10n("header.root", "projects", user_lang) }}<span class="mobile-hide">
<span class="mx-s t-size-15">❱</span>{{ l10n("header.search", "projects", user_lang) }}</span>
{% endblock %}
{% block content_filters %}
[Tools filters here !]
{% endblock %}
{% block content_listing %}
{% for tool_id, tool_data in get_tools().items() %}
<div class="p-s border r-m">
<a href="{{ l10n_url_abs('/tools/' + tool_id, raw_lang) }}" class="a-hidden">
<div class="content-search-entry">
<img class="content-search-image mr-s r-l"
src="{{ url_for("static", filename=tool_data.metadata.index.image_url) }}"
alt="TODO">
<h3 class="mb-xs">
{{ l10n(tool_data.metadata.index.title_key, tool_id, lang) }}
</h3>
<p>{{ l10n(tool_data.metadata.index.preamble_key, tool_id, lang) }}</p>
</div>
</a>
<p class="mt-xs">
<i class="fad fa-tags t-size-8"></i>
{% for tool_tag in tool_data.metadata.general.tags %}
<a href="{{ l10n_url_abs('/tools/?tags=' + tool_tag, raw_lang) }}" class="ml-xs">#{{ tool_tag }}</a>
{% endfor %}
</p>
</div>
{% endfor %}
{% endblock %}