Compare commits
10 Commits
3e29592b48
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f352de8c6 | |||
| fbd844523c | |||
| 9add4e5171 | |||
| 8c51b2b8b3 | |||
| 1f249206e7 | |||
| 1612416d9d | |||
| abd7046fe2 | |||
| 2eb9d5c7a5 | |||
| ed2e56cf96 | |||
| 54786b6599 |
@@ -11,3 +11,8 @@ scripts/
|
|||||||
# Docker
|
# Docker
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
Dockerfile
|
Dockerfile
|
||||||
|
|
||||||
|
# Internal stuff
|
||||||
|
*.pdn
|
||||||
|
*.ai
|
||||||
|
*.private.*
|
||||||
|
|||||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -8,12 +8,21 @@ __pycache__/
|
|||||||
|
|
||||||
# NodeJS' BS
|
# NodeJS' BS
|
||||||
node_modules/
|
node_modules/
|
||||||
|
scripts/package-lock.json
|
||||||
|
|
||||||
# Internal stuff
|
# Internal stuff
|
||||||
*.pdn
|
*.pdn
|
||||||
*.ai
|
*.ai
|
||||||
|
*.private.*
|
||||||
|
tests/
|
||||||
|
|
||||||
# Temp
|
# Temp
|
||||||
static/resources/DecimalJs*
|
static/resources/DecimalJs*
|
||||||
static/resources/SortableJS
|
static/resources/SortableJS
|
||||||
static/resources/Standalone
|
static/resources/Standalone
|
||||||
|
|
||||||
|
# Golang revamp
|
||||||
|
src/
|
||||||
|
bin/
|
||||||
|
app/
|
||||||
|
*.tmpl
|
||||||
|
|||||||
26
.run/app.py - BS4.run.xml
Normal file
26
.run/app.py - BS4.run.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="app.py - BS4" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="ENV_FILES" value="" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
<env name="NP_HTML_POST_PROCESS" value="BS4" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
26
.run/app.py - Minify.run.xml
Normal file
26
.run/app.py - Minify.run.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="app.py - Minify" type="PythonConfigurationType" factoryName="Python">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="ENV_FILES" value="" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
<env name="NP_HTML_POST_PROCESS" value="MINIFY" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
11
.run/compile-js-site.run.xml
Normal file
11
.run/compile-js-site.run.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="compile-js-site" type="BatchConfigurationType" factoryName="Batch">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="./scripts" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="compile-js-site.cmd" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
11
.run/delete-minified-js.run.xml
Normal file
11
.run/delete-minified-js.run.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="delete-minified-js" type="BatchConfigurationType" factoryName="Batch">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="./scripts" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="delete-minified-js.cmd" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
11
.run/delete-pycache.run.xml
Normal file
11
.run/delete-pycache.run.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="delete-pycache" type="BatchConfigurationType" factoryName="Batch">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="./scripts" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="delete-pycache.cmd" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
13
.run/go build np_web_main.run.xml
Normal file
13
.run/go build np_web_main.run.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="go build np_web_main" type="GoApplicationRunConfiguration" factoryName="Go Application" nameIsGenerated="true">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<working_directory value="$PROJECT_DIR$" />
|
||||||
|
<go_parameters value="-ldflags="-s -w -extldflags '-static'"" />
|
||||||
|
<kind value="PACKAGE" />
|
||||||
|
<package value="np_web_main" />
|
||||||
|
<directory value="$PROJECT_DIR$" />
|
||||||
|
<filePath value="$PROJECT_DIR$/app/main.go" />
|
||||||
|
<output_directory value="$PROJECT_DIR$/bin" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
11
.run/nodejs-setup.run.xml
Normal file
11
.run/nodejs-setup.run.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="nodejs-setup" type="BatchConfigurationType" factoryName="Batch">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="./scripts" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="nodejs-setup.cmd" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
11
.run/package-for-release.run.xml
Normal file
11
.run/package-for-release.run.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="package-for-release" type="BatchConfigurationType" factoryName="Batch">
|
||||||
|
<module name="Web-NibblePoker" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="./scripts" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="package-for-release.cmd" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
14
app.py
14
app.py
@@ -10,7 +10,7 @@ from werkzeug.exceptions import HTTPException
|
|||||||
|
|
||||||
from website.content import get_projects, get_tools, sanitize_input_tags, load_content_items, get_content, \
|
from website.content import get_projects, get_tools, sanitize_input_tags, load_content_items, get_content, \
|
||||||
get_applets, get_projects_languages, get_projects_by_languages, get_sorted_tools_by_tags, \
|
get_applets, get_projects_languages, get_projects_by_languages, get_sorted_tools_by_tags, \
|
||||||
get_sorted_projects_by_tags
|
get_sorted_projects_by_tags, get_tools_linked_tags, get_tools_unlinked_tags
|
||||||
from website.contributors import reload_contributors_data
|
from website.contributors import reload_contributors_data
|
||||||
from website.domains import ALLOWED_DOMAINS
|
from website.domains import ALLOWED_DOMAINS
|
||||||
from website.l10n.utils import get_user_lang, localize, reload_strings, l10n_url_abs, l10n_url_switch, DEFAULT_LANG
|
from website.l10n.utils import get_user_lang, localize, reload_strings, l10n_url_abs, l10n_url_switch, DEFAULT_LANG
|
||||||
@@ -24,7 +24,7 @@ from website.renderers.lists import render_list_ul
|
|||||||
from website.renderers.splide import render_splide
|
from website.renderers.splide import render_splide
|
||||||
from website.renderers.standalone import get_standalone_common_headers
|
from website.renderers.standalone import get_standalone_common_headers
|
||||||
from website.sidebar import reload_sidebar_entries, get_sidebar_entries
|
from website.sidebar import reload_sidebar_entries, get_sidebar_entries
|
||||||
from website.sitemap import reload_sitemap_entries, get_sitemap_entries
|
from website.sitemap import reload_sitemap_entries, get_sitemap_entries, get_sitemap_xml
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from rich import print
|
from rich import print
|
||||||
@@ -125,6 +125,8 @@ def inject_processors():
|
|||||||
get_tools=get_tools,
|
get_tools=get_tools,
|
||||||
get_sorted_projects_by_tags=get_sorted_projects_by_tags,
|
get_sorted_projects_by_tags=get_sorted_projects_by_tags,
|
||||||
get_sorted_tools_by_tags=get_sorted_tools_by_tags,
|
get_sorted_tools_by_tags=get_sorted_tools_by_tags,
|
||||||
|
get_tools_unlinked_tags=get_tools_unlinked_tags,
|
||||||
|
get_tools_linked_tags=get_tools_linked_tags,
|
||||||
|
|
||||||
# Renderers
|
# Renderers
|
||||||
render_button=render_button,
|
render_button=render_button,
|
||||||
@@ -162,11 +164,15 @@ def route_robots_txt():
|
|||||||
|
|
||||||
|
|
||||||
@app.route('/sitemap.txt')
|
@app.route('/sitemap.txt')
|
||||||
def route_sitemap():
|
def route_sitemap_txt():
|
||||||
# FIXME: Add the domain !!!
|
|
||||||
return Response("\n".join(get_sitemap_entries()), mimetype="")
|
return Response("\n".join(get_sitemap_entries()), mimetype="")
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/sitemap.xml')
|
||||||
|
def route_sitemap_xml():
|
||||||
|
return Response(get_sitemap_xml(request.headers['Host']), mimetype="application/xml")
|
||||||
|
|
||||||
|
|
||||||
@app.route('/', defaults={'lang': None})
|
@app.route('/', defaults={'lang': None})
|
||||||
@app.route('/en/', defaults={'lang': "en"})
|
@app.route('/en/', defaults={'lang': "en"})
|
||||||
@app.route('/fr/', defaults={'lang': "fr"})
|
@app.route('/fr/', defaults={'lang': "fr"})
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ projects:
|
|||||||
subtitle_key: "article.subtitle"
|
subtitle_key: "article.subtitle"
|
||||||
tags:
|
tags:
|
||||||
- "application"
|
- "application"
|
||||||
- "tool"
|
- "cli"
|
||||||
- "windows"
|
- "windows"
|
||||||
languages:
|
languages:
|
||||||
- "dotnet"
|
- "dotnet"
|
||||||
|
|||||||
36
data/projects/pearch.yml
Normal file
36
data/projects/pearch.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
projects:
|
||||||
|
- id: "pearch"
|
||||||
|
metadata:
|
||||||
|
head:
|
||||||
|
title_key: "meta.title"
|
||||||
|
description_key: "meta.description"
|
||||||
|
opengraph:
|
||||||
|
title_key: "meta.title"
|
||||||
|
description_key: "meta.description"
|
||||||
|
type: null
|
||||||
|
url: null
|
||||||
|
image_url: "/resources/NibblePoker/images/content/pearch/main.png"
|
||||||
|
image_type: null
|
||||||
|
twitter:
|
||||||
|
title_key: "meta.title"
|
||||||
|
description_key: "meta.description"
|
||||||
|
index:
|
||||||
|
priority: 2000
|
||||||
|
enable: true
|
||||||
|
title_key: "meta.title"
|
||||||
|
preamble_key: "meta.description"
|
||||||
|
image_url: "/resources/NibblePoker/images/content/pearch/main.png"
|
||||||
|
image_alt_key: ""
|
||||||
|
general:
|
||||||
|
icon: "fad fa-terminal"
|
||||||
|
title_key: "meta.title"
|
||||||
|
subtitle_key: "article.subtitle"
|
||||||
|
tags:
|
||||||
|
- "application"
|
||||||
|
- "cli"
|
||||||
|
- "windows"
|
||||||
|
- "windows-pe"
|
||||||
|
- "cpu-arch"
|
||||||
|
languages:
|
||||||
|
- "purebasic"
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
active_id: home
|
active_id: home
|
||||||
has_new_until_utc: 0
|
has_new_until_utc: 0
|
||||||
|
|
||||||
-
|
- {}
|
||||||
|
|
||||||
#- title_key: text.articles
|
#- title_key: text.articles
|
||||||
# abs_href: "/articles/"
|
# abs_href: "/articles/"
|
||||||
@@ -56,13 +56,13 @@
|
|||||||
active_id: ""
|
active_id: ""
|
||||||
has_new_until_utc: 0
|
has_new_until_utc: 0
|
||||||
|
|
||||||
-
|
- {}
|
||||||
|
|
||||||
#- title_key: text.about
|
- title_key: text.about
|
||||||
# abs_href: "/about"
|
abs_href: "/about"
|
||||||
# icon: fad fa-user
|
icon: fad fa-user
|
||||||
# active_id: about
|
active_id: about
|
||||||
# has_new_until_utc: 0
|
has_new_until_utc: 0
|
||||||
|
|
||||||
- title_key: text.contact
|
- title_key: text.contact
|
||||||
abs_href: "/contact"
|
abs_href: "/contact"
|
||||||
|
|||||||
@@ -1,17 +1,71 @@
|
|||||||
# Sitemap definition
|
# Sitemap definition
|
||||||
|
|
||||||
- "/"
|
# changefreq: "monthly" is implied unless specified
|
||||||
- "/about/"
|
|
||||||
#- "/articles/"
|
sitemap:
|
||||||
- "/contact/"
|
"/":
|
||||||
- "/content/"
|
lastmod: "2025-03-30T00:00:00+01:00"
|
||||||
- "/content/circuitpython-ebyte-e32/"
|
priority: "1"
|
||||||
- "/content/docker-mini-cctv-nvr/"
|
|
||||||
- "/content/lscom-cli-dotnet/"
|
"/about/":
|
||||||
- "/links/"
|
lastmod: "2025-09-14T22:04:00+01:00"
|
||||||
- "/privacy/"
|
priority: "0.2"
|
||||||
- "/tools/"
|
|
||||||
- "/tools/iban-generator/"
|
"/contact/":
|
||||||
- "/tools/excel-password-remover/"
|
lastmod: "2025-03-01T07:40:00+01:00"
|
||||||
- "/tools/uuid-generator/"
|
priority: "0.5"
|
||||||
- "/tools/vat-calculator/"
|
|
||||||
|
"/content/":
|
||||||
|
lastmod: "2025-09-13T16:19:00+02:00"
|
||||||
|
priority: "0.2"
|
||||||
|
|
||||||
|
"/content/circuitpython-ebyte-e32/":
|
||||||
|
lastmod: "2025-03-30T14:52:00+02:00"
|
||||||
|
priority: "0.5"
|
||||||
|
|
||||||
|
"/content/docker-mini-cctv-nvr/":
|
||||||
|
lastmod: "2025-03-30T14:52:00+02:00"
|
||||||
|
priority: "0.3"
|
||||||
|
|
||||||
|
"/content/lscom-cli-dotnet/":
|
||||||
|
lastmod: "2025-09-13T16:19:00+02:00"
|
||||||
|
priority: "0.6"
|
||||||
|
|
||||||
|
"/content/pearch/":
|
||||||
|
lastmod: "2025-09-14T00:15:00+02:00"
|
||||||
|
priority: "0.6"
|
||||||
|
|
||||||
|
"/links/":
|
||||||
|
lastmod: "2025-03-01T07:40:00+01:00"
|
||||||
|
priority: "0.6"
|
||||||
|
|
||||||
|
"/privacy/":
|
||||||
|
lastmod: "2025-03-30T00:00:00+01:00"
|
||||||
|
priority: "0.4"
|
||||||
|
|
||||||
|
"/tools/":
|
||||||
|
lastmod: "2025-09-13T16:19:00+02:00"
|
||||||
|
priority: "0.2"
|
||||||
|
|
||||||
|
"/tools/iban-generator/":
|
||||||
|
lastmod: "2025-08-28T21:23:00+02:00"
|
||||||
|
priority: "0.6"
|
||||||
|
|
||||||
|
"/tools/excel-password-remover/":
|
||||||
|
lastmod: "2025-09-13T16:19:00+02:00"
|
||||||
|
priority: "0.9"
|
||||||
|
|
||||||
|
"/tools/uuid-generator/":
|
||||||
|
lastmod: "2025-08-28T21:23:00+02:00"
|
||||||
|
priority: "0.3"
|
||||||
|
|
||||||
|
"/tools/vat-calculator/":
|
||||||
|
lastmod: "2025-09-18T00:15:00+02:00"
|
||||||
|
priority: "0.6"
|
||||||
|
|
||||||
|
#"/about/":
|
||||||
|
# lastmod: ""
|
||||||
|
# priority: ""
|
||||||
|
#"/articles/":
|
||||||
|
# lastmod: ""
|
||||||
|
# priority: ""
|
||||||
|
|||||||
@@ -1,80 +1,93 @@
|
|||||||
# EN - About
|
# EN - About
|
||||||
|
|
||||||
head.title: About - NibblePoker
|
head:
|
||||||
head.description: 'TODO: description'
|
title: About - NibblePoker
|
||||||
og.title: NibblePoker - About
|
description: 'TODO: description'
|
||||||
og.description: 'TODO: description'
|
|
||||||
header.title: About
|
og:
|
||||||
intro.title: Introduction
|
title: NibblePoker - About
|
||||||
intro.text.01: My name is Herwin Bozet, I'm an experienced developer with extensive
|
description: 'TODO: description'
|
||||||
experience in PureBasic, Python, Java, VBA; and intermediate knowledge in C, Win32
|
|
||||||
|
header:
|
||||||
|
title: About
|
||||||
|
|
||||||
|
intro:
|
||||||
|
title: Introduction
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: My name is Herwin Bozet, I'm an experienced developer with extensive
|
||||||
|
experience in PureBasic, Python, .NET, Java; and intermediate knowledge in C, Win32
|
||||||
APIs, embedded systems and general web development.
|
APIs, embedded systems and general web development.
|
||||||
intro.text.02: I've been programming for about 10 years now, and for the last
|
# l2: I've been programming for about 10 years now, and for the last
|
||||||
5 years I've been actively working on applying that experience to a variety of projects
|
# 5 years I've been actively working on applying that experience to a variety of projects
|
||||||
with the aim of helping programmers and people in their day-to-day life.
|
# with the aim of helping programmers and people in their day-to-day life.
|
||||||
intro.text.10: NibblePoker is, in essence, a simple moniker and the front-end
|
#p2:
|
||||||
for most of my public-focused work.
|
# l1: NibblePoker is, in essence, a simple moniker and the front-end
|
||||||
intro.text.11: It houses all my work made and tailored for usage by other people.
|
# for most of my public-focused work.
|
||||||
intro.text.20: This entire website, as well as all my work for it and other
|
# l2: It houses all my work made and tailored for usage by other people.
|
||||||
|
p3:
|
||||||
|
l1: This entire website, as well as all my work for it and other
|
||||||
personal projects, is completely open-source and available under permissive <abbr
|
personal projects, is completely open-source and available under permissive <abbr
|
||||||
title="Open Source Initiative">OSI</abbr> approved licenses.
|
title="Open Source Initiative">OSI</abbr> approved licenses.
|
||||||
intro.text.21: All of it is maintained, developed and expanded in my free time
|
l2: All of it is maintained, developed and expanded in my free time
|
||||||
with the occasional help from people in the open-source community.
|
with the occasional help from people in the open-source community.
|
||||||
tenets.title: Core tenets
|
|
||||||
tenets.text.01: ''
|
future:
|
||||||
tenets.text.02: ''
|
title: Future plans
|
||||||
future.title: Future plans
|
text:
|
||||||
future.text.01: It is planned to turn NibblePoker into a <abbr title="Private
|
p1:
|
||||||
|
l1: It is planned to turn NibblePoker into a <abbr title="Private
|
||||||
company with limited liability">SPRL</abbr> in a couple years if everything goes
|
company with limited liability">SPRL</abbr> in a couple years if everything goes
|
||||||
as planned.
|
as planned.
|
||||||
future.text.02: This would allow me to centralize many things and invest properly
|
l2: This would allow me to centralize many things and invest properly
|
||||||
in my targetted fields to achieve my goals.
|
in my targeted fields to achieve my goals.
|
||||||
future.text.10: The goal would be to create a small sustainable local business
|
p2:
|
||||||
|
l1: The goal would be to create a small sustainable local business
|
||||||
that offers a wide range of products and solutions covering <abbr title="Internet
|
that offers a wide range of products and solutions covering <abbr title="Internet
|
||||||
of things">IoT</abbr> devices, programming, and technological independence ; All
|
of things">IoT</abbr> devices, programming, and technological independence ; All
|
||||||
while including the required software and hardware components often lacking in such
|
while including the required software and hardware components often lacking in such
|
||||||
products and solutions.
|
products and solutions.
|
||||||
future.text.20: Ultimately, all this work and research would be made available
|
p3:
|
||||||
|
l1: Ultimately, all this work and research would be made available
|
||||||
to the public under open-source licenses, enabling anyone who wishes to learn, reuse,
|
to the public under open-source licenses, enabling anyone who wishes to learn, reuse,
|
||||||
and resell open-source products, to do so in a similar way as companies like Adafruit
|
and resell open-source products, to do so in a similar way as companies like Adafruit
|
||||||
do.
|
do.
|
||||||
_nibblepoker.title: The 'NibblePoker' name
|
|
||||||
_nibblepoker.text.01: TODO
|
financing:
|
||||||
_nibblepoker.text.10: TODO
|
title: Financing
|
||||||
_nibblepoker.text.11: TODO
|
text:
|
||||||
_nibblepoker.text.20: TODO
|
p1:
|
||||||
financing.title: Financing
|
l1: This website, as well as the surrounding infrastructure,
|
||||||
financing.text.01: This website, as well as the surrounding infrastructure,
|
|
||||||
was made to cost as little as possible while not being reliant on any censor-happy
|
was made to cost as little as possible while not being reliant on any censor-happy
|
||||||
companies.
|
companies.
|
||||||
financing.text.02: Following my core tenets, I also wanted to retain some sort
|
l2: Following my core tenets, I also wanted to retain some sort
|
||||||
of "technological sovereignty", and therefore refuse to support or use companies
|
of "technological sovereignty", and therefore refuse to support or use companies
|
||||||
that actively fight against legal free speech.
|
that actively fight against legal free speech.
|
||||||
financing.text.10: The details of the operating costs are provided below to
|
p2:
|
||||||
|
l1: The details of the operating costs are provided below to
|
||||||
illustrate the low price of such independence.
|
illustrate the low price of such independence.
|
||||||
financing.text.20: And for those of you who are more motivated, I hope to inspire
|
p3:
|
||||||
|
l1: And for those of you who are more motivated, I hope to inspire
|
||||||
you to at least try this kind of activity.
|
you to at least try this kind of activity.
|
||||||
financing.text.21: It may seem daunting at first, but for a fraction of the
|
l2: It may seem daunting at first, but for a fraction of the
|
||||||
cost presented here, <b>and with a bit of motivation</b>, you can already accomplish
|
cost presented here, <b>and with a bit of motivation</b>, you can already accomplish
|
||||||
a lot of things and gain valuable knowledge for a world as interconnected as ours.
|
a lot of things and gain valuable knowledge for a world as interconnected as ours.
|
||||||
financing.text.isp: The main ISP bill isn't accounted for since this could run
|
isp: The main ISP bill isn't accounted for since this could run
|
||||||
off some random public Wi-Fi.
|
off some random public Wi-Fi.
|
||||||
financing.part.service: Service
|
part:
|
||||||
financing.part.cost: Cost
|
service: Service
|
||||||
financing.part.cost.total: Total Cost
|
equipment: Equipment
|
||||||
financing.part.equipment: Equipment
|
cost: Cost
|
||||||
financing.part.cost.yearly: Yearly Cost
|
cost.total: Total Cost
|
||||||
financing.part.cost.yearly.total: Yearly Cost
|
cost.yearly: Yearly Cost
|
||||||
financing.part.domain.lu: "<i>.lu</i> domain"
|
cost.yearly.total: Yearly Cost
|
||||||
financing.part.domain.com: "<i>.com</i> domain"
|
domain.lu: "<i>.lu</i> domain"
|
||||||
financing.part.proxy.europe: European reverse-proxy
|
domain.com: "<i>.com</i> domain"
|
||||||
financing.part.proxy.america: American reverse-proxy
|
proxy.europe: European reverse-proxy
|
||||||
financing.part.proxy.asia: Asian reverse-proxy
|
proxy.america: American reverse-proxy
|
||||||
financing.part.emails: Emails
|
proxy.asia: Asian reverse-proxy
|
||||||
financing.part.electricity: Electricity
|
emails: Emails
|
||||||
financing.part.nanopir4s: NanoPi R4S
|
electricity: Electricity
|
||||||
financing.part.nanopir4s.desc: Handles all non public-facing tasks and services.
|
nanopir4s: NanoPi R4S
|
||||||
financing.part.storage: Local storage
|
nanopir4s.desc: Handles all non public-facing tasks and services.
|
||||||
aziascreations.title: The 'AziasCreations' name
|
storage: Local storage
|
||||||
_aziascreations.text.01: TODO
|
|
||||||
_aziascreations.text.10: TODO
|
|
||||||
|
|||||||
@@ -22,6 +22,18 @@ user-agent: User-Agent
|
|||||||
|
|
||||||
server: Server
|
server: Server
|
||||||
|
|
||||||
|
windows:
|
||||||
|
95: "Windows 95"
|
||||||
|
98: "Windows 98"
|
||||||
|
2000: "Windows 2000"
|
||||||
|
xp: "Windows XP"
|
||||||
|
vista: "Windows Vista"
|
||||||
|
7: "Windows 7"
|
||||||
|
8: "Windows 8"
|
||||||
|
81: "Windows 8.1"
|
||||||
|
10: "Windows 10"
|
||||||
|
11: "Windows 11"
|
||||||
|
|
||||||
cpu.architecture: CPU Architecture
|
cpu.architecture: CPU Architecture
|
||||||
cpu.responsive: "CPU<span class=\"mobile-hide\"> Architecture</span>"
|
cpu.responsive: "CPU<span class=\"mobile-hide\"> Architecture</span>"
|
||||||
cpu.any: "Any architecture"
|
cpu.any: "Any architecture"
|
||||||
@@ -34,6 +46,87 @@ cpu.arm64: "ARM64"
|
|||||||
#cpu.arm64: "<p>ARM64<br>ARMv8<br>AArch64</p>"
|
#cpu.arm64: "<p>ARM64<br>ARMv8<br>AArch64</p>"
|
||||||
cpu.risc-v: "RISC-V"
|
cpu.risc-v: "RISC-V"
|
||||||
|
|
||||||
|
cpu:
|
||||||
|
human:
|
||||||
|
unknown: The content of this field is assumed to be applicable to any machine type
|
||||||
|
alpha: Alpha AXP, 32-bit address space
|
||||||
|
alpha64: Alpha 64, 64-bit address space
|
||||||
|
am33: Matsushita AM33
|
||||||
|
amd64: x64
|
||||||
|
any: Any architecture
|
||||||
|
arm: ARM little endian
|
||||||
|
arm64: ARM64 little endian
|
||||||
|
arm64ec: ABI that enables interoperability between native ARM64 and emulated x64 code.
|
||||||
|
arm64x: Binary format that allows both native ARM64 and ARM64EC code to coexist in the same file.
|
||||||
|
armnt: ARM Thumb-2 little endian
|
||||||
|
axp64: AXP 64 (Same as Alpha 64)
|
||||||
|
ebc: EFI byte code
|
||||||
|
i386: Intel 386 or later processors and compatible processors
|
||||||
|
ia64: Intel Itanium processor family
|
||||||
|
loongarch32: LoongArch 32-bit processor family
|
||||||
|
loongarch64: LoongArch 64-bit processor family
|
||||||
|
m32r: Mitsubishi M32R little endian
|
||||||
|
mips16: MIPS16
|
||||||
|
mipsfpu: MIPS with FPU
|
||||||
|
mipsfpu16: MIPS16 with FPU
|
||||||
|
powerpc: Power PC little endian
|
||||||
|
powerpcfp: Power PC with floating point support
|
||||||
|
r3000be: MIPS I compatible 32-bit big endian
|
||||||
|
r3000: MIPS I compatible 32-bit little endian
|
||||||
|
r4000: MIPS III compatible 64-bit little endian
|
||||||
|
r10000: MIPS IV compatible 64-bit little endian
|
||||||
|
riscv32: RISC-V 32-bit address space
|
||||||
|
riscv64: RISC-V 64-bit address space
|
||||||
|
riscv128: RISC-V 128-bit address space
|
||||||
|
sh3: Hitachi SH3
|
||||||
|
sh3dsp: Hitachi SH3 DSP
|
||||||
|
sh4: Hitachi SH4
|
||||||
|
sh5: Hitachi SH5
|
||||||
|
thumb: Thumb
|
||||||
|
wcemipsv2: MIPS little-endian WCE v2v2
|
||||||
|
code:
|
||||||
|
unknown: UNKNOWN
|
||||||
|
alpha: ALPHA
|
||||||
|
alpha64: ALPHA64
|
||||||
|
am33: AM33
|
||||||
|
amd64: AMD64
|
||||||
|
any: ANY
|
||||||
|
arm: ARM
|
||||||
|
arm32: "ARM32"
|
||||||
|
arm64: ARM64
|
||||||
|
arm64ec: ARM64EC
|
||||||
|
arm64x: ARM64X
|
||||||
|
armnt: ARMNT
|
||||||
|
axp64: AXP64
|
||||||
|
ebc: EBC
|
||||||
|
i386: I386
|
||||||
|
ia64: IA64
|
||||||
|
loongarch32: LOONGARCH32
|
||||||
|
loongarch64: LOONGARCH64
|
||||||
|
m32r: M32R
|
||||||
|
mips16: MIPS16
|
||||||
|
mipsfpu: MIPSFPU
|
||||||
|
mipsfpu16: MIPSFPU16
|
||||||
|
powerpc: POWERPC
|
||||||
|
powerpcfp: POWERPCFP
|
||||||
|
r3000be: R3000BE
|
||||||
|
r3000: R3000
|
||||||
|
r4000: R4000
|
||||||
|
r10000: R10000
|
||||||
|
riscv: RISC-V
|
||||||
|
riscv32: RISCV32
|
||||||
|
riscv64: RISCV64
|
||||||
|
riscv128: RISCV128
|
||||||
|
sh3: SH3
|
||||||
|
sh3dsp: SH3DSP
|
||||||
|
sh4: SH4
|
||||||
|
sh5: SH5
|
||||||
|
thumb: THUMB
|
||||||
|
wcemipsv2: WCEMIPSV2
|
||||||
|
x64: "x64"
|
||||||
|
x86: "x86"
|
||||||
|
|
||||||
|
|
||||||
requirements: Requirements
|
requirements: Requirements
|
||||||
|
|
||||||
python: Python
|
python: Python
|
||||||
@@ -92,47 +185,48 @@ format.yaml: "YAML"
|
|||||||
|
|
||||||
action.generate: "Generate"
|
action.generate: "Generate"
|
||||||
|
|
||||||
country.afghanistan: "Afghanistan"
|
country:
|
||||||
country.albania: "Albania"
|
afghanistan: "Afghanistan"
|
||||||
country.algeria: "Algeria"
|
albania: "Albania"
|
||||||
country.andorra: "Andorra"
|
algeria: "Algeria"
|
||||||
country.angola: "Angola"
|
andorra: "Andorra"
|
||||||
country.anguilla: "Anguilla"
|
angola: "Angola"
|
||||||
country.argentina: "Argentina"
|
anguilla: "Anguilla"
|
||||||
country.australia: "Australia"
|
argentina: "Argentina"
|
||||||
country.austria: "Austria"
|
australia: "Australia"
|
||||||
country.azerbaijan: "Azerbaijan"
|
austria: "Austria"
|
||||||
country.azores: "Azores"
|
azerbaijan: "Azerbaijan"
|
||||||
country.bahamas: "Bahamas"
|
azores: "Azores"
|
||||||
country.belgium: "Belgium"
|
bahamas: "Bahamas"
|
||||||
country.bulgaria: "Bulgaria"
|
belgium: "Belgium"
|
||||||
country.corsica: "Corsica"
|
bulgaria: "Bulgaria"
|
||||||
country.croatia: "Croatia"
|
corsica: "Corsica"
|
||||||
country.cyprus: "Cyprus"
|
croatia: "Croatia"
|
||||||
country.czechia: "Czechia"
|
cyprus: "Cyprus"
|
||||||
country.denmark: "Denmark"
|
czechia: "Czechia"
|
||||||
country.estonia: "Estonia"
|
denmark: "Denmark"
|
||||||
country.finland: "Finland"
|
estonia: "Estonia"
|
||||||
country.france: "France"
|
finland: "Finland"
|
||||||
country.france.corsica: "France - Corsica"
|
france: "France"
|
||||||
country.germany: "Germany"
|
france.corsica: "France - Corsica"
|
||||||
country.greece: "Greece"
|
germany: "Germany"
|
||||||
country.hungary: "Hungary"
|
greece: "Greece"
|
||||||
country.ireland: "Ireland"
|
hungary: "Hungary"
|
||||||
country.italy: "Italy"
|
ireland: "Ireland"
|
||||||
country.latvia: "Latvia"
|
italy: "Italy"
|
||||||
country.lithuania: "lithuania"
|
latvia: "Latvia"
|
||||||
country.luxembourg: "Luxembourg"
|
lithuania: "lithuania"
|
||||||
country.madeira: "Madeira"
|
luxembourg: "Luxembourg"
|
||||||
country.malta: "Malta"
|
madeira: "Madeira"
|
||||||
country.monaco: "Monaco"
|
malta: "Malta"
|
||||||
country.netherlands: "Netherlands"
|
monaco: "Monaco"
|
||||||
country.poland: "Poland"
|
netherlands: "Netherlands"
|
||||||
country.portugal: "Portugal"
|
poland: "Poland"
|
||||||
country.portugal.azores: "Portugal - Azores"
|
portugal: "Portugal"
|
||||||
country.portugal.madeira: "Portugal - Madeira"
|
portugal.azores: "Portugal - Azores"
|
||||||
country.romania: "Romania"
|
portugal.madeira: "Portugal - Madeira"
|
||||||
country.slovenia: "Slovenia"
|
romania: "Romania"
|
||||||
country.slovakia: "Slovakia"
|
slovenia: "Slovenia"
|
||||||
country.spain: "Spain"
|
slovakia: "Slovakia"
|
||||||
country.sweden: "Sweden"
|
spain: "Spain"
|
||||||
|
sweden: "Sweden"
|
||||||
|
|||||||
@@ -83,5 +83,7 @@
|
|||||||
"content.commons.lang.luxembourgish": "Luxembourgish",
|
"content.commons.lang.luxembourgish": "Luxembourgish",
|
||||||
"content.commons.lang.english.639-3": "English (eng)",
|
"content.commons.lang.english.639-3": "English (eng)",
|
||||||
"content.commons.lang.french.639-3": "French (fra)",
|
"content.commons.lang.french.639-3": "French (fra)",
|
||||||
"content.commons.lang.luxembourgish.639-3": "Luxembourgish (ltz)"
|
"content.commons.lang.luxembourgish.639-3": "Luxembourgish (ltz)",
|
||||||
|
|
||||||
|
"filters.summary": "Click to show/hide tag filters"
|
||||||
}
|
}
|
||||||
@@ -1,58 +1,43 @@
|
|||||||
# EN - Excel Password Remover
|
# EN - Excel Password Remover
|
||||||
|
|
||||||
meta.title: Excel Password Remover
|
meta:
|
||||||
meta.description: >-
|
title: Excel Password Remover
|
||||||
|
description: >-
|
||||||
Small web application from which you can easily remove a password from an Excel
|
Small web application from which you can easily remove a password from an Excel
|
||||||
worksheet. It works by leaving the task of editing the XML files on an Excel
|
worksheet. It works by leaving the task of editing the XML files on an Excel
|
||||||
document to your browser instead to keep everything local.
|
document to your browser instead to keep everything local.
|
||||||
meta.description.light: >-
|
description.light: >-
|
||||||
Small web application from which you can easily remove a password from an Excel
|
Small web application from which you can easily remove a password from an Excel
|
||||||
worksheet directly in your browser.
|
worksheet directly in your browser.
|
||||||
|
|
||||||
#article.subtitle: >-
|
eula:
|
||||||
# <a
|
1: "This tool should only be used with files you have the express permission to unlock."
|
||||||
# href="https://github.com/aziascreations/Excel-Worksheet-Password-Remover"><i
|
2: "All password removal is done locally in your browser, and <span class='t-bold'>no data is sent online</span>.<br>
|
||||||
# class="fab fa-github"></i> View on GitHub</a>
|
|
||||||
#intro.title: Introduction
|
|
||||||
#intro.p1: >-
|
|
||||||
# This project aims to simplify the removal of passwords on Excel's Worksheet by
|
|
||||||
# leaving the task of editing the XML files on an Excel document to your
|
|
||||||
# browser.
|
|
||||||
#working.title: Security & Internal workings
|
|
||||||
#working.p1: >-
|
|
||||||
# In terms of security, your browser handles all the data without sending any of
|
|
||||||
# it to a central server like many web apps do.<br>This makes it, and your data,
|
|
||||||
# as safe as your browser can be since it is the only potential point of failure
|
|
||||||
# here.
|
|
||||||
#working.p2: >-
|
|
||||||
# As for the internal workings, the only thing this tool does is extract the
|
|
||||||
# content of the <code>.xlsx</code> file you gave it and removes the passwords
|
|
||||||
# on any worksheets and makes a new file with all the changes.<br>Once all of
|
|
||||||
# that is done, the file is downloaded via a <a
|
|
||||||
# href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs">data
|
|
||||||
# URL</a>.
|
|
||||||
#usage.title: Usage
|
|
||||||
#usage.p1: >-
|
|
||||||
# To use this tool you can either visit "<a
|
|
||||||
# href="https://aziascreations.github.io/Excel-Worksheet-Password-Remover">aziascreations.github.io/Excel-Worksheet-Password-Remover</a>"
|
|
||||||
# or download the repository and host the web page yourself.
|
|
||||||
#demo.title: Demonstration video
|
|
||||||
#links.title: Links
|
|
||||||
#content.link.demo: Demo hosted on GitHub
|
|
||||||
|
|
||||||
|
|
||||||
eula.1: "This tool should only be used with files you have the express permission to unlock."
|
|
||||||
eula.2: "All password removal is done locally in your browser, and <span class='t-bold'>no data is sent online</span>.<br>
|
|
||||||
The original password cannot be revealed as it’s secure by design and not stored in plain text; it simply gets removed."
|
The original password cannot be revealed as it’s secure by design and not stored in plain text; it simply gets removed."
|
||||||
eula.3: "By using this tool, you accept full responsibility, and that it is provided “as is” without any warranty."
|
3: "By using this tool, you accept full responsibility, and that it is provided “as is” without any warranty."
|
||||||
|
|
||||||
file.selection.title: "File Selection"
|
file:
|
||||||
file.selection.1: "Drop your excel file(s) here or click on the buttons."
|
selection:
|
||||||
|
title: "File Selection"
|
||||||
|
1: "Drop your excel file(s) here or click on the buttons."
|
||||||
|
|
||||||
details.title : "Result(s)"
|
details:
|
||||||
details.empty.1 : "Your Excel files with their password removed will end up here."
|
title : "Result(s)"
|
||||||
|
empty:
|
||||||
|
1 : "Your Excel files with their password removed will end up here."
|
||||||
|
|
||||||
result.success.count: "Removed <span id=\"tmpl-success-password-count\">???</span> password(s)"
|
result:
|
||||||
result.warning.extension: "The file doesn't appear to be an Excel Worksheet !"
|
success:
|
||||||
result.warning.password: "The Excel Worksheet didn't contain any password !"
|
count: "Removed <span id=\"tmpl-success-password-count\">???</span> password(s)"
|
||||||
result.error.jszip: "JSZip was unable to open the file !"
|
warning:
|
||||||
|
extension: "The file doesn't appear to be an Excel Worksheet !"
|
||||||
|
password: "The Excel Worksheet didn't contain any password !"
|
||||||
|
error:
|
||||||
|
jszip: "JSZip was unable to open the file !"
|
||||||
|
|
||||||
|
license:
|
||||||
|
title: "Licenses"
|
||||||
|
text:
|
||||||
|
1: "This tool uses the <a href=\"https://stuk.github.io/jszip/\">JSZip</a>
|
||||||
|
library, which is licensed under the <a href=\"https://github.com/Stuk/jszip/blob/main/LICENSE.markdown\">MIT license</a>."
|
||||||
|
2: "The rest of this tool's code is released in the <a href=\"https://github.com/aziascreations/Web-NibblePoker\">public domain</a>."
|
||||||
|
|||||||
@@ -1,47 +1,59 @@
|
|||||||
# EN - Home
|
# EN - Home
|
||||||
|
|
||||||
head.title: NibblePoker
|
head:
|
||||||
head.description: Collection of free and open-source handmade utilities and libraries
|
title: NibblePoker
|
||||||
|
description: Collection of free and open-source handmade utilities and libraries
|
||||||
ranging from a simple COM port lister to password remover and autonomous video archivers.
|
ranging from a simple COM port lister to password remover and autonomous video archivers.
|
||||||
|
|
||||||
og.title: NibblePoker
|
og:
|
||||||
og.description: Collection of free and open-source handmade utilities and libraries
|
title: NibblePoker
|
||||||
|
description: Collection of free and open-source handmade utilities and libraries
|
||||||
ranging from a simple COM port lister to password remover and autonomous video archivers.
|
ranging from a simple COM port lister to password remover and autonomous video archivers.
|
||||||
|
|
||||||
header.title: Homepage
|
header:
|
||||||
|
title: Homepage
|
||||||
|
|
||||||
intro.title: Welcome to %0
|
intro:
|
||||||
intro.text.1: This website contains a collection of my personal work through
|
title: Welcome to %0
|
||||||
|
text:
|
||||||
|
1: This website contains a collection of my personal work through
|
||||||
blog posts, software releases and other forms of media, all of which is accessible
|
blog posts, software releases and other forms of media, all of which is accessible
|
||||||
for free and under open-source friendly licenses.
|
for free and under open-source friendly licenses.
|
||||||
intro.text.2: If you wish to contact me, you can do so through the contact form
|
2: If you wish to contact me, you can do so through the contact form
|
||||||
linked in the sidebar or via the email address present on that page.
|
linked in the sidebar or via the email address present on that page.
|
||||||
|
|
||||||
showcase.title: Showcase
|
showcase:
|
||||||
|
title: Showcase
|
||||||
|
|
||||||
updates.title: Updates
|
updates:
|
||||||
|
title: Updates
|
||||||
updates.text.privacy: Updated our privacy policy.
|
text:
|
||||||
|
privacy: Updated our privacy policy.
|
||||||
updates.5.date: March 30 2025
|
5:
|
||||||
updates.5.text.1: Complete redesign of the site to use a standardized style.
|
date: March 30 2025
|
||||||
updates.5.text.2: Changed some of our VPS providers to <a href="https://hosteam.pl/">HosTeam</a>.
|
text:
|
||||||
|
1: Complete redesign of the site to use a standardized style.
|
||||||
updates.4.date: November 30 2023
|
2: Changed some of our VPS providers to <a href="https://hosteam.pl/">HosTeam</a>.
|
||||||
updates.4.text.1: Centralized DNS servers & implemented GeoDNS.
|
4:
|
||||||
updates.4.text.2: Added US CDN hosted by <a href="https://www.chicagovps.net/">ChicagoVPS</a>.
|
date: November 30 2023
|
||||||
updates.4.text.3: All other regions use the EU CDN hosted by IONOS.
|
text:
|
||||||
|
1: Centralized DNS servers & implemented GeoDNS.
|
||||||
updates.3.date: November 12 2023
|
2: Added US CDN hosted by <a href="https://www.chicagovps.net/">ChicagoVPS</a>.
|
||||||
updates.3.text.1: Other services are back online.
|
3: All other regions use the EU CDN hosted by IONOS.
|
||||||
updates.3.text.2: Changed our host to IONOS.
|
3:
|
||||||
updates.3.text.3: Finished all side pages.
|
date: November 12 2023
|
||||||
|
text:
|
||||||
updates.2.date: August 15 2023
|
1: Other services are back online.
|
||||||
updates.2.text.1: The website is back online.
|
2: Changed our host to IONOS.
|
||||||
updates.2.text.2: New and much lighter design.
|
3: Finished all side pages.
|
||||||
updates.2.text.3: Changed our host to HostBrr.
|
2:
|
||||||
updates.2.text.4: Added a section for web-based tools.
|
date: August 15 2023
|
||||||
|
text:
|
||||||
updates.1.date: September 9 2022
|
1: The website is back online.
|
||||||
updates.1.text.1: Changed our host to v6Node.
|
2: New and much lighter design.
|
||||||
|
3: Changed our host to HostBrr.
|
||||||
|
4: Added a section for web-based tools.
|
||||||
|
1:
|
||||||
|
date: September 9 2022
|
||||||
|
text:
|
||||||
|
1: Changed our host to v6Node.
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ option.human.format.none: "No formatting"
|
|||||||
option.human.format.standard: "Use recommended spacing"
|
option.human.format.standard: "Use recommended spacing"
|
||||||
option.human.format.4by4: "Use 4 character-wide spacing"
|
option.human.format.4by4: "Use 4 character-wide spacing"
|
||||||
|
|
||||||
license.1: "The code for this project is released in the public domain."
|
license.1: "The code for this project is released in the <a href=\"https://github.com/aziascreations/Web-NibblePoker\">public domain</a>."
|
||||||
license.2: "The original source code can be found on <a href=\"https://github.com/aziascreations/Web-NibblePoker\">GitHub</a>."
|
license.2: "Data from Swift's
|
||||||
license.3: "Data from Swift's
|
|
||||||
<a href=\"https://www.swift.com/standards/data-standards/iban-international-bank-account-number\">IBAN Registry</a>
|
<a href=\"https://www.swift.com/standards/data-standards/iban-international-bank-account-number\">IBAN Registry</a>
|
||||||
was also used and may be licensed under different terms."
|
was also used and may be licensed under different terms."
|
||||||
|
|||||||
48
data/strings/en/pearch.yml
Normal file
48
data/strings/en/pearch.yml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# PEArch - EN
|
||||||
|
|
||||||
|
meta:
|
||||||
|
title: "PEArch"
|
||||||
|
description: "CLI tool that tells you which CPU architecture a given Windows PE is made for."
|
||||||
|
|
||||||
|
intro:
|
||||||
|
title: "Introduction"
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: A small tool that tells you which
|
||||||
|
<a href="https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types">CPU architecture</a>
|
||||||
|
a given <a href="https://learn.microsoft.com/en-us/windows/win32/debug/pe-format">Windows PE</a> is made for.
|
||||||
|
p2:
|
||||||
|
l1: A total of 35 architectures are supported by this tool.
|
||||||
|
|
||||||
|
usage:
|
||||||
|
title: "Usage"
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: "This tool can either be used in a command prompt with the options below."
|
||||||
|
l2: "Or, you can simply drop a file onto the <span class=\"code\">.exe</span> or a shortcut to get the same result."
|
||||||
|
details:
|
||||||
|
#disclaimer: The architecture codes, as well as their descriptions, are taken from Microsoft's
|
||||||
|
# <a href="https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types">MSDN</a>.
|
||||||
|
title: "Click here to show/hide the architecture and return codes"
|
||||||
|
thead:
|
||||||
|
code: "<span class=\"t-monospace\">STDOUT</span>"
|
||||||
|
hex: "<span class=\"t-monospace\">STDOUT</span> with <span class=\"t-monospace\">/AsHex</span>"
|
||||||
|
dec: "<span class=\"t-monospace\">STDERR</span> with <span class=\"t-monospace\">/AsError</span>"
|
||||||
|
description: "Description <i>(Source: <a href=\"https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types\">MSDN</a>)</i>"
|
||||||
|
|
||||||
|
output:
|
||||||
|
title: "Output examples"
|
||||||
|
default:
|
||||||
|
title: "Without options:"
|
||||||
|
options:
|
||||||
|
title: "With <span class=\"code\">/AsHex</span> and <span class=\"code\">/AsError</span>:"
|
||||||
|
|
||||||
|
downloads:
|
||||||
|
title: "Downloads"
|
||||||
|
|
||||||
|
license:
|
||||||
|
title: "License"
|
||||||
|
text: "This software and its source code is released in the Public Domain (CC0 1.0 Universal)."
|
||||||
|
|
||||||
|
links:
|
||||||
|
title: "Links"
|
||||||
@@ -17,3 +17,5 @@ generate: "Generate"
|
|||||||
download.raw: "Raw"
|
download.raw: "Raw"
|
||||||
download.json: "JSON"
|
download.json: "JSON"
|
||||||
download.yaml: "YAML"
|
download.yaml: "YAML"
|
||||||
|
|
||||||
|
license.1: "This tool and its code are released in the <a href=\"https://github.com/aziascreations/Web-NibblePoker\">public domain</a>."
|
||||||
|
|||||||
@@ -1,94 +1,96 @@
|
|||||||
# FR - About
|
# FR - About
|
||||||
|
|
||||||
head.title: À-propos - NibblePoker
|
head:
|
||||||
head.description: 'TODO: description'
|
title: À-propos - NibblePoker
|
||||||
og.title: NibblePoker - À-propos
|
description: 'TODO: description'
|
||||||
og.description: 'TODO: description'
|
|
||||||
header.title: À-propos
|
og:
|
||||||
intro.title: Introduction
|
title: NibblePoker - À-propos
|
||||||
intro.text.01: Je m'appelle Herwin Bozet, et je suis un développeur expérimenté
|
description: 'TODO: description'
|
||||||
|
|
||||||
|
header:
|
||||||
|
title: À-propos
|
||||||
|
|
||||||
|
intro:
|
||||||
|
title: Introduction
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: Je m'appelle Herwin Bozet, et je suis un développeur expérimenté
|
||||||
en PureBasic, Python, Java, VBA ; et de manière plus modérée en C, API Win32, systèmes
|
en PureBasic, Python, Java, VBA ; et de manière plus modérée en C, API Win32, systèmes
|
||||||
embarqués et le développement web général.
|
embarqués et le développement web général.
|
||||||
intro.text.02: Je programme depuis environ 10 ans, et au cours des 5 dernières
|
# l2: Je programme depuis environ 10 ans, et au cours des 5 dernières
|
||||||
années, j'ai activement travaillé à l'application de cette expérience à divers projets
|
# années, j'ai activement travaillé à l'application de cette expérience à divers projets
|
||||||
dans le but d'aider les programmeurs et les gens dans leur vie quotidienne.
|
# dans le but d'aider les programmeurs et les gens dans leur vie quotidienne.
|
||||||
intro.text.10: NibblePoker est, en essence, un simple pseudonyme et une ombrelle
|
#p2:
|
||||||
sous laquelle la majeure partie de mon travail axé sur le public sera présente.
|
# l1: NibblePoker est, en essence, un simple pseudonyme et une ombrelle
|
||||||
intro.text.11: Il abrite l'ensemble de mon travail créé et adapté pour être
|
# sous laquelle la majeure partie de mon travail axé sur le public sera présente.
|
||||||
utilisé par d'autres personnes.
|
# l2: Il abrite l'ensemble de mon travail créé et adapté pour être
|
||||||
intro.text.20: L'ensemble de ce site web, ainsi que l'ensemble de mon travail
|
# utilisé par d'autres personnes.
|
||||||
|
p3:
|
||||||
|
l1: L'ensemble de ce site web, ainsi que l'ensemble de mon travail
|
||||||
et autres projets personnels réalisés pour lui, sont entièrement open-source et
|
et autres projets personnels réalisés pour lui, sont entièrement open-source et
|
||||||
disponibles sous des licences permissives approuvées par l'<abbr title="Open Source
|
disponibles sous des licences permissives approuvées par l'<abbr title="Open Source
|
||||||
Initiative">OSI</abbr>.
|
Initiative">OSI</abbr>.
|
||||||
intro.text.21: Tout cela est maintenu, développé et étendu pendant mon temps
|
l2: Tout cela est maintenu, développé et étendu pendant mon temps
|
||||||
libre, avec l'aide occasionnelle de personnes de la communauté open source.
|
libre, avec l'aide occasionnelle de personnes de la communauté open source.
|
||||||
tenets.title: Principes fondamentaux
|
|
||||||
tenets.text.01: ''
|
|
||||||
tenets.text.02: ''
|
|
||||||
future.title: Projet d'avenir
|
|
||||||
future.text.01: 'Il est prévu que je décline NibblePoker en une petite <abbr
|
|
||||||
title="Societé privée à responsibilité limitée">SPRL</abbr> d''ici quelques années
|
|
||||||
si tout se déroule comme prévu.
|
|
||||||
|
|
||||||
'
|
future:
|
||||||
future.text.02: Cela aura pour but de me permettre de centraliser plein de choses
|
title: Projet d'avenir
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: 'Il est prévu que je décline NibblePoker en une petite <abbr
|
||||||
|
title="Societé privée à responsibilité limitée">SPRL</abbr> d''ici quelques années
|
||||||
|
si tout se déroule comme prévu.'
|
||||||
|
l2: Cela aura pour but de me permettre de centraliser plein de choses
|
||||||
et d'investir correctement dans mes domaines de prédilection.
|
et d'investir correctement dans mes domaines de prédilection.
|
||||||
future.text.10: La finalité serait de pouvoir créer un petit projet local d'entreprise
|
p2:
|
||||||
|
l1: La finalité serait de pouvoir créer un petit projet local d'entreprise
|
||||||
durable, ainsi que de proposer une large gamme de produits et solutions couvrant
|
durable, ainsi que de proposer une large gamme de produits et solutions couvrant
|
||||||
les domaines de l'électronique connectée et intelligente, la programmation et l’indépendance
|
les domaines de l'électronique connectée et intelligente, la programmation et l’indépendance
|
||||||
technologique tout en incluant les composantes logicielles et physiques souvent
|
technologique tout en incluant les composantes logicielles et physiques souvent
|
||||||
manquantes dans de tels produits et solutions.
|
manquantes dans de tels produits et solutions.
|
||||||
future.text.20: Finalement tout ce travail et recherches seraient mis à disposition
|
p3:
|
||||||
|
l1: Finalement tout ce travail et recherches seraient mis à disposition
|
||||||
du public sous des licences open-source afin de permettre permettant à quiconque
|
du public sous des licences open-source afin de permettre permettant à quiconque
|
||||||
le souhaite d’apprendre, réutiliser et revendre des produits ouverts tels que le
|
le souhaite d’apprendre, réutiliser et revendre des produits ouverts tels que le
|
||||||
font des compagnies comme Adafruit.
|
font des compagnies comme Adafruit.
|
||||||
_nibblepoker.title: Le nom 'NibblePoker'
|
|
||||||
_nibblepoker.text.01: Le surnom '<i>NibblePoker</i>' est un mot composé de plusieurs
|
financing:
|
||||||
termes [techniques] plus anciens.
|
title: Financement
|
||||||
_nibblepoker.text.10: "● '<i>Nibble</i>' est un terme technique anglais
|
text:
|
||||||
historiquement utilisé pour décrire décrit un demi-octet, ou 4 bits d'information."
|
p1:
|
||||||
_nibblepoker.text.11: "● '<i>Poker</i>' viens du verbe anglais '<i>to
|
l1: Ce site web, ainsi que son infrastructure environnante, ont
|
||||||
poke</i>' qui, dans le domaine rétro-informatique, décrit le fait d'écrire des données
|
|
||||||
dans la mémoire d'un ordinateur."
|
|
||||||
_nibblepoker.text.20: Finalement, lors de la création de ce surnom, je travaillais
|
|
||||||
depuis quelques temps sur d'anciennes machines telle la Commodore64, Acorn Electron
|
|
||||||
et [???]ironique.
|
|
||||||
financing.title: Financement
|
|
||||||
financing.text.01: Ce site web, ainsi que son infrastructure environnante, ont
|
|
||||||
été conçus pour coûter le moins possible tout en étant indépendants d'entreprises
|
été conçus pour coûter le moins possible tout en étant indépendants d'entreprises
|
||||||
qui se prennent pour des censeurs.
|
qui se prennent pour des censeurs.
|
||||||
financing.text.02: Et en suivant mes principes fondamentaux, je souhaitais également
|
l2: Et en suivant mes principes fondamentaux, je souhaitais également
|
||||||
conserver une "souveraineté technologique", et, par conséquent, refuse de soutenir
|
conserver une "souveraineté technologique", et, par conséquent, refuse de soutenir
|
||||||
ou d'utiliser des entreprises qui luttent activement contre la liberté d'expression.
|
ou d'utiliser des entreprises qui luttent activement contre la liberté d'expression.
|
||||||
financing.text.10: Le détail des coûts opérationnels sont présents ci-dessous
|
p2:
|
||||||
|
l1: Le détail des coûts opérationnels sont présents ci-dessous
|
||||||
afin d'illustrer le faible prix d'une telle indépendance.
|
afin d'illustrer le faible prix d'une telle indépendance.
|
||||||
financing.text.20: Et pour les plus motivés d'entre-vous, j'espère pouvoir vous
|
p3:
|
||||||
|
l1: Et pour les plus motivés d'entre-vous, j'espère pouvoir vous
|
||||||
motiver à au moins tester ce genre d'activités.
|
motiver à au moins tester ce genre d'activités.
|
||||||
financing.text.21: C'est un domaine qui peut paraître intimidant de prime abord,
|
l2: C'est un domaine qui peut paraître intimidant de prime abord,
|
||||||
mais pour une fraction du coût présenté ici, <b>et avec un rien de motivation</b>,
|
mais pour une fraction du coût présenté ici, <b>et avec un rien de motivation</b>,
|
||||||
vous pouvez déjà accomplir énormément de choses et acquérir des connaissances essentielles
|
vous pouvez déjà accomplir énormément de choses et acquérir des connaissances essentielles
|
||||||
dans un monde aussi connecté que le nôtre.
|
dans un monde aussi connecté que le nôtre.
|
||||||
financing.text.isp: Le coût de la connexion internet n'est pas compté car elle
|
isp: Le coût de la connexion internet n'est pas compté car elle
|
||||||
pourrait être remplacée par un Wi-Fi public lambda.
|
pourrait être remplacée par un Wi-Fi public lambda.
|
||||||
financing.part.service: Service
|
part:
|
||||||
financing.part.cost: Coût
|
service: Service
|
||||||
financing.part.cost.total: Coût Total
|
equipment: Matériel
|
||||||
financing.part.equipment: Matériel
|
cost: Coût
|
||||||
financing.part.cost.yearly: Coût Annuel
|
cost.total: Coût Total
|
||||||
financing.part.cost.yearly.total: Coût Annuel
|
cost.yearly: Coût Annuel
|
||||||
financing.part.domain.lu: Domaine en <i>.lu</i>
|
cost.yearly.total: Coût Annuel
|
||||||
financing.part.domain.com: Domaine en <i>.com</i>
|
domain.lu: Domaine en <i>.lu</i>
|
||||||
financing.part.proxy.europe: Reverse-proxy en Europe
|
domain.com: Domaine en <i>.com</i>
|
||||||
financing.part.proxy.america: Reverse-proxy en Amérique
|
proxy.europe: Reverse-proxy en Europe
|
||||||
financing.part.proxy.asia: Reverse-proxy en Asie
|
proxy.america: Reverse-proxy en Amérique
|
||||||
financing.part.emails: Adresses email
|
proxy.asia: Reverse-proxy en Asie
|
||||||
financing.part.electricity: Électricité
|
emails: Adresses email
|
||||||
financing.part.nanopir4s: NanoPi R4S
|
electricity: Électricité
|
||||||
financing.part.nanopir4s.desc: Gère tous les services et programmes internes.
|
nanopir4s: NanoPi R4S
|
||||||
financing.part.storage: Stockage local
|
nanopir4s.desc: Gère tous les services et programmes internes.
|
||||||
aziascreations.title: Le nom 'AziasCreations'
|
storage: Stockage local
|
||||||
aziascreations.text.01: L'ancien surnom 'AziasCreations' était utilisé entre
|
|
||||||
2013 et 2020 et est à présent abandonné au profit de <i>NibblePoker</i>.
|
|
||||||
aziascreations.text.10: Cependant, il reste utilisé sur GitHub et Gitea à cause
|
|
||||||
de certaines limitations concernant les changements de pseudonyme qui m'ont empèché
|
|
||||||
de faire un changement complet.
|
|
||||||
|
|||||||
@@ -22,6 +22,18 @@ user-agent: User-Agent
|
|||||||
|
|
||||||
server: Serveur
|
server: Serveur
|
||||||
|
|
||||||
|
windows:
|
||||||
|
95: "Windows 95"
|
||||||
|
98: "Windows 98"
|
||||||
|
2000: "Windows 2000"
|
||||||
|
xp: "Windows XP"
|
||||||
|
vista: "Windows Vista"
|
||||||
|
7: "Windows 7"
|
||||||
|
8: "Windows 8"
|
||||||
|
81: "Windows 8.1"
|
||||||
|
10: "Windows 10"
|
||||||
|
11: "Windows 11"
|
||||||
|
|
||||||
cpu.architecture: Architecture de CPU
|
cpu.architecture: Architecture de CPU
|
||||||
cpu.responsive: "<span class=\"mobile-hide\">Architecture de </span>CPU"
|
cpu.responsive: "<span class=\"mobile-hide\">Architecture de </span>CPU"
|
||||||
cpu.any: "Indépendante"
|
cpu.any: "Indépendante"
|
||||||
@@ -34,6 +46,87 @@ cpu.arm64: "ARM64"
|
|||||||
#cpu.arm64: "<p>ARM64<br>ARMv8<br>AArch64</p>"
|
#cpu.arm64: "<p>ARM64<br>ARMv8<br>AArch64</p>"
|
||||||
cpu.risc-v: "RISC-V"
|
cpu.risc-v: "RISC-V"
|
||||||
|
|
||||||
|
cpu:
|
||||||
|
human:
|
||||||
|
unknown: Le contenu de ce champ est supposé pouvoir s’appliquer à n’importe quel type d’ordinateur
|
||||||
|
alpha: Alpha AXP, espace d’adressage 32 bits
|
||||||
|
alpha64: Alpha 64, espace d’adressage 64 bits
|
||||||
|
am33: Matsushita AM33
|
||||||
|
amd64: X64
|
||||||
|
any: Indépendante
|
||||||
|
arm: ARM little endian
|
||||||
|
arm64: ARM64 little endian
|
||||||
|
arm64ec: ABI permettant l'interopérabilité entre le code natif ARM64 et le code x64 émulé.
|
||||||
|
arm64x: Format binaire qui permet à la fois au code natif ARM64 et au code ARM64EC de coexister dans le même fichier.
|
||||||
|
armnt: ARM Pouce-2 petit endian
|
||||||
|
axp64: AXP 64 (identique à Alpha 64)
|
||||||
|
ebc: Code d’octet EFI
|
||||||
|
i386: Processeurs Intel 386 ou ultérieurs et processeurs compatibles
|
||||||
|
ia64: Famille de processeurs Intel Itanium
|
||||||
|
loongarch32: Famille de processeurs LoongArch 32 bits
|
||||||
|
loongarch64: Famille de processeurs LoongArch 64 bits
|
||||||
|
m32r: Mitsubishi M32R petit endian
|
||||||
|
mips16: MIPS16
|
||||||
|
mipsfpu: MIPS avec FPU
|
||||||
|
mipsfpu16: MIPS16 avec FPU
|
||||||
|
powerpc: Power PC little endian
|
||||||
|
powerpcfp: Power PC avec prise en charge de la virgule flottante
|
||||||
|
r3000be: MIPS I compatible 32 bits big endian
|
||||||
|
r3000: MIPS I compatible 32 bits little endian
|
||||||
|
r4000: MIPS III compatible 64 bits petit endian
|
||||||
|
r10000: MIPS IV compatible 64 bits petit endian
|
||||||
|
riscv32: Espace d’adressage RISC-V 32 bits
|
||||||
|
riscv64: Espace d’adressage RISC-V 64 bits
|
||||||
|
riscv128: Espace d’adressage RISC-V 128 bits
|
||||||
|
sh3: Hitachi SH3
|
||||||
|
sh3dsp: Hitachi SH3 DSP
|
||||||
|
sh4: Hitachi SH4
|
||||||
|
sh5: Hitachi SH5
|
||||||
|
thumb: Pouce
|
||||||
|
wcemipsv2: MIPS little-endian WCE v2
|
||||||
|
code:
|
||||||
|
unknown: UNKNOWN
|
||||||
|
alpha: ALPHA
|
||||||
|
alpha64: ALPHA64
|
||||||
|
am33: AM33
|
||||||
|
amd64: AMD64
|
||||||
|
any: ANY
|
||||||
|
arm: ARM
|
||||||
|
arm32: "ARM32"
|
||||||
|
arm64: ARM64
|
||||||
|
arm64ec: ARM64EC
|
||||||
|
arm64x: ARM64X
|
||||||
|
armnt: ARMNT
|
||||||
|
axp64: AXP64
|
||||||
|
ebc: EBC
|
||||||
|
i386: I386
|
||||||
|
ia64: IA64
|
||||||
|
loongarch32: LOONGARCH32
|
||||||
|
loongarch64: LOONGARCH64
|
||||||
|
m32r: M32R
|
||||||
|
mips16: MIPS16
|
||||||
|
mipsfpu: MIPSFPU
|
||||||
|
mipsfpu16: MIPSFPU16
|
||||||
|
powerpc: POWERPC
|
||||||
|
powerpcfp: POWERPCFP
|
||||||
|
r3000be: R3000BE
|
||||||
|
r3000: R3000
|
||||||
|
r4000: R4000
|
||||||
|
r10000: R10000
|
||||||
|
riscv: RISC-V
|
||||||
|
riscv32: RISCV32
|
||||||
|
riscv64: RISCV64
|
||||||
|
riscv128: RISCV128
|
||||||
|
sh3: SH3
|
||||||
|
sh3dsp: SH3DSP
|
||||||
|
sh4: SH4
|
||||||
|
sh5: SH5
|
||||||
|
thumb: THUMB
|
||||||
|
wcemipsv2: WCEMIPSV2
|
||||||
|
x64: "x64"
|
||||||
|
x86: "x86"
|
||||||
|
|
||||||
|
|
||||||
requirements: "Dépendances"
|
requirements: "Dépendances"
|
||||||
|
|
||||||
python: Python
|
python: Python
|
||||||
@@ -92,47 +185,48 @@ format.yaml: "YAML"
|
|||||||
|
|
||||||
action.generate: "Générer"
|
action.generate: "Générer"
|
||||||
|
|
||||||
country.afghanistan: "Afghanistan"
|
country:
|
||||||
country.albania: "Albanie"
|
afghanistan: "Afghanistan"
|
||||||
country.algeria: "Algérie"
|
albania: "Albanie"
|
||||||
country.andorra: "Andorre"
|
algeria: "Algérie"
|
||||||
country.angola: "Angola"
|
andorra: "Andorre"
|
||||||
country.anguilla: "Anguilla"
|
angola: "Angola"
|
||||||
country.argentina: "Argentine"
|
anguilla: "Anguilla"
|
||||||
country.australia: "Australie"
|
argentina: "Argentine"
|
||||||
country.austria: "Autriche"
|
australia: "Australie"
|
||||||
country.azerbaijan: "Azerbaïdjan"
|
austria: "Autriche"
|
||||||
country.azores: "Açores"
|
azerbaijan: "Azerbaïdjan"
|
||||||
country.bahamas: "Bahamas"
|
azores: "Açores"
|
||||||
country.belgium: "Belgique"
|
bahamas: "Bahamas"
|
||||||
country.bulgaria: "Bulgarie"
|
belgium: "Belgique"
|
||||||
country.corsica: "Corse"
|
bulgaria: "Bulgarie"
|
||||||
country.croatia: "Croatie"
|
corsica: "Corse"
|
||||||
country.cyprus: "Chypre"
|
croatia: "Croatie"
|
||||||
country.czechia: "Tchéquie"
|
cyprus: "Chypre"
|
||||||
country.denmark: "Danemark"
|
czechia: "Tchéquie"
|
||||||
country.estonia: "Estonie"
|
denmark: "Danemark"
|
||||||
country.finland: "Finlande"
|
estonia: "Estonie"
|
||||||
country.france: "France"
|
finland: "Finlande"
|
||||||
country.france.corsica: "France - Corse"
|
france: "France"
|
||||||
country.germany: "Allemagne"
|
france.corsica: "France - Corse"
|
||||||
country.greece: "Grèce"
|
germany: "Allemagne"
|
||||||
country.hungary: "Hongrie"
|
greece: "Grèce"
|
||||||
country.ireland: "Irlande"
|
hungary: "Hongrie"
|
||||||
country.italy: "Italie"
|
ireland: "Irlande"
|
||||||
country.latvia: "Lettonie"
|
italy: "Italie"
|
||||||
country.lithuania: "Lituanie"
|
latvia: "Lettonie"
|
||||||
country.luxembourg: "Luxembourg"
|
lithuania: "Lituanie"
|
||||||
country.madeira: "Madère"
|
luxembourg: "Luxembourg"
|
||||||
country.malta: "Malte"
|
madeira: "Madère"
|
||||||
country.monaco: "Monaco"
|
malta: "Malte"
|
||||||
country.netherlands: "Pays-Bas"
|
monaco: "Monaco"
|
||||||
country.poland: "Pologne"
|
netherlands: "Pays-Bas"
|
||||||
country.portugal: "Portugal"
|
poland: "Pologne"
|
||||||
country.portugal.azores: "Portugal - Açores"
|
portugal: "Portugal"
|
||||||
country.portugal.madeira: "Portugal - Madère"
|
portugal.azores: "Portugal - Açores"
|
||||||
country.romania: "Roumanie"
|
portugal.madeira: "Portugal - Madère"
|
||||||
country.slovenia: "Slovénie"
|
romania: "Roumanie"
|
||||||
country.slovakia: "Slovaquie"
|
slovenia: "Slovénie"
|
||||||
country.spain: "Espagne"
|
slovakia: "Slovaquie"
|
||||||
country.sweden: "Suède"
|
spain: "Espagne"
|
||||||
|
sweden: "Suède"
|
||||||
|
|||||||
@@ -76,5 +76,7 @@
|
|||||||
"content.commons.lang.luxembourgish": "Luxembourgeois",
|
"content.commons.lang.luxembourgish": "Luxembourgeois",
|
||||||
"content.commons.lang.english.639-3": "Anglais (eng)",
|
"content.commons.lang.english.639-3": "Anglais (eng)",
|
||||||
"content.commons.lang.french.639-3": "Français (fra)",
|
"content.commons.lang.french.639-3": "Français (fra)",
|
||||||
"content.commons.lang.luxembourgish.639-3": "Luxembourgeois (ltz)"
|
"content.commons.lang.luxembourgish.639-3": "Luxembourgeois (ltz)",
|
||||||
|
|
||||||
|
"filters.summary": "Cliquez pour afficher/cacher les filtres"
|
||||||
}
|
}
|
||||||
@@ -1,53 +1,44 @@
|
|||||||
# FR - Excel Password Remover
|
# FR - Excel Password Remover
|
||||||
|
|
||||||
meta.title: Excel Password Remover
|
meta:
|
||||||
meta.description: >-
|
title: Excel Password Remover
|
||||||
|
description: >-
|
||||||
Petite application web qui permet de facilement retirer le mot de passe d'une
|
Petite application web qui permet de facilement retirer le mot de passe d'une
|
||||||
feuille de calcul Excel depuis votre navigateur web sans avoir à uploader le
|
feuille de calcul Excel depuis votre navigateur web sans avoir à uploader le
|
||||||
fichier sur internet. Cette application laisse votre navigateur modifier les
|
fichier sur internet. Cette application laisse votre navigateur modifier les
|
||||||
fichiers XML du fichier Excel afin de tout garder en local.
|
fichiers XML du fichier Excel afin de tout garder en local.
|
||||||
meta.description.light: >-
|
description.light: >-
|
||||||
Application web qui permet de facilement retirer le mot de passe d'un ficher Excel depuis
|
Application web qui permet de facilement retirer le mot de passe d'un ficher Excel depuis
|
||||||
votre navigateur web sans avoir à uploader le fichier sur internet.
|
votre navigateur web sans avoir à uploader le fichier sur internet.
|
||||||
|
|
||||||
#article.subtitle: >-
|
eula:
|
||||||
# <a
|
1: "Cet outil ne doit être utilisé qu'avec des fichiers pour lesquels vous avez l'autorisation de les déverrouiller."
|
||||||
# href="https://github.com/aziascreations/Excel-Worksheet-Password-Remover"><i
|
2: "Toute suppression de mot de passe se fait localement dans votre navigateur, et <span class='t-bold'>aucune donnée n'est envoyée via Internet</span>.<br>
|
||||||
# class="fab fa-github"></i> Voir sur GitHub</a>
|
|
||||||
#intro.title: Introduction
|
|
||||||
#intro.p1: >-
|
|
||||||
# Ce projet vise à simplifier le processus de suppression des mots de passes sur
|
|
||||||
# les "worksheet" d'Excel en laissant votre navigateur web s'en charger.
|
|
||||||
#working.title: Sécurité & Fonctionnement
|
|
||||||
#working.p1: >-
|
|
||||||
# Cet outil charge le ficher que vous lui donnez en mémoire et travaille
|
|
||||||
# directement dessus dans le navigateur web sans utiliser un serveur central,
|
|
||||||
# vos données restent donc entièrement sur votre machine.
|
|
||||||
#working.p2: >-
|
|
||||||
# Par sécurité, nous vous demandons quand même de n'utiliser cet outil qu'avec
|
|
||||||
# des fichiers pour lesquels vous avez été explicitement autorisés à enlever le
|
|
||||||
# mot de passe.
|
|
||||||
#usage.title: Utilisation
|
|
||||||
#usage.p1: >-
|
|
||||||
# Vous pouvez utiliser cet outil en allant sur "<a
|
|
||||||
# href="https://aziascreations.github.io/Excel-Worksheet-Password-Remover">aziascreations.github.io/Excel-Worksheet-Password-Remover</a>"
|
|
||||||
# ou en téléchargeant le dépôt et en hébergeant la page web vous-même.
|
|
||||||
#demo.title: Vidéo de démonstration
|
|
||||||
#links.title: Liens
|
|
||||||
#content.link.demo: Démo hébergée sur GitHub
|
|
||||||
|
|
||||||
eula.1 : "Cet outil ne doit être utilisé qu'avec des fichiers pour lesquels vous avez l'autorisation de les déverrouiller."
|
|
||||||
eula.2 : "Toute suppression de mot de passe se fait localement dans votre navigateur, et <span class='t-bold'>aucune donnée n'est envoyée via Internet</span>.<br>
|
|
||||||
Le mot de passe original ne peut pas être révélé car il est sécurisé par Excel et n'est pas stocké en texte clair ; il est simplement supprimé."
|
Le mot de passe original ne peut pas être révélé car il est sécurisé par Excel et n'est pas stocké en texte clair ; il est simplement supprimé."
|
||||||
eula.3 : "En utilisant cet outil, vous acceptez l'entière responsabilité de vos action, et le fait qu'il est fourni “tel quel” sans aucune garantie."
|
3: "En utilisant cet outil, vous acceptez l'entière responsabilité de vos action, et le fait qu'il est fourni “tel quel” sans aucune garantie."
|
||||||
|
|
||||||
file.selection.title : "Sélection de fichier(s)"
|
file:
|
||||||
file.selection.1 : "Déposez vos fichiers Excel ici ou cliquez sur les boutons."
|
selection:
|
||||||
|
title: "Sélection de fichier(s)"
|
||||||
|
1: "Déposez vos fichiers Excel ici ou cliquez sur les boutons."
|
||||||
|
|
||||||
details.title: "Résultat(s)"
|
details:
|
||||||
details.empty.1 : "Vos fichiers Excel sans leurs mots de passe finiront ici."
|
title: "Résultat(s)"
|
||||||
|
empty:
|
||||||
|
1: "Vos fichiers Excel sans leurs mots de passe finiront ici."
|
||||||
|
|
||||||
result.success.count: "Mot de passe(s) supprimé(s) : <span id=\"tmpl-success-password-count\">???</span>"
|
result:
|
||||||
result.warning.extension: "Le fichier ne semble pas être une feuille de calcul Excel !"
|
success:
|
||||||
result.warning.password: "La feuille de calcul Excel ne contenait aucun mot de passe !"
|
count: "Mot de passe(s) supprimé(s) : <span id=\"tmpl-success-password-count\">???</span>"
|
||||||
result.error.jszip: "JSZip n'a pas pu ouvrir le fichier !"
|
warning:
|
||||||
|
extension: "Le fichier ne semble pas être une feuille de calcul Excel !"
|
||||||
|
password: "La feuille de calcul Excel ne contenait aucun mot de passe !"
|
||||||
|
error:
|
||||||
|
jszip: "JSZip n'a pas pu ouvrir le fichier !"
|
||||||
|
|
||||||
|
license:
|
||||||
|
title: "Licences"
|
||||||
|
text:
|
||||||
|
1: "Cet outil utilise la bibliothèque <a href=\"https://stuk.github.io/jszip/\">JSZip</a>,
|
||||||
|
qui est distribuée sous licence <a href=\"https://github.com/Stuk/jszip/blob/main/LICENSE.markdown\">MIT</a>."
|
||||||
|
2: "Le reste du code de cet outil est placé dans le <a href=\"https://github.com/aziascreations/Web-NibblePoker\">domaine public</a>."
|
||||||
|
|||||||
@@ -24,25 +24,32 @@ showcase.title: Vitrine
|
|||||||
updates.title: Updates
|
updates.title: Updates
|
||||||
updates.text.privacy: Mise-à-jour de notre politique de confidentialité.
|
updates.text.privacy: Mise-à-jour de notre politique de confidentialité.
|
||||||
|
|
||||||
updates.5.date: 30 mars 2025
|
updates:
|
||||||
updates.5.text.1: Refonte complète du site pour utiliser un style standardisé.
|
5:
|
||||||
updates.5.text.2: Changements de certains providers de VPS pour <a href="https://hosteam.pl/">HosTeam</a>.
|
date: 30 mars 2025
|
||||||
|
text:
|
||||||
updates.4.date: 30 novembre 2023
|
1: Refonte complète du site pour utiliser un style standardisé.
|
||||||
updates.4.text.1: Centralisation des serveurs DNS & implémentation de GeoDNS.
|
2: Changements de certains providers de VPS pour <a href="https://hosteam.pl/">HosTeam</a>.
|
||||||
updates.4.text.2: Ajout d'un CDN pour l'Amérique du Nord hébergé par <a href="https://www.chicagovps.net/">ChicagoVPS</a>.
|
4:
|
||||||
updates.4.text.3: Les autres régions utilisent le CDN Européen hébergé par IONOS.
|
date: 30 novembre 2023
|
||||||
|
text:
|
||||||
updates.3.date: 12 novembre 2023
|
1: Centralisation des serveurs DNS & implémentation de GeoDNS.
|
||||||
updates.3.text.1: Les services annexes sont disponibles.
|
2: Ajout d'un CDN pour l'Amérique du Nord hébergé par <a href="https://www.chicagovps.net/">ChicagoVPS</a>.
|
||||||
updates.3.text.2: Changement d'hébergeur vers IONOS.
|
3: Les autres régions utilisent le CDN Européen hébergé par IONOS.
|
||||||
updates.3.text.3: Finition des pages annexes.
|
3:
|
||||||
|
date: 12 novembre 2023
|
||||||
updates.2.date: 15 août 2023
|
text:
|
||||||
updates.2.text.1: Le site internet est à nouveau disponible.
|
1: Les services annexes sont disponibles.
|
||||||
updates.2.text.2: Mise en place d'un nouveau design plus léger.
|
2: Changement d'hébergeur vers IONOS.
|
||||||
updates.2.text.3: Changement d'hébergeur vers HostBrr.
|
3: Finition des pages annexes.
|
||||||
updates.2.text.4: Ajout d'une nouvelle section pour les outils.
|
2:
|
||||||
|
date: 15 août 2023
|
||||||
updates.1.date: 9 septembre 2022
|
text:
|
||||||
updates.1.text.1: Changement d'hébergeur vers v6Node.
|
1: Le site internet est à nouveau disponible.
|
||||||
|
2: Mise en place d'un nouveau design plus léger.
|
||||||
|
3: Changement d'hébergeur vers HostBrr.
|
||||||
|
4: Ajout d'une nouvelle section pour les outils.
|
||||||
|
1:
|
||||||
|
date: 9 septembre 2022
|
||||||
|
text:
|
||||||
|
1: Changement d'hébergeur vers v6Node.
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ option.human.format.none: "Aucun formatage"
|
|||||||
option.human.format.standard: "Utiliser le format standard des pays"
|
option.human.format.standard: "Utiliser le format standard des pays"
|
||||||
option.human.format.4by4: "Formater en segments de 4 caractères"
|
option.human.format.4by4: "Formater en segments de 4 caractères"
|
||||||
|
|
||||||
license.1: "Le code de ce projet est publié dans le domaine public."
|
license.1: "Le code de ce projet est publié dans le <a href=\"https://github.com/aziascreations/Web-NibblePoker\">domaine public</a>."
|
||||||
license.2: "Le code source original peut être trouvé sur <a href=\"https://github.com/aziascreations/Web-NibblePoker\">GitHub</a>."
|
license.2: "Les données du
|
||||||
license.3: "Les données du
|
|
||||||
<a href=\"https://www.swift.com/standards/data-standards/iban-international-bank-account-number\">Registre IBAN</a>
|
<a href=\"https://www.swift.com/standards/data-standards/iban-international-bank-account-number\">Registre IBAN</a>
|
||||||
de Swift ont également été utilisées et peuvent être soumises à des conditions de licence différentes."
|
de Swift ont également été utilisées et peuvent être soumises à des conditions de licence différentes."
|
||||||
|
|||||||
49
data/strings/fr/pearch.yml
Normal file
49
data/strings/fr/pearch.yml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# PEArch - FR
|
||||||
|
|
||||||
|
meta:
|
||||||
|
title: "PEArch"
|
||||||
|
description: "Outil pour invité de commande qui vous indique l'architecture de CPU pour laquelle un executable a été compilé."
|
||||||
|
|
||||||
|
intro:
|
||||||
|
title: "Introduction"
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: A small tool that tells you which
|
||||||
|
<a href="https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types">CPU architecture</a>
|
||||||
|
a given <a href="https://learn.microsoft.com/en-us/windows/win32/debug/pe-format">Windows PE</a> is made for.
|
||||||
|
p2:
|
||||||
|
l1: Un total de 35 architectures sont supportées par cet outil.
|
||||||
|
|
||||||
|
usage:
|
||||||
|
title: "Utilisation"
|
||||||
|
text:
|
||||||
|
p1:
|
||||||
|
l1: "Cet outil peut soit être utilisé dans un invité de commande avec les options ci-dessous."
|
||||||
|
l2: "Ou alors, vous pouvez simplement déposer un fichier sur le <span class=\"code\">.exe</span> ou un raccourci, et avoir le même résultat."
|
||||||
|
details:
|
||||||
|
#disclaimer: Les codes d'architecture, ainsi que leur descriptions, sont tirés de ceux de Microsoft sur
|
||||||
|
# <a href="https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types">MSDN</a>.
|
||||||
|
title: "Cliquez ici pour afficher/cacher les codes d'architecture et de retour"
|
||||||
|
thead:
|
||||||
|
code: "<span class=\"t-monospace\">STDOUT</span>"
|
||||||
|
hex: "<span class=\"t-monospace\">STDOUT</span> avec <span class=\"t-monospace\">/AsHex</span>"
|
||||||
|
dec: "<span class=\"t-monospace\">STDERR</span> avec <span class=\"t-monospace\">/AsError</span>"
|
||||||
|
description: "Description <i>(Source: <a href=\"https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#machine-types\">MSDN</a>)</i>"
|
||||||
|
|
||||||
|
output:
|
||||||
|
title: "Examples d'exécution"
|
||||||
|
default:
|
||||||
|
title: "Sans options:"
|
||||||
|
options:
|
||||||
|
title: "Avec <span class=\"code\">/AsHex</span> et <span class=\"code\">/AsError</span>:"
|
||||||
|
|
||||||
|
downloads:
|
||||||
|
title: "Téléchargements"
|
||||||
|
|
||||||
|
license:
|
||||||
|
title: "Licence"
|
||||||
|
text: "Ce programme, ainsi que son code-source sont dans le domaine public (CC0 1.0 Universal)."
|
||||||
|
|
||||||
|
links:
|
||||||
|
title: "Liens"
|
||||||
|
|
||||||
@@ -17,3 +17,5 @@ generate: "Générer"
|
|||||||
download.raw: "Brut"
|
download.raw: "Brut"
|
||||||
download.json: "JSON"
|
download.json: "JSON"
|
||||||
download.yaml: "YAML"
|
download.yaml: "YAML"
|
||||||
|
|
||||||
|
license.1: "Cet outil et son code-source sont publié dans le <a href=\"https://github.com/aziascreations/Web-NibblePoker\">domaine public</a>."
|
||||||
|
|||||||
@@ -28,4 +28,4 @@ tools:
|
|||||||
title_key: "meta.title"
|
title_key: "meta.title"
|
||||||
subtitle_key: "article.subtitle"
|
subtitle_key: "article.subtitle"
|
||||||
tags:
|
tags:
|
||||||
- "undefined"
|
- "graphics"
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ metadata:
|
|||||||
title_key: "meta.title"
|
title_key: "meta.title"
|
||||||
subtitle_key: "article.subtitle"
|
subtitle_key: "article.subtitle"
|
||||||
tags:
|
tags:
|
||||||
- "undefined"
|
- "graphics"
|
||||||
resources:
|
resources:
|
||||||
scripts:
|
scripts:
|
||||||
- "svg-to-png.mjs"
|
- "svg-to-png.mjs"
|
||||||
|
|||||||
@@ -27,4 +27,5 @@ tools:
|
|||||||
title_key: "meta.title"
|
title_key: "meta.title"
|
||||||
subtitle_key: "article.subtitle"
|
subtitle_key: "article.subtitle"
|
||||||
tags:
|
tags:
|
||||||
- "undefined"
|
- "graphics"
|
||||||
|
- "analyser"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# This docker-compose file should only be used for development !
|
||||||
|
|
||||||
services:
|
services:
|
||||||
www_nibblepoker_lu:
|
www_nibblepoker_lu:
|
||||||
container_name: www-nibblepoker-python
|
container_name: www-nibblepoker-python
|
||||||
|
|||||||
16
readme.md
16
readme.md
@@ -1,13 +1,23 @@
|
|||||||
# Website - NibblePoker.lu
|
# Website - NibblePoker.lu
|
||||||
Public repository containing the source code for the *nibblepoker.lu* & *nibblepoker.com* websites.
|
Public repository containing the source code for [nibblepoker.lu](https://nibblepoker.lu/) &
|
||||||
|
[nibblepoker.com](https://nibblepoker.com/).
|
||||||
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
TODO
|
* Projects
|
||||||
|
* [CircuitPython - Ebyte E32 Driver](https://nibblepoker.lu/content/circuitpython-ebyte-e32/)
|
||||||
|
* [DotNet-ListComPort](https://nibblepoker.lu/content/lscom-cli-dotnet/)
|
||||||
|
* [Mini Dockerized CCTV NVR](https://nibblepoker.lu/content/docker-mini-cctv-nvr/)
|
||||||
|
* [PEArch](https://nibblepoker.lu/content/pearch/)
|
||||||
|
* Web-based Tools
|
||||||
|
* [Excel Password Remover](https://nibblepoker.lu/tools/excel-password-remover/)
|
||||||
|
* [IBAN Generator](https://nibblepoker.lu/tools/iban-generator/)
|
||||||
|
* [UUID Generator](https://nibblepoker.lu/tools/uuid-generator/)
|
||||||
|
* [VAT Calculator](https://nibblepoker.lu/tools/vat-calculator/)
|
||||||
|
|
||||||
|
|
||||||
## Related Projects
|
## Related Projects
|
||||||
TODO
|
* [aziascreations/Excel-Worksheet-Password-Remover](https://github.com/aziascreations/Excel-Worksheet-Password-Remover)
|
||||||
|
|
||||||
|
|
||||||
## Local Setup
|
## Local Setup
|
||||||
|
|||||||
771
scripts/package-lock.json
generated
771
scripts/package-lock.json
generated
@@ -1,771 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "scripts",
|
|
||||||
"lockfileVersion": 3,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"": {
|
|
||||||
"devDependencies": {
|
|
||||||
"browserify": "^17.0.1",
|
|
||||||
"html-minifier-terser": "^7.2.0",
|
|
||||||
"minify": "^10.2.0",
|
|
||||||
"rollup": "^4.48.1",
|
|
||||||
"sass": "^1.63.6",
|
|
||||||
"terser": "^5.19.0",
|
|
||||||
"typescript": "^5.1.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/gen-mapping": {
|
|
||||||
"version": "0.3.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
|
|
||||||
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@jridgewell/set-array": "^1.2.1",
|
|
||||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
|
||||||
"@jridgewell/trace-mapping": "^0.3.24"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/resolve-uri": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/set-array": {
|
|
||||||
"version": "1.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
|
||||||
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/source-map": {
|
|
||||||
"version": "0.3.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
|
|
||||||
"integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@jridgewell/gen-mapping": "^0.3.5",
|
|
||||||
"@jridgewell/trace-mapping": "^0.3.25"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/sourcemap-codec": {
|
|
||||||
"version": "1.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
|
|
||||||
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@jridgewell/trace-mapping": {
|
|
||||||
"version": "0.3.25",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
|
||||||
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@jridgewell/resolve-uri": "^3.1.0",
|
|
||||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@putout/minify": {
|
|
||||||
"version": "2.11.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@putout/minify/-/minify-2.11.0.tgz",
|
|
||||||
"integrity": "sha512-HNOICCQIwKqjz9MZxQimWI8c3PvoehY4qlg5N5/tCWT+JJfZQUiRWQgm6RQ9rP85ReoSO20HShH22naVMpbFog==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=16"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/acorn": {
|
|
||||||
"version": "8.12.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
|
|
||||||
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"bin": {
|
|
||||||
"acorn": "bin/acorn"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/anymatch": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"normalize-path": "^3.0.0",
|
|
||||||
"picomatch": "^2.0.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/binary-extensions": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/braces": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"fill-range": "^7.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/buffer-from": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/camel-case": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"pascal-case": "^3.1.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/chokidar": {
|
|
||||||
"version": "3.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
|
|
||||||
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"anymatch": "~3.1.2",
|
|
||||||
"braces": "~3.0.2",
|
|
||||||
"glob-parent": "~5.1.2",
|
|
||||||
"is-binary-path": "~2.1.0",
|
|
||||||
"is-glob": "~4.0.1",
|
|
||||||
"normalize-path": "~3.0.0",
|
|
||||||
"readdirp": "~3.6.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8.10.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://paulmillr.com/funding/"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"fsevents": "~2.3.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/clean-css": {
|
|
||||||
"version": "5.3.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
|
|
||||||
"integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"source-map": "~0.6.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/commander": {
|
|
||||||
"version": "10.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
|
|
||||||
"integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/css-b64-images": {
|
|
||||||
"version": "0.2.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/css-b64-images/-/css-b64-images-0.2.5.tgz",
|
|
||||||
"integrity": "sha512-TgQBEdP07adhrDfXvI5o6bHGukKBNMzp2Ngckc/6d09zpjD2gc1Hl3Ca1CKgb8FXjHi88+Phv2Uegs2kTL4zjg==",
|
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
|
||||||
"css-b64-images": "bin/css-b64-images"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/debug": {
|
|
||||||
"version": "4.3.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
|
||||||
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"ms": "2.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"supports-color": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/dot-case": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"no-case": "^3.0.4",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/entities": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
|
||||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.12"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fill-range": {
|
|
||||||
"version": "7.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
|
||||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"to-regex-range": "^5.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/find-up": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"locate-path": "^7.1.0",
|
|
||||||
"path-exists": "^5.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fsevents": {
|
|
||||||
"version": "2.3.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
|
||||||
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
|
||||||
"dev": true,
|
|
||||||
"hasInstallScript": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/glob-parent": {
|
|
||||||
"version": "5.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
|
||||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"is-glob": "^4.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/html-minifier-terser": {
|
|
||||||
"version": "7.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz",
|
|
||||||
"integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"camel-case": "^4.1.2",
|
|
||||||
"clean-css": "~5.3.2",
|
|
||||||
"commander": "^10.0.0",
|
|
||||||
"entities": "^4.4.0",
|
|
||||||
"param-case": "^3.0.4",
|
|
||||||
"relateurl": "^0.2.7",
|
|
||||||
"terser": "^5.15.1"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"html-minifier-terser": "cli.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^14.13.1 || >=16.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/immutable": {
|
|
||||||
"version": "4.3.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
|
|
||||||
"integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/is-binary-path": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"binary-extensions": "^2.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/is-extglob": {
|
|
||||||
"version": "2.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
|
||||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/is-glob": {
|
|
||||||
"version": "4.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
|
||||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"is-extglob": "^2.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/is-number": {
|
|
||||||
"version": "7.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
|
||||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.12.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jju": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/locate-path": {
|
|
||||||
"version": "7.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
|
|
||||||
"integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"p-locate": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/lower-case": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/minify": {
|
|
||||||
"version": "10.5.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/minify/-/minify-10.5.2.tgz",
|
|
||||||
"integrity": "sha512-/7aNrZ7kMe43o0NQUftL/H9QBi15FYEUo7tnw0Nrcc+XsmNS6nP4cIL4iqrNzSzv1rUaHLBxpmYbETKT9dKZiQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@putout/minify": "^2.0.0",
|
|
||||||
"clean-css": "^5.0.1",
|
|
||||||
"css-b64-images": "~0.2.5",
|
|
||||||
"debug": "^4.1.0",
|
|
||||||
"find-up": "^6.1.0",
|
|
||||||
"html-minifier-terser": "^7.1.0",
|
|
||||||
"readjson": "^2.2.2",
|
|
||||||
"simport": "^1.2.0",
|
|
||||||
"try-catch": "^3.0.0",
|
|
||||||
"try-to-catch": "^3.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"minify": "bin/minify.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=16"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ms": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/no-case": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"lower-case": "^2.0.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/normalize-path": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/p-limit": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"yocto-queue": "^1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/p-locate": {
|
|
||||||
"version": "6.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
|
|
||||||
"integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"p-limit": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/param-case": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"dot-case": "^3.0.4",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pascal-case": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"no-case": "^3.0.4",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/path-exists": {
|
|
||||||
"version": "5.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
|
||||||
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/picomatch": {
|
|
||||||
"version": "2.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
|
||||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.6"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/jonschlinkert"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/readdirp": {
|
|
||||||
"version": "3.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
|
||||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"picomatch": "^2.2.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/readjson": {
|
|
||||||
"version": "2.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/readjson/-/readjson-2.2.2.tgz",
|
|
||||||
"integrity": "sha512-PdeC9tsmLWBiL8vMhJvocq+OezQ3HhsH2HrN7YkhfYcTjQSa/iraB15A7Qvt7Xpr0Yd2rDNt6GbFwVQDg3HcAw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"jju": "^1.4.0",
|
|
||||||
"try-catch": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/relateurl": {
|
|
||||||
"version": "0.2.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
|
|
||||||
"integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/rollup": {
|
|
||||||
"version": "3.29.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
|
|
||||||
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"bin": {
|
|
||||||
"rollup": "dist/bin/rollup"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.18.0",
|
|
||||||
"npm": ">=8.0.0"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"fsevents": "~2.3.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/sass": {
|
|
||||||
"version": "1.77.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
|
|
||||||
"integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
|
||||||
"immutable": "^4.0.0",
|
|
||||||
"source-map-js": ">=0.6.2 <2.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"sass": "sass.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/simport": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/simport/-/simport-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-85Bm7pKsqiiQ8rmYCaPDdlXZjJvuW6/k/FY8MTtLFMgU7f8S00CgTHfRtWB6KwSb6ek4p9YyG2enG1+yJbl+CA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"readjson": "^2.2.0",
|
|
||||||
"try-to-catch": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/source-map": {
|
|
||||||
"version": "0.6.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "BSD-3-Clause",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/source-map-js": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "BSD-3-Clause",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/source-map-support": {
|
|
||||||
"version": "0.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
|
|
||||||
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"buffer-from": "^1.0.0",
|
|
||||||
"source-map": "^0.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/terser": {
|
|
||||||
"version": "5.31.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
|
|
||||||
"integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "BSD-2-Clause",
|
|
||||||
"dependencies": {
|
|
||||||
"@jridgewell/source-map": "^0.3.3",
|
|
||||||
"acorn": "^8.8.2",
|
|
||||||
"commander": "^2.20.0",
|
|
||||||
"source-map-support": "~0.5.20"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"terser": "bin/terser"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/terser/node_modules/commander": {
|
|
||||||
"version": "2.20.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
|
||||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/to-regex-range": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"is-number": "^7.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/try-catch": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/try-catch/-/try-catch-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-91yfXw1rr/P6oLpHSyHDOHm0vloVvUoo9FVdw8YwY05QjJQG9OT0LUxe2VRAzmHG+0CUOmI3nhxDUMLxDN/NEQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/try-to-catch": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/try-to-catch/-/try-to-catch-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-hOY83V84Hx/1sCzDSaJA+Xz2IIQOHRvjxzt+F0OjbQGPZ6yLPLArMA0gw/484MlfUkQbCpKYMLX3VDCAjWKfzQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tslib": {
|
|
||||||
"version": "2.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
|
|
||||||
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "0BSD"
|
|
||||||
},
|
|
||||||
"node_modules/typescript": {
|
|
||||||
"version": "5.5.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
|
|
||||||
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"bin": {
|
|
||||||
"tsc": "bin/tsc",
|
|
||||||
"tsserver": "bin/tsserver"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.17"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/yocto-queue": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.20"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +1,43 @@
|
|||||||
/* File inputs with drop thingy */
|
/* File inputs with drop thingy */
|
||||||
|
|
||||||
.np-file-input-drop-container {
|
.np-file-input-drop-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.np-file-drop-text {
|
input.np-file-input-drop {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
width: 100%;
|
||||||
left: 50%;
|
height: 100%;
|
||||||
transform: translate(-50%, -50%);
|
top: 0;
|
||||||
}
|
left: 0;
|
||||||
|
|
||||||
input[type=file].np-file-input-drop {
|
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.np-file-drop-text {
|
||||||
|
text-align: center;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.np-file-drop-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 10px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
/* Top margin trimmer for heading renderer */
|
/* Top margin trimmer for heading renderer */
|
||||||
|
|
||||||
|
|
||||||
|
.t-v-center {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
/* Copy of the m*-xs classes */
|
/* Copy of the m*-xs classes */
|
||||||
/* Accommodates the paragraph renderer that has a hard-coded .mt-xs */
|
/* Accommodates the paragraph renderer that has a hard-coded .mt-xs */
|
||||||
.content-spacer {
|
.content-spacer {
|
||||||
@@ -29,3 +49,15 @@ input[type=file].np-file-input-drop {
|
|||||||
margin-top: calc(1rem* 0.5);
|
margin-top: calc(1rem* 0.5);
|
||||||
margin-bottom: calc(1rem* 0.5);
|
margin-bottom: calc(1rem* 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hide-if-last:last-child {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-if-first:first-child {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt-0-if-first:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|||||||
BIN
static/resources/NibblePoker/images/content/pearch/main.png
Normal file
BIN
static/resources/NibblePoker/images/content/pearch/main.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
@@ -28,7 +28,7 @@ export function initCore() {
|
|||||||
|
|
||||||
//showContentModal(eContentModal);
|
//showContentModal(eContentModal);
|
||||||
|
|
||||||
// FIXME: Fix this shit !
|
// FIXME: Fix the modals, this is hindering many things !
|
||||||
//[eContentModal, document.getElementById("modal-content-cross"), eContentModalInner].forEach(value => {
|
//[eContentModal, document.getElementById("modal-content-cross"), eContentModalInner].forEach(value => {
|
||||||
// value.onclick = function() {
|
// value.onclick = function() {
|
||||||
// fadeOut(eContentModal, 175).then(r => {
|
// fadeOut(eContentModal, 175).then(r => {
|
||||||
@@ -47,8 +47,7 @@ export function initCore() {
|
|||||||
});*/
|
});*/
|
||||||
|
|
||||||
// Setting up the file drop inputs
|
// Setting up the file drop inputs
|
||||||
document.querySelectorAll(".np-file-input-root-container").forEach(eRootContainer => {
|
document.querySelectorAll(".np-file-input-drop-container").forEach(eRootContainer => {
|
||||||
//console.log(eRootContainer);
|
|
||||||
|
|
||||||
/** @type {HTMLInputElement} */
|
/** @type {HTMLInputElement} */
|
||||||
const eFileDropInput = eRootContainer.querySelector("input[type=file]");
|
const eFileDropInput = eRootContainer.querySelector("input[type=file]");
|
||||||
@@ -58,7 +57,6 @@ export function initCore() {
|
|||||||
|
|
||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
const inputId = eFileDropInput.getAttribute("id");
|
const inputId = eFileDropInput.getAttribute("id");
|
||||||
//console.log(inputId);
|
|
||||||
|
|
||||||
/** @type {HTMLElement} */
|
/** @type {HTMLElement} */
|
||||||
const eFileDropTextEmpty = eRootContainer.querySelector(`#${inputId}-text-drop`);
|
const eFileDropTextEmpty = eRootContainer.querySelector(`#${inputId}-text-drop`);
|
||||||
@@ -78,14 +76,7 @@ export function initCore() {
|
|||||||
/** @type {NodeListOf<HTMLElement>} */
|
/** @type {NodeListOf<HTMLElement>} */
|
||||||
const eFileDropSelectionCounts = eRootContainer.querySelectorAll(`.np-file-drop-count`);
|
const eFileDropSelectionCounts = eRootContainer.querySelectorAll(`.np-file-drop-count`);
|
||||||
|
|
||||||
if(eFileDropAddButton !== null) {
|
function handleFileDropClear() {
|
||||||
eFileDropAddButton.addEventListener("click", function() {
|
|
||||||
eFileDropInput.click();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if(eFileDropClearButton !== null) {
|
|
||||||
eFileDropClearButton.addEventListener("click", function() {
|
|
||||||
eFileDropInput.value = '';
|
eFileDropInput.value = '';
|
||||||
if(eFileDropTextSingle !== null) {
|
if(eFileDropTextSingle !== null) {
|
||||||
eFileDropTextSingle.hidden = true;
|
eFileDropTextSingle.hidden = true;
|
||||||
@@ -96,6 +87,18 @@ export function initCore() {
|
|||||||
if(eFileDropTextEmpty !== null) {
|
if(eFileDropTextEmpty !== null) {
|
||||||
eFileDropTextEmpty.hidden = false;
|
eFileDropTextEmpty.hidden = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(eFileDropAddButton !== null) {
|
||||||
|
eFileDropAddButton.addEventListener("click", function() {
|
||||||
|
handleFileDropClear();
|
||||||
|
eFileDropInput.click();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if(eFileDropClearButton !== null) {
|
||||||
|
eFileDropClearButton.addEventListener("click", function() {
|
||||||
|
handleFileDropClear();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
User-agent: * Allow: / Sitemap: https://nibblepoker.com/sitemap.txt
|
|
||||||
@@ -1,26 +1,40 @@
|
|||||||
<section id="{{ applet_data.id }}-eula">
|
<section id="{{ applet_data.id }}-eula" class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("disclaimer.warning", "commons", user_lang)) }}
|
{{ render_h2(l10n("disclaimer.warning", "commons", user_lang)) }}
|
||||||
|
|
||||||
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("eula.1", applet_data.id, user_lang)) }}
|
{{ render_paragraph(l10n("eula.1", applet_data.id, user_lang)) }}
|
||||||
{{ render_paragraph(l10n("eula.2", applet_data.id, user_lang)) }}
|
{{ render_paragraph(l10n("eula.2", applet_data.id, user_lang)) }}
|
||||||
{{ render_paragraph(l10n("eula.3", applet_data.id, user_lang)) }}
|
{{ render_paragraph(l10n("eula.3", applet_data.id, user_lang)) }}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="{{ applet_data.id }}-input">
|
<section id="{{ applet_data.id }}-input" class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("file.selection.title", applet_data.id, user_lang)) }}
|
{{ render_h2(l10n("file.selection.title", applet_data.id, user_lang)) }}
|
||||||
|
|
||||||
{{ render_paragraph(l10n("file.selection.1", applet_data.id, user_lang)) }}
|
<div class="content-spacer mt-s">
|
||||||
|
{{ render_file_input(
|
||||||
{{ render_file_input(applet_data.id + "-input-file", true, ".xlsx, .xlsm", true, true, user_lang) }}
|
applet_data.id + "-input-file", true, ".xlsx, .xlsm", true, false, user_lang,
|
||||||
|
l10n("file.selection.1", applet_data.id, user_lang)) }}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="{{ applet_data.id }}-details">
|
<section id="{{ applet_data.id }}-details" class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("details.title", applet_data.id, user_lang)) }}
|
{{ render_h2(l10n("details.title", applet_data.id, user_lang)) }}
|
||||||
|
|
||||||
|
<div class="content-spacer mt-s">
|
||||||
<div id="{{ applet_data.id }}-details-empty">
|
<div id="{{ applet_data.id }}-details-empty">
|
||||||
{{ render_paragraph(l10n("details.empty.1", applet_data.id, user_lang)) }}
|
{{ render_paragraph(l10n("details.empty.1", applet_data.id, user_lang)) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="{{ applet_data.id }}-details-populated" hidden>
|
<div id="{{ applet_data.id }}-details-populated" hidden>
|
||||||
|
{% if is_standalone %}
|
||||||
|
{{ render_button(
|
||||||
|
l10n("download.action.all", "commons", user_lang),
|
||||||
|
false, applet_data.id + "-files-download-all", "bkgd-green") }}
|
||||||
|
{{ render_button(
|
||||||
|
l10n("clear.all.files", "commons", user_lang),
|
||||||
|
false, applet_data.id + "-files-clear", "bkgd-orange") }}
|
||||||
|
{% else %}
|
||||||
{{ render_button(
|
{{ render_button(
|
||||||
"<i class=\"fa-duotone fa-solid fa-floppy-disks mr-xs\"></i>" +
|
"<i class=\"fa-duotone fa-solid fa-floppy-disks mr-xs\"></i>" +
|
||||||
l10n("download.action.all", "commons", user_lang),
|
l10n("download.action.all", "commons", user_lang),
|
||||||
@@ -29,23 +43,33 @@
|
|||||||
"<i class=\"fa-duotone fa-solid fa-trash mr-xs\"></i>" +
|
"<i class=\"fa-duotone fa-solid fa-trash mr-xs\"></i>" +
|
||||||
l10n("clear.all.files", "commons", user_lang),
|
l10n("clear.all.files", "commons", user_lang),
|
||||||
false, applet_data.id + "-files-clear", "bkgd-orange") }}
|
false, applet_data.id + "-files-clear", "bkgd-orange") }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="{{ applet_data.id }}-result-container"></div>
|
<div id="{{ applet_data.id }}-result-container" class="mt-s"></div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<template id="tmpl-success-root">
|
<template id="tmpl-success-root">
|
||||||
<div class="bkgd-grid10 w-full r-l border cursor-pointer epr-download-all-click">
|
<div class="bkgd-grid10 w-full r-l border cursor-pointer epr-download-all-click mt-xs">
|
||||||
<table class="table-p-xxs table-v-center">
|
<table class="table-p-xxs table-v-center">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" class="br bkgd-green bkgd-grid30 rl-l">
|
<td rowspan="2" class="br bkgd-green bkgd-grid30 rl-l">
|
||||||
|
{% if is_standalone %}
|
||||||
|
<span class="mx-xxs">✅</span>
|
||||||
|
{% else %}
|
||||||
<i class="fa-duotone fa-solid fa-circle-check mx-s"></i>
|
<i class="fa-duotone fa-solid fa-circle-check mx-s"></i>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="w-full t-bold">
|
<td class="w-full t-bold">
|
||||||
<span id="tmpl-success-filename">PlaceholderSuccessName.xlsx</span>
|
<span id="tmpl-success-filename">PlaceholderSuccessName.xlsx</span>
|
||||||
</td>
|
</td>
|
||||||
<td rowspan="2" class="bl bkgd-blue bkgd-grid30 rr-l">
|
<td rowspan="2" class="bl bkgd-blue bkgd-grid30 rr-l">
|
||||||
|
{% if is_standalone %}
|
||||||
|
<span class="mx-xxs">💾</span>
|
||||||
|
{% else %}
|
||||||
<i class="fa-duotone fa-download mx-s"></i>
|
<i class="fa-duotone fa-download mx-s"></i>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="t-italic">
|
<tr class="t-italic">
|
||||||
@@ -56,11 +80,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template id="tmpl-warning-root">
|
<template id="tmpl-warning-root">
|
||||||
<div class="bkgd-grid10 w-full r-l border">
|
<div class="bkgd-grid10 w-full r-l border mt-xs">
|
||||||
<table class="table-p-xxs table-v-center">
|
<table class="table-p-xxs table-v-center">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" class="br bkgd-orange bkgd-grid30 rl-l">
|
<td rowspan="2" class="br bkgd-orange bkgd-grid30 rl-l">
|
||||||
|
{% if is_standalone %}
|
||||||
|
<span class="mx-xxs">⚠️</span>
|
||||||
|
{% else %}
|
||||||
<i class="fa-duotone fa-solid fa-triangle-exclamation mx-s"></i>
|
<i class="fa-duotone fa-solid fa-triangle-exclamation mx-s"></i>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="w-full t-bold">
|
<td class="w-full t-bold">
|
||||||
<span id="tmpl-warning-filename">PlaceholderWarningName.xlsx</span>
|
<span id="tmpl-warning-filename">PlaceholderWarningName.xlsx</span>
|
||||||
@@ -81,11 +109,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template id="tmpl-error-root">
|
<template id="tmpl-error-root">
|
||||||
<div class="bkgd-grid10 w-full r-l border">
|
<div class="bkgd-grid10 w-full r-l border mt-xs">
|
||||||
<table class="table-p-xxs table-v-center">
|
<table class="table-p-xxs table-v-center">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" class="br bkgd-red bkgd-grid30 rl-l">
|
<td rowspan="2" class="br bkgd-red bkgd-grid30 rl-l">
|
||||||
|
{% if is_standalone %}
|
||||||
|
<span class="mx-xxs">❌</span>
|
||||||
|
{% else %}
|
||||||
<i class="fa-duotone fa-solid fa-hexagon-exclamation mx-s"></i>
|
<i class="fa-duotone fa-solid fa-hexagon-exclamation mx-s"></i>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="w-full t-bold">
|
<td class="w-full t-bold">
|
||||||
<span id="tmpl-error-filename">PlaceholderErrorName.xlsx</span>
|
<span id="tmpl-error-filename">PlaceholderErrorName.xlsx</span>
|
||||||
@@ -103,8 +135,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
{% if is_standalone %}
|
{% if is_standalone %}
|
||||||
<section id="{{ applet_data.id }}-licenses">
|
<section id="{{ applet_data.id }}-licenses" class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("licenses.title", applet_data.id, user_lang)) }}
|
{{ render_h2(l10n("license.title", applet_data.id, user_lang)) }}
|
||||||
<p>123</p>
|
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_paragraph(
|
||||||
|
l10n("license.text.1", applet_data.id, user_lang) + "<br>" + l10n("license.text.2", applet_data.id, user_lang)
|
||||||
|
) }}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -192,7 +192,4 @@
|
|||||||
{{ l10n("license.1", "iban-generator", user_lang) }}<br>
|
{{ l10n("license.1", "iban-generator", user_lang) }}<br>
|
||||||
{{ l10n("license.2", "iban-generator", user_lang) }}
|
{{ l10n("license.2", "iban-generator", user_lang) }}
|
||||||
</p>
|
</p>
|
||||||
<p class="mt-xs t-muted">
|
|
||||||
{{ l10n("license.3", "iban-generator", user_lang) }}
|
|
||||||
</p>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -27,13 +27,21 @@
|
|||||||
<hr class="subtle">
|
<hr class="subtle">
|
||||||
|
|
||||||
<button id="uuid-generator-generate" class="p-xs r-s border b-light success">
|
<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("action.generate", "commons", user_lang) }}
|
{% if not is_standalone %}
|
||||||
|
<i class="fa-duotone fa-solid fa-gears mr-xs"></i>
|
||||||
|
{% endif %}
|
||||||
|
{{ l10n("action.generate", "commons", user_lang) }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="p-xs r-s border b-light primary rr-0 br-0">
|
{% if not is_standalone %}
|
||||||
|
<button class="p-xs r-s border b-light primary rr-0 br-0">
|
||||||
<i class="fa-duotone fa-solid fa-download"></i>
|
<i class="fa-duotone fa-solid fa-download"></i>
|
||||||
</button>
|
</button>
|
||||||
<button id="uuid-generator-download-raw" class="p-xs r-s border b-light primary ml-0 r-0 br-0">
|
{% else %}
|
||||||
|
<span class="t-w-500 ml-m mr-xxs">{{ l10n("format.download.as", "commons", user_lang) }} :</span>
|
||||||
|
{% endif %}
|
||||||
|
<button id="uuid-generator-download-raw" class="p-xs r-s border b-light primary ml-0
|
||||||
|
{% if not is_standalone %}r-0{% else %}rr-0{% endif %} br-0">
|
||||||
{{ l10n("format.raw", "commons", user_lang) }}
|
{{ l10n("format.raw", "commons", user_lang) }}
|
||||||
</button>
|
</button>
|
||||||
<button id="uuid-generator-download-json" class="p-xs r-s border b-light primary ml-0 r-0 br-0">
|
<button id="uuid-generator-download-json" class="p-xs r-s border b-light primary ml-0 r-0 br-0">
|
||||||
@@ -47,3 +55,12 @@
|
|||||||
|
|
||||||
<label for="uuid-generator-preview" class="d-none">{{ l10n("preview.label", "uuid-generator", user_lang) }}:</label>
|
<label for="uuid-generator-preview" class="d-none">{{ l10n("preview.label", "uuid-generator", user_lang) }}:</label>
|
||||||
<textarea name="uuid-generator-preview" id="uuid-generator-preview" rows="16" class="w-full border r-s ta-resize-v"></textarea>
|
<textarea name="uuid-generator-preview" id="uuid-generator-preview" rows="16" class="w-full border r-s ta-resize-v"></textarea>
|
||||||
|
|
||||||
|
|
||||||
|
{% if is_standalone %}
|
||||||
|
<hr class="subtle">
|
||||||
|
|
||||||
|
<p class="t-muted">
|
||||||
|
{{ l10n("license.1", "uuid-generator", user_lang) }}
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
<link rel="alternate icon" href="/favicon.ico">
|
<link rel="alternate icon" href="/favicon.ico">
|
||||||
<meta name="theme-color" content="#6F2F65">
|
<meta name="theme-color" content="#6F2F65">
|
||||||
|
|
||||||
<!--<link rel="dns-prefetch" href="https://cdn.nibblepoker.lu/"/>-->
|
<link rel="dns-prefetch" href="https://cdn.nibblepoker.lu/"/>
|
||||||
|
<link rel="dns-prefetch" href="https://files.nibblepoker.lu/"/>
|
||||||
<link rel="preconnect" href="https://cdn.nibblepoker.{{ domain_tld }}/"/>
|
<link rel="preconnect" href="https://cdn.nibblepoker.{{ domain_tld }}/"/>
|
||||||
|
|
||||||
<link rel="prefetch" href="https://cdn.nibblepoker.{{ domain_tld }}/FontAwesomePro/6.7.2/webfonts/fa-brands-400.woff2" as="font" />
|
<link rel="prefetch" href="https://cdn.nibblepoker.{{ domain_tld }}/FontAwesomePro/6.7.2/webfonts/fa-brands-400.woff2" as="font" />
|
||||||
@@ -21,7 +22,6 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/FontAwesomePro/6.7.2/css/all.min.css">
|
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/FontAwesomePro/6.7.2/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 }}/NibblePoker/StandardCSS/nibblepoker.min.css">
|
||||||
<!--<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/Quantum/Quantum.min.css">-->
|
|
||||||
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/FamFamFam/FlagsExtended/famfamfam-flags.min.css">
|
<link rel="stylesheet" href="https://cdn.nibblepoker.{{ domain_tld }}/FamFamFam/FlagsExtended/famfamfam-flags.min.css">
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ url_for("static", filename="resources/NibblePoker/css/extra.css") }}">
|
<link rel="stylesheet" href="{{ url_for("static", filename="resources/NibblePoker/css/extra.css") }}">
|
||||||
|
|||||||
@@ -1,8 +1,32 @@
|
|||||||
<div class="np-file-input-root-container">
|
<div class="np-file-input-drop-container border r-m">
|
||||||
<!-- FIXME: Use the common renderer ! -->
|
<input type="file"
|
||||||
|
id="{{ file_input_id }}"
|
||||||
|
name="{{ file_input_id }}"
|
||||||
|
{% if file_accept is not none %}accept="{{ file_accept }}"{% endif %}
|
||||||
|
class="np-file-input-drop w-full p-xl"
|
||||||
|
{% if file_multiple %}multiple{% endif %}>
|
||||||
|
|
||||||
|
{% if file_upload_button or file_clear_button %}
|
||||||
|
<p id="{{ file_input_id }}-text-drop"
|
||||||
|
class="np-file-drop-text pt-s mb-s">
|
||||||
|
{% if text_override == "" %}
|
||||||
|
{% if file_multiple %}
|
||||||
|
{{ l10n("file.drop.select.multiple", "commons", user_lang) }}
|
||||||
|
{% else %}
|
||||||
|
{{ l10n("file.drop.select.single", "commons", user_lang) }}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{{ text_override }}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="np-file-drop-buttons pb-s">
|
||||||
{% if file_upload_button %}
|
{% if file_upload_button %}
|
||||||
<button id="{{ file_input_id }}-add" class="p-xs r-s border btn-primary">
|
<button id="{{ file_input_id }}-add" class="p-xs r-s border btn-primary np-file-drop-button">
|
||||||
|
{% if not is_standalone %}
|
||||||
<i class="fa-duotone fa-solid fa-cloud-arrow-up mr-xxs"></i>
|
<i class="fa-duotone fa-solid fa-cloud-arrow-up mr-xxs"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if file_multiple %}
|
{% if file_multiple %}
|
||||||
{{ l10n("file.drop.upload.multiple", "commons", user_lang) }}
|
{{ l10n("file.drop.upload.multiple", "commons", user_lang) }}
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -12,52 +36,26 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if file_clear_button %}
|
{% if file_clear_button %}
|
||||||
<button id="{{ file_input_id }}-reset" class="p-xs r-s border btn-warning">
|
<button id="{{ file_input_id }}-reset" class="p-xs r-s border btn-warning np-file-drop-button">
|
||||||
{{ "<i class=\"fa-duotone fa-solid fa-trash mr-xs\"></i>" + l10n("file.drop.clear", "commons", user_lang) }}
|
{% if not is_standalone %}
|
||||||
|
<i class="fa-duotone fa-solid fa-trash mr-xs"></i>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{ l10n("file.drop.clear", "commons", user_lang) }}
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% if file_upload_button or file_clear_button %}
|
{% else %}
|
||||||
<br>
|
<p class="np-file-drop-text py-l">
|
||||||
{% endif %}
|
{% if text_override == "" %}
|
||||||
|
|
||||||
<div class="np-file-input-drop-container border r-s bkgd-blank">
|
|
||||||
<p class="np-file-drop-text"
|
|
||||||
id="{{ file_input_id }}-text-drop">
|
|
||||||
{% if file_multiple %}
|
{% if file_multiple %}
|
||||||
{{ l10n("file.drop.select.multiple", "commons", user_lang) }}
|
{{ l10n("file.drop.select.multiple", "commons", user_lang) }}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ l10n("file.drop.select.single", "commons", user_lang) }}
|
{{ l10n("file.drop.select.single", "commons", user_lang) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="np-file-drop-text"
|
|
||||||
id="{{ file_input_id }}-text-file-single"
|
|
||||||
hidden>
|
|
||||||
{{ l10n("file.drop.selected.single", "commons", user_lang) }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="np-file-drop-text"
|
|
||||||
id="{{ file_input_id }}-text-file-multiple"
|
|
||||||
hidden>
|
|
||||||
{{ l10n("file.drop.selected.multiple", "commons", user_lang) }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<label for="{{ file_input_id }}"
|
|
||||||
hidden>
|
|
||||||
{% if file_multiple %}
|
|
||||||
{{ l10n("file.drop.label.multiple", "commons", user_lang) }}
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ l10n("file.drop.label.single", "commons", user_lang) }}
|
{{ text_override }}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="file"
|
|
||||||
id="{{ file_input_id }}"
|
|
||||||
name="{{ file_input_id }}"
|
|
||||||
{% if file_accept is not none %}accept="{{ file_accept }}"{% endif %}
|
|
||||||
class="np-file-input-drop w-full p-l"
|
|
||||||
{% if file_multiple %}multiple{% endif %}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{% elif heading_level == 4 %}
|
{% elif heading_level == 4 %}
|
||||||
mt-m
|
mt-m
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ heading_background_class }}">
|
{{ heading_background_class }} mt-0-if-first">
|
||||||
|
|
||||||
<h{{ heading_level }} class="t-w-500
|
<h{{ heading_level }} class="t-w-500
|
||||||
{% if heading_level == 2 %}
|
{% if heading_level == 2 %}
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
{{ heading_inner_html }}
|
{{ heading_inner_html }}
|
||||||
|
|
||||||
{% if heading_right_html is not none %}
|
{% if heading_right_html is not none %}
|
||||||
<span class="ml-auto mobile-hide t-size-10 t-muted">{{ heading_right_html }}</span>
|
<!--<span class="ml-auto mobile-hide t-size-10 t-muted">{{ heading_right_html }}</span>-->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</h{{ heading_level }}>
|
</h{{ heading_level }}>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{% extends "base_www.jinja" %}
|
{% extends "base_www.jinja" %}
|
||||||
|
|
||||||
{% block main_content %}
|
{% block main_content %}
|
||||||
{% block content_filters %}{% endblock %}
|
<!--{% block content_filters %}{% endblock %}-->
|
||||||
<!--<hr class="subtle">-->
|
|
||||||
{% block content_listing %}{% endblock %}
|
{% block content_listing %}{% endblock %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -9,32 +9,39 @@
|
|||||||
|
|
||||||
{% block main_content %}
|
{% block main_content %}
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("intro.title", "about", user_lang)) }}
|
{{ render_h1(l10n("intro.title", "about", user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
<img src="/resources/NibblePoker/images/about/profile-pic.jpg"
|
<img src="/resources/NibblePoker/images/about/profile-pic.jpg"
|
||||||
alt="" class="r-r img-profile f-right m-xs ml-xxs"
|
alt="" class="r-r img-profile f-right m-xs ml-xxs"
|
||||||
draggable="false">
|
draggable="false">
|
||||||
{{ render_paragraph(l10n("intro.text.01", "about", user_lang) + l10n("intro.text.02", "about", user_lang)) }}
|
{{ render_paragraph(l10n("intro.text.p1.l1", "about", user_lang)) }}
|
||||||
{{ render_paragraph(l10n("intro.text.10", "about", user_lang) + l10n("intro.text.11", "about", user_lang)) }}
|
{{ render_paragraph(l10n("intro.text.p3.l1", "about", user_lang) + "<br>" + l10n("intro.text.p3.l2", "about", user_lang)) }}
|
||||||
{{ render_paragraph(l10n("intro.text.20", "about", user_lang) + l10n("intro.text.21", "about", user_lang)) }}
|
</div>
|
||||||
|
</section>
|
||||||
<!--{{ render_h1(l10n("tenets.title", "about", user_lang)) }}
|
|
||||||
<p class="mt-xs ml-s t-bold">
|
|
||||||
TODO
|
|
||||||
</p>-->
|
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("future.title", "about", user_lang)) }}
|
{{ render_h1(l10n("future.title", "about", user_lang)) }}
|
||||||
{{ render_paragraph(l10n("future.text.01", "about", user_lang) + l10n("future.text.02", "about", user_lang)) }}
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("future.text.10", "about", user_lang)) }}
|
{{ render_paragraph(l10n("future.text.p1.l1", "about", user_lang) + "<br>" + l10n("future.text.p1.l2", "about", user_lang)) }}
|
||||||
{{ render_paragraph(l10n("future.text.20", "about", user_lang)) }}
|
{{ render_paragraph(l10n("future.text.p2.l1", "about", user_lang)) }}
|
||||||
|
{{ render_paragraph(l10n("future.text.p3.l1", "about", user_lang)) }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("financing.title", "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)) }}
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("financing.text.10", "about", user_lang)) }}
|
{{ render_paragraph(l10n("financing.text.p1.l1", "about", user_lang) + "<br>" + l10n("financing.text.p1.l2", "about", user_lang)) }}
|
||||||
{{ render_paragraph(l10n("financing.text.20", "about", user_lang) + l10n("financing.text.21", "about", user_lang)) }}
|
{{ render_paragraph(l10n("financing.text.p2.l1", "about", user_lang)) }}
|
||||||
|
{{ render_paragraph(l10n("financing.text.p3.l1", "about", user_lang) + "<br>" + l10n("financing.text.p3.l2", "about", user_lang)) }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
<div class="grid col-2 col-medium-1">
|
<div class="grid grid-col-2 grid-col-medium-1 grid-gap-m">
|
||||||
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center mt-s mx-s">
|
<div>
|
||||||
|
<table class="table-stylish table-p-xs border r-l w-full">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ l10n("financing.part.service", "about", user_lang) }}</th>
|
<th>{{ l10n("financing.part.service", "about", user_lang) }}</th>
|
||||||
@@ -44,15 +51,15 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("financing.part.domain.lu", "about", user_lang) }}</td>
|
<td>{{ l10n("financing.part.domain.lu", "about", user_lang) }}</td>
|
||||||
<td>17,00 €</td>
|
<td>19,99 €</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("financing.part.domain.com", "about", user_lang) }}</td>
|
<td>{{ l10n("financing.part.domain.com", "about", user_lang) }}</td>
|
||||||
<td>14,50 €</td>
|
<td>13,49 €</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("financing.part.proxy.europe", "about", user_lang) }}</td>
|
<td>{{ l10n("financing.part.proxy.europe", "about", user_lang) }}</td>
|
||||||
<td>14,50 €</td>
|
<td>348 PLN / ±81,84 €</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("financing.part.proxy.america", "about", user_lang) }}</td>
|
<td>{{ l10n("financing.part.proxy.america", "about", user_lang) }}</td>
|
||||||
@@ -64,11 +71,13 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><b class="f-right">{{ l10n("financing.part.cost.yearly.total", "about", user_lang) }}:</b></td>
|
<td><b class="f-right">{{ l10n("financing.part.cost.yearly.total", "about", user_lang) }}:</b></td>
|
||||||
<td>±89,00 €</td>
|
<td>±160,32 €</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<table class="stylish r-s border o-hidden table-p-xs table-h-p-s table-v-center mt-s mx-s">
|
</div>
|
||||||
|
<div>
|
||||||
|
<table class="table-stylish table-p-xs border r-l w-full">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ l10n("financing.part.equipment", "about", user_lang) }}</th>
|
<th>{{ l10n("financing.part.equipment", "about", user_lang) }}</th>
|
||||||
@@ -92,10 +101,13 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p class="mt-xs ml-s t-super-muted t-center">
|
<p class="mt-xs ml-s t-super-muted t-center">
|
||||||
{{ l10n("financing.text.isp", "about", user_lang) }}
|
{{ l10n("financing.text.isp", "about", user_lang) }}
|
||||||
</p>
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extra_scripts %}
|
{% block extra_scripts %}
|
||||||
|
|||||||
@@ -8,24 +8,23 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block main_content %}
|
{% block main_content %}
|
||||||
{{ render_h1(l10n("email.title", "contact", user_lang), "fad fa-mail-bulk", "herwin.bozet@gmail.com") }}
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h1(l10n("email.title", "contact", user_lang), "fad fa-mail-bulk", "herwin.bozet@nibblepoker.lu") }}
|
||||||
<p class="m-s">
|
<p class="m-s">
|
||||||
<a href="mailto:Herwin Bozet<herwin.bozet@nibblepoker.lu>?subject=Contact%20via%20NibblePoker.lu" class="a-hidden button-link">
|
<a href="mailto:Herwin Bozet<herwin.bozet@nibblepoker.lu>?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.nibblepoker", "contact", user_lang) }}</button>
|
<button class="p-xs r-s border b-light success"><i class="fad fa-external-link-alt mr-xs"></i>{{ l10n("email.compose.nibblepoker", "contact", user_lang) }}</button>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
<!--<p class="m-s">
|
</section>
|
||||||
<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") }}
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h1(l10n("twitter.title", "contact", user_lang), "fab fa-x-twitter", "@NibblePoker") }}
|
||||||
<p class="m-s">
|
<p class="m-s">
|
||||||
<a href="https://twitter.com/messages/compose?recipient_id=937370791334895616" class="a-hidden button-link">
|
<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>
|
<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>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block main_content %}
|
{% block main_content %}
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("social.title", "links", user_lang )) }}
|
{{ render_h1(l10n("social.title", "links", user_lang )) }}
|
||||||
|
|
||||||
<p class="mt-s ml-s t-w-600 t-size-12">
|
<p class="mt-s ml-s t-w-600 t-size-12">
|
||||||
@@ -31,8 +32,10 @@
|
|||||||
<a href="https://github.com/NibblePoker">{{ l10n("github_pro.title", "links", user_lang ) }}</a>
|
<a href="https://github.com/NibblePoker">{{ l10n("github_pro.title", "links", user_lang ) }}</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="mt-xxs ml-l">{{ l10n("github_pro.text.1", "links", user_lang ) }}</p>
|
<p class="mt-xxs ml-l">{{ l10n("github_pro.text.1", "links", user_lang ) }}</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("work.title", "links", user_lang )) }}
|
{{ render_h1(l10n("work.title", "links", user_lang )) }}
|
||||||
|
|
||||||
<p class="mt-s ml-s t-w-600 t-size-12">
|
<p class="mt-s ml-s t-w-600 t-size-12">
|
||||||
@@ -40,8 +43,10 @@
|
|||||||
<a href="https://www.linkedin.com/in/herwin-bozet/">{{ l10n("linkedin.title", "links", user_lang ) }}</a>
|
<a href="https://www.linkedin.com/in/herwin-bozet/">{{ l10n("linkedin.title", "links", user_lang ) }}</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="mt-xxs ml-l">{{ l10n("linkedin.text.1", "links", user_lang ) }}</p>
|
<p class="mt-xxs ml-l">{{ l10n("linkedin.text.1", "links", user_lang ) }}</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("misc.title", "links", user_lang )) }}
|
{{ render_h1(l10n("misc.title", "links", user_lang )) }}
|
||||||
|
|
||||||
<p class="mt-s ml-s t-w-600 t-size-12">
|
<p class="mt-s ml-s t-w-600 t-size-12">
|
||||||
@@ -61,6 +66,7 @@
|
|||||||
<a href="https://git.nibblepoker.lu/">{{ l10n("gitea.title", "links", user_lang ) }}</a>
|
<a href="https://git.nibblepoker.lu/">{{ l10n("gitea.title", "links", user_lang ) }}</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="mt-xxs ml-l">{{ l10n("gitea.text.1", "links", user_lang ) }}</p>
|
<p class="mt-xxs ml-l">{{ l10n("gitea.text.1", "links", user_lang ) }}</p>
|
||||||
|
</section>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extra_scripts %}
|
{% block extra_scripts %}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
{% block main_content %}
|
{% block main_content %}
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("introduction.title", "privacy", user_lang), "fad fa-info") }}
|
{{ render_h1(l10n("introduction.title", "privacy", user_lang), "fad fa-info") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("introduction.text.1", "privacy", user_lang)) }}
|
{{ render_paragraph(l10n("introduction.text.1", "privacy", user_lang)) }}
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("v2.data.title", "privacy", user_lang), "fad fa-database") }}
|
{{ render_h1(l10n("v2.data.title", "privacy", user_lang), "fad fa-database") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("v2.data.intro.1", "privacy", user_lang) +
|
{{ render_paragraph(l10n("v2.data.intro.1", "privacy", user_lang) +
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("v2.data_dns.title", "privacy", user_lang), "fad fa-database") }}
|
{{ render_h1(l10n("v2.data_dns.title", "privacy", user_lang), "fad fa-database") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("v2.data_dns.intro.1", "privacy", user_lang) +
|
{{ render_paragraph(l10n("v2.data_dns.intro.1", "privacy", user_lang) +
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("v2.third.title", "privacy", user_lang), "fad fa-handshake") }}
|
{{ render_h1(l10n("v2.third.title", "privacy", user_lang), "fad fa-handshake") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("v3.third.intro.1", "privacy", user_lang)) }}
|
{{ render_paragraph(l10n("v3.third.intro.1", "privacy", user_lang)) }}
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("v2.cookies.title", "privacy", user_lang), "fad fa-cookie-bite") }}
|
{{ render_h1(l10n("v2.cookies.title", "privacy", user_lang), "fad fa-cookie-bite") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("v2.cookies.intro.1", "privacy", user_lang)) }}
|
{{ render_paragraph(l10n("v2.cookies.intro.1", "privacy", user_lang)) }}
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("v2.update.title", "privacy", user_lang), "fad fa-sync-alt") }}
|
{{ render_h1(l10n("v2.update.title", "privacy", user_lang), "fad fa-sync-alt") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("v2.update.intro.1", "privacy", user_lang)) }}
|
{{ render_paragraph(l10n("v2.update.intro.1", "privacy", user_lang)) }}
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("contact.title", "privacy", user_lang), "fad fa-mailbox") }}
|
{{ render_h1(l10n("contact.title", "privacy", user_lang), "fad fa-mailbox") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("contact.text.1", "privacy", user_lang) +
|
{{ render_paragraph(l10n("contact.text.1", "privacy", user_lang) +
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("complaint.title", "privacy", user_lang), "fad fa-gavel") }}
|
{{ render_h1(l10n("complaint.title", "privacy", user_lang), "fad fa-gavel") }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("complaint.text.1", "privacy", user_lang)) }}
|
{{ render_paragraph(l10n("complaint.text.1", "privacy", user_lang)) }}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
{% for project_data in get_sorted_projects_by_tags(requested_tags) %}
|
{% for project_data in get_sorted_projects_by_tags(requested_tags) %}
|
||||||
|
|
||||||
<hr class="subtle">
|
<hr class="subtle hide-if-first">
|
||||||
|
|
||||||
<!--<div class="p-s border r-m">-->
|
<!--<div class="p-s border r-m">-->
|
||||||
<div class="p-xs r-m">
|
<div class="p-xs r-m">
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block main_content %}
|
{% block main_content %}
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h1(l10n("intro.title", "home", user_lang, ["NibblePoker." + domain_tld] )) }}
|
{{ render_h1(l10n("intro.title", "home", user_lang, ["NibblePoker." + domain_tld] )) }}
|
||||||
|
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("updates.title", "home", user_lang)) }}
|
{{ render_h2(l10n("updates.title", "home", user_lang)) }}
|
||||||
|
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
|
|||||||
@@ -9,13 +9,34 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content_filters %}
|
{% block content_filters %}
|
||||||
[Tools filters here !]
|
<details class="border bkgd-dark r-m mb-s">
|
||||||
|
<summary class="p-xs t-noselect">{{ l10n("filters.summary", "content", user_lang) }}</summary>
|
||||||
|
<div class="p-xs bt bkgd-grey rb-m">
|
||||||
|
|
||||||
|
{% for linked_tag in get_tools_linked_tags(requested_tags) %}
|
||||||
|
<span class="mr-s t-size-10">
|
||||||
|
<a href="{{ l10n_url_abs('/tools/?tags=' + linked_tag, raw_lang) }}">#{{ linked_tag }}</a>
|
||||||
|
(+)
|
||||||
|
</span>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<hr class="subtle hide-if-last hide-if-first">
|
||||||
|
|
||||||
|
{% for unlinked_tag in get_tools_unlinked_tags(requested_tags) %}
|
||||||
|
<span class="mr-s">
|
||||||
|
<a href="{{ l10n_url_abs('/tools/?tags=' + unlinked_tag, raw_lang) }}">#{{ unlinked_tag }}</a>
|
||||||
|
(+)
|
||||||
|
</span>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content_listing %}
|
{% block content_listing %}
|
||||||
|
|
||||||
{% for tool_data in get_sorted_tools_by_tags(requested_tags) %}
|
{% for tool_data in get_sorted_tools_by_tags(requested_tags) %}
|
||||||
<hr class="subtle">
|
<hr class="subtle hide-if-first">
|
||||||
|
|
||||||
<!--<div class="p-s border r-m">-->
|
<!--<div class="p-s border r-m">-->
|
||||||
<div class="p-xs r-m">
|
<div class="p-xs r-m">
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
l10n(project_data.metadata.general.title_key, project_id, user_lang)
|
l10n(project_data.metadata.general.title_key, project_id, user_lang)
|
||||||
) }}
|
) }}
|
||||||
|
|
||||||
<div class="px-xxs">
|
<div class="px-xxs mt-m">
|
||||||
{% block project_content %}{% endblock %}
|
{% block project_content %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
{% extends "projects/_project.jinja" %}
|
{% extends "projects/_project.jinja" %}
|
||||||
|
|
||||||
{% block project_content %}
|
{% block project_content %}
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("intro.p1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("intro.p1", project_id, user_lang)) }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("features.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("features.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("limitations.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("limitations.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
@@ -50,14 +50,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("doc.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("doc.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("doc.p1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("doc.p1", project_id, user_lang)) }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("usage.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("usage.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("usage.p1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("usage.p1", project_id, user_lang)) }}
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("demo.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("demo.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("demo.p1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("demo.p1", project_id, user_lang)) }}
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("downloads.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("downloads.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
<table class="table-stylish table-p-xs table-v-center border r-l">
|
<table class="table-stylish table-p-xs table-v-center border r-l">
|
||||||
@@ -207,7 +207,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("license.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("license.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(
|
{{ render_paragraph(
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{% extends "projects/_project.jinja" %}
|
{% extends "projects/_project.jinja" %}
|
||||||
|
|
||||||
{% block project_content %}
|
{% block project_content %}
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("intro.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("intro.1", project_id, user_lang)) }}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("preamble.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("preamble.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("preamble.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("preamble.1", project_id, user_lang)) }}
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("setup.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("setup.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("setup.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("setup.1", project_id, user_lang)) }}
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h3(l10n("setup.camera.title", project_id, user_lang)) }}
|
{{ render_h3(l10n("setup.camera.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("setup.camera.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("setup.camera.1", project_id, user_lang)) }}
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h3(l10n("setup.cleaner.title", project_id, user_lang)) }}
|
{{ render_h3(l10n("setup.cleaner.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("setup.cleaner.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("setup.cleaner.1", project_id, user_lang)) }}
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h3(l10n("setup.web.title", project_id, user_lang)) }}
|
{{ render_h3(l10n("setup.web.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("setup.web.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("setup.web.1", project_id, user_lang)) }}
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("startup.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("startup.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("startup.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("startup.1", project_id, user_lang)) }}
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("screenshots.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("screenshots.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_splide([
|
{{ render_splide([
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("statistics.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("statistics.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
@@ -162,14 +162,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("license.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("license.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("license.1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("license.1", project_id, user_lang)) }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{% extends "projects/_project.jinja" %}
|
{% extends "projects/_project.jinja" %}
|
||||||
|
|
||||||
{% block project_content %}
|
{% block project_content %}
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("intro.p1", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("intro.p1", project_id, user_lang)) }}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("requirements.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("requirements.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("improvements.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("improvements.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("screenshots.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("screenshots.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_splide([
|
{{ render_splide([
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("usage.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("usage.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{
|
{{
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("formatting.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("formatting.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{
|
{{
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("packages.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("packages.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_paragraph(l10n("packages.single.title", project_id, user_lang)) }}
|
{{ render_paragraph(l10n("packages.single.title", project_id, user_lang)) }}
|
||||||
@@ -117,10 +117,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("version.current", "commons", user_lang)) }}
|
{{ render_h2(l10n("version.current", "commons", user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
<table class="table-stylish table-p-s border r-l">
|
<table class="table-stylish table-p-xs table-v-center border r-l">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ l10n("cpu.architecture", "commons", user_lang) }}</th>
|
<th>{{ l10n("cpu.architecture", "commons", user_lang) }}</th>
|
||||||
@@ -132,53 +132,134 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("cpu.any", "commons", user_lang) }}</td>
|
<td>{{ l10n("cpu.any", "commons", user_lang) }}</td>
|
||||||
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_AnyCPU.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 120.36 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2">{{ l10n("cpu.x64", "commons", user_lang) }}</td>
|
<td rowspan="2">{{ l10n("cpu.x64", "commons", user_lang) }}</td>
|
||||||
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_x64_Single.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 138.9 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_x64_SelfContained.zip" class="a-hidden mr-s">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 7.35 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_x64.msi" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>MSI - 10.51 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None, "btn-primary")
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2">{{ l10n("cpu.x86", "commons", user_lang) }}</td>
|
<td rowspan="2">{{ l10n("cpu.x86", "commons", user_lang) }}</td>
|
||||||
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_x86_Single.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 123.56 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_x86_SelfContained.zip" class="a-hidden mr-s">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 6.64 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_x86.msi" class="a-hidden mr-s">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>MSI - 9.79 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None, "btn-primary")
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2">{{ l10n("cpu.arm64", "commons", user_lang) }}</td>
|
<td rowspan="2">{{ l10n("cpu.arm64", "commons", user_lang) }}</td>
|
||||||
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_arm64_Single.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 130.34 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_arm64_SelfContained.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 7.04 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
|
<!--<tr>
|
||||||
<td rowspan="2">{{ l10n("cpu.arm32", "commons", user_lang) }}</td>
|
<td rowspan="2">{{ l10n("cpu.arm32", "commons", user_lang) }}</td>
|
||||||
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
<td>{{ l10n("requirements.text.dotnet", project_id, user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_arm_Single.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 127.57 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
<td>{{ l10n("none.fs", "commons", user_lang) }}</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
</tr>
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/ListComPort_v3.0.0_arm_SelfContained.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 6.68 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>-->
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("source.code", "commons", user_lang)) }}
|
{{ render_h2(l10n("source.code", "commons", user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
<table class="table-stylish table-p-s border r-l">
|
<table class="table-stylish table-p-xs table-v-center border r-l">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ l10n("version", "commons", user_lang) }}</th>
|
<th>{{ l10n("version", "commons", user_lang) }}</th>
|
||||||
@@ -188,14 +269,27 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>v3.0.0</td>
|
<td>v3.0.0</td>
|
||||||
<td>...</td>
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/DotNet-ListComPort-3.0.0.tar.gz" class="a-hidden mr-s">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>TAR.GZ - 4.22 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/DotNet-ListComPort/3.0.0/DotNet-ListComPort-3.0.0.zip" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>ZIP - 4.23 MiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section class="mt-l mt-0-if-first">
|
||||||
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
||||||
<div class="content-spacer">
|
<div class="content-spacer">
|
||||||
{{ render_list_ul([
|
{{ render_list_ul([
|
||||||
|
|||||||
214
templates/projects/pearch.jinja
Normal file
214
templates/projects/pearch.jinja
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
{% extends "projects/_project.jinja" %}
|
||||||
|
|
||||||
|
{% block project_content %}
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h2(l10n("intro.title", project_id, user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_paragraph(l10n("intro.text.p1.l1", project_id, user_lang)) }}
|
||||||
|
{{ render_paragraph(l10n("intro.text.p2.l1", project_id, user_lang)) }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h2(l10n("usage.title", project_id, user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_paragraph(
|
||||||
|
l10n("usage.text.p1.l1", project_id, user_lang) +
|
||||||
|
"<br>" +
|
||||||
|
l10n("usage.text.p1.l2", project_id, user_lang)
|
||||||
|
)}}
|
||||||
|
|
||||||
|
{{ render_code_block([
|
||||||
|
"PEArch.exe [/?] [/E|/AsError] [/H|/AsHex] [/F|/FullText] <File>",
|
||||||
|
"",
|
||||||
|
"Options:",
|
||||||
|
" /? Prints this help text, and some additional details.",
|
||||||
|
" /E, /AsError Gives out the result as an error code.",
|
||||||
|
" /H, /AsHex Prints the architecture as a hex number.",
|
||||||
|
" /F, /FullText Prints a longer description of the architecture.",
|
||||||
|
]) }}
|
||||||
|
|
||||||
|
<details class="border bkgd-dark r-m mt-s">
|
||||||
|
<summary class="p-xs">{{ l10n("usage.details.title", project_id, user_lang) }}</summary>
|
||||||
|
<div class="bt ox-auto">
|
||||||
|
<table class="table-stylish table-p-xs table-v-center table-no-wrap w-full rb-m">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="t-left">{{ l10n("usage.details.thead.code", project_id, user_lang) }}</th>
|
||||||
|
<th class="t-left">{{ l10n("usage.details.thead.hex", project_id, user_lang) }}</th>
|
||||||
|
<th class="t-left">{{ l10n("usage.details.thead.dec", project_id, user_lang) }}</th>
|
||||||
|
<th class="t-left">{{ l10n("usage.details.thead.description", project_id, user_lang) }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>{{ l10n("cpu.code.unknown", "commons", user_lang) }}</td><td><span class="code">0x0</span></td><td><span class="code">0</span></td><td>{{ l10n("cpu.human.unknown", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.alpha", "commons", user_lang) }}</td><td><span class="code">0x184</span></td><td><span class="code">388</span></td><td>{{ l10n("cpu.human.alpha", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.alpha64", "commons", user_lang) }}</td><td><span class="code">0x284</span></td><td><span class="code">644</span></td><td>{{ l10n("cpu.human.alpha64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.am33", "commons", user_lang) }}</td><td><span class="code">0x1d3</span></td><td><span class="code">467</span></td><td>{{ l10n("cpu.human.am33", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.amd64", "commons", user_lang) }}</td><td><span class="code">0x8664</span></td><td><span class="code">34404</span></td><td>{{ l10n("cpu.human.amd64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.arm", "commons", user_lang) }}</td><td><span class="code">0x1c0</span></td><td><span class="code">448</span></td><td>{{ l10n("cpu.human.arm", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.arm64", "commons", user_lang) }}</td><td><span class="code">0xaa64</span></td><td><span class="code">43620</span></td><td>{{ l10n("cpu.human.arm64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.arm64ec", "commons", user_lang) }}</td><td><span class="code">0xA641</span></td><td><span class="code">42561</span></td><td>{{ l10n("cpu.human.arm64ec", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.arm64x", "commons", user_lang) }}</td><td><span class="code">0xA64E</span></td><td><span class="code">42574</span></td><td>{{ l10n("cpu.human.arm64x", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.armnt", "commons", user_lang) }}</td><td><span class="code">0x1c4</span></td><td><span class="code">452</span></td><td>{{ l10n("cpu.human.armnt", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.axp64", "commons", user_lang) }}</td><td><span class="code">0x284</span></td><td><span class="code">644</span></td><td>{{ l10n("cpu.human.axp64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.ebc", "commons", user_lang) }}</td><td><span class="code">0xebc</span></td><td><span class="code">3772</span></td><td>{{ l10n("cpu.human.ebc", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.i386", "commons", user_lang) }}</td><td><span class="code">0x14c</span></td><td><span class="code">332</span></td><td>{{ l10n("cpu.human.i386", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.ia64", "commons", user_lang) }}</td><td><span class="code">0x200</span></td><td><span class="code">512</span></td><td>{{ l10n("cpu.human.ia64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.loongarch32", "commons", user_lang) }}</td><td><span class="code">0x6232</span></td><td><span class="code">25138</span></td><td>{{ l10n("cpu.human.loongarch32", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.loongarch64", "commons", user_lang) }}</td><td><span class="code">0x6264</span></td><td><span class="code">25188</span></td><td>{{ l10n("cpu.human.loongarch64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.m32r", "commons", user_lang) }}</td><td><span class="code">0x9041</span></td><td><span class="code">36929</span></td><td>{{ l10n("cpu.human.m32r", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.mips16", "commons", user_lang) }}</td><td><span class="code">0x266</span></td><td><span class="code">614</span></td><td>{{ l10n("cpu.human.mips16", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.mipsfpu", "commons", user_lang) }}</td><td><span class="code">0x366</span></td><td><span class="code">870</span></td><td>{{ l10n("cpu.human.mipsfpu", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.mipsfpu16", "commons", user_lang) }}</td><td><span class="code">0x466</span></td><td><span class="code">1126</span></td><td>{{ l10n("cpu.human.mipsfpu16", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.powerpc", "commons", user_lang) }}</td><td><span class="code">0x1f0</span></td><td><span class="code">496</span></td><td>{{ l10n("cpu.human.powerpc", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.powerpcfp", "commons", user_lang) }}</td><td><span class="code">0x1f1</span></td><td><span class="code">497</span></td><td>{{ l10n("cpu.human.powerpcfp", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.r3000be", "commons", user_lang) }}</td><td><span class="code">0x160</span></td><td><span class="code">352</span></td><td>{{ l10n("cpu.human.r3000be", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.r3000", "commons", user_lang) }}</td><td><span class="code">0x162</span></td><td><span class="code">354</span></td><td>{{ l10n("cpu.human.r3000", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.r4000", "commons", user_lang) }}</td><td><span class="code">0x166</span></td><td><span class="code">358</span></td><td>{{ l10n("cpu.human.r4000", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.r10000", "commons", user_lang) }}</td><td><span class="code">0x168</span></td><td><span class="code">360</span></td><td>{{ l10n("cpu.human.r10000", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.riscv32", "commons", user_lang) }}</td><td><span class="code">0x5032</span></td><td><span class="code">20530</span></td><td>{{ l10n("cpu.human.riscv32", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.riscv64", "commons", user_lang) }}</td><td><span class="code">0x5064</span></td><td><span class="code">20580</span></td><td>{{ l10n("cpu.human.riscv64", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.riscv128", "commons", user_lang) }}</td><td><span class="code">0x5128</span></td><td><span class="code">20776</span></td><td>{{ l10n("cpu.human.riscv128", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.sh3", "commons", user_lang) }}</td><td><span class="code">0x1a2</span></td><td><span class="code">418</span></td><td>{{ l10n("cpu.human.sh3", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.sh3dsp", "commons", user_lang) }}</td><td><span class="code">0x1a3</span></td><td><span class="code">419</span></td><td>{{ l10n("cpu.human.sh3dsp", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.sh4", "commons", user_lang) }}</td><td><span class="code">0x1a6</span></td><td><span class="code">422</span></td><td>{{ l10n("cpu.human.sh4", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.sh5", "commons", user_lang) }}</td><td><span class="code">0x1a8</span></td><td><span class="code">424</span></td><td>{{ l10n("cpu.human.sh5", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.thumb", "commons", user_lang) }}</td><td><span class="code">0x1c2</span></td><td><span class="code">450</span></td><td>{{ l10n("cpu.human.thumb", "commons", user_lang) }}</td></tr>
|
||||||
|
<tr><td>{{ l10n("cpu.code.wcemipsv2", "commons", user_lang) }}</td><td><span class="code">0x169</span></td><td><span class="code">361</span></td><td>{{ l10n("cpu.human.wcemipsv2", "commons", user_lang) }}</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h2(l10n("output.title", project_id, user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_paragraph("<b>" + l10n("output.default.title", project_id, user_lang) + "</b>")}}
|
||||||
|
|
||||||
|
<div class="ml-s">
|
||||||
|
{{ render_code_block([
|
||||||
|
"Command: pearch \"C:\\Windows\\explorer.exe\"",
|
||||||
|
"> STDOUT: AMD64",
|
||||||
|
"> STDERR:",
|
||||||
|
"> ERRORLEVEL: 0",
|
||||||
|
], "bash") }}
|
||||||
|
{{ render_code_block([
|
||||||
|
"Command: pearch \"C:\\Windows\\non-existant-file.exe\"",
|
||||||
|
"> STDOUT:",
|
||||||
|
"> STDERR: Cannot open file !",
|
||||||
|
"> ERRORLEVEL: 12",
|
||||||
|
], "bash") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_paragraph("<b>" + l10n("output.options.title", project_id, user_lang) + "</b>")}}
|
||||||
|
|
||||||
|
<div class="ml-s">
|
||||||
|
{{ render_code_block([
|
||||||
|
"Command: pearch /AsHex \"C:\\Windows\\explorer.exe\"",
|
||||||
|
"> STDOUT: 8664",
|
||||||
|
"> STDERR:",
|
||||||
|
"> ERRORLEVEL: 0",
|
||||||
|
], "bash") }}
|
||||||
|
{{ render_code_block([
|
||||||
|
"Command: pearch /AsError \"C:\\Windows\\explorer.exe\"",
|
||||||
|
"> STDOUT:",
|
||||||
|
"> STDERR:",
|
||||||
|
"> ERRORLEVEL: 34404",
|
||||||
|
], "bash") }}
|
||||||
|
{{ render_code_block([
|
||||||
|
"Command: pearch /AsError /AsHex \"C:\\Windows\\explorer.exe\"",
|
||||||
|
"> STDOUT: 8664",
|
||||||
|
"> STDERR:",
|
||||||
|
"> ERRORLEVEL: 34404",
|
||||||
|
], "bash") }}
|
||||||
|
{{ render_code_block([
|
||||||
|
"Command: pearch /AsError /AsHex \"C:\\Windows\\non-existant-file.exe\"",
|
||||||
|
"> STDOUT:",
|
||||||
|
"> STDERR: Cannot open file !",
|
||||||
|
"> ERRORLEVEL: 0",
|
||||||
|
], "bash") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h2(l10n("downloads.title", project_id, user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
|
<table class="table-stylish table-p-xs table-v-center border r-l">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{ l10n("cpu.architecture", "commons", user_lang) }}</th>
|
||||||
|
<th>{{ l10n("requirements", "commons", user_lang) }}</th>
|
||||||
|
<th>{{ l10n("download.multiple", "commons", user_lang) }}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>{{ l10n("cpu.x64", "commons", user_lang) }}</td>
|
||||||
|
<td rowspan="2">{{ l10n("windows.7", "commons", user_lang) }}</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/PEArch/1.1.0/x64-msvcrt/pearch-x64-msvcrt.7z" class="a-hidden mr-s">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>"+
|
||||||
|
"7Zip - 14.49 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None, "btn-primary")
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/PEArch/1.1.0/x64-msvcrt/pearch.exe" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>"+
|
||||||
|
"Exe - 43.5 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None, "btn-primary")
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{{ l10n("cpu.x86", "commons", user_lang) }}</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/PEArch/1.1.0/x86-msvcrt/pearch-x86-msvcrt.7z" class="a-hidden mr-s">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>"+
|
||||||
|
"7Zip - 10.36 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
<a href="https://files.nibblepoker.lu/downloads/PEArch/1.1.0/x86-msvcrt/pearch.exe" class="a-hidden">
|
||||||
|
{{ render_button(
|
||||||
|
"<span class=\"text-monospace\"><i class=\"fad fa-file-archive mr-xs\"></i>"+
|
||||||
|
"Exe - 31 KiB<i class=\"fas fa-download ml-xs\"></i>",
|
||||||
|
False, None)
|
||||||
|
}}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h2(l10n("license.title", project_id, user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_paragraph(l10n("license.text", project_id, user_lang)) }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-l mt-0-if-first">
|
||||||
|
{{ render_h2(l10n("links.title", project_id, user_lang)) }}
|
||||||
|
<div class="content-spacer">
|
||||||
|
{{ render_list_ul([
|
||||||
|
"<a href=\"https://github.com/aziascreations/PEArch\">" +
|
||||||
|
l10n("github", "commons", user_lang) + "</a>",
|
||||||
|
]) }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
User-agent: *
|
User-agent: *
|
||||||
Allow: /
|
Allow: /
|
||||||
Sitemap: https://nibblepoker.{{ domain_tld }}/sitemap.txt
|
Sitemap: https://nibblepoker.{{ domain_tld }}/sitemap.xml
|
||||||
|
|||||||
31
update.sh
Normal file
31
update.sh
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
EXCLUDE=("release.tar" "docker-compose.yml" "update.sh")
|
||||||
|
|
||||||
|
for item in * .*; do
|
||||||
|
# Skip current and parent directory entries
|
||||||
|
[[ "$item" == "." || "$item" == ".." ]] && continue
|
||||||
|
|
||||||
|
delete=true
|
||||||
|
|
||||||
|
for pattern in "${EXCLUDE[@]}"; do
|
||||||
|
if [[ "$item" == $pattern ]]; then
|
||||||
|
delete=false
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$delete" = true ]; then
|
||||||
|
echo "Deleting '$item'"
|
||||||
|
rm -rf "$item"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
tar -xvf release.tar
|
||||||
|
|
||||||
|
rm data/tools/ico-maker.yml
|
||||||
|
rm data/tools/png-analyser.yml
|
||||||
|
|
||||||
|
docker-compose up --build --force-recreate -d
|
||||||
@@ -54,6 +54,22 @@ def get_tools() -> LockedDict[str, ContentTool]:
|
|||||||
return __CONTENT.tools
|
return __CONTENT.tools
|
||||||
|
|
||||||
|
|
||||||
|
def get_tools_tags() -> list[str]:
|
||||||
|
tool: ContentTool
|
||||||
|
|
||||||
|
return sorted(
|
||||||
|
set(
|
||||||
|
[tag for tool in __CONTENT.tools.values() for tag in tool.metadata.general.tags]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
#returned_list: list[str] = list()
|
||||||
|
#for tool in __CONTENT.tools.values():
|
||||||
|
# tool: ContentTool
|
||||||
|
# returned_list = returned_list + tool.metadata.general.tags
|
||||||
|
#return list(set(returned_list))
|
||||||
|
|
||||||
|
|
||||||
def get_sorted_tools_by_tags(tags: Optional[list[str]]) -> list[ContentProject]:
|
def get_sorted_tools_by_tags(tags: Optional[list[str]]) -> list[ContentProject]:
|
||||||
if tags is None:
|
if tags is None:
|
||||||
return sorted(__CONTENT.tools.values(), key=lambda x: x.metadata.index.priority, reverse=True)
|
return sorted(__CONTENT.tools.values(), key=lambda x: x.metadata.index.priority, reverse=True)
|
||||||
@@ -67,6 +83,37 @@ def get_sorted_tools_by_tags(tags: Optional[list[str]]) -> list[ContentProject]:
|
|||||||
return sorted(returned_list, key=lambda x: x.metadata.index.priority, reverse=True)
|
return sorted(returned_list, key=lambda x: x.metadata.index.priority, reverse=True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_tools_unlinked_tags(tags: Optional[list[str]]) -> list[str]:
|
||||||
|
"""Returns a list of tags which are not used with any tools that has one or more of the given tags."""
|
||||||
|
# TODO: cache the result !!!
|
||||||
|
|
||||||
|
all_tags = get_tools_tags()
|
||||||
|
linked_tags = get_tools_linked_tags(tags)
|
||||||
|
|
||||||
|
if tags is None:
|
||||||
|
return [tag for tag in all_tags if tag not in linked_tags]
|
||||||
|
else:
|
||||||
|
return [tag for tag in all_tags if (tag not in linked_tags and tag not in tags)]
|
||||||
|
|
||||||
|
|
||||||
|
def get_tools_linked_tags(tags: Optional[list[str]]) -> list[str]:
|
||||||
|
"""Returns a list of tags which are used in any tools that has one or more of the given tags."""
|
||||||
|
# TODO: cache the result !!!
|
||||||
|
|
||||||
|
returned_list = list()
|
||||||
|
|
||||||
|
if tags is not None:
|
||||||
|
relevant_tools = get_sorted_tools_by_tags(tags)
|
||||||
|
|
||||||
|
for relevant_tool in relevant_tools:
|
||||||
|
returned_list = returned_list + relevant_tool.metadata.general.tags
|
||||||
|
|
||||||
|
returned_list = set(returned_list)
|
||||||
|
returned_list = [tag for tag in returned_list if tag not in tags]
|
||||||
|
|
||||||
|
return returned_list
|
||||||
|
|
||||||
|
|
||||||
def sanitize_input_tags(input_tags: str) -> list[str]:
|
def sanitize_input_tags(input_tags: str) -> list[str]:
|
||||||
tags: list[str] = input_tags.split(";")
|
tags: list[str] = input_tags.split(";")
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
|
|||||||
@@ -1,72 +1,10 @@
|
|||||||
import copy
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from locked_dict.locked_dict import LockedDict
|
def flatten_dict(d, parent_key='', separator='.'):
|
||||||
|
items = []
|
||||||
|
for key, value in d.items():
|
||||||
class Localizer:
|
new_key = f"{parent_key}{separator}{key}" if parent_key else str(key)
|
||||||
_langs_data: LockedDict[LockedDict[str, str]]
|
if isinstance(value, dict):
|
||||||
_default_lang: str
|
items.extend(flatten_dict(value, new_key, separator).items())
|
||||||
_allowed_langs: list[str]
|
else:
|
||||||
|
items.append((new_key, value))
|
||||||
def __init__(self, default_lang: str, allowed_langs: Optional[list[str]]):
|
return dict(items)
|
||||||
self._langs_data = LockedDict()
|
|
||||||
self._default_lang = default_lang
|
|
||||||
|
|
||||||
self._allowed_langs = allowed_langs
|
|
||||||
if self._allowed_langs is None:
|
|
||||||
self._allowed_langs = list()
|
|
||||||
self._allowed_langs.append(self._default_lang)
|
|
||||||
|
|
||||||
def add_lang(self, lang: str):
|
|
||||||
if lang not in self._langs_data.keys():
|
|
||||||
self._langs_data[lang] = LockedDict()
|
|
||||||
|
|
||||||
def add_domain(self, lang: str, domain: str, domain_data: Optional[dict[str, str]], strip_prefix: bool = False):
|
|
||||||
if domain not in self._langs_data[lang].keys():
|
|
||||||
self._langs_data[lang][domain] = LockedDict()
|
|
||||||
|
|
||||||
if strip_prefix:
|
|
||||||
new_domain_data = dict()
|
|
||||||
for key, value in domain_data.items():
|
|
||||||
if key.startswith(f"{domain}."):
|
|
||||||
new_domain_data[key[len(f"{domain}."):]] = value
|
|
||||||
domain_data = new_domain_data
|
|
||||||
|
|
||||||
self._langs_data[lang][domain].update(domain_data)
|
|
||||||
|
|
||||||
def _localize_internal(self, lang: str, domain: str, key: str, args: list[str] = None) -> Optional[str]:
|
|
||||||
if lang not in self._allowed_langs:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if lang not in self._langs_data.keys():
|
|
||||||
return None
|
|
||||||
|
|
||||||
lang_data = self._langs_data[lang]
|
|
||||||
if domain not in lang_data.keys():
|
|
||||||
return None
|
|
||||||
|
|
||||||
domain_data = lang_data[domain]
|
|
||||||
if key not in domain_data.keys():
|
|
||||||
return None
|
|
||||||
|
|
||||||
localized_text = domain_data[key]
|
|
||||||
if args is not None:
|
|
||||||
for arg_index, arg_value in enumerate(args):
|
|
||||||
localized_text = localized_text.replace(f"%{arg_index}", arg_value)
|
|
||||||
|
|
||||||
return localized_text
|
|
||||||
|
|
||||||
def localize(self, lang: str, domain: str, key: str, args: list[str] = None) -> str:
|
|
||||||
localized_string = None
|
|
||||||
|
|
||||||
if localized_string is None:
|
|
||||||
localized_string = self._localize_internal(lang, domain, key, args)
|
|
||||||
|
|
||||||
if localized_string is None and lang != self._default_lang:
|
|
||||||
localized_string = self._localize_internal(self._default_lang, domain, key, args)
|
|
||||||
|
|
||||||
if localized_string is None:
|
|
||||||
return domain + "." + key
|
|
||||||
|
|
||||||
return localized_string
|
|
||||||
|
|||||||
76
website/l10n/localizer.py
Normal file
76
website/l10n/localizer.py
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from locked_dict.locked_dict import LockedDict
|
||||||
|
|
||||||
|
from website.l10n import flatten_dict
|
||||||
|
|
||||||
|
|
||||||
|
class Localizer:
|
||||||
|
_langs_data: LockedDict[LockedDict[str, str]]
|
||||||
|
_default_lang: str
|
||||||
|
_allowed_langs: list[str]
|
||||||
|
|
||||||
|
def __init__(self, default_lang: str, allowed_langs: Optional[list[str]]):
|
||||||
|
self._langs_data = LockedDict()
|
||||||
|
self._default_lang = default_lang
|
||||||
|
|
||||||
|
self._allowed_langs = allowed_langs
|
||||||
|
if self._allowed_langs is None:
|
||||||
|
self._allowed_langs = list()
|
||||||
|
self._allowed_langs.append(self._default_lang)
|
||||||
|
|
||||||
|
def add_lang(self, lang: str):
|
||||||
|
if lang not in self._langs_data.keys():
|
||||||
|
self._langs_data[lang] = LockedDict()
|
||||||
|
|
||||||
|
def add_domain(self, lang: str, domain: str, domain_data: Optional[dict[str, str]], strip_prefix: bool = False):
|
||||||
|
if domain not in self._langs_data[lang].keys():
|
||||||
|
self._langs_data[lang][domain] = LockedDict()
|
||||||
|
|
||||||
|
if domain_data is not None:
|
||||||
|
domain_data = flatten_dict(domain_data)
|
||||||
|
|
||||||
|
if strip_prefix:
|
||||||
|
new_domain_data = dict()
|
||||||
|
for key, value in domain_data.items():
|
||||||
|
if key.startswith(f"{domain}."):
|
||||||
|
new_domain_data[key[len(f"{domain}."):]] = value
|
||||||
|
domain_data = new_domain_data
|
||||||
|
|
||||||
|
self._langs_data[lang][domain].update(domain_data)
|
||||||
|
|
||||||
|
def _localize_internal(self, lang: str, domain: str, key: str, args: list[str] = None) -> Optional[str]:
|
||||||
|
if lang not in self._allowed_langs:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if lang not in self._langs_data.keys():
|
||||||
|
return None
|
||||||
|
|
||||||
|
lang_data = self._langs_data[lang]
|
||||||
|
if domain not in lang_data.keys():
|
||||||
|
return None
|
||||||
|
|
||||||
|
domain_data = lang_data[domain]
|
||||||
|
if key not in domain_data.keys():
|
||||||
|
return None
|
||||||
|
|
||||||
|
localized_text = domain_data[key]
|
||||||
|
if args is not None:
|
||||||
|
for arg_index, arg_value in enumerate(args):
|
||||||
|
localized_text = localized_text.replace(f"%{arg_index}", arg_value)
|
||||||
|
|
||||||
|
return localized_text
|
||||||
|
|
||||||
|
def localize(self, lang: str, domain: str, key: str, args: list[str] = None) -> str:
|
||||||
|
localized_string = None
|
||||||
|
|
||||||
|
if localized_string is None:
|
||||||
|
localized_string = self._localize_internal(lang, domain, key, args)
|
||||||
|
|
||||||
|
if localized_string is None and lang != self._default_lang:
|
||||||
|
localized_string = self._localize_internal(self._default_lang, domain, key, args)
|
||||||
|
|
||||||
|
if localized_string is None:
|
||||||
|
return domain + "." + key
|
||||||
|
|
||||||
|
return localized_string
|
||||||
@@ -5,7 +5,7 @@ from typing import Optional
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from . import Localizer
|
from .localizer import Localizer
|
||||||
|
|
||||||
DEFAULT_LANG = "en"
|
DEFAULT_LANG = "en"
|
||||||
ALLOWED_LANGS = ["en", "fr"]
|
ALLOWED_LANGS = ["en", "fr"]
|
||||||
@@ -123,46 +123,3 @@ def l10n_url_switch(url: str, new_lang: Optional[str] = None) -> str:
|
|||||||
url = "/" + new_lang + url
|
url = "/" + new_lang + url
|
||||||
|
|
||||||
return url.replace("//", "/")
|
return url.replace("//", "/")
|
||||||
|
|
||||||
|
|
||||||
# STRINGS = dict()
|
|
||||||
# STRINGS[DEFAULT_LANG] = dict()
|
|
||||||
# STRINGS["_compile_date"] = "1970-01-01T00:00:00.000000+00:00Z"
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# def reload_strings(strings_file: str) -> None:
|
|
||||||
# global STRINGS
|
|
||||||
# STRINGS = dict()
|
|
||||||
# STRINGS[DEFAULT_LANG] = dict()
|
|
||||||
# STRINGS["_compile_date"] = "1970-01-01T00:00:00.000000+00:00Z"
|
|
||||||
# STRINGS = json.loads(open(strings_file, "r").read())
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# def localize_internal(string_key: str, language: str, lang_data: dict, fallback: Optional[str]) -> Optional[str]:
|
|
||||||
# if language not in ALLOWED_LANGS:
|
|
||||||
# return fallback
|
|
||||||
#
|
|
||||||
# if language not in lang_data.keys():
|
|
||||||
# language = DEFAULT_LANG
|
|
||||||
#
|
|
||||||
# localized_string = lang_data[language].get(string_key)
|
|
||||||
# if localized_string is None and language != DEFAULT_LANG:
|
|
||||||
# localized_string = lang_data[DEFAULT_LANG].get(string_key)
|
|
||||||
#
|
|
||||||
# if localized_string is None:
|
|
||||||
# return fallback
|
|
||||||
# return localized_string
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# def localize(strings_key: str, language: str, extra_lang_data: Optional[dict] = None) -> str:
|
|
||||||
# localized_string = None
|
|
||||||
#
|
|
||||||
# if extra_lang_data is not None:
|
|
||||||
# localized_string = localize_internal(strings_key, language, extra_lang_data, None)
|
|
||||||
#
|
|
||||||
# if localized_string is None:
|
|
||||||
# localized_string = localize_internal(strings_key, language, STRINGS, None)
|
|
||||||
#
|
|
||||||
# if localized_string is None:
|
|
||||||
# return f"${strings_key}"
|
|
||||||
# return localized_string
|
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ from flask import render_template
|
|||||||
|
|
||||||
|
|
||||||
def render_file_input(input_id: str, multiple: bool, accept: str = None,
|
def render_file_input(input_id: str, multiple: bool, accept: str = None,
|
||||||
upload_button: bool = False, clear_button: bool = False, user_lang: str = "") -> str:
|
upload_button: bool = False, clear_button: bool = False,
|
||||||
|
user_lang: str = "", text_override: str = "") -> str:
|
||||||
return render_template(
|
return render_template(
|
||||||
"elements/file-input.jinja",
|
"elements/file-input.jinja",
|
||||||
file_input_id=input_id,
|
file_input_id=input_id,
|
||||||
@@ -11,4 +12,5 @@ def render_file_input(input_id: str, multiple: bool, accept: str = None,
|
|||||||
file_upload_button=upload_button,
|
file_upload_button=upload_button,
|
||||||
file_clear_button=clear_button,
|
file_clear_button=clear_button,
|
||||||
user_lang=user_lang,
|
user_lang=user_lang,
|
||||||
|
text_override=text_override,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,28 +1,65 @@
|
|||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
from .l10n.utils import ALLOWED_LANGS
|
from .l10n.utils import ALLOWED_LANGS
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
__SITEMAP_ENTRIES: list[str] = list()
|
|
||||||
|
@dataclass
|
||||||
|
class SitemapEntry:
|
||||||
|
lastmod: str
|
||||||
|
priority: str
|
||||||
|
changefreq: str = "monthly"
|
||||||
|
|
||||||
|
|
||||||
|
__SITEMAP_ENTRIES: dict[str, SitemapEntry] = dict()
|
||||||
|
|
||||||
|
__XML_SITEMAP_CACHE = None
|
||||||
|
|
||||||
|
|
||||||
def reload_sitemap_entries(definition_file: str) -> None:
|
def reload_sitemap_entries(definition_file: str) -> None:
|
||||||
global __SITEMAP_ENTRIES
|
global __SITEMAP_ENTRIES
|
||||||
|
|
||||||
__SITEMAP_ENTRIES = list()
|
__SITEMAP_ENTRIES = dict()
|
||||||
|
|
||||||
with open(definition_file, 'r') as f:
|
with open(definition_file, 'r') as f:
|
||||||
raw_sitemap_entries = yaml.safe_load(f)
|
raw_sitemap_entries: dict = yaml.safe_load(f)["sitemap"]
|
||||||
|
|
||||||
for allowed_lang in [""] + ALLOWED_LANGS:
|
for allowed_lang in [""] + ALLOWED_LANGS:
|
||||||
for sitemap_entry in raw_sitemap_entries:
|
for sitemap_entry_path in raw_sitemap_entries:
|
||||||
__SITEMAP_ENTRIES.append(
|
|
||||||
("/" + str(allowed_lang) + "/" + str(sitemap_entry))
|
entry = SitemapEntry(**raw_sitemap_entries[sitemap_entry_path])
|
||||||
|
if not(allowed_lang == ""):
|
||||||
|
entry.priority = "0.0"
|
||||||
|
|
||||||
|
__SITEMAP_ENTRIES[
|
||||||
|
("/" + str(allowed_lang) + "/" + str(sitemap_entry_path))
|
||||||
.replace("//", "/")
|
.replace("//", "/")
|
||||||
.replace("//", "/")
|
.replace("//", "/")
|
||||||
)
|
] = entry
|
||||||
# __SITEMAP_ENTRIES.append(sitemap_entry)
|
|
||||||
# for allowed_lang in ALLOWED_LANGS:
|
|
||||||
|
|
||||||
|
|
||||||
def get_sitemap_entries() -> list[str]:
|
def get_sitemap_entries() -> list[str]:
|
||||||
return __SITEMAP_ENTRIES
|
return list(__SITEMAP_ENTRIES.keys())
|
||||||
|
|
||||||
|
|
||||||
|
def get_sitemap_xml(domain) -> str:
|
||||||
|
global __XML_SITEMAP_CACHE
|
||||||
|
|
||||||
|
if __XML_SITEMAP_CACHE is None:
|
||||||
|
__XML_SITEMAP_CACHE = (
|
||||||
|
"""<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">""" +
|
||||||
|
"".join([
|
||||||
|
f"""
|
||||||
|
<url>
|
||||||
|
<loc>https://{domain}{k}</loc>
|
||||||
|
<lastmod>{v.lastmod}</lastmod>
|
||||||
|
<priority>{v.priority}</priority>
|
||||||
|
<changefreq>{v.changefreq}</changefreq>
|
||||||
|
</url>"""
|
||||||
|
for k, v in __SITEMAP_ENTRIES.items()
|
||||||
|
]) +
|
||||||
|
"\n</urlset>").replace(" <priority>0.0</priority>\n ", "")
|
||||||
|
|
||||||
|
return __XML_SITEMAP_CACHE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user