Removed old PHP code, migrated to Python and Flask
Update .dockerignore, .env, and 503 more files...
This commit is contained in:
1
templates/base_dynload.jinja
Normal file
1
templates/base_dynload.jinja
Normal file
@@ -0,0 +1 @@
|
||||
{% block main_content %}{% endblock %}
|
43
templates/base_standalone.jinja
Normal file
43
templates/base_standalone.jinja
Normal file
@@ -0,0 +1,43 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ user_lang }}">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
|
||||
<meta name="viewport" content="width=device-width"/>
|
||||
<meta name="author" content="Herwin Bozet">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||
<link rel="alternate icon" href="/favicon.ico">
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/FontAwesomePro/6.5.1/css/all.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/NibblePoker/StandardCSS/nibblepoker.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/Quantum/Quantum.min.css">
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>{% block head_title %}{% endblock %}</title>
|
||||
</head>
|
||||
<body class="layout-generic">
|
||||
|
||||
<header class="w-full p-m pl-s">
|
||||
<h1 class="t-size-17 t-w-500">
|
||||
<i class="fad fa-home t-size-16 mr-s t-muted"></i>{% block header_title %}{% endblock %}
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<main id="main" class="border border-r-0 p-l">
|
||||
{% block main_content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer class="d-flex flex-align-center w-full p-s py-xs">
|
||||
<a href="{{ l10n_url_abs('/', raw_lang) }}">
|
||||
<img id="logo-footer"
|
||||
src="/resources/NibblePoker/images/logos/v2_full_unshaded_original.svg"
|
||||
alt="{{ l10n("alt.logo", "footer", user_lang) }}" draggable="false">
|
||||
</a>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
114
templates/base_www.jinja
Normal file
114
templates/base_www.jinja
Normal file
@@ -0,0 +1,114 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ user_lang }}">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
|
||||
<meta name="viewport" content="width=device-width"/>
|
||||
<meta name="author" content="Herwin Bozet">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||
<link rel="alternate icon" href="/favicon.ico">
|
||||
|
||||
<!--<link rel="dns-prefetch" />-->
|
||||
<link rel="prefetch" href="https://cdn.nibblepoker.lu/FontAwesomePro/6.5.1/webfonts/fa-brands-400.woff2" as="font" />
|
||||
<link rel="prefetch" href="https://cdn.nibblepoker.lu/FontAwesomePro/6.5.1/webfonts/fa-duotone-900.woff2" as="font" />
|
||||
<link rel="prefetch" href="https://cdn.nibblepoker.lu/FontAwesomePro/6.5.1/webfonts/fa-solid-900.woff2" as="font" />
|
||||
<link rel="prefetch" href="https://cdn.nibblepoker.lu/NibblePoker/StandardCSS/3px-tile-0.1.png" as="image" />
|
||||
<link rel="prefetch" href="https://cdn.nibblepoker.lu/NibblePoker/StandardCSS/3px-tile-0.4.png" as="image" />
|
||||
{% block extra_preloads %}{% endblock %}
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/FontAwesomePro/6.5.1/css/all.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/NibblePoker/StandardCSS/nibblepoker.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/Quantum/Quantum.min.css">
|
||||
|
||||
{% block extra_stylesheets %}{% endblock %}
|
||||
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>{% block head_title %}{% endblock %}</title>
|
||||
</head>
|
||||
<body class="layout-generic">
|
||||
|
||||
<header class="w-full p-m pl-s">
|
||||
<h1 class="t-size-17 t-w-500">
|
||||
{% block header_title %}{% endblock %}
|
||||
</h1>
|
||||
<details id="lang-selector" class="border p-mxs px-s bkgd-blank-dark r-m">
|
||||
<summary>
|
||||
<i class="fad fa-language"></i>
|
||||
<span class="mobile-hide t-w-500"> {{ l10n("menu.title", "langs", lang) }}</span>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
</summary>
|
||||
|
||||
<div class="p-xs border bkgd-surround r-m t-w-500">
|
||||
<a href="{{ l10n_url_switch(request_path, "en") }}" class="a-hidden">
|
||||
<p class="mb-s px-xxs">{{ l10n("english", "langs", lang) }}</p>
|
||||
</a>
|
||||
<a href="{{ l10n_url_switch(request_path, "fr") }}" class="a-hidden">
|
||||
<p class="my-s px-xxs">{{ l10n("french", "langs", lang) }}</p>
|
||||
</a>
|
||||
<hr class="subtle m-0">
|
||||
<a href="{{ l10n_url_switch(request_path) }}" class="a-hidden">
|
||||
<p class="mt-xs px-xxs">{{ l10n("automatic", "langs", lang) }}</p>
|
||||
</a>
|
||||
</div>
|
||||
</details>
|
||||
</header>
|
||||
|
||||
<nav id="sidebar" class="sidebar p-m">
|
||||
<a href="{{ l10n_url_abs('/', raw_lang) }}" class="no-select">
|
||||
<img class="logo-sidebar-v2"
|
||||
src="https://cdn.nibblepoker.{{ domain_tld }}/NibblePoker/Logos/v2_full_shaded_optimized.svg"
|
||||
alt="{{ l10n("logo.alt", "sidebar", lang) }}"
|
||||
draggable="false">
|
||||
</a>
|
||||
<div class="p-xs"></div>
|
||||
{% for sidebar_entry in get_sidebar_entries() -%}
|
||||
{% if sidebar_entry is not none %}
|
||||
<a class="{% if sidebar_entry_active %}a-bland{% else %}a-hidden{% endif %}"
|
||||
{% if sidebar_entry.raw_href is not none %}
|
||||
href="{{ sidebar_entry.raw_href }}"
|
||||
{% elif sidebar_entry.abs_href is not none %}
|
||||
href="{{ l10n_url_abs(sidebar_entry.abs_href, raw_lang) }}"
|
||||
{% endif %}
|
||||
>
|
||||
<p class="t-size-18 t-w-500 py-xs sidebar-entry">
|
||||
<i class="{{ sidebar_entry.icon }} pr-xs t-size-12 t-half-muted"></i>
|
||||
<span class="t-size-12">{{ l10n(sidebar_entry.title_key, "sidebar", lang) }}</span>
|
||||
</p>
|
||||
</a>
|
||||
{% else %}
|
||||
<hr class="subtle">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</nav>
|
||||
|
||||
<main id="main" class="rl-m border border-r-0 p-l">
|
||||
{% block main_content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer class="d-flex flex-align-center w-full p-s py-xs">
|
||||
<button id="sidebar-toggle-footer" class="p-xs border r-s t-size-10" aria-label="{{ l10n("alt.sidebar.button", "footer", lang) }}">
|
||||
<i class="fa fa-bars px-xxs" aria-hidden="true"></i>
|
||||
</button>
|
||||
<p class="flex-fill t-center t-size-10 t-w-500 t-muted">
|
||||
<a class="a-hidden" href="{{ l10n_url_abs('/privacy/', raw_lang) }}">
|
||||
{{ l10n("text.privacy", "footer", lang) }}
|
||||
</a>
|
||||
</p>
|
||||
<a href="{{ l10n_url_abs('/', raw_lang) }}">
|
||||
<img id="logo-footer"
|
||||
src="https://cdn.nibblepoker.{{ domain_tld }}/NibblePoker/Logos/v2_full_unshaded_original.svg"
|
||||
alt="{{ l10n("alt.logo", "footer", lang) }}" draggable="false">
|
||||
</a>
|
||||
</footer>
|
||||
|
||||
<script src="{{ url_for("static", filename="resources/NibblePoker/js/nibblepoker.min.js") }}"></script>
|
||||
|
||||
{% block extra_scripts %}{% endblock %}
|
||||
|
||||
</body>
|
||||
</html>
|
4
templates/elements/button.jinja
Normal file
4
templates/elements/button.jinja
Normal file
@@ -0,0 +1,4 @@
|
||||
<button class="p-mxs r-s border b-light t-nowrap {{ button_extra_classes }}"
|
||||
{% if button_disabled %}disabled{% endif %}>
|
||||
{{ button_inner_html }}
|
||||
</button>
|
39
templates/elements/heading.jinja
Normal file
39
templates/elements/heading.jinja
Normal file
@@ -0,0 +1,39 @@
|
||||
{% if heading_anchor_id is not none %}
|
||||
<a class="bland-link" href="#{{ heading_anchor_id }}">
|
||||
{% endif %}
|
||||
|
||||
<div class="heading-main p-xs border r-s
|
||||
{% if heading_level == 3 %}
|
||||
mt-l
|
||||
{% elif heading_level == 4 %}
|
||||
mt-m
|
||||
{% endif %}
|
||||
{{ heading_background_class }}">
|
||||
|
||||
<h{{ heading_level }} class="t-w-500
|
||||
{% if heading_level == 2 %}
|
||||
t-size-16
|
||||
{% else %}
|
||||
{% if heading_level == 3 %}
|
||||
t-size-12
|
||||
{% else %}
|
||||
t-size-10
|
||||
{% endif %}
|
||||
{% endif %}">
|
||||
|
||||
{% if heading_icon is not none %}
|
||||
<i class="{{ heading_icon }} t-muted"></i>
|
||||
{% endif %}
|
||||
|
||||
{{ heading_inner_html }}
|
||||
|
||||
{% if heading_right_html is not none %}
|
||||
<span class="ml-auto mobile-hide t-size-10 t-muted">{{ heading_right_html }}</span>
|
||||
{% endif %}
|
||||
|
||||
</h{{ heading_level }}>
|
||||
</div>
|
||||
|
||||
{% if heading_anchor_id is not none %}
|
||||
</a>
|
||||
{% endif %}
|
1
templates/elements/image.jinja
Normal file
1
templates/elements/image.jinja
Normal file
@@ -0,0 +1 @@
|
||||
<img src="" alt="">
|
3
templates/elements/paragraph.jinja
Normal file
3
templates/elements/paragraph.jinja
Normal file
@@ -0,0 +1,3 @@
|
||||
<p class="mt-xs mx-s">
|
||||
{{ paragraph_inner_html }}
|
||||
</p>
|
9
templates/elements/splide.jinja
Normal file
9
templates/elements/splide.jinja
Normal file
@@ -0,0 +1,9 @@
|
||||
<section class="splide border bkgd-math r-s">
|
||||
<div class="splide__track r-s">
|
||||
<ul class="splide__list">
|
||||
{% for inner_html_pane in splide_inner_html_panes %}
|
||||
<li class="splide__slide">{{ inner_html_pane }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
7
templates/pages/_content_index.jinja
Normal file
7
templates/pages/_content_index.jinja
Normal file
@@ -0,0 +1,7 @@
|
||||
{% extends "base_www.jinja" %}
|
||||
|
||||
{% block main_content %}
|
||||
{% block content_filters %}{% endblock %}
|
||||
<hr class="subtle">
|
||||
{% block content_listing %}{% endblock %}
|
||||
{% endblock %}
|
99
templates/pages/about.jinja
Normal file
99
templates/pages/about.jinja
Normal 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>±32,00 €</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b class="f-right">{{ l10n("financing.part.cost.yearly.total", "about", user_lang) }}:</b></td>
|
||||
<td>±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>±80,00 €</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ l10n("financing.part.storage", "about", user_lang) }}</td>
|
||||
<td>±10,00 €</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b class="f-right">{{ l10n("financing.part.cost.total", "about", user_lang) }}:</b></td>
|
||||
<td>±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 %}
|
25
templates/pages/contact.jinja
Normal file
25
templates/pages/contact.jinja
Normal 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
121
templates/pages/debug.jinja
Normal 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 %}
|
29
templates/pages/error.jinja
Normal file
29
templates/pages/error.jinja
Normal 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 %}
|
64
templates/pages/links.jinja
Normal file
64
templates/pages/links.jinja
Normal 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 %}
|
183
templates/pages/privacy.jinja
Normal file
183
templates/pages/privacy.jinja
Normal 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>   print(l10n('v2.personal.disabled.list.1'))
|
||||
</span>
|
||||
<br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i>   print(l10n('v2.personal.disabled.list.2'))
|
||||
</span>
|
||||
<br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i>   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 %}
|
40
templates/pages/project_index.jinja
Normal file
40
templates/pages/project_index.jinja
Normal 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 %}
|
53
templates/pages/root.jinja
Normal file
53
templates/pages/root.jinja
Normal 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 %}
|
40
templates/pages/tools_index.jinja
Normal file
40
templates/pages/tools_index.jinja
Normal 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 %}
|
41
templates/projects/_project.jinja
Normal file
41
templates/projects/_project.jinja
Normal file
@@ -0,0 +1,41 @@
|
||||
{% extends "base_www.jinja" %}
|
||||
|
||||
{% block extra_stylesheets %}
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/SplideJS/4.1.3/css/splide.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/HighlightJS/11.9.0-custom/styles/atom-one-dark.min.css">
|
||||
{% endblock %}
|
||||
|
||||
{% block head_title %}{{ l10n(project_data.metadata.head.title_key, project_id, user_lang) }}{% endblock %}
|
||||
{% block head_description %}{{ l10n(project_data.metadata.head.description_key, project_id, user_lang) }}{% endblock %}
|
||||
|
||||
{% block header_title %}
|
||||
<i class="fad fa-briefcase t-size-16 mr-s t-muted"></i><a href="../" class="a-hidden">{{ l10n("header.root", "projects", user_lang) }}</a>
|
||||
<span class="mobile-hide"><span class="mx-s t-size-15">❱</span>{{ l10n(project_data.metadata.general.title_key, project_id, user_lang) }}</span>
|
||||
{% endblock %}
|
||||
|
||||
{% block main_content %}
|
||||
{{ render_h1(
|
||||
'<i class="' + project_data.metadata.general.icon + ' t-size-16 mr-s t-muted"></i>' +
|
||||
l10n(project_data.metadata.general.title_key, project_id, user_lang)
|
||||
) }}
|
||||
|
||||
<div class="px-xxs">
|
||||
{% block project_content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<div class="heading-main p-xs border r-s mt-l bkgd-grid">
|
||||
<h6 class="t-w-500 t-size-11">
|
||||
<i class="fad fa-tags t-size-10"></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 %}
|
||||
</h6>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_scripts %}
|
||||
<script src="https://cdn.nibblepoker.lu/SplideJS/4.1.3/js/splide.min.js"></script>
|
||||
<script src="https://cdn.nibblepoker.lu/HighlightJS/11.9.0-custom/highlight.min.js"></script>
|
||||
|
||||
<script src="{{ url_for("static", filename="/resources/NibblePoker/js/nibblepoker-splide.min.js") }}"></script>
|
||||
{% endblock %}
|
59
templates/projects/circuitpython-ebyte-e32.jinja
Normal file
59
templates/projects/circuitpython-ebyte-e32.jinja
Normal file
@@ -0,0 +1,59 @@
|
||||
{% extends "projects/_project.jinja" %}
|
||||
|
||||
{% block project_content %}
|
||||
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
||||
{{ render_paragraph(l10n("intro.p1", project_id, user_lang)) }}
|
||||
|
||||
{{ render_h2(l10n("features.title", project_id, user_lang)) }}
|
||||
{{ render_paragraph(
|
||||
'<ul>
|
||||
<li>' + l10n("features.1", project_id, user_lang) + '</li>
|
||||
<li>' + l10n("features.2", project_id, user_lang) + '</li>
|
||||
<li>
|
||||
<ul>
|
||||
<li>' + l10n("features.2.1", project_id, user_lang) + '</li>
|
||||
<li>' + l10n("features.2.2", project_id, user_lang) + '</li>
|
||||
<li>' + l10n("features.2.3", project_id, user_lang) + '</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>' + l10n("features.3", project_id, user_lang) + '</li>
|
||||
<li>
|
||||
<ul>
|
||||
<li>' + l10n("features.3.1", project_id, user_lang) + '</li>
|
||||
<li>' + l10n("features.3.2", project_id, user_lang) + '</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>') }}
|
||||
|
||||
{{ render_h2(l10n("limitations.title", project_id, user_lang)) }}
|
||||
{{ render_paragraph(
|
||||
'<ul>
|
||||
<li>' + l10n("limitations.1", project_id, user_lang) + '</li>
|
||||
<li>
|
||||
<ul>
|
||||
<li>' + l10n("limitations.1.1", project_id, user_lang) + '</li>
|
||||
<li>' + l10n("limitations.1.2", project_id, user_lang) + '</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>' + l10n("limitations.2", project_id, user_lang) + '</li>
|
||||
<li>
|
||||
<ul>
|
||||
<li>' + l10n("limitations.2.1", project_id, user_lang) + '</li>
|
||||
<li>' + l10n("limitations.2.2", project_id, user_lang) + '</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>' + l10n("limitations.3", project_id, user_lang) + '</li>
|
||||
<li>
|
||||
<ul>
|
||||
<li>' + l10n("limitations.3.1", project_id, user_lang) + '</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>') }}
|
||||
|
||||
{{ render_splide([
|
||||
'<img src="' + url_for("static", filename="/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-01.jpg") + '">',
|
||||
'<img src="' + url_for("static", filename="/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-02.jpg") + '">',
|
||||
'<img src="' + url_for("static", filename="/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-03.jpg") + '">',
|
||||
'<img src="' + url_for("static", filename="/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-04.jpg") + '">',
|
||||
]) }}
|
||||
{% endblock %}
|
3
templates/robots.jinja
Normal file
3
templates/robots.jinja
Normal file
@@ -0,0 +1,3 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Sitemap: https://nibblepoker.{{ domain_tld }}/sitemap.txt
|
36
templates/tools/_tool.jinja
Normal file
36
templates/tools/_tool.jinja
Normal file
@@ -0,0 +1,36 @@
|
||||
{% extends "base_www.jinja" %}
|
||||
|
||||
{% block head_title %}{{ l10n(tool_data.metadata.head.title_key, tool_id, user_lang) }}{% endblock %}
|
||||
{% block head_description %}{{ l10n(tool_data.metadata.head.description_key, tool_id, user_lang) }}{% endblock %}
|
||||
|
||||
{% block extra_stylesheets %}
|
||||
{% for tool_stylesheet in tool_data.data.stylesheets %}
|
||||
<link rel="stylesheet" href="{{ url_for("static", filename="/resources/NibblePoker/tools/" + tool_id + "/" + tool_stylesheet) }}">
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block header_title %}
|
||||
<i class="fad fa-briefcase t-size-16 mr-s t-muted"></i><a href="../" class="a-hidden">{{ l10n("header.root", "projects", user_lang) }}</a>
|
||||
<span class="mobile-hide"><span class="mx-s t-size-15">❱</span>{{ l10n(tool_data.metadata.general.title_key, tool_id, user_lang) }}</span>
|
||||
{% endblock %}
|
||||
|
||||
{% block main_content %}
|
||||
{{ render_h1(
|
||||
'<i class="' + tool_data.metadata.general.icon + ' t-size-16 mr-s t-muted"></i>' +
|
||||
l10n(tool_data.metadata.general.title_key, tool_id, user_lang)
|
||||
) }}
|
||||
|
||||
<div class="px-xxs">
|
||||
{% block tool_content %}{% endblock %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_scripts %}
|
||||
{% for tool_script in tool_data.data.scripts %}
|
||||
{% if tool_script.endswith(".mjs") %}
|
||||
<script src="{{ url_for("static", filename="/resources/NibblePoker/tools/" + tool_id + "/" + tool_script) }}" type="module"></script>
|
||||
{% else %}
|
||||
<script src="{{ url_for("static", filename="/resources/NibblePoker/tools/" + tool_id + "/" + tool_script) }}"></script>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
1
templates/tools/excel-password-remover.jinja
Normal file
1
templates/tools/excel-password-remover.jinja
Normal file
@@ -0,0 +1 @@
|
||||
{% extends "tools/_tool.jinja" %}
|
85
templates/tools/svg-to-png.jinja
Normal file
85
templates/tools/svg-to-png.jinja
Normal file
@@ -0,0 +1,85 @@
|
||||
{% extends "tools/_tool.jinja" %}
|
||||
|
||||
{% block tool_content %}
|
||||
|
||||
{{ render_h2(l10n("upload.title", tool_id, user_lang)) }}
|
||||
<div class="px-s">
|
||||
<button id="svgtopng-add" class="p-xs r-s border b-light primary">
|
||||
<i class="fa-duotone fa-solid fa-cloud-arrow-up mr-xs"></i>{{ l10n("upload.add.button", tool_id, user_lang) }}
|
||||
</button>
|
||||
<button id="svgtopng-reset" class="p-xs r-s border b-light warning">
|
||||
{{ l10n("upload.clear.button", tool_id, user_lang) }}
|
||||
</button>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="svgtopng-file-drop-container border r-s bkgd-blank">
|
||||
<p class="svgtopng-file-drop-text" id="pngtoico-drop-text-drop">Drop your file(s) here</p>
|
||||
<p class="svgtopng-file-drop-text" id="pngtoico-drop-text-file-single" hidden>You selected 1 file</p>
|
||||
<p class="svgtopng-file-drop-text" id="pngtoico-drop-text-file-multiple" hidden>You selected <span>9</span> files</p>
|
||||
<label for="pngtoico-drop" hidden>Choose or drop SVG files:</label>
|
||||
<input type="file" id="pngtoico-drop" name="pngtoico-drop" accept="image/svg+xml"
|
||||
class="w-full p-l" multiple/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ render_h2(l10n("options.title", tool_id, user_lang)) }}
|
||||
<div class="px-s">
|
||||
<label for="svgtopng-fit-mode" class="mr-xs">{{ l10n("fit.label", tool_id, user_lang) }}:</label>
|
||||
<select name="svgtopng-fit-mode" id="svgtopng-fit-mode" class="p-xxs border r-s">
|
||||
<option value="fit-svg">{{ l10n("fit.svg", tool_id, user_lang) }}</option>
|
||||
<option value="fit-fixed" selected>{{ l10n("fit.fixed", tool_id, user_lang) }}</option>
|
||||
<option value="fit-bigger-than">{{ l10n("fit.bigger", tool_id, user_lang) }}</option>
|
||||
<option value="fit-smaller-than">{{ l10n("fit.smaller", tool_id, user_lang) }}</option>
|
||||
</select>
|
||||
|
||||
<div id="svgtopng-options-fit-svg" hidden>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="svgtopng-options-fit-fixed">
|
||||
<label for="fixed-size-width" class="mr-xs">{{ l10n("width", "commons", user_lang) }}:</label>
|
||||
<input id="fixed-size-width" class="p-xxs border r-s" type="number" value="64">
|
||||
<br>
|
||||
<label for="fixed-size-height" class="mr-xs">{{ l10n("height", "commons", user_lang) }}:</label>
|
||||
<input id="fixed-size-height" class="p-xxs border r-s" type="number" value="64">
|
||||
</div>
|
||||
|
||||
<div id="svgtopng-options-fit-bigger-than" hidden>
|
||||
<label for="bigger-than-size-width" class="mr-xs">{{ l10n("width.min", "commons", user_lang) }}:</label>
|
||||
<input id="bigger-than-width" class="p-xxs border r-s" type="number" value="64">
|
||||
<br>
|
||||
<label for="bigger-than-height" class="mr-xs">{{ l10n("height.min", "commons", user_lang) }}:</label>
|
||||
<input id="bigger-than-height" class="p-xxs border r-s" type="number" value="64">
|
||||
</div>
|
||||
|
||||
<div id="svgtopng-options-fit-smaller-than" hidden>
|
||||
<label for="smaller-than-size-width" class="mr-xs">{{ l10n("width.max", "commons", user_lang) }}:</label>
|
||||
<input id="smaller-than-width" class="p-xxs border r-s" type="number" value="64">
|
||||
<br>
|
||||
<label for="smaller-than-height" class="mr-xs">{{ l10n("height.max", "commons", user_lang) }}:</label>
|
||||
<input id="smaller-than-height" class="p-xxs border r-s" type="number" value="64">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button id="svgtopng-export-individual" class="p-xs r-s border b-light success">
|
||||
{{ l10n("download.main.button", tool_id, user_lang) }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ render_h2(l10n("preview.title", tool_id, user_lang)) }}
|
||||
<div class="px-s">
|
||||
<button id="svgtopng-preview-generate" class="p-xs r-s border b-light primary">
|
||||
{{ l10n("preview.generate.button", tool_id, user_lang) }}
|
||||
</button>
|
||||
<button id="svgtopng-preview-reset" class="p-xs r-s border b-light warning">
|
||||
{{ l10n("preview.clear.button", tool_id, user_lang) }}
|
||||
</button>
|
||||
<div id="svgtopng-preview-container" class="w-full ox-scroll">
|
||||
<!--<hr class="subtle">-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--<canvas id="svgtopng-conversion-canvas" width="256" height="256" class="border r-l d-none"></canvas>-->
|
||||
{% endblock %}
|
38
templates/tools/uuid-generator.jinja
Normal file
38
templates/tools/uuid-generator.jinja
Normal file
@@ -0,0 +1,38 @@
|
||||
{% extends "tools/_tool.jinja" %}
|
||||
|
||||
{% block tool_content %}
|
||||
|
||||
<div class="px-xs mt-s">
|
||||
|
||||
<label for="uuid-generator-option-type" class="mr-xs">{{ l10n("type.label", tool_id, user_lang) }}:</label>
|
||||
<select name="uuid-generator-option-type" id="uuid-generator-option-type" class="p-xxs border r-s">
|
||||
<option value="type-uuid4" selected>{{ l10n("type.uuid4", tool_id, user_lang) }}</option>
|
||||
<option value="type-guid">{{ l10n("type.guid", tool_id, user_lang) }}</option>
|
||||
</select>
|
||||
|
||||
<br>
|
||||
|
||||
<label for="uuid-generator-option-count" class="mr-xs">{{ l10n("option.count", tool_id, user_lang) }}:</label>
|
||||
<input id="uuid-generator-option-count" class="p-xxs border r-s" type="number" value="4" min="1" max="1000">
|
||||
|
||||
<br>
|
||||
|
||||
<label for="uuid-generator-option-hyphens" class="mr-xxs">{{ l10n("option.hyphen", tool_id, user_lang) }}:</label>
|
||||
<input id="uuid-generator-option-hyphens" type="checkbox" checked>
|
||||
|
||||
<hr class="subtle">
|
||||
|
||||
<button id="uuid-generator-generate" class="p-xs r-s border b-light success">
|
||||
<i class="fa-duotone fa-solid fa-gears mr-xs"></i>{{ l10n("generate", tool_id, user_lang) }}
|
||||
</button>
|
||||
<button id="uuid-generator-download" class="p-xs r-s border b-light primary">
|
||||
<i class="fa-duotone fa-solid fa-download mr-xs"></i>{{ l10n("download", tool_id, user_lang) }}
|
||||
</button>
|
||||
|
||||
<hr class="subtle">
|
||||
|
||||
<label for="uuid-generator-preview" class="d-none">{{ l10n("preview.label", tool_id, user_lang) }}:</label>
|
||||
<textarea name="uuid-generator-preview" id="uuid-generator-preview" rows="16" class="w-full border r-s"></textarea>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
Reference in New Issue
Block a user