Started massive refactoring, Removed halfmoon, Added new personnal common CSS, Site now runs at >5 fps on low-end
Update .gitignore, .htaccess, and 264 more files...
18
.gitignore
vendored
@@ -3,7 +3,13 @@
|
||||
|
||||
# Static resources
|
||||
resources/FontAwesomePro/
|
||||
resources/FontAwesome/
|
||||
resources/HighlightJS/
|
||||
|
||||
resources/NibblePoker/css/*.css
|
||||
resources/NibblePoker/scss/trash
|
||||
resources/NibblePoker/js/*.min.js
|
||||
|
||||
*.exe
|
||||
*.url
|
||||
|
||||
@@ -11,8 +17,12 @@ resources/HighlightJS/
|
||||
*.pdn
|
||||
*.min.json
|
||||
*.lnk
|
||||
*.map
|
||||
*.bak
|
||||
|
||||
# Temporary
|
||||
tmp/
|
||||
resources/Azias/css/*.css
|
||||
resources/Azias/css/*.map
|
||||
resources/Azias/sass/**.css
|
||||
resources/Azias/sass/**.map
|
||||
commons/trash/
|
||||
scrollbar.scss
|
||||
commons/strings/_*/
|
||||
_unsorted/
|
||||
|
47
.htaccess
@@ -9,6 +9,14 @@
|
||||
#RewriteCond %{SERVER_PORT} 80
|
||||
#RewriteRule ^(.*)$ https://nibblepoker.lu/$1 [R,L]
|
||||
|
||||
# Fixing some encoding issues on non-HTML files.
|
||||
# Mostly affects the old privacy policies written in french.
|
||||
AddCharset utf-8 .css .txt .js .md
|
||||
#<Files ~ "\.txt?$">
|
||||
# Header set Content-Type "text/plain; charset=utf-8"
|
||||
#</Files>
|
||||
#AddDefaultCharset utf-8
|
||||
|
||||
# Correcting some default options for security and language/content redirection.
|
||||
# FollowSymlinks is also on since it's required for "mod_rewrite" and the server is jailed.
|
||||
Options -Indexes +FollowSymlinks -ExecCGI
|
||||
@@ -24,32 +32,33 @@ ErrorDocument 404 /404.php
|
||||
# * https://www.a2hosting.com/kb/developer-corner/apache-web-server/turning-off-caching-using-htaccess
|
||||
|
||||
# Default: 12 hours
|
||||
Header set Cache-Control "max-age=43200, public, must-revalidate"
|
||||
|
||||
<FilesMatch "\.(?i:gif|jpe?g|png|ico|svg|woff2|otf)$">
|
||||
##Header set Cache-Control "max-age=43200, public, must-revalidate"
|
||||
##
|
||||
<FilesMatch "\.(?i:gif|jpe?g|png|ico|svg|woff2|ttf|woff|otf)$">
|
||||
# Static files: 1 Week
|
||||
Header set Cache-Control "max-age=604800, public, must-revalidate"
|
||||
</FilesMatch>
|
||||
<FilesMatch "\.(?i:css|js)$">
|
||||
# Semi-static files: 1 Day
|
||||
Header set Cache-Control "max-age=86400, public, must-revalidate"
|
||||
</FilesMatch>
|
||||
##<FilesMatch "\.(?i:css|js)$">
|
||||
## # Semi-static files: 1 Day
|
||||
## Header set Cache-Control "max-age=86400, public, must-revalidate"
|
||||
##</FilesMatch>
|
||||
|
||||
# Disabling some caching rules for debugging
|
||||
#Header set Pragma "no-cache"
|
||||
#Header set Expires 0
|
||||
|
||||
# Setting some headers for security.
|
||||
Header always set X-Detected-Country "NK"
|
||||
Header always set X-Frame-Options "deny"
|
||||
Header always set Content-Security-Policy "default-src 'self' files.nibblepoker.lu; object-src 'none'; child-src 'self'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content"
|
||||
Header always set X-XSS-Protection " 1; mode=block"
|
||||
Header always set Referrer-Policy "no-referrer"
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||
#Header always set Cache-Control "max-age=300, public"
|
||||
Header always set Access-Control-Allow-Origin "*"
|
||||
Header unset X-Powered-By
|
||||
Header always set X-Powered-By "Amiga 1200, Kickstart 3.1"
|
||||
# # # Setting some headers for security.
|
||||
# # #Header always set X-Detected-Country "NK"
|
||||
# # Header always set X-Frame-Options "deny"
|
||||
# # Header always set Content-Security-Policy "default-src 'self' files.nibblepoker.lu; object-src 'none'; child-src 'self'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content"
|
||||
# # Header always set X-XSS-Protection " 1; mode=block"
|
||||
# # Header always set Referrer-Policy "no-referrer"
|
||||
# # Header always set X-Content-Type-Options "nosniff"
|
||||
# # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||
# # #Header always set Cache-Control "max-age=300, public"
|
||||
# # Header always set Access-Control-Allow-Origin "*"
|
||||
# # Header unset X-Powered-By
|
||||
# # #Header always set X-Powered-By "Amiga 1200, Kickstart 3.1"
|
||||
|
||||
# Handling all other redirections.
|
||||
RewriteEngine On
|
||||
|
8
commons/DOM/body-1.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<table class="container-root"><tr><td>
|
8
commons/DOM/body-2.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
</td><td class="w-full h-full"><table class="w-full h-full"><tr><td>
|
8
commons/DOM/body-3.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
</td></tr><tr class="h-full"><td class="h-full"><div class="fluid-container">
|
8
commons/DOM/body-4.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
</div></td></tr></table></td></tr><tr><td colspan="2">
|
@@ -5,4 +5,4 @@ if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<div id="body-overlay"></div>
|
||||
</td></tr></table>
|
23
commons/DOM/footer.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
|
||||
include_once 'commons/langs.php';
|
||||
?>
|
||||
<footer class="d-flex flex-align-center w-full p-s py-xs">
|
||||
<button id="sidebar-toggle-footer" class="p-xs border r-s t-size-10">
|
||||
<i class="fa fa-bars px-xxs" aria-hidden="true"></i>
|
||||
</button>
|
||||
<p class="flex-fill t-center t-size-10 t-w-500 t-muted">
|
||||
<a class="bland-link t-muted" href="<?php print(l10n_url_abs('/privacy/')); ?>">
|
||||
<?php print(localize('footer.text.privacy')); ?>
|
||||
</a>
|
||||
</p>
|
||||
<a href="<?php print(l10n_url_abs('/')); ?>">
|
||||
<img id="logo-footer" src="/resources/NibblePoker/images/logos/v2_full_unshaded_original.svg"
|
||||
alt="<?php echo(localize("footer.alt.logo")); ?>" draggable="false">
|
||||
</a>
|
||||
</footer>
|
33
commons/DOM/head.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<!--<meta content="cache, store" http-equiv="Cache-Control">
|
||||
<meta content="cache, store" http-equiv="Pragma">
|
||||
<meta content="3600" http-equiv="Expires">-->
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||
<link rel="alternate icon" href="/favicon.ico">
|
||||
<link rel="stylesheet" href="/resources/FontAwesomePro/5.15.3/css/all.min.css">
|
||||
<link rel="stylesheet" href="/resources/NibblePoker/css/nibblepoker.min.css">
|
||||
<?php
|
||||
if($enable_waffle_iron) {
|
||||
// Turns out you can't change an SVG's path fill if it's inside an IMG tag...
|
||||
//echo("<link rel=\"stylesheet\" href=\"/resources/NibblePoker/css/waffle-day.min.css\">");
|
||||
}
|
||||
if($enable_code_highlight) {
|
||||
echo('<link href="/resources/HighlightJS/11.6.0/styles/atom-one-dark.min.css" rel="stylesheet" />');
|
||||
}
|
||||
if($enable_glider) {
|
||||
echo('<link href="/resources/GliderJs/1.7.6/glider.min.css" rel="stylesheet" />');
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
|
18
commons/DOM/scripts.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<script src="/resources/NibblePoker/js/nibblepoker.min.js"></script>
|
||||
<?php
|
||||
if($enable_glider) {
|
||||
echo('<script src="/resources/GliderJs/1.7.6/glider.min.js"></script>');
|
||||
}
|
||||
if($enable_code_highlight) {
|
||||
echo('<script src="/resources/HighlightJS/11.6.0/highlight.min.js"></script>');
|
||||
echo('<script src="/resources/HighlightJS/11.6.0/languages/csharp.min.js"></script>');
|
||||
//echo('<script src="/resources/Azias/js/code-highlighter.js"></script>');
|
||||
}
|
||||
?>
|
59
commons/DOM/sidebar.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
|
||||
include_once 'commons/langs.php';
|
||||
|
||||
if(!isset($SIDEBAR_ID)) {
|
||||
$SIDEBAR_ID = 'default';
|
||||
}
|
||||
|
||||
function printSidebarEntry($url, $title, $icon) {
|
||||
echo('<a class="bland-link" href="' . $url . '"><p class="t-size-18 t-w-500 py-xs sidebar-entry">');
|
||||
echo('<i class="' . $icon . ' pr-xs t-size-12"></i><span class="t-size-12">' . $title . '</span></p></a>');
|
||||
}
|
||||
|
||||
?>
|
||||
<nav id="sidebar" class="sidebar p-m pt-l">
|
||||
<!-- TODO: Active link, and set it from content for projects -->
|
||||
<a href="<?php print(l10n_url_abs('/')); ?>" class="no-select">
|
||||
<img id="logo-sidebar" src="/resources/NibblePoker/images/logos/v2_full_unshaded_original.svg"
|
||||
alt="<?php echo(localize("sidebar.alt.logo")); ?>" draggable="false">
|
||||
</a>
|
||||
<p class="quantum t-logo-text mb-s mt-xs t-muted ucase">
|
||||
N<span class="t-super-muted">ibble</span>P<span class="t-super-muted">oker</span>
|
||||
</p>
|
||||
<hr class="subtle">
|
||||
<?php
|
||||
printSidebarEntry(l10n_url_abs('/'), localize("sidebar.text.home"), "fad fa-home");
|
||||
?>
|
||||
<hr class="subtle">
|
||||
<?php
|
||||
printSidebarEntry(l10n_url_abs('/content/'), localize("sidebar.text.projects"), "fad fa-briefcase");
|
||||
?>
|
||||
<div class="ml-m">
|
||||
<?php
|
||||
printSidebarEntry(l10n_url_abs('/content/?tags=application'), localize("sidebar.text.applications"),"fad fa-browser");
|
||||
printSidebarEntry(l10n_url_abs('/content/?tags=library'), localize("sidebar.text.libraries"), "fad fa-puzzle-piece");
|
||||
printSidebarEntry(l10n_url_abs('/content/?tags=electronic'), localize("sidebar.text.electronics"), "fad fa-microchip");
|
||||
?>
|
||||
</div>
|
||||
<hr class="subtle">
|
||||
<?php
|
||||
printSidebarEntry(l10n_url_abs('/links/'), localize("sidebar.text.links"), "fad fa-link");
|
||||
?>
|
||||
<div class="ml-m">
|
||||
<?php
|
||||
printSidebarEntry("https://files.nibblepoker.lu/", localize("sidebar.text.downloads"),"fad fa-download");
|
||||
printSidebarEntry("https://git.nibblepoker.lu/", localize("sidebar.text.gitea"), "fad fa-code");
|
||||
?>
|
||||
</div>
|
||||
<hr class="subtle">
|
||||
<?php
|
||||
printSidebarEntry(l10n_url_abs('/about/'), localize("sidebar.text.about"), "fad fa-user");
|
||||
printSidebarEntry(l10n_url_abs('/contact/'), localize("sidebar.text.contact"),"fad fa-mailbox");
|
||||
?>
|
||||
</nav>
|
47
commons/DOM/utils.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
|
||||
$_npDomUtilsHeadingCount = 0;
|
||||
|
||||
/**
|
||||
* Prints a standard heading container and its text with an optional anchor.
|
||||
* @param $text string Text to be shown in the heading
|
||||
* @param $iconId string|null
|
||||
* @param $rightText string|null
|
||||
* @param $anchorId string|null Anchor's ID if desired, `null` otherwise.
|
||||
* @return void
|
||||
*/
|
||||
function makeMainHeader(string $text, ?string $iconId = null, ?string $rightText = null, ?string $anchorId = null): void {
|
||||
global $_npDomUtilsHeadingCount;
|
||||
|
||||
if(!is_null($anchorId)) {
|
||||
echo('<a class="bland-link" href="#' . $anchorId . '">');
|
||||
}
|
||||
|
||||
echo('<div class="heading-main p-xs border r-s ' . ($_npDomUtilsHeadingCount > 0 ? "mt-l " : "") . 'bkgd-grid"><h2 class="t-w-500 t-size-14">');
|
||||
|
||||
// TODO: Add a simple and nicer divider.
|
||||
if(!is_null($iconId)) {
|
||||
echo('<i class="' . $iconId . ' t-size-12 t-muted"></i>');
|
||||
}
|
||||
|
||||
echo($text);
|
||||
|
||||
if(!is_null($rightText)) {
|
||||
echo('<span class="ml-auto t-muted t-size-10">' . $rightText . '</span>');
|
||||
}
|
||||
|
||||
echo('</h2></div>');
|
||||
|
||||
if(!is_null($anchorId)) {
|
||||
echo('</a>');
|
||||
}
|
||||
|
||||
$_npDomUtilsHeadingCount++;
|
||||
}
|
||||
|
||||
?>
|
@@ -304,7 +304,7 @@ class ComposerContentMetadata {
|
||||
'" class="content-tag">#' . $tag . '</a>');
|
||||
}
|
||||
} else {
|
||||
$inner_html .= '<i>' . localize("error.content.data.no.tags") . '</i>';
|
||||
$inner_html .= '<i>' . localize("content.error.message.data.no.tags") . '</i>';
|
||||
}
|
||||
|
||||
$inner_html .= '</div></div></div>';
|
||||
@@ -381,7 +381,7 @@ class ComposerContentMetadataArticle {
|
||||
return new ComposerContentMetadataArticle(
|
||||
key_exists("icon", $json_data) ? $json_data["icon"] : "fad fa-question",
|
||||
key_exists("title", $json_data) ?
|
||||
$json_data["title"] : '<i>'.localize("error.content.data.no.title").'</i>',
|
||||
$json_data["title"] : '<i>'.localize("content.error.message.data.no.title").'</i>',
|
||||
key_exists("subtitle", $json_data) ? $json_data["subtitle"] : '',
|
||||
key_exists("tags", $json_data) ? $json_data["tags"] : [],
|
||||
);
|
||||
|
@@ -9,4 +9,16 @@ $host_uri = "https://nibblepoker.lu";
|
||||
$dir_commons = dirname(__FILE__);
|
||||
$dir_root = realpath($dir_commons . "/../");
|
||||
$dir_content = realpath($dir_commons . "/../" . "content/");
|
||||
|
||||
// Optional features
|
||||
$enable_grids = false;
|
||||
$enable_code_highlight = false;
|
||||
$enable_glider = false;
|
||||
|
||||
// Easter-egg optional features
|
||||
// > Belgium's independence day.
|
||||
$enable_waffle_iron = date('m-d') === '07-21';
|
||||
|
||||
// Debugging stuff
|
||||
$print_execution_timer = true;
|
||||
?>
|
@@ -6,8 +6,8 @@ if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
}
|
||||
|
||||
// Importing required scripts.
|
||||
include_once 'langs.php';
|
||||
include_once 'composer.php';
|
||||
include_once 'commons/langs.php';
|
||||
include_once 'commons/composer.php';
|
||||
|
||||
// Defining some options.
|
||||
$PRINT_CONTENT_DEBUG_INFO_TEXT_ELEMENTS = true;
|
||||
@@ -23,7 +23,7 @@ abstract class ContentDisplayType {
|
||||
// Preparing default variables.
|
||||
$requested_content_display_type = ContentDisplayType::NONE;
|
||||
$content_has_error = false;
|
||||
$content_error_message_key = "error.content.none";
|
||||
$content_error_message_key = "content.error.message.none";
|
||||
$content_error_message = "";
|
||||
$requested_tags = array();
|
||||
$raw_additional_tags = "";
|
||||
@@ -49,7 +49,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
// Checking the length to prevent bad requests
|
||||
if(strlen($raw_additional_tags) > 256) {
|
||||
$content_has_error = true;
|
||||
$content_error_message_key = "error.content.tags.length";
|
||||
$content_error_message_key = "content.error.message.tags.length";
|
||||
goto content_end;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
$requested_tags[] = $raw_additional_tags_exploded[$i];
|
||||
} else {
|
||||
$content_has_error = true;
|
||||
$content_error_message_key = "error.content.tags.alphanumeric";
|
||||
$content_error_message_key = "content.error.message.tags.alphanumeric";
|
||||
goto content_end;
|
||||
}
|
||||
}
|
||||
@@ -90,14 +90,14 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
if(count($filtered_content_index_data) == 0) {
|
||||
// No relevant article/page were found for the given tags.
|
||||
$content_has_error = true;
|
||||
$content_error_message_key = "error.content.detect.empty";
|
||||
$content_error_message_key = "content.error.message.detect.empty";
|
||||
goto content_end;
|
||||
}
|
||||
} else if($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
// Sanitizing the requested ID.
|
||||
if(!ctype_alnum(str_replace("-", "", $content_requested_url_part))) {
|
||||
$content_has_error = true;
|
||||
$content_error_message_key = "error.content.id.alphanumeric";
|
||||
$content_error_message_key = "content.error.message.id.alphanumeric";
|
||||
goto content_end;
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
if(empty($content_file_path)) {
|
||||
// File doesn't exist !
|
||||
$content_has_error = true;
|
||||
$content_error_message_key = "error.content.data.not.exist";
|
||||
$content_error_message_key = "content.error.message.data.not.exist";
|
||||
unset($content_file_path);
|
||||
goto content_end;
|
||||
} else {
|
||||
@@ -115,7 +115,7 @@ if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
|
||||
if(is_null($content)) {
|
||||
$content_has_error = true;
|
||||
$content_error_message_key = "error.content.cannot.load";
|
||||
$content_error_message_key = "content.error.message.cannot.load";
|
||||
unset($content_file_path);
|
||||
goto content_end;
|
||||
}
|
||||
@@ -140,6 +140,7 @@ function end_content_card() {
|
||||
echo('</div>');
|
||||
}
|
||||
|
||||
// FIXME: What is this, should it be removed ?
|
||||
/*
|
||||
switch($elementNode["type"]) {
|
||||
case "image":
|
||||
|
@@ -1,28 +0,0 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<nav class="navbar navbar-fixed-bottom">
|
||||
<div class="navbar-content">
|
||||
<div class="navbar-content">
|
||||
<button id="button-sidebar" class="btn btn-action" type="button">
|
||||
<i class="fa fa-bars" aria-hidden="true"></i><span class="sr-only">Sidebar</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<span class="ml-auto">
|
||||
<div id="privacy-footer-link" class="text-muted ml-15">
|
||||
<a href="<?php print(l10n_url_abs('/privacy/')); ?>" class="text-decoration-none">
|
||||
<p class="text-muted font-weight-semi-bold"><?php print(localize('privacy.title')); ?></p>
|
||||
</a>
|
||||
</div>
|
||||
</span>
|
||||
<a href="<?php print(l10n_url_abs('/')); ?>" class="navbar-brand ml-auto">
|
||||
<span class="navbar-brand ml-auto">
|
||||
<img id="logo-footer" src="/resources/Azias/logos/v2_full_unshaded_original.svg" alt="logo" draggable="false">
|
||||
</span>
|
||||
</a>
|
||||
</nav>
|
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<div id="header-lang-menu" class="navbar-content ml-auto">
|
||||
<div class="dropdown with-arrow">
|
||||
<button class="btn" data-toggle="dropdown" type="button" id="navbar-lang-dropdown">
|
||||
<i class="fad fa-language"></i><span class="hidden-xs-and-down"> <?php print(localize("lang.menu.title")); ?></span>
|
||||
<i class="fa fa-angle-down" aria-hidden="true"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right w-150" aria-labelledby="navbar-lang-dropdown">
|
||||
<a href="<?php echo(l10n_url_switch('en')); ?>" class="dropdown-item">
|
||||
<?php print(localize("lang.english")); ?>
|
||||
</a>
|
||||
<a href="<?php echo(l10n_url_switch('fr')); ?>" class="dropdown-item">
|
||||
<?php print(localize("lang.french")); ?>
|
||||
</a>
|
||||
<!--<a href="<?php echo(l10n_url_switch('lb')); ?>" class="dropdown-item">
|
||||
<?php print(localize("lang.luxembourgish")); ?>
|
||||
</a>-->
|
||||
<div class="dropdown-divider mt-5 mb-5"></div>
|
||||
<a href="<?php echo(l10n_url_switch(NULL)); ?>" class="dropdown-item">
|
||||
<?php print(localize("lang.automatic")); ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
?>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta content="cache, store" http-equiv="Cache-Control">
|
||||
<meta content="cache, store" http-equiv="Pragma">
|
||||
<meta content="3600" http-equiv="Expires">
|
||||
<meta name="theme-color" content="#1D2023">
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||
<link rel="alternate icon" href="/favicon.ico">
|
||||
<link rel="stylesheet" href="/resources/HalfMoon/1.1.1/css/halfmoon-variables.min.css" />
|
||||
<link rel="stylesheet" href="/resources/FontAwesomePro/5.15.3/css/all.min.css">
|
||||
<link rel="stylesheet" href="/resources/Azias/css/nibblepoker.lu.min.css">
|
||||
<?php
|
||||
// Causes Chrome to bitch about the cross-origin header.
|
||||
// <link rel="preload" href="/resources/Quantum/Quantum.otf" as="font">
|
||||
// <link rel="preload" href="/resources/FontAwesomePro/5.15.3/webfonts/fa-duotone-900.woff2" as="font">
|
||||
// <link rel="preload" href="/resources/FontAwesomePro/5.15.3/webfonts/fa-brands-400.woff2" as="font">
|
||||
// <link rel="preload" href="/resources/FontAwesomePro/5.15.3/webfonts/fa-solid-900.woff2" as="font">
|
||||
// <link rel="preload" href="/resources/Azias/imgs/3px-tile-0.1.png" as="image">
|
||||
// <link rel="preload" href="/resources/Azias/imgs/3px-tile.png" as="image">
|
||||
?>
|
@@ -4,7 +4,7 @@ if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
include_once 'config.php';
|
||||
include_once 'commons/config.php';
|
||||
|
||||
// This helper requires PHP 8 or newer !
|
||||
|
||||
|
@@ -1,84 +0,0 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}
|
||||
|
||||
include_once 'langs.php';
|
||||
|
||||
if(!isset($SIDEBAR_ID)) {
|
||||
$SIDEBAR_ID = 'default';
|
||||
}
|
||||
?>
|
||||
<div class="sidebar">
|
||||
<div class="sidebar-menu font-weight-bold">
|
||||
<a href="<?php print(l10n_url_abs('/')); ?>" class="sidebar-brand no-select">
|
||||
<img id="logo-sidebar" src="/resources/Azias/logos/v2_full_unshaded_original.svg" alt="logo" draggable="false">
|
||||
</a>
|
||||
<h4 class="text-center quantum ucase font-size-28 text-muted">N<span class="text-super-muted">ibble</span> P<span class="text-super-muted">oker</span></h4>
|
||||
<div class="sidebar-divider"></div>
|
||||
<a id="sbl-home" href="<?php print(l10n_url_abs('/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="home"){echo(" active");} ?>">
|
||||
<span class="sidebar-icon"><i class="fad fa-home" aria-hidden="true"></i></span>
|
||||
<?php print(localize("home.title.nav")); ?>
|
||||
</a>
|
||||
<div class="sidebar-divider"></div>
|
||||
<a id="sbl-programming" href="<?php print(l10n_url_abs('/content/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="blog"){echo(" active");} ?>">
|
||||
<span class="sidebar-icon"><i class="fad fa-briefcase"></i></span>
|
||||
<?php print(localize("programming.title.projects")); ?>
|
||||
</a>
|
||||
<div class="ml-20">
|
||||
<a id="sbl-projects-apps" href="<?php print(l10n_url_abs('/content/?tags=application')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-browser"></i></span>
|
||||
<?php print(localize("programming.apps.title")); ?>
|
||||
</a>
|
||||
<a id="sbl-projects-apps" href="<?php print(l10n_url_abs('/content/?tags=library')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-puzzle-piece"></i></span>
|
||||
<?php print(localize("programming.library.title")); ?>
|
||||
</a>
|
||||
<a id="sbl-projects-tutorials" href="<?php print(l10n_url_abs('/content/?tags=game')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-gamepad-alt"></i></span>
|
||||
<?php print(localize("programming.games.title")); ?>
|
||||
</a>
|
||||
<!--<a id="sbl-projects-tutorials" href="<?php print(l10n_url_abs('/content/?tags=tutorial')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-books"></i></span>
|
||||
<?php print(localize("programming.tutorials.title")); ?>
|
||||
</a>-->
|
||||
<a id="sbl-projects-tools" href="<?php print(l10n_url_abs('/content/?tags=tool')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-tools"></i></span>
|
||||
<?php print(localize("programming.tools.title")); ?>
|
||||
</a>
|
||||
<div class="sidebar-divider"></div>
|
||||
<a id="sbl-purebasic" href="<?php print(l10n_url_abs('/content/?tags=purebasic')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-microchip"></i></span>
|
||||
<?php print(localize("programming.purebasic.title")); ?>
|
||||
</a>
|
||||
<a id="sbl-python" href="<?php print(l10n_url_abs('/content/?tags=python')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fab fa-python"></i></span>
|
||||
<?php print(localize("programming.python.title")); ?>
|
||||
</a>
|
||||
<a id="sbl-docker" href="<?php print(l10n_url_abs('/content/?tags=docker')); ?>" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fab fa-docker"></i></span>
|
||||
<?php print(localize("programming.docker.title")); ?>
|
||||
</a>
|
||||
<div class="sidebar-divider"></div>
|
||||
<a id="sbl-projects-downloads" href="https://files.nibblepoker.lu/" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-download"></i></span>
|
||||
<?php print(localize("programming.downloads.title")); ?>
|
||||
</a>
|
||||
<a id="sbl-projects-downloads" href="https://git.nibblepoker.lu/" class="sidebar-link sidebar-link-with-icon">
|
||||
<span class="sidebar-icon"><i class="fad fa-code"></i></span>
|
||||
<?php print(localize("programming.git.title")); ?>
|
||||
</a>
|
||||
</div>
|
||||
<div class="sidebar-divider"></div>
|
||||
<a id="sbl-links" href="<?php print(l10n_url_abs('/links/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="links"){echo(" active");} ?>">
|
||||
<span class="sidebar-icon"><i class="fad fa-link"></i></span>
|
||||
<?php print(localize("links.title")); ?>
|
||||
</a>
|
||||
<a id="sbl-contact" href="<?php print(l10n_url_abs('/contact/')); ?>" class="sidebar-link sidebar-link-with-icon<?php if($SIDEBAR_ID=="contact"){echo(" active");} ?>">
|
||||
<span class="sidebar-icon"><i class="fad fa-mailbox"></i></span>
|
||||
<?php print(localize("contact.title")); ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
@@ -13,6 +13,9 @@ lang_data["_compile_date"] = datetime.utcnow().isoformat() + "Z"
|
||||
|
||||
|
||||
for main_dir_entry in os.listdir("./"):
|
||||
if main_dir_entry.startswith("_"):
|
||||
continue
|
||||
|
||||
print("Checking ./{}".format(main_dir_entry))
|
||||
|
||||
if not os.path.isdir(os.path.join("./", main_dir_entry)):
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"about.biography.title": "Who am I ?",
|
||||
"about.philosophy.title": "Projects philosophy",
|
||||
"about.skills.title": "Skills",
|
||||
"about.work.title": "Professional experiences",
|
||||
"about.education.title": "TODO:SchoolAndEducation"
|
||||
}
|
3
commons/strings/en/common.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"contact.title": "Contact",
|
||||
"contact.email.title": "Email",
|
||||
"contact.email.name": "Sender's Name",
|
||||
"contact.email.message": "Message",
|
||||
"contact.twitter.button": "Compose DM to @NibblePoker on Twitter",
|
||||
"contact.tox.main": "Main account:",
|
||||
"contact.tox.secondary": "Backup account:",
|
||||
"contact.tox.button.open": "Open in Tox Client",
|
||||
"contact.tox.button.copy": "Copy to clipboard"
|
||||
}
|
41
commons/strings/en/content.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"content.search.head.title": "Content search - NibblePoker",
|
||||
"content.search.head.description": "TODO: description",
|
||||
"content.search.og.title": "NibblePoker - Content search",
|
||||
"content.search.og.description": "TODO: description",
|
||||
|
||||
"content.search.heading.main": "Search results",
|
||||
|
||||
"content.search.count.single": "result",
|
||||
"content.search.count.multiple": "results",
|
||||
|
||||
"content.error.head.title": "Content error - NibblePoker",
|
||||
"_content.error.head.description": "Done via the '$content_error_message' variable",
|
||||
"content.error.og.title": "NibblePoker - Content error",
|
||||
"_content.error.og.description": "Done via the '$content_error_message' variable",
|
||||
|
||||
"content.error.heading.main.search": "Search error",
|
||||
"content.error.heading.main.content": "Content error",
|
||||
"content.error.heading.main.fallback": "Unknown error",
|
||||
|
||||
"_": "Messages returned by 'commons/content.php'",
|
||||
"content.error.message.none": "No explicit error was encountered.",
|
||||
"content.error.message.tags.length": "The \"tags\" URL parameter is too long.",
|
||||
"content.error.message.tags.alphanumeric": "One of the tags given in the \"tags\" URL parameter is not a valid alphanumeric string.",
|
||||
"content.error.message.detect.empty": "No content could be found for the given tags.",
|
||||
"content.error.message.id.alphanumeric": "The requested resource's ID isn't a valid alphanumeric string.",
|
||||
"content.error.message.data.not.exist": "The requested content doesn't have an internal item file associated to it.",
|
||||
"content.error.message.cannot.load": "The requested content couldn't be loaded on our end !",
|
||||
|
||||
"__": "Messages returned by 'commons/composer.php'",
|
||||
"_content.error.message.data.no.tags": "No tags found !",
|
||||
"_content.error.message.data.no.title": "No title found !",
|
||||
|
||||
"content.item.head.title.prefix": "",
|
||||
"content.item.head.title.suffix": " - NibblePoker",
|
||||
|
||||
"content.item.og.title.prefix": "",
|
||||
"content.item.og.title.suffix": " - NibblePoker",
|
||||
|
||||
"_content.header.title": "Homepage"
|
||||
}
|
4
commons/strings/en/footer.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"footer.text.privacy": "Privacy policy",
|
||||
"footer.alt.logo": "Website's logo"
|
||||
}
|
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"generic.button.close": "Close",
|
||||
"generic.button.copy": "Copy to clipboard",
|
||||
"generic.button.submit": "Submit",
|
||||
"generic.button.reset": "Reset"
|
||||
}
|
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"home.title.nav": "Home",
|
||||
"home.title.header": "Homepage",
|
||||
"home.intro.meta.description": "${home.intro.meta.description}",
|
||||
"home.intro.title": "Welcome",
|
||||
"home.intro.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 for free and under open-source friendly licenses.",
|
||||
"home.intro.text.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."
|
||||
"home.head.title": "NibblePoker",
|
||||
"home.head.description": "TODO: description",
|
||||
"home.og.title": "NibblePoker",
|
||||
"home.og.description": "TODO: description",
|
||||
"home.header.title": "Homepage"
|
||||
}
|
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"privacy.title": "Privacy policy",
|
||||
|
||||
"privacy.description": "Our privacy policy in a clear and easy to understand format.",
|
||||
"privacy.head.title": "Privacy policy - NibblePoker",
|
||||
"privacy.head.description": "Our privacy policy in a clear and easy to understand format.",
|
||||
"privacy.og.title": "NibblePoker - Privacy Policy",
|
||||
"privacy.og.description": "Our privacy policy in a clear and easy to understand format.",
|
||||
"privacy.header.title": "Privacy policy",
|
||||
|
||||
"privacy.introduction.title": "Introduction",
|
||||
"privacy.introduction.text.1": "This privacy policy is written in accordance with the 12th and 13th articles of the GDPR.",
|
||||
@@ -9,7 +11,6 @@
|
||||
|
||||
"_privacy.data.title": "What data do we collect ?",
|
||||
"_privacy.data.text.1": "This website, does not collect any personal data, be it through access logs, cookies or any third-party services.",
|
||||
"_privacy.update.title": "Changes to our privacy policy",
|
||||
"_privacy.update.text.1": "The content of this privacy policy was written and last updated on the 4th of December 2021.",
|
||||
"_privacy.update.text.2": "In the event of a change to our privacy policy, you will be informed explicitly, and a copy of previous versions of the policy will be available on this page.",
|
||||
|
||||
@@ -36,6 +37,7 @@
|
||||
"privacy.v2.data.end.5": "This process should normally never be triggered for regular traffic since most of the triggering actions are ones that should not be possible to accomplish through normal browsing.",
|
||||
"privacy.v2.data.end.6": "However, this process isn't infallible and there is always an off chance that false positives may happen.",
|
||||
|
||||
"privacy.v2.update.title": "Changes to our privacy policy",
|
||||
"privacy.v2.update.intro.1": "The content of this privacy policy was originally written on the 4th of December 2021 and was last updated on the 18th of March 2022.",
|
||||
"privacy.v2.update.history.1.date": "2021/12/04",
|
||||
"privacy.v2.update.history.1.desc.1": "Original version",
|
||||
|
@@ -1,109 +0,0 @@
|
||||
{
|
||||
"programming.title": "Programming",
|
||||
"programming.title.projects": "Projects",
|
||||
"programming.java.title": "Java",
|
||||
"programming.purebasic.title": "PureBasic",
|
||||
"programming.python.title": "Python",
|
||||
"programming.others.title": "Others",
|
||||
"programming.docker.title": "Docker",
|
||||
"programming.apps.title": "Applications",
|
||||
"programming.downloads.title": "Downloads",
|
||||
"programming.git.title": "Git Repos.",
|
||||
"programming.tutorials.title": "Tutorials",
|
||||
"programming.tools.title": "Tools",
|
||||
"programming.games.title": "Games & Mods",
|
||||
"programming.library.title": "Libraries",
|
||||
"electronics.title": "Electronics",
|
||||
"electronics.iot.title": "IoT",
|
||||
"electronics.experiments.title": "Experiments",
|
||||
"electronics.ham.title": "HAM",
|
||||
"links.title": "Links",
|
||||
"links.visit.button": "Visit",
|
||||
"about.title": "About",
|
||||
"contact.description": "$contact.description",
|
||||
|
||||
"error.common.details.title": "Error details",
|
||||
"error.4xx.title": "HTTP Client Error",
|
||||
"error.4xx.text": "${error.4xx.text}",
|
||||
"error.4xx.button.back": "Go back",
|
||||
"error.403.title": "403 Error",
|
||||
"error.403.description": "Access to the requested resource is forbidden !",
|
||||
"error.403.explanation": "If this problem persists, you can contact us through avenues given on the <a href=\"/contact/\">Contact</a> page.",
|
||||
"error.404.title": "404 Error",
|
||||
"error.404.description": "The requested resource couldn't be found on the server !",
|
||||
"error.404.explanation": "If this problem persists, you can contact us through avenues given on the <a href=\"/contact/\">Contact</a> page.",
|
||||
|
||||
"error.content.title.generic": "Content error",
|
||||
"error.content.title.empty": "No content found",
|
||||
"error.content.none": "No explicit error was encountered.",
|
||||
"error.content.detect.category": "Failed to detect which category of content you requested.",
|
||||
"error.content.detect.display": "Failed to detect if you requested the category's search page or a specific one.",
|
||||
"error.content.detect.subtype": "Failed to detect the sub-type of content you requested.",
|
||||
"error.content.detect.tags": "Failed to detect the basic tags for the content you requested.",
|
||||
"error.content.detect.empty": "No content could be found for the given tags.",
|
||||
"error.content.tags.length": "The \"tags\" URL parameter is too long.",
|
||||
"error.content.tags.alphanumeric": "One of the tags given in the \"tags\" URL parameter is not a valid alphanumeric string.",
|
||||
"error.content.detect.type": "The type of requested content couldn't be determined.",
|
||||
"error.content.id.alphanumeric": "The requested resource's ID isn't a valid alphanumeric string.",
|
||||
"error.content.data.not.exist": "The requested content doesn't have an internal item file associated to it.",
|
||||
"error.content.data.no.title": "No title found !",
|
||||
"error.content.data.no.description": "No description found !",
|
||||
"error.content.data.no.tags": "No tags found !",
|
||||
"error.content.data.no.parts": "No content parts were found for this content !",
|
||||
"error.content.data.no.subpart": "No sub-element were found for this element !",
|
||||
"error.content.data.part.unknown": "Unknown element: \"%s\" !",
|
||||
"error.content.cannot.load": "The requested content couldn't be loaded !",
|
||||
|
||||
"content.title.error": "Error",
|
||||
"content.title.content": "Content",
|
||||
"content.title.search.header": "Search",
|
||||
"content.title.search.card": "Content search",
|
||||
"content.title.search.card.single": "Search result",
|
||||
"content.title.search.card.multiple": "Search results",
|
||||
"content.tags.requested": "Requested tags",
|
||||
"content.search.count.single": "result",
|
||||
"content.search.count.multiple": "results",
|
||||
|
||||
"content.fallback.content.commons.version.current": "Current version",
|
||||
"content.fallback.content.commons.version.previous.single": "Previous version",
|
||||
"content.fallback.content.commons.version.previous.multiple": "Previous versions",
|
||||
"content.fallback.content.commons.version.old.single": "Old version",
|
||||
"content.fallback.content.commons.version.old.multiple": "Old versions",
|
||||
"content.fallback.content.commons.version.source": "Source code",
|
||||
"content.fallback.content.commons.cpu": "CPU <span class=\"hidden-xs-and-down\">Architecture</span>",
|
||||
"content.fallback.content.commons.cpu.responsive": "CPU <span class=\"hidden-xs-and-down\">Architecture</span>",
|
||||
"content.fallback.content.commons.cpu.any": "Any architecture",
|
||||
"content.fallback.content.commons.cpu.x64": "x64",
|
||||
"content.fallback.content.commons.cpu.x86": "x86",
|
||||
"content.fallback.content.commons.cpu.arm": "arm",
|
||||
"content.fallback.content.commons.cpu.arm64": "arm64",
|
||||
"content.fallback.content.commons.na.italic": "<i>N/A</i>",
|
||||
"content.fallback.content.commons.na": "N/A",
|
||||
"content.fallback.content.commons.lang": "Language",
|
||||
"content.fallback.content.commons.download.single": "Download",
|
||||
"content.fallback.content.commons.download.multiple": "Downloads",
|
||||
"content.fallback.content.commons.version": "Version",
|
||||
"content.fallback.content.commons.github": "GitHub Repository",
|
||||
"content.fallback.content.commons.gitea": "Self-hosted Gitea Repository",
|
||||
"content.fallback.content.commons.nuget": "Nuget Package",
|
||||
"content.fallback.content.commons.license.mit.single": "MIT License",
|
||||
|
||||
"content.fallback.content.commons.lang.english": "English",
|
||||
"content.fallback.content.commons.lang.french": "French",
|
||||
"content.fallback.content.commons.lang.luxembourgish": "Luxembourgish",
|
||||
"content.fallback.content.commons.lang.english.639-3": "English (eng)",
|
||||
"content.fallback.content.commons.lang.french.639-3": "French (fra)",
|
||||
"content.fallback.content.commons.lang.luxembourgish.639-3": "Luxembourgish (ltz)",
|
||||
|
||||
"content.default.head.title" : "No title found !",
|
||||
"content.default.head.description" : "No description found !",
|
||||
"content.default.opengraph.title" : "No title found !",
|
||||
"content.default.opengraph.description" : "No description found !",
|
||||
|
||||
"downloads.title": "Downloads",
|
||||
"downloads.description": "$downloads.description",
|
||||
"downloads.title.header": "Downloads",
|
||||
"downloads.intro.title": "Directory listing of: <i>/files/</i>",
|
||||
|
||||
"modal.title.debugging": "Debugging information"
|
||||
}
|
13
commons/strings/en/sidebar.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sidebar.alt.logo": "Website's logo",
|
||||
"sidebar.text.home": "Home",
|
||||
"sidebar.text.projects": "Projects",
|
||||
"sidebar.text.applications": "Applications",
|
||||
"sidebar.text.libraries": "Libraries",
|
||||
"sidebar.text.electronics": "Electronics",
|
||||
"sidebar.text.links": "Links",
|
||||
"sidebar.text.downloads": "Downloads",
|
||||
"sidebar.text.gitea": "Git Repos.",
|
||||
"sidebar.text.about": "About",
|
||||
"sidebar.text.contact": "Contact"
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"about.biography.title": "Qui suis-je ?",
|
||||
"about.philosophy.title": "Philosophie des projets",
|
||||
"about.skills.title": "Compétences",
|
||||
"about.work.title": "Parcours professionnel",
|
||||
"about.education.title": "Éducation"
|
||||
}
|
3
commons/strings/fr/common.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"contact.title": "Contact",
|
||||
"contact.email.title": "Courriel",
|
||||
"contact.email.name": "Nom de l'envoyeur",
|
||||
"contact.email.message": "Message",
|
||||
"contact.twitter.button": "Composer un message privé pour @NibblePoker sur Twitter",
|
||||
"contact.tox.main": "Compte principal:",
|
||||
"contact.tox.secondary": "Compte secondaire:",
|
||||
"contact.tox.button.open": "Ouvrir dans un client Tox",
|
||||
"contact.tox.button.copy": "Copier dans le presse-papier"
|
||||
}
|
3
commons/strings/fr/content.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
4
commons/strings/fr/footer.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"footer.text.privacy": "Politique de confidentialité",
|
||||
"footer.alt.logo": "Logo du site web"
|
||||
}
|
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"generic.button.close": "Fermer",
|
||||
"generic.button.copy": "Copier dans le presse-papier",
|
||||
"generic.button.submit": "Envoyer",
|
||||
"generic.button.reset": "Réinitialiser"
|
||||
}
|
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"home.title.nav": "Accueil",
|
||||
"home.title.header": "Page d'accueil",
|
||||
"home.intro.meta.description": "${home.intro.meta.description}",
|
||||
"home.intro.title": "Bienvenue",
|
||||
"home.intro.text.1": "Ce site internet contient une collection de mon travail personnel dans le domaine de l'informatique, le tout étant rendu accessible par le biais d'articles de blog, ? et ?, le tout sous une licence ouverte et en open source.",
|
||||
"home.intro.text.2": "Si vous désirez me contacter, vous pouvez le faire via le formulaire de contact dans la page prévu à cet effet qui est liée dans le menu latéral ou via l'adresse email présente sur cette page."
|
||||
"home.head.title": "NibblePoker",
|
||||
"home.head.description": "TODO: description",
|
||||
"home.og.title": "NibblePoker",
|
||||
"home.og.description": "TODO: description",
|
||||
"home.header.title": "Page d'accueil"
|
||||
}
|
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"privacy.title": "Politique de confidentialité",
|
||||
|
||||
"privacy.description": "Notre politique de confidentialité dans un format clair et compréhensible.",
|
||||
"privacy.head.title": "Politique de confidentialité - NibblePoker",
|
||||
"privacy.head.description": "Notre politique de confidentialité dans un format clair et compréhensible.",
|
||||
"privacy.og.title": "NibblePoker - Politique de confidentialité",
|
||||
"privacy.og.description": "Notre politique de confidentialité dans un format clair et compréhensible.",
|
||||
"privacy.header.title": "Politique de confidentialité",
|
||||
|
||||
"privacy.introduction.title": "Introduction",
|
||||
"privacy.introduction.text.1": "La politique de confidentialité ci-présente a été écrite en accord avec les articles 12 et 13 de la RGPD.",
|
||||
@@ -36,6 +38,7 @@
|
||||
"privacy.v2.data.end.5": "Ce processus n'est normalement jamais utilisé sur des requêtes provenant d'un trafic légitime dû au fait qu'il isole principalement les actions et requêtes qui ne devraient pas être possible sur ce site.",
|
||||
"privacy.v2.data.end.6": "Cependant, ce processus n'est pas infaillible et il est toujours possible qu'une requête soit isolée par erreur.",
|
||||
|
||||
"privacy.v2.update.title": "Changements à notre politique de confidentialité",
|
||||
"privacy.v2.update.intro.1": "Le contenu de notre politique de confidentialité a été originalement écrit et le 4 décembre 2021 modifié pour la dernière fois le 18 mars 2022.",
|
||||
"privacy.v2.update.history.1.date": "2021/12/04",
|
||||
"privacy.v2.update.history.1.desc.1": "Version originale",
|
||||
|
@@ -1,100 +0,0 @@
|
||||
{
|
||||
"programming.title": "Programmation",
|
||||
"programming.title.projects": "Projets",
|
||||
"programming.java.title": "Java",
|
||||
"programming.purebasic.title": "PureBasic",
|
||||
"programming.python.title": "Python",
|
||||
"programming.others.title": "Autres",
|
||||
"programming.docker.title": "Docker",
|
||||
"programming.apps.title": "Applications",
|
||||
"programming.downloads.title": "Téléchargements",
|
||||
"programming.git.title": "Dépôts Git",
|
||||
"programming.tutorials.title": "Tutoriels",
|
||||
"programming.tools.title": "Outils",
|
||||
"programming.games.title": "Jeux & Mods",
|
||||
"programming.library.title": "Librairies",
|
||||
"electronics.title": "Électronique",
|
||||
"electronics.iot.title": "IoT",
|
||||
"electronics.experiments.title": "Expériences",
|
||||
"electronics.ham.title": "HAM",
|
||||
"links.title": "Liens",
|
||||
"links.visit.button": "Visiter",
|
||||
"about.title": "À-propos",
|
||||
"contact.description": "$contact.description",
|
||||
|
||||
"error.common.details.title": "Détails de l'erreur",
|
||||
"error.4xx.title": "Erreur du client HTTP",
|
||||
"error.4xx.text": "${error.4xx.text}",
|
||||
"error.4xx.button.back": "Retourner en arrière",
|
||||
"error.403.title": "Erreur 403",
|
||||
"error.403.description": "L'accès à la ressource demandée est interdit !",
|
||||
"error.403.explanation": "Si ce problème persiste, vous pouvez nous contacter via une des avenues données sur la page <a href=\"/contact/\">Contact</a>.",
|
||||
"error.404.title": "Erreur 404",
|
||||
"error.404.description": "La ressource demandée est introuvable sur le serveur !",
|
||||
"error.404.explanation": "Si ce problème persiste, vous pouvez nous contacter via une des avenues données sur la page <a href=\"/contact/\">Contact</a>.",
|
||||
|
||||
"error.content.title.generic": "Erreur de contenu",
|
||||
"error.content.title.empty": "Aucun contenu trouvé",
|
||||
"error.content.none": "Aucune erreur n'a été détectée.",
|
||||
"error.content.detect.category": "Impossibilité de détecter la catégorie de contenu demandée.",
|
||||
"error.content.detect.display": "Impossibilité de détecter si une recherche ou page spécifique était demandée.",
|
||||
"error.content.detect.subtype": "Impossibilité de détecter le sous-type de contenu demandé.",
|
||||
"error.content.detect.tags": "Impossibilité de détecter les tags de base du contenu demandé.",
|
||||
"error.content.detect.empty": "Aucun contenu en rapport avec les tags choisi n'as été trouvé.",
|
||||
"error.content.tags.length": "Le paramètre d'URL \"tags\" est trop long.",
|
||||
"error.content.tags.alphanumeric": "Un des tags donné dans le paramètre d'URL \"tags\" n'est pas une chaîne de texte alphanumérique valide.",
|
||||
"error.content.detect.type": "Le type de contenu désiré n'as pas pu être détecté.",
|
||||
"error.content.id.alphanumeric": "L'ID de la ressource demandée n'est pas une chaîne de texte alphanumérique valide.",
|
||||
"error.content.data.not.exist": "Le contenu demandée n'a pas de fichier de rendu interne associé.",
|
||||
"error.content.data.no.title": "Aucun titre trouvé !",
|
||||
"error.content.data.no.description": "Aucune description trouvée !",
|
||||
"error.content.data.no.tags": "Aucun tag trouvé !",
|
||||
"error.content.data.no.parts": "Aucun élément à présenter n'a été trouvé !",
|
||||
"error.content.data.no.subpart": "Aucun sous-élément n'a été trouvé pour cet élément !",
|
||||
"error.content.data.part.unknown": "Élément inconnu: \"%s\" !",
|
||||
"error.content.cannot.load": "Le contenu demandé n'a pas pu être chargé !",
|
||||
|
||||
"content.title.error": "Erreur de contenu",
|
||||
"content.title.content": "Projets",
|
||||
"content.title.search.header": "Recherche",
|
||||
"content.title.search.card": "Recherche de contenu",
|
||||
"content.title.search.card.single": "Résultat de recherche",
|
||||
"content.title.search.card.multiple": "Résultats de recherche",
|
||||
"content.tags.requested": "Tags demandés",
|
||||
"content.search.count.single": "résultat",
|
||||
"content.search.count.multiple": "résultats",
|
||||
|
||||
"content.fallback.content.commons.version.current": "Version actuelle",
|
||||
"content.fallback.content.commons.version.previous.single": "Version précédente",
|
||||
"content.fallback.content.commons.version.previous.multiple": "Versions précédentes",
|
||||
"content.fallback.content.commons.version.old.single": "Ancienne version",
|
||||
"content.fallback.content.commons.version.old.multiple": "Anciennes versions",
|
||||
"content.fallback.content.commons.version.source": "Code source",
|
||||
"content.fallback.content.commons.cpu": "Architecture de CPU",
|
||||
"content.fallback.content.commons.cpu.any": "Indépendante",
|
||||
"content.fallback.content.commons.cpu.x64": "x64",
|
||||
"content.fallback.content.commons.cpu.x86": "x86",
|
||||
"content.fallback.content.commons.cpu.arm": "arm",
|
||||
"content.fallback.content.commons.cpu.arm64": "arm64",
|
||||
"content.fallback.content.commons.na.italic": "<i>N/A</i>",
|
||||
"content.fallback.content.commons.na": "N/A",
|
||||
"content.fallback.content.commons.lang": "Langue",
|
||||
"content.fallback.content.commons.download.single": "Téléchargement",
|
||||
"content.fallback.content.commons.download.multiple": "Téléchargements",
|
||||
"content.fallback.content.commons.version": "Version",
|
||||
"content.fallback.content.commons.github": "Dépôt GitHub",
|
||||
"content.fallback.content.commons.gitea": "Dépôt Gitea auto-hébergé",
|
||||
"content.fallback.content.commons.nuget": "Packet Nuget",
|
||||
"content.fallback.content.commons.license.mit.single": "License MIT",
|
||||
|
||||
"content.fallback.content.commons.lang.english": "Anglais",
|
||||
"content.fallback.content.commons.lang.french": "Français",
|
||||
"content.fallback.content.commons.lang.luxembourgish": "Luxembourgeois",
|
||||
|
||||
"content.default.head.title" : "Aucun titre trouvé !",
|
||||
"content.default.head.description" : "Aucune description trouvée !",
|
||||
"content.default.opengraph.title" : "Aucun titre trouvé !",
|
||||
"content.default.opengraph.description" : "Aucune description trouvée !",
|
||||
|
||||
"modal.title.debugging": "Informations de débogage"
|
||||
}
|
13
commons/strings/fr/sidebar.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sidebar.alt.logo": "Logo du site web",
|
||||
"sidebar.text.home": "Accueil",
|
||||
"sidebar.text.projects": "Projets",
|
||||
"sidebar.text.applications": "Applications",
|
||||
"sidebar.text.libraries": "Librairies",
|
||||
"sidebar.text.electronics": "Électronique",
|
||||
"sidebar.text.links": "Liens",
|
||||
"sidebar.text.downloads": "Téléchargements",
|
||||
"sidebar.text.gitea": "Dépôts Git",
|
||||
"sidebar.text.about": "À-propos",
|
||||
"sidebar.text.contact": "Contact"
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"home.title.nav": "Doheem",
|
||||
"home.intro.title": "Wëllkomm op <i>NibblePoker.lu</i> !"
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"lang.current": "Luxembourgish"
|
||||
}
|
@@ -9,7 +9,7 @@
|
||||
"en": "A simple CLI tool that can list COM ports with their name, friendly name and device name easily and cleanly.<br>This tool is intended to replace the tedious task of having to use the <code>mode</code> command, and the <i>Device Manager</i> to find a newly plugged-in device that provides a COM port.",
|
||||
"fr": "Un petit utilitaire pour invité de commande qui permet de facilement lister les noms, noms formatés et chemins des ports COM.<br>Cet outil a pour bût de faciliter cette tâche sans avoir à utiliser la commande <code>mode</code> ou le <i>Gestionnaire de périphérique</i>."
|
||||
},
|
||||
"image": "/resources/Azias/imgs/lscom/lscom-v2-text-01-bkgd-cli.png",
|
||||
"image": "/resources/NibblePoker/images/content/lscom/lscom-v2-text-01-bkgd-cli.png",
|
||||
"tags": ["application", "tool" ,"lscom", "dotnet", "windows"]
|
||||
},
|
||||
{
|
||||
@@ -22,7 +22,7 @@
|
||||
"en": "A simple and yet highly configurable Python application that automatically checks if a Youtuber is streaming, and downloads said streams while also archiving its latest uploads.",
|
||||
"fr": "Conteneur et application Python hautement configurable qui permet d'automatiquement archiver et télécharger des livestreams et vidéos depuis YouTube."
|
||||
},
|
||||
"image": "/resources/Azias/imgs/yaa/icon-final.png",
|
||||
"image": "/resources/NibblePoker/images/content/yaa/icon-final.png",
|
||||
"tags": ["docker", "application", "web", "python"]
|
||||
},
|
||||
{
|
||||
@@ -35,7 +35,7 @@
|
||||
"en": "Small web page from which you can easily remove a password from an Excel worksheet.<br>It works by leaving the task of editing the XML files on an Excel document to your browser instead to keep everything local.",
|
||||
"fr": "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 fichier sur internet.<br>Cette application laisse votre navigateur modifier les fichiers XML du fichier Excel afin de tout garder en local."
|
||||
},
|
||||
"image": "/resources/Azias/imgs/excel-password-remover/excel-password-remover.png",
|
||||
"image": "/resources/NibblePoker/images/content/excel-password-remover/excel-password-remover.png",
|
||||
"tags": [
|
||||
"tool",
|
||||
"web"
|
||||
@@ -51,7 +51,7 @@
|
||||
"en": "A simple and 'to-the-point' library to parse launch arguments in .NET and .NET Core applications.",
|
||||
"fr": "Une petite librairie simple et efficace pour lire et interpréter les options de lancement d'un programme pour .NET et .NET Core."
|
||||
},
|
||||
"image": "/resources/Azias/imgs/placeholder.png",
|
||||
"image": "/resources/NibblePoker/images/placeholder.png",
|
||||
"tags": [
|
||||
"library",
|
||||
"dotnet"
|
||||
@@ -67,7 +67,7 @@
|
||||
"en": "A small Minecraft mod that provides bundles with more storage space, and new functionalities in the future.",
|
||||
"fr": "Un petit mod pour Minecraft qui ajoute des sacs avec plus d'espace de stockage et de nouvelles fonctionalitées dans le futur."
|
||||
},
|
||||
"image": "/resources/Azias/imgs/mc-expanded-iron-bundles/item-icon.png",
|
||||
"image": "/resources/NibblePoker/images/content/mc-expanded-iron-bundles/item-icon.png",
|
||||
"tags": [
|
||||
"game",
|
||||
"minecraft",
|
||||
@@ -84,7 +84,7 @@
|
||||
"en": "A simple CLI tool that can list COM ports with their name, friendly name and device name easily and cleanly.<br>This tool is intended to replace the tedious task of having to use the <code>mode</code> command, and the <i>Device Manager</i> to find a newly plugged-in device that provides a COM port.",
|
||||
"fr": "Un petit utilitaire pour invité de commande qui permet de facilement lister les noms, noms formatés et chemins des ports COM.<br>Cet outil a pour bût de faciliter cette tâche sans avoir à utiliser la commande <code>mode</code> ou le <i>Gestionnaire de périphérique</i>."
|
||||
},
|
||||
"image": "/resources/Azias/imgs/lscom/lscom-legacy-simple.png",
|
||||
"image": "/resources/NibblePoker/images/content/lscom/lscom-legacy-simple.png",
|
||||
"tags": ["application", "tool" ,"lscom", "purebasic", "windows"]
|
||||
}
|
||||
]
|
||||
|
@@ -1,15 +1,18 @@
|
||||
<?php
|
||||
$start_time = microtime(true);
|
||||
|
||||
// Importing required scripts.
|
||||
set_include_path('../commons/');
|
||||
include_once 'config.php';
|
||||
include_once 'langs.php';
|
||||
include_once 'content.php';
|
||||
set_include_path('../');
|
||||
include_once 'commons/config.php';
|
||||
include_once 'commons/langs.php';
|
||||
include_once 'commons/content.php';
|
||||
|
||||
// Checking if an error occurred while loading data and parsing the URL.
|
||||
// And if not, enabling special features.
|
||||
$content_error_code = 200;
|
||||
if($content_has_error) {
|
||||
if ($content_has_error) {
|
||||
// TODO: Add condition for the lack of data for an item.
|
||||
if(is_null($filtered_content_index_data)) {
|
||||
if (is_null($filtered_content_index_data)) {
|
||||
// Failed to get a display type or to extract types.
|
||||
header("HTTP/1.1 400 Bad Request");
|
||||
$content_error_code = 400;
|
||||
@@ -18,167 +21,148 @@ if($content_has_error) {
|
||||
header("HTTP/1.1 500 Internal Server Error");
|
||||
$content_error_code = 500;
|
||||
}
|
||||
} else {
|
||||
$enable_code_highlight = true;
|
||||
$enable_glider = true;
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?php echo($user_language); ?>">
|
||||
<head>
|
||||
<?php
|
||||
include 'headers.php';
|
||||
// Remark: The 'glider' and 'highlight.js' stylesheets are included here.
|
||||
include 'commons/DOM/head.php';
|
||||
|
||||
// Setting up the page's title, description and opengraph tags.
|
||||
if($content_has_error) {
|
||||
echo('<title>' . localize("error.content.title.generic") . ' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="'.$content_error_message.'">');
|
||||
echo('<meta property="og:title" content="Nibble Poker - '.localize("error.content.title.generic").'" />');
|
||||
echo('<meta property="og:description" content="'.$content_error_message.'"/>');
|
||||
echo('<meta property="og:type" content="website" />');
|
||||
echo('<meta property="og:url" content="' . $host_uri . '" />');
|
||||
echo('<meta property="og:image" content="' . $host_uri . '/resources/Azias/logos/v2_opengraph.png"/>');
|
||||
echo('<meta property="og:image:type" content="image/png"/>');
|
||||
} else {
|
||||
if($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
echo('<title>'.$content->get_head_title().' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="'.$content->get_head_description().'">');
|
||||
echo($content->get_opengraph_tags("Nibble Poker - ", "website", $host_uri,
|
||||
null, $host_uri . "/resources/Azias/logos/v2_opengraph.png"));
|
||||
} else {
|
||||
echo('<title>' . localize("content.title.search.card") . ' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="">');
|
||||
echo('<meta property="og:title" content="Nibble Poker - '.localize("content.title.search.card").'" />');
|
||||
echo('<meta property="og:description" content=""/>');
|
||||
echo('<meta property="og:type" content="website" />');
|
||||
echo('<meta property="og:url" content="' . $host_uri . '" />');
|
||||
echo('<meta property="og:image" content="' . $host_uri . '/resources/Azias/logos/v2_opengraph.png"/>');
|
||||
echo('<meta property="og:image:type" content="image/png"/>');
|
||||
}
|
||||
}
|
||||
?>
|
||||
<link href="/resources/GliderJs/1.7.6/glider.min.css" rel="stylesheet" />
|
||||
<link href="/resources/HighlightJS/11.6.0/styles/atom-one-dark.min.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body class="with-custom-webkit-scrollbars with-custom-css-scrollbars dark-mode" data-dm-shortcut-enabled="true" data-sidebar-shortcut-enabled="true">
|
||||
<?php include 'body-root.php'; ?>
|
||||
<div class="page-wrapper with-sidebar with-navbar-fixed-bottom">
|
||||
<?php $SIDEBAR_ID = 'blog'; include 'sidebar.php'; ?>
|
||||
<div class="content-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div id="page-title-bar" class="card p-0 pl-20 m-0 square-corners bg-very-dark title-bkgd navbar">
|
||||
<h2 class="content-title font-size-24 mt-20 text-truncate">
|
||||
<i class="fad fa-briefcase"></i> <?php
|
||||
if($content_has_error) {
|
||||
echo('<span class="hidden-xs-and-down">'.localize("content.title.content").'<span class="mx-10">❱</span></span>'.localize("content.title.error"));
|
||||
} elseif($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
echo(localize("content.title.content").'<span class="hidden-xs-and-down"><span class="mx-10">❱</span>'.localize("content.title.search.header").'</span>');
|
||||
// Preparing values for the head's tags.
|
||||
if ($content_has_error) {
|
||||
$content_head_title = localize("content.error.head.title");
|
||||
$content_head_description = $content_error_message;
|
||||
$content_head_og_title = localize("content.error.og.title");
|
||||
$content_head_og_description = $content_error_message;
|
||||
} elseif($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
echo('<span class="hidden-xs-and-down">'.localize("content.title.content").'<span class="mx-10">❱</span></span>'.$content->get_head_title());
|
||||
$content_head_title =
|
||||
localize("content.item.head.title.prefix") .
|
||||
$content->get_head_title() .
|
||||
localize("content.item.head.title.suffix");
|
||||
$content_head_description = $content->get_head_description();
|
||||
$content_head_title =
|
||||
localize("content.item.og.title.prefix") .
|
||||
$content->get_head_title() .
|
||||
localize("content.item.og.title.suffix");
|
||||
$content_head_og_description = $content->get_head_description();
|
||||
} elseif($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
$content_head_title = localize("content.search.head.title");
|
||||
$content_head_description = localize("content.search.head.description");;
|
||||
$content_head_og_title = localize("content.search.og.title");;
|
||||
$content_head_og_description = localize("content.search.og.description");;
|
||||
}
|
||||
|
||||
// TODO: Fix the OG URL tag to add the tags !
|
||||
?>
|
||||
</h2>
|
||||
<?php include 'header-lang.php'; ?>
|
||||
</div>
|
||||
<div class="content mx-auto w-lg-p90">
|
||||
<title><?php echo($content_head_title); ?></title>
|
||||
<meta name="description" content="<?php echo($content_head_description); ?>">
|
||||
<meta property="og:title" content="<?php echo($content_head_og_title); ?>"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="<?php echo($host_uri . l10n_url_abs('/')); ?>"/>
|
||||
<meta property="og:image" content="<?php echo($host_uri); ?>/resources/NibblePoker/images/logos/v2_opengraph.png"/>
|
||||
<meta property="og:image:type" content="image/png"/>
|
||||
<meta property="og:description" content="<?php echo($content_head_og_description); ?>"/>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
include 'commons/DOM/utils.php';
|
||||
include 'commons/DOM/body-1.php';
|
||||
$SIDEBAR_ID = 'home';
|
||||
include 'commons/DOM/sidebar.php';
|
||||
include 'commons/DOM/body-2.php';
|
||||
?>
|
||||
<header class="w-full p-m pl-s">
|
||||
<h1 class="t-size-18 t-w-500">
|
||||
<img src="/resources/Icons8/Fluent/console.svg" alt="todo"
|
||||
class="img-text"> <?php print(localize("home.header.title")); ?>
|
||||
</h1>
|
||||
<?php //include 'header-lang.php'; ?>
|
||||
</header>
|
||||
<?php include 'commons/DOM/body-3.php'; ?>
|
||||
<main id="main" class="rl-m border border-r-0 p-l">
|
||||
|
||||
<?php
|
||||
// Checking if an error occurred.
|
||||
if($content_error_code != 200) {
|
||||
// #############
|
||||
// Error card
|
||||
// #############
|
||||
start_content_card("fad fa-exclamation-triangle", localize('error.content.title.generic'), "");
|
||||
echo('<div class="py-20 bg-light-lm rounded-bottom px-0 bg-very-dark title-bkgd">');
|
||||
echo('<h3 class="m-0 font-size-20 text-center font-weight-semi-bold">'.$content_error_message.'</h3>');
|
||||
echo('</div>');
|
||||
echo('<div class="px-card py-10 bg-light-lm bg-dark-dm rounded-bottom border-top">'.
|
||||
'<p class="font-size-12 m-0 text-super-muted">'.
|
||||
'Card footer here.'.
|
||||
'</p></div>');
|
||||
end_content_card();
|
||||
if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
makeMainHeader(localize("content.error.heading.main.search"), "fad fa-exclamation-triangle");
|
||||
} elseif($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
makeMainHeader(localize("content.error.heading.main.content"), "fad fa-exclamation-triangle");
|
||||
} else {
|
||||
makeMainHeader(localize("content.error.heading.main.fallback"), "fad fa-exclamation-triangle");
|
||||
}
|
||||
|
||||
echo('<h3 class="mt-m t-size-18 t-center content-error-text mx-auto">' . $content_error_message . '</h3>');
|
||||
|
||||
goto content_printing_end;
|
||||
}
|
||||
|
||||
// Printing the containers
|
||||
if($requested_content_display_type == ContentDisplayType::SEARCH) {
|
||||
// #############
|
||||
// Search page
|
||||
// #############
|
||||
start_content_card(
|
||||
"fad fa-file-search",
|
||||
localize("content.title.search.card"),
|
||||
strval(count($filtered_content_index_data)) . " " .
|
||||
(count($filtered_content_index_data) > 1 ?
|
||||
// We are handling a content search with at least one result.
|
||||
|
||||
// Making the header with the amount of results.
|
||||
makeMainHeader(localize("content.search.heading.main"), "fad fa-file-search",
|
||||
count($filtered_content_index_data) . " " . (
|
||||
count($filtered_content_index_data) > 1 ?
|
||||
localize("content.search.count.multiple") :
|
||||
localize("content.search.count.single")));
|
||||
echo('<div class="py-20 bg-light-lm rounded-bottom px-0 bg-very-dark title-bkgd">');
|
||||
for($i = 0; $i < count($filtered_content_index_data); $i++) {
|
||||
if($i > 0) {
|
||||
echo('<div class="sidebar-divider m-20 mx-0"></div>');
|
||||
}
|
||||
echo('<div class="content m-0 mx-20">');
|
||||
|
||||
// https://css-tricks.com/float-an-element-to-the-bottom-corner/
|
||||
echo('<div class="content-presentation-container">');
|
||||
echo('<a href="'.l10n_url_abs("/content/".$filtered_content_index_data[$i]["id"]).'"><div>');
|
||||
echo('<div class="content-search-image-container">');
|
||||
echo('<img class="content-search-image" src="'.$filtered_content_index_data[$i]["image"].'">');
|
||||
echo('</div>');
|
||||
echo('<h3 class="font-size-18 mb-5 font-weight-semi-bold content-search-title">'.$filtered_content_index_data[$i]["title"][$user_language].'</h3>');
|
||||
echo($filtered_content_index_data[$i]["preamble"][$user_language]);
|
||||
echo('</div></a>');
|
||||
echo('</div>');
|
||||
// Printing the entry for each piece of relevant content.
|
||||
for($iContent = 0; $iContent < count($filtered_content_index_data); $iContent++) {
|
||||
$current_content = $filtered_content_index_data[$iContent];
|
||||
|
||||
if($iContent > 0) {
|
||||
echo('<hr class="subtle">');
|
||||
|
||||
echo('<div class="d-flex flex-wrap">');
|
||||
echo('<div class="content-tag-container">');
|
||||
echo('<i class="fad fa-tags"></i>');
|
||||
for($j = 0; $j < count($filtered_content_index_data[$i]["tags"]); $j++) {
|
||||
echo('<a href="'.l10n_url_abs("/content/?tags=".$filtered_content_index_data[$i]["tags"][$j]).'" class="content-tag">#');
|
||||
echo($filtered_content_index_data[$i]["tags"][$j].'</a>');
|
||||
}
|
||||
echo('</div>');
|
||||
echo('</div>');
|
||||
|
||||
echo('<div class="p-s">');
|
||||
echo('<a class="casper-link" href="'.l10n_url_abs("/content/".$current_content["id"]).'">');
|
||||
echo('<div class="content-search-entry">');
|
||||
|
||||
echo('<img class="content-search-image mr-s r-l" src="' . $current_content["image"] . '">');
|
||||
echo('<h3 class="mb-xs">' . $current_content["title"][$user_language] . '</h3>');
|
||||
echo('<p>' . $current_content["preamble"][$user_language] . '</p>');
|
||||
|
||||
echo('</div>');
|
||||
echo('</a>');
|
||||
|
||||
echo('<p class="mt-xs"><i class="fad fa-tags t-size-8"></i>');
|
||||
for($iContentTag = 0; $iContentTag < count($current_content["tags"]); $iContentTag++) {
|
||||
echo('<a href="' . l10n_url_abs("/content/?tags=".$current_content["tags"][$iContentTag]) .
|
||||
'" class="ml-xs">#' . $current_content["tags"][$iContentTag] . '</a>');
|
||||
}
|
||||
echo('</p>');
|
||||
|
||||
echo('</div>');
|
||||
echo('<div class="px-card py-10 bg-light-lm bg-dark-dm rounded-bottom border-top">'.
|
||||
'<p class="font-size-12 m-0 text-super-muted">'.
|
||||
'Card footer here.'.
|
||||
'</p></div>');
|
||||
end_content_card();
|
||||
|
||||
}
|
||||
|
||||
// // Printing the tags used in the search and others that may be available.
|
||||
|
||||
} elseif($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
// ##############
|
||||
// Content page
|
||||
// ##############
|
||||
echo($content->get_html());
|
||||
}
|
||||
|
||||
// Label used when there is an error to skip the content printing parts.
|
||||
content_printing_end:
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Custom modal, see: https://dev.to/nicm42/fading-in-and-fading-out-with-css-transitions-3lc1 -->
|
||||
|
||||
<div class="modal" id="modal-content-image-viewer" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content modal-content-media w-three-quarter">
|
||||
<a id="modal-img-close" href="#" class="close" role="button" aria-label="Close">
|
||||
<span aria-hidden="true"><i class="fad fa-times"></i></span>
|
||||
</a>
|
||||
<img id="modal-img" src="/resources/Azias/imgs/placeholder.png" class="img-fluid ml-auto mr-auto" alt="modal-img">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||
</div>
|
||||
<script src="/resources/HalfMoon/1.1.1/js/halfmoon.min.js"></script>
|
||||
<script src="/resources/GliderJs/1.7.6/glider.min.js"></script>
|
||||
<script src="/resources/HighlightJS/11.6.0/highlight.min.js"></script>
|
||||
<script src="/resources/HighlightJS/11.6.0/languages/csharp.min.js"></script>
|
||||
<script src="/resources/Azias/js/nibblepoker.lu.js"></script>
|
||||
<script src="/resources/Azias/js/code-highlighter.js"></script>
|
||||
</main>
|
||||
<?php
|
||||
include 'commons/DOM/body-4.php';
|
||||
include 'commons/DOM/footer.php';
|
||||
include 'commons/DOM/body-5.php';
|
||||
include 'commons/DOM/scripts.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$end_time = microtime(true);
|
||||
if($print_execution_timer) {
|
||||
echo("<!-- PHP execution took " . round(($end_time - $start_time) * 1000, 2) . " ms -->");
|
||||
}
|
||||
?>
|
@@ -484,7 +484,7 @@
|
||||
{
|
||||
"type": "container",
|
||||
"padding": 20,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"modifiers": ["no-top-padding"],
|
||||
"parts": [
|
||||
{"type": "h1", "content": "links.title"},
|
||||
{
|
||||
|
BIN
favicon.ico
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 24 KiB |
302
index.php
@@ -1,238 +1,94 @@
|
||||
<?php
|
||||
set_include_path('./commons/');
|
||||
include_once 'config.php';
|
||||
include_once 'langs.php';
|
||||
$start_time = microtime(true);
|
||||
set_include_path('./');
|
||||
include_once 'commons/config.php';
|
||||
include_once 'commons/langs.php';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?php echo($user_language); ?>">
|
||||
<head>
|
||||
<?php include 'headers.php'; ?>
|
||||
<title>Nibble Poker</title>
|
||||
<meta name="description" content="<?php print(localize('home.intro.meta.description')); ?>">
|
||||
<meta property="og:title" content="Nibble Poker" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="<?php echo($host_uri); ?>/" />
|
||||
<meta property="og:image" content="<?php echo($host_uri); ?>/resources/Azias/logos/opengraph.png"/>
|
||||
<?php include 'commons/DOM/head.php'; ?>
|
||||
<title><?php print(localize('home.head.title')); ?></title>
|
||||
<meta name="description" content="<?php print(localize('home.head.description')); ?>">
|
||||
<meta property="og:title" content="<?php print(localize('home.og.title')); ?>"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="<?php echo($host_uri . l10n_url_abs('/')); ?>"/>
|
||||
<meta property="og:image" content="<?php echo($host_uri); ?>/resources/NibblePoker/images/logos/v2_opengraph.png"/>
|
||||
<meta property="og:image:type" content="image/png"/>
|
||||
<meta property="og:description" content="<?php print(localize('home.intro.meta.description')); ?>"/>
|
||||
<meta property="og:description" content="<?php print(localize('home.og.description')); ?>"/>
|
||||
</head>
|
||||
<body class="with-custom-webkit-scrollbars with-custom-css-scrollbars dark-mode" data-dm-shortcut-enabled="true" data-sidebar-shortcut-enabled="true">
|
||||
<?php include 'body-root.php'; ?>
|
||||
<div class="page-wrapper with-sidebar with-navbar-fixed-bottom">
|
||||
<?php $SIDEBAR_ID = 'home'; include 'sidebar.php'; ?>
|
||||
<div class="content-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div id="page-title-bar" class="card p-0 pl-20 m-0 square-corners bg-very-dark title-bkgd navbar">
|
||||
<h2 class="content-title font-size-24 mt-20 text-truncate">
|
||||
<i class="fad fa-home"></i> <?php print(localize("home.title.header")); ?>
|
||||
</h2>
|
||||
<?php include 'header-lang.php'; ?>
|
||||
</div>
|
||||
<div class="row mx-auto w-95">
|
||||
<!-- The "content mx-auto w-lg-p90" do not work for the parent, the cards are different ! -->
|
||||
<div class="col-12 d-block">
|
||||
<div class="content mb-0">
|
||||
<div class="card p-0 m-0 card-bkgd">
|
||||
<div class="content m-0">
|
||||
<div class="px-card py-10 border-bottom px-20 bg-light-lm bg-very-dark-dm">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-1 text-center"><i class="fad fa-alien-monster"></i></div>
|
||||
<div class="col-10 text-center">
|
||||
<h2 class="card-title font-size-18 m-0"><?php print(localize("home.intro.title")); ?></h2>
|
||||
</div>
|
||||
<div class="col-1 text-center"><i class="fad fa-alien-monster"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content m-20">
|
||||
<h2 class="content-title font-size-20 mb-10"></h2>
|
||||
<p class="ml-lg-10 mt-lg-5 mb-lg-5"><?php print(localize("home.intro.text.1")); ?></p>
|
||||
<p class="ml-lg-10 mt-lg-5"><?php print(localize("home.intro.text.2")); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mx-auto w-95">
|
||||
<!--<div class="row mx-auto w-lg-p90">-->
|
||||
<div class="col-sm-12 col-lg-8 table-cell">
|
||||
<div class="content mb-0">
|
||||
<div class="card p-0 m-0 card-bkgd">
|
||||
<div class="content m-0">
|
||||
<body>
|
||||
<?php
|
||||
include 'commons/DOM/utils.php';
|
||||
include 'commons/DOM/body-1.php';
|
||||
$SIDEBAR_ID = 'home';
|
||||
include 'commons/DOM/sidebar.php';
|
||||
include 'commons/DOM/body-2.php';
|
||||
?>
|
||||
<header class="w-full p-m pl-s">
|
||||
<h1 class="t-size-18 t-w-500">
|
||||
<img src="/resources/Icons8/Fluent/console.svg" alt="todo" class="img-text"> <?php print(localize("home.header.title")); ?>
|
||||
</h1>
|
||||
<?php //include 'header-lang.php'; ?>
|
||||
</header>
|
||||
<?php include 'commons/DOM/body-3.php'; ?>
|
||||
<main id="main" class="rl-m border border-r-0 p-l">
|
||||
|
||||
<div class="px-card py-10 border-bottom px-20 bg-light-lm bg-very-dark-dm">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-1"><i class="fad fa-computer-classic"></i></div>
|
||||
<div class="col-10 text-center">
|
||||
<h2 class="card-title font-size-18 m-0">Applications</h2>
|
||||
</div>
|
||||
<div class="col-1 text-right"><i class="fad fa-computer-classic"></i></div>
|
||||
</div>
|
||||
<?php makeMainHeader(localize("home.intro.title")); ?>
|
||||
<p class="mt-xs ml-s"><?php print(localize("home.intro.text.1")); ?></p>
|
||||
<p class="mt-xs ml-s"><?php print(localize("home.intro.text.2")); ?></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<?php makeMainHeader("Applications"); ?>
|
||||
<!-- If 'r-*' is used, 'o-hidden' needs to be too => https://stackoverflow.com/a/8582304 -->
|
||||
<table class="stylish w-full mt-xs table-p-xs r-s o-hidden border">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Version</th>
|
||||
<th>Downloads</th>
|
||||
<th>Downloads</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>C11</td>
|
||||
<td>C12</td>
|
||||
<td>C13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C21</td>
|
||||
<td>C22</td>
|
||||
<td>C23</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="px-card py-5 px-20">
|
||||
<div class="pl-lg-15 l-lab-dotnet">
|
||||
<p class="mb-0 font-weight-semi-bold">
|
||||
DotNet-ListComPort
|
||||
<span class="ml-15 text-super-muted">
|
||||
<i class="fab fa-windows"></i>
|
||||
</span>
|
||||
</p>
|
||||
<p class="ml-5 mt-0">
|
||||
Cli tool that lists COM ports in different parsable formats.<br>
|
||||
<span class="pr-20">
|
||||
<i class="fad fa-globe"></i> <a href="https://github.com/aziascreations/DotNet-ListComPort">GitHub</a>
|
||||
</span>
|
||||
<i class="fad fa-globe"></i> <a href="<?php echo(l10n_url_abs("/content/lscom-cli-dotnet")); ?>">Project's page</a>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<?php makeMainHeader("Testing"); ?>
|
||||
<p class="mt-xs ml-s"><?php print(localize("home.intro.text.1")); ?></p>
|
||||
<br>
|
||||
<button class="p-xs border r-s">aaa</button>
|
||||
<br>
|
||||
<input class="p-xs border r-s" type="text">
|
||||
<br>
|
||||
|
||||
<div class="pl-lg-15 l-lab-web">
|
||||
<p class="mb-0 font-weight-semi-bold">
|
||||
Youtube-Auto-Archiver
|
||||
<span class="ml-15 text-super-muted">
|
||||
<i class="fab fa-windows"></i>
|
||||
<i class="fab fa-linux"></i>
|
||||
<i class="fab fa-docker"></i>
|
||||
</span>
|
||||
<?php makeMainHeader(localize("home.intro.title")); ?>
|
||||
<p class="mt-xs ml-s">
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed <span class="code">do eiusmod tempor</span> incididunt ut labore et dolore magna aliqua.<br>
|
||||
Mauris ultrices eros in cursus turpis massa tincidunt dui.<br>
|
||||
Pulvinar elementum integer enim neque. Nunc mi ipsum faucibus vitae aliquet nec.
|
||||
</p>
|
||||
<p class="ml-5 mt-0">
|
||||
Automatic archival solutions for YouTube livestreams and uploads.<br>
|
||||
<span class="pr-20">
|
||||
<i class="fad fa-globe"></i> <a href="https://github.com/aziascreations/Youtube-Auto-Archiver">GitHub</a>
|
||||
</span>
|
||||
<i class="fad fa-globe"></i> <a href="<?php echo(l10n_url_abs("/content/youtube-auto-archiver")); ?>">Project's page</a>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="pl-lg-15 l-lab-office">
|
||||
<p class="mb-0 font-weight-semi-bold">
|
||||
Excel-Worksheet-Password-Remover
|
||||
<span class="ml-15 text-super-muted">
|
||||
<i class="fab fa-chrome"></i>
|
||||
<i class="fab fa-firefox-browser"></i>
|
||||
</span>
|
||||
</p>
|
||||
<p class="ml-5 mt-0">
|
||||
Web-based tool that simplifies the removal of passwords on Excel's Worksheet.<br>
|
||||
<span class="pr-20">
|
||||
<i class="fad fa-globe"></i> <a href="https://github.com/aziascreations/Excel-Worksheet-Password-Remover">GitHub</a>
|
||||
</span>
|
||||
<i class="fad fa-globe"></i> <a href="<?php echo(l10n_url_abs("/content/excel-worksheet-password-remover")); ?>">Project's page</a>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="pl-lg-15 l-lab-game">
|
||||
<p class="mb-0 font-weight-semi-bold">
|
||||
Minecraft - Expanded Iron Bundles
|
||||
<span class="ml-15 text-super-muted">
|
||||
<i class="fas fa-gamepad-alt"></i>
|
||||
</span>
|
||||
</p>
|
||||
<p class="ml-5 mt-0">
|
||||
A small Minecraft mod that provides bundles with more storage space, and new functionalities in the future.<br>
|
||||
<span class="pr-20">
|
||||
<i class="fad fa-globe"></i> <a href="https://github.com/aziascreations/MC-Expanded-Iron-Bundles">GitHub</a>
|
||||
</span>
|
||||
<i class="fad fa-globe"></i> <a href="<?php echo(l10n_url_abs("/content/mc-expanded-iron-bundles")); ?>">Project's page</a>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="pl-lg-15 l-lab-app">
|
||||
<p class="mb-0 font-weight-semi-bold">
|
||||
DotNet-Arguments
|
||||
<span class="ml-15 text-super-muted">
|
||||
<i class="fa fa-puzzle-piece"></i>
|
||||
<i class="fab fa-windows"></i>
|
||||
<i class="fab fa-linux"></i>
|
||||
<i class="fab fa-docker"></i>
|
||||
</span>
|
||||
</p>
|
||||
<p class="ml-5 mt-0">
|
||||
A simple and 'to-the-point' library to parse launch arguments in .NET and .NET Core applications.<br>
|
||||
<span class="pr-20">
|
||||
<i class="fad fa-globe"></i> <a href="https://github.com/aziascreations/DotNet-Arguments">GitHub</a>
|
||||
</span>
|
||||
<i class="fad fa-globe"></i> <a href="<?php echo(l10n_url_abs("/content/dotnet-arguments")); ?>">Project's page</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<a href="<?php print(l10n_url_abs('/content/')); ?>">
|
||||
<div class="container-card-fold primary">
|
||||
<i class="fas fa-angle-right r-45"></i>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-lg-4 table-cell"><!--d-none d-sm-block-->
|
||||
<div class="content ml-lg-0">
|
||||
<div class="card p-0 m-0 card-bkgd">
|
||||
<div class="content m-0">
|
||||
<div class="px-card py-10 border-bottom px-20 bg-light-lm bg-very-dark-dm">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-1">
|
||||
<i class="fad fa-pen-nib fa-flip-horizontal"></i>
|
||||
</div>
|
||||
<div class="col-10 text-center">
|
||||
<h2 class="card-title font-size-18 m-0">Updates</h2>
|
||||
</div>
|
||||
<div class="col-1 text-right"><i class="fad fa-pen-nib"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-5 px-20">
|
||||
<p>
|
||||
<span class="font-weight-bold">9th September 2022</span><br>
|
||||
Moved to v6Node and updated privacy policy to reflect the changes.
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
<span class="font-weight-bold">25th July 2022</span><br>
|
||||
Finished setting up a public read-only Gitea instance for the projects.
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
<span class="font-weight-bold">16th April 2022</span><br>
|
||||
Finished the <i>"Project"</i> section
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
<span class="font-weight-bold">18th March 2022</span><br>
|
||||
Updated the privacy policy.
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
<span class="font-weight-bold">28th February 2022</span><br>
|
||||
Dropped OVH as our main web hosting provider, and switched to CloudFlare.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include 'footer.php'; ?>
|
||||
</div>
|
||||
<script src="/resources/HalfMoon/1.1.1/js/halfmoon.min.js"></script>
|
||||
<script src="/resources/Azias/js/nibblepoker.lu.js"></script>
|
||||
</main>
|
||||
<?php
|
||||
include 'commons/DOM/body-4.php';
|
||||
include 'commons/DOM/footer.php';
|
||||
include 'commons/DOM/body-5.php';
|
||||
include 'commons/DOM/scripts.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$end_time = microtime(true);
|
||||
if($print_execution_timer) {
|
||||
echo("<!-- PHP execution took " . round(($end_time - $start_time) * 1000, 2) . " ms -->");
|
||||
}
|
||||
?>
|
@@ -1,281 +1,223 @@
|
||||
<?php
|
||||
set_include_path('../commons/');
|
||||
include_once 'config.php';
|
||||
include_once 'langs.php';
|
||||
$start_time = microtime(true);
|
||||
set_include_path('../');
|
||||
include_once 'commons/config.php';
|
||||
include_once 'commons/langs.php';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?php echo($user_language); ?>">
|
||||
<head>
|
||||
<?php include 'headers.php'; ?>
|
||||
<title><?php print(localize('privacy.title')); ?> - Nibble Poker</title>
|
||||
<meta name="description" content="<?php print(localize('privacy.description')); ?>">
|
||||
<meta property="og:title" content="Nibble Poker - <?php print(localize('privacy.title')); ?>" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="<?php echo($host_uri); ?>/" />
|
||||
<meta property="og:image" content="<?php echo($host_uri); ?>/resources/Azias/logos/v2_opengraph.png"/>
|
||||
<?php include 'commons/DOM/head.php'; ?>
|
||||
<title><?php print(localize('privacy.head.title')); ?></title>
|
||||
<meta name="description" content="<?php print(localize('privacy.head.description')); ?>">
|
||||
<meta property="og:title" content="<?php print(localize('privacy.og.title')); ?>"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="<?php echo($host_uri . l10n_url_abs('/privacy/')); ?>"/>
|
||||
<meta property="og:image" content="<?php echo($host_uri); ?>/resources/NibblePoker/images/logos/v2_opengraph.png"/>
|
||||
<meta property="og:image:type" content="image/png"/>
|
||||
<meta property="og:description" content="<?php print(localize('privacy.description')); ?>"/>
|
||||
<meta property="og:description" content="<?php print(localize('privacy.og.description')); ?>"/>
|
||||
</head>
|
||||
<body class="with-custom-webkit-scrollbars with-custom-css-scrollbars dark-mode" data-dm-shortcut-enabled="true" data-sidebar-shortcut-enabled="true">
|
||||
<?php include 'body-root.php'; ?>
|
||||
<div class="page-wrapper with-sidebar with-navbar-fixed-bottom">
|
||||
<?php include 'sidebar.php'; ?>
|
||||
<div class="content-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div id="page-title-bar" class="card p-0 pl-20 m-0 square-corners bg-very-dark title-bkgd navbar">
|
||||
<h2 class="content-title font-size-24 mt-20 text-truncate">
|
||||
<i class="fad fa-user-secret"></i> <?php print(localize('privacy.title')); ?>
|
||||
</h2>
|
||||
<?php include 'header-lang.php'; ?>
|
||||
</div>
|
||||
<div class="content mx-auto w-lg-p90">
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-info"></i> <?php print(localize('privacy.introduction.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0 mb-5">
|
||||
<?php print(localize('privacy.introduction.text.1')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 m-0">
|
||||
<?php print(localize('privacy.introduction.text.2')); ?><br>
|
||||
<i class="fad fa-globe ml-10"></i>
|
||||
<body>
|
||||
<?php
|
||||
include 'commons/DOM/utils.php';
|
||||
include 'commons/DOM/body-1.php';
|
||||
$SIDEBAR_ID = 'privacy';
|
||||
include 'commons/DOM/sidebar.php';
|
||||
include 'commons/DOM/body-2.php';
|
||||
?>
|
||||
<header class="w-full p-m pl-s">
|
||||
<h1 class="t-size-18 t-w-500">
|
||||
<img src="/resources/Icons8/Fluent/console.svg" alt="todo"
|
||||
class="img-text"> <?php print(localize("privacy.header.title")); ?>
|
||||
</h1>
|
||||
<?php //include 'header-lang.php'; ?>
|
||||
</header>
|
||||
<?php include 'commons/DOM/body-3.php'; ?>
|
||||
<main id="main" class="rl-m border border-r-0 p-l">
|
||||
|
||||
<?php makeMainHeader(localize("privacy.introduction.title"), "fad fa-info"); ?>
|
||||
<p class="mt-xs ml-s"><?php print(localize("privacy.introduction.text.1")); ?></p>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize("privacy.introduction.text.2")); ?>
|
||||
<br><i class="fad fa-globe ml-s t-size-8"></i>
|
||||
<a href="https://gdpr.eu/privacy-notice/">
|
||||
https://gdpr.eu/
|
||||
</a><br>
|
||||
<i class="fad fa-globe ml-10"></i>
|
||||
<i class="fad fa-globe ml-s t-size-8"></i>
|
||||
<a href="https://eur-lex.europa.eu/legal-content/ALL/?uri=CELEX%3A32016R0679">
|
||||
https://eur-lex.europa.eu/
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-database"></i> <?php print(localize('privacy.v2.data.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0">
|
||||
|
||||
<?php makeMainHeader(localize("privacy.v2.data.title"), "fad fa-database"); ?>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.intro.1')); ?>
|
||||
<br>
|
||||
<?php print(localize('privacy.v2.data.intro.2')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.private.1')); ?><br>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.data.private_list.1')); ?><br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.data.private_list.1')); ?>
|
||||
</span>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.data.private_list.2')); ?><br>
|
||||
<br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.data.private_list.2')); ?>
|
||||
</span>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.non_private.1')); ?><br>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.data.non_private_list.1')); ?><br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.data.non_private_list.1')); ?>
|
||||
</span>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.data.non_private_list.2')); ?><br>
|
||||
<br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.data.non_private_list.2')); ?>
|
||||
</span>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.end.1')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.end.2')); ?><br>
|
||||
<?php print(localize('privacy.v2.data.end.3')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.end.4')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.data.end.5')); ?><br>
|
||||
<?php print(localize('privacy.v2.data.end.6')); ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-handshake"></i> <?php print(localize('privacy.v2.third.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0">
|
||||
<?php makeMainHeader(localize("privacy.v2.third.title"), "fad fa-handshake"); ?>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.third.intro.1')); ?><br>
|
||||
<?php print(localize('privacy.v2.third.intro.2')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.third.intro.3')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.third.intro.4')); ?><br>
|
||||
<i class="fad fa-globe ml-10"></i>
|
||||
<i class="fad fa-globe ml-s t-size-8"></i>
|
||||
<a href="https://v6node.com/legal">
|
||||
https://v6node.com/legal
|
||||
</a>
|
||||
<span class="ml-5">(<?php print(localize('lang.english')); ?> & <?php print(localize('lang.german')); ?>)</span><br>
|
||||
<i class="fad fa-globe ml-10"></i>
|
||||
<span class="ml-s">(<?php print(localize('lang.english')); ?> & <?php print(localize('lang.german')); ?>)</span><br>
|
||||
<i class="fad fa-globe ml-s t-size-8"></i>
|
||||
<a href="https://v6node.b-cdn.net/legal/dataprotection.pdf">
|
||||
https://v6node.b-cdn.net/legal/dataprotection.pdf
|
||||
</a>
|
||||
<span class="ml-5">(<?php print(localize('lang.german')); ?>)</span><br>
|
||||
<span class="ml-s">(<?php print(localize('lang.german')); ?>)</span><br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-cookie-bite"></i> <?php print(localize('privacy.v2.cookies.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0">
|
||||
<?php makeMainHeader(localize("privacy.v2.cookies.title"), "fad fa-cookie-bite"); ?>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.cookies.intro.1')); ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-sync-alt"></i> <?php print(localize('privacy.update.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0">
|
||||
<?php makeMainHeader(localize("privacy.v2.update.title"), "fad fa-sync-alt"); ?>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.update.intro.1')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<i class="fad fa-calendar-alt"></i> <?php print(localize('privacy.v2.update.history.1.date')); ?>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-globe"></i> <a href="/privacy/privacy_2021-12-04_en.txt"><?php print(localize('lang.english')); ?></a>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-globe t-size-8"></i> <a href="/privacy/privacy_2021-12-04_en.txt"><?php print(localize('lang.english')); ?></a>
|
||||
</span>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-globe"></i> <a href="/privacy/privacy_2021-12-04_fr.txt"><?php print(localize('lang.french')); ?></a>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-globe t-size-8"></i> <a href="/privacy/privacy_2021-12-04_fr.txt"><?php print(localize('lang.french')); ?></a>
|
||||
</span>
|
||||
<br>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.1.desc.1')); ?><br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.1.desc.1')); ?><br>
|
||||
</span>
|
||||
</p>
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<i class="fad fa-calendar-alt"></i> <?php print(localize('privacy.v2.update.history.2.date')); ?>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-globe"></i> <a href="/privacy/privacy_2022-03-18_en.txt"><?php print(localize('lang.english')); ?></a>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-globe t-size-8"></i> <a href="/privacy/privacy_2022-03-18_en.txt"><?php print(localize('lang.english')); ?></a>
|
||||
</span>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-globe"></i> <a href="/privacy/privacy_2022-03-18_fr.txt"><?php print(localize('lang.french')); ?></a>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-globe t-size-8"></i> <a href="/privacy/privacy_2022-03-18_fr.txt"><?php print(localize('lang.french')); ?></a>
|
||||
</span>
|
||||
<br>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.2.desc.1')); ?><br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.2.desc.1')); ?>
|
||||
</span>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.2.desc.2')); ?><br>
|
||||
<br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.2.desc.2')); ?>
|
||||
</span>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.2.desc.3')); ?>
|
||||
<br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.2.desc.3')); ?>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<i class="fad fa-calendar-alt"></i> <?php print(localize('privacy.v2.update.history.3.date')); ?>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-globe"></i> <a href="/privacy/privacy_2022-09-09_en.txt"><?php print(localize('lang.english')); ?></a>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-globe t-size-8"></i> <a href="/privacy/privacy_2022-09-09_en.txt"><?php print(localize('lang.english')); ?></a>
|
||||
</span>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-globe"></i> <a href="/privacy/privacy_2022-09-09_fr.txt"><?php print(localize('lang.french')); ?></a>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-globe t-size-8"></i> <a href="/privacy/privacy_2022-09-09_fr.txt"><?php print(localize('lang.french')); ?></a>
|
||||
</span>
|
||||
<br>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.3.desc.1')); ?><br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.3.desc.1')); ?><br>
|
||||
</span>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.3.desc.1.1')); ?><br>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.3.desc.1.1')); ?><br>
|
||||
</span>
|
||||
<span class="m-0 ml-20">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.3.desc.1.2')); ?><br>
|
||||
<span class="ml-l">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.3.desc.1.2')); ?><br>
|
||||
</span>
|
||||
<span class="m-0 ml-10">
|
||||
<i class="fad fa-circle font-size-8"></i> <?php print(localize('privacy.v2.update.history.3.desc.2')); ?><br>
|
||||
<span class="ml-s">
|
||||
<i class="fad fa-circle t-size-6"></i> <?php print(localize('privacy.v2.update.history.3.desc.2')); ?><br>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class="font-size-12 mb-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.v2.update.end.2')); ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-mailbox"></i> <?php print(localize('privacy.contact.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0">
|
||||
<?php makeMainHeader(localize("privacy.contact.title"), "fad fa-mailbox"); ?>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.contact.text.1')); ?><br>
|
||||
<i class="fad fa-at ml-10"></i>
|
||||
<a href="mailto:herwin.bozet@gmail.com">
|
||||
herwin.bozet@gmail.com
|
||||
</a>
|
||||
<i class="fad fa-at t-size-8 ml-s"></i>
|
||||
<a href="mailto:herwin.bozet@gmail.com">herwin.bozet@gmail.com</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card p-0 mx-0">
|
||||
<div class="px-card py-10 border-bottom px-20">
|
||||
<div class="container-fluid">
|
||||
<h2 class="card-title font-size-18 m-0">
|
||||
<i class="fad fa-gavel"></i> <?php print(localize('privacy.complaint.title')); ?>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-card py-10 bg-light-lm px-20 bg-very-dark title-bkgd">
|
||||
<p class="font-size-12 m-0 mb-5">
|
||||
|
||||
<?php makeMainHeader(localize("privacy.complaint.title"), "fad fa-gavel"); ?>
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.complaint.text.1')); ?>
|
||||
</p>
|
||||
<p class="font-size-12 m-0">
|
||||
<p class="mt-s ml-s">
|
||||
<?php print(localize('privacy.complaint.text.2')); ?><br>
|
||||
<i class="fad fa-globe ml-10"></i>
|
||||
<i class="fad fa-globe t-size-8 ml-s"></i>
|
||||
<a href="https://ec.europa.eu/info/law/law-topic/data-protection/reform/rights-citizens/redress/what-should-i-do-if-i-think-my-personal-data-protection-rights-havent-been-respected_en">
|
||||
https://ec.europa.eu/
|
||||
</a>
|
||||
<span class="ml-5">(<?php print(localize('lang.english')); ?>)</span><br>
|
||||
<i class="fad fa-globe ml-10"></i>
|
||||
<span class="ml-s">(<?php print(localize('lang.english')); ?>)</span><br>
|
||||
<i class="fad fa-globe t-size-8 ml-s"></i>
|
||||
<a href="https://gegevensbeschermingsautoriteit.be/citoyen/agir/introduire-une-plainte">
|
||||
https://gegevensbeschermingsautoriteit.be/
|
||||
</a>
|
||||
<span class="ml-5">(<?php print(localize('lang.french')); ?>)</span><br>
|
||||
<span class="ml-s">(<?php print(localize('lang.french')); ?>)</span><br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include 'footer.php'; ?>
|
||||
</div>
|
||||
<script src="/resources/HalfMoon/1.1.1/js/halfmoon.min.js"></script>
|
||||
<script src="/resources/Azias/js/nibblepoker.lu.js"></script>
|
||||
|
||||
</main>
|
||||
<?php
|
||||
include 'commons/DOM/body-4.php';
|
||||
include 'commons/DOM/footer.php';
|
||||
include 'commons/DOM/body-5.php';
|
||||
include 'commons/DOM/scripts.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$end_time = microtime(true);
|
||||
if ($print_execution_timer) {
|
||||
echo("<!-- PHP execution took " . round(($end_time - $start_time) * 1000, 2) . " ms -->");
|
||||
}
|
||||
?>
|
26
readme.md
@@ -1,28 +1,22 @@
|
||||
# Website - NibblePoker.lu
|
||||
Repository containing the source code for my website.
|
||||
???
|
||||
|
||||
## Preamble
|
||||
This repository is only a mirror and is never cloned and served as-is.
|
||||
|
||||
In the event you wished to mirror and serve it, or modify it, you should make sure
|
||||
the `.git` folder and the other files referenced in the [.dockerignore](.dockerignore)
|
||||
file are properly removed, even if measures are in place to prevent access to them.
|
||||
This repository is only a mirror and should never be cloned and served as-is.
|
||||
|
||||
The [.htaccess](.htaccess) file has been made public **on purpose** since it does not contain any
|
||||
private information and because it could be used by other people to create their website more easily
|
||||
since these configuration files are a nightmare to work with.<br>
|
||||
Especially with the lang redirections.
|
||||
|
||||
It is also a good idea to serve this website through a jailed instance of apache, just in case.
|
||||
|
||||
## Content
|
||||
### Blog
|
||||
Unfinished, but all the files should be contained in the `content/` folder.
|
||||
|
||||
### Honeypot & Tarpits *(Disabled)*
|
||||
### Honeypot & Tarpits
|
||||
There are a couple of files in the `honeypot/` and `tarpit/` folders that are used
|
||||
to serve some basic fake files that are often requested by automated scanners in order
|
||||
to mess with them, or potentially force them to report invalid data.
|
||||
to serve some basic fake files and pages that are often requested by automated scanners in order
|
||||
to mess with them.
|
||||
|
||||
These pages can be removed by deleting the folders and removing the appropriate rules in
|
||||
the [.htaccess](.htaccess) file.
|
||||
@@ -35,3 +29,13 @@ These files are required and need to be installed manually for the website to wo
|
||||
* `/resources/FontAwesomePro/`
|
||||
* Highlight.js v11.6.0
|
||||
* `/resources/HighlightJS/`
|
||||
|
||||
## External Licenses
|
||||
Here is a list of the licenses for any third-party thing included in this repository.
|
||||
|
||||
* [Quantum Font](https://sesohq.sellfy.store/p/3enu/) by [sesohq](https://www.sesohq.com/)
|
||||
* Free font with no apparent usage restrictions.
|
||||
* [GliderJS](https://nickpiscitelli.github.io/Glider.js/)
|
||||
* Uses the [MIT license](https://github.com/NickPiscitelli/Glider.js/blob/master/LICENSE.txt)
|
||||
|
||||
All licenses are also included as-is in their project's respective folder.
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 87 B |
Before Width: | Height: | Size: 427 B |
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 166 B |
Before Width: | Height: | Size: 166 B |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 221 B |
Before Width: | Height: | Size: 221 B |
Before Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 275 B |
Before Width: | Height: | Size: 275 B |
Before Width: | Height: | Size: 213 B |
Before Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 288 B |
Before Width: | Height: | Size: 420 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 283 KiB |
Before Width: | Height: | Size: 223 B |
Before Width: | Height: | Size: 3.1 KiB |
@@ -1,49 +0,0 @@
|
||||
// Highlights the code blocks when included on a page.
|
||||
// This command is separated in its own file since highlight.js isn't on every page and because I can't use JS
|
||||
// in a script element without using an external .js file.
|
||||
|
||||
Array.from(document.getElementsByClassName("code")).forEach(eCodeContainer => {
|
||||
let language = null;
|
||||
|
||||
eCodeContainer.classList.forEach(cCodeContainer => {
|
||||
if(cCodeContainer.startsWith("language-")) {
|
||||
language = cCodeContainer;
|
||||
}
|
||||
});
|
||||
|
||||
if(language !== null) {
|
||||
Array.from(eCodeContainer.children).forEach(eCodeLine => {
|
||||
if(eCodeLine.classList.contains("code-line")) {
|
||||
eCodeLine.classList.add(language);
|
||||
hljs.highlightElement(eCodeLine);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Adding the action to copy the code to elements with the "js-code-copy" class.
|
||||
// The search works by searching the closest parent with the "code" class or that is a "code" element, and then
|
||||
// reading each of its children with the "code-line" class.
|
||||
|
||||
Array.from(document.getElementsByClassName("js-code-copy")).forEach(eCodeCopyButton => {
|
||||
let eParentCodeBlock = eCodeCopyButton;
|
||||
|
||||
while(eParentCodeBlock != null &&!eParentCodeBlock.classList.contains("code") &&
|
||||
eParentCodeBlock.nodeName.toLowerCase() !== "code") {
|
||||
eParentCodeBlock = eParentCodeBlock.parentElement;
|
||||
}
|
||||
|
||||
if(eParentCodeBlock != null) {
|
||||
let code = "";
|
||||
|
||||
Array.from(eParentCodeBlock.children).forEach(eCodeLine => {
|
||||
if(eCodeLine.classList.contains("code-line")) {
|
||||
code += eCodeLine.textContent + "\n"
|
||||
}
|
||||
});
|
||||
|
||||
eCodeCopyButton.onclick = function() {
|
||||
navigator.clipboard.writeText(code);
|
||||
};
|
||||
}
|
||||
});
|
@@ -1,104 +0,0 @@
|
||||
// Toggle button for the side menu. (Global)
|
||||
document.getElementById('button-sidebar').addEventListener("click", () => {
|
||||
halfmoon.toggleSidebar();
|
||||
// TODO: Fix the slide size in gliders
|
||||
});
|
||||
|
||||
// Adding the last URL to every "a" element with the 'js-set-previous-url' class.
|
||||
document.querySelectorAll("a.js-set-previous-url").forEach(element => {
|
||||
element.href = document.referrer;
|
||||
//element.addEventListener('click', function(e) {
|
||||
// window.history.go(-2);
|
||||
//});
|
||||
});
|
||||
|
||||
// TOX ID copiers. (Contact page)
|
||||
if(document.getElementById('button-copy-tox-id-main') != null) {
|
||||
document.getElementById('button-copy-tox-id-main').addEventListener("click", () => {
|
||||
navigator.clipboard.writeText("62C1A91A425F90D7B4F047D70CCF31E7402C9EC37B93604B0F37C416442D15044AF6C1AE033B");
|
||||
});
|
||||
}
|
||||
|
||||
if(document.getElementById('button-copy-tox-id-backup') != null) {
|
||||
document.getElementById('button-copy-tox-id-backup').addEventListener("click", () => {
|
||||
navigator.clipboard.writeText("01ABBD4515C8FA56231333D1022CEEE0A605F4E85F8A945365F56D196A1BBA10FB4DCE08DBE8");
|
||||
});
|
||||
}
|
||||
|
||||
// Creating the galleries from Glider.js
|
||||
window.addEventListener('load', function(){
|
||||
document.querySelectorAll(".glider").forEach(element => {
|
||||
new Glider(element, {
|
||||
slidesToShow: 1,
|
||||
draggable: true,
|
||||
scrollLock: true,
|
||||
scrollLockDelay: 125,
|
||||
rewind: true,
|
||||
arrows: {
|
||||
prev: element.previousSibling,
|
||||
next: element.nextSibling
|
||||
},
|
||||
responsive: [
|
||||
{
|
||||
breakpoint: 768,
|
||||
settings: {
|
||||
slidesToShow: 2,
|
||||
duration: 0.25
|
||||
}
|
||||
},{
|
||||
breakpoint: 992,
|
||||
settings: {
|
||||
slidesToShow: 3,
|
||||
slidesToScroll: 1
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// Processing the images
|
||||
const eImages = [];
|
||||
|
||||
// Converting the Node to a HTMLElement if needed and desired.
|
||||
element.childNodes[0].childNodes.forEach(childrenNode => {
|
||||
if(childrenNode.nodeType !== Node.ELEMENT_NODE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Casting from a Node to a proper HTMLElement because of course we have to add this step in JS...
|
||||
const eChildElement = childrenNode.cloneNode(true);
|
||||
|
||||
if(eChildElement.tagName.toLowerCase() !== "img") {
|
||||
return;
|
||||
}
|
||||
|
||||
eChildElement.onclick = function() {
|
||||
let imageElement = document.getElementById("modal-img");
|
||||
imageElement.src = eChildElement.src;
|
||||
imageElement.alt = eChildElement.alt;
|
||||
halfmoon.toggleModal('modal-content-image-viewer');
|
||||
console.log("Opening image...");
|
||||
};
|
||||
|
||||
// Saving the element for later.
|
||||
eImages.push(eChildElement);
|
||||
});
|
||||
|
||||
// Removing the nodes so that the desired ones can be reinserted later.
|
||||
// We start from the rear to prevent issues with de-ordering as we delete them !
|
||||
for(let i = element.childNodes[0].childNodes.length - 1; i >= 0; i--) {
|
||||
element.childNodes[0].removeChild(element.childNodes[0].childNodes[i]);
|
||||
}
|
||||
|
||||
eImages.forEach(eImageElement => {
|
||||
element.childNodes[0].appendChild(eImageElement);
|
||||
});
|
||||
});
|
||||
|
||||
// The default modal animation looks like ass, jesus...
|
||||
let eImgModalCloseButton = document.getElementById("modal-img-close");
|
||||
if(eImgModalCloseButton != null) {
|
||||
eImgModalCloseButton.onclick = function() {
|
||||
halfmoon.toggleModal('modal-content-image-viewer');
|
||||
}
|
||||
}
|
||||
});
|
@@ -1,21 +0,0 @@
|
||||
/* Halfmoon > Background */
|
||||
|
||||
div#body-overlay {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url("/resources/Azias/imgs/3px-tile.png");
|
||||
opacity: 0.3;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.dark-mode .card.card-bkgd {
|
||||
background: var(--dm-card-bg-color) url("/resources/Azias/imgs/3px-tile-0.2.png") repeat fixed center center;
|
||||
}
|
||||
|
||||
.bg-very-dark.title-bkgd {
|
||||
background: repeat center center fixed;
|
||||
background-color: var(--dark-color-dark) !important;
|
||||
background-image: url("/resources/Azias/imgs/3px-tile-0.1.png");
|
||||
}
|
@@ -1,5 +0,0 @@
|
||||
/* Halfmoon > Elements > Code */
|
||||
|
||||
code.w-full {
|
||||
white-space: pre;
|
||||
}
|
@@ -1,17 +0,0 @@
|
||||
/* Halfmoon > Elements > Containers */
|
||||
|
||||
.w-lg-p90 {
|
||||
width: 95% !important;
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
.w-95 {
|
||||
width: 95% !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 993px) {
|
||||
.w-lg-p90 {
|
||||
width: 90% !important;
|
||||
}
|
||||
}
|
@@ -1,17 +0,0 @@
|
||||
/* Halfmoon > Elements > Glider */
|
||||
|
||||
.glider {
|
||||
border: var(--card-border-width) solid var(--dm-card-border-color);
|
||||
box-shadow: inset 1px 0 25px 5px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.glider-nav {
|
||||
cursor: pointer;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
div.glider-slide > * {
|
||||
border: var(--card-border-width) solid var(--dm-card-border-color);
|
||||
box-shadow: inset 1px 0 25px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
@@ -1,10 +0,0 @@
|
||||
/* Halfmoon > Elements > HR */
|
||||
|
||||
hr, hr.dark-mde, hr.subtle {
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
background: rgb(93,95,97);
|
||||
background: radial-gradient(circle, rgba(83,85,87,0.8) 0%, rgba(65,67,69,0.65) 75%, rgba(17,20,23,0) 100%);
|
||||
opacity: 0.1;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
/* Halfmoon > Elements > Images */
|
||||
|
||||
img.fill-height {
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: 0 0;
|
||||
}
|
@@ -1,13 +0,0 @@
|
||||
|
||||
/*@keyframes modalFadeIn {
|
||||
0% { opacity: 0; }
|
||||
50% { opacity: 0.25; }
|
||||
75% { opacity: 0.5; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
|
||||
.modal {
|
||||
transition: none;
|
||||
animation: modalFadeIn 3s;
|
||||
}*/
|
||||
|
@@ -1,7 +0,0 @@
|
||||
/* Halfmoon > Elements > Videos */
|
||||
|
||||
video {
|
||||
// https://css-tricks.com/fluid-width-video/
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
}
|
@@ -1,32 +0,0 @@
|
||||
/* Halfmoon > Fixes */
|
||||
|
||||
.py-01 {
|
||||
// Helps in some specific area where a padding of 0 causes alignment issues.
|
||||
// This is mostly used in cards and collapse elements.
|
||||
padding-top: 0.01rem!important;
|
||||
padding-bottom: 0.01rem!important;
|
||||
}
|
||||
|
||||
// Adding a margin to buttons present right after another one.
|
||||
button + button, .button-link + .button-link > button {
|
||||
margin-left: 1.5rem !important;
|
||||
}
|
||||
|
||||
// No idea where this is used.
|
||||
div.last-inner-collapse-border-fix {
|
||||
// TODO: Fix it when it is closed.
|
||||
border: var(--collapse-content-border-width) solid var(--dm-collapse-content-border-color) !important;
|
||||
border-top: 0 !important;
|
||||
border-bottom-left-radius: var(--collapse-content-border-radius) !important;
|
||||
border-bottom-right-radius: var(--collapse-content-border-radius) !important;
|
||||
}
|
||||
|
||||
// Fix for ".content-wrapper" on mobile which can be too large due to the main title.
|
||||
.content-wrapper {
|
||||
max-width: 100vw;
|
||||
}
|
||||
|
||||
// Removes the wasted space on Chrome !
|
||||
.overflow-x-scroll {
|
||||
overflow-x: auto !important;
|
||||
}
|
@@ -1,34 +0,0 @@
|
||||
/* Halfmoon > Fonts & Text */
|
||||
// Mostly consist of stuff that's missing in Halfmoon.
|
||||
|
||||
.font-size-8 {
|
||||
font-size: 0.8rem!important;
|
||||
}
|
||||
|
||||
.font-size-10 {
|
||||
font-size: 1.0rem!important;
|
||||
}
|
||||
|
||||
.font-size-26 {
|
||||
font-size: 2.6rem!important;
|
||||
}
|
||||
|
||||
.font-size-28 {
|
||||
font-size: 2.8rem!important;
|
||||
}
|
||||
|
||||
.font-size-30 {
|
||||
font-size: 3.0rem!important;
|
||||
}
|
||||
|
||||
.font-size-35 {
|
||||
font-size: 3.5rem!important;
|
||||
}
|
||||
|
||||
.font-size-40 {
|
||||
font-size: 4.0rem!important;
|
||||
}
|
||||
|
||||
.text-super-muted {
|
||||
color: #89898A;
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
/* Halfmoon > Page > Contact */
|
||||
|
||||
// No longer used since the QR codes have been removed !
|
||||
//#contact-tox-qrcode > img {
|
||||
// height: calc( 256px * 0.75);
|
||||
// -webkit-filter: invert(100%);
|
||||
// filter: invert(100%);
|
||||
// image-rendering: pixelated;
|
||||
//}
|
@@ -1,63 +0,0 @@
|
||||
/* Halfmoon > Page > Content */
|
||||
|
||||
@media (max-width: 992px) {
|
||||
:root {
|
||||
--content-search-image-size: 96px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 993px) {
|
||||
:root {
|
||||
--content-search-image-size: 128px;
|
||||
}
|
||||
}
|
||||
|
||||
div.content-presentation-container {
|
||||
margin-bottom: 10px;
|
||||
min-height: var(--content-search-image-size);
|
||||
display: flex;
|
||||
}
|
||||
|
||||
div.content-presentation-container > a {
|
||||
width: 100%;
|
||||
min-height: var(--content-search-image-size);
|
||||
text-align: justify;
|
||||
color: var(--dm-card-text-color);
|
||||
}
|
||||
|
||||
div.content-presentation-container > a:hover {
|
||||
color: var(--dm-card-text-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.content-search-image-container {
|
||||
background: var(--dm-card-bg-color) url("/resources/Azias/imgs/3px-tile-0.2.png") repeat fixed center center;
|
||||
box-shadow: inset 0 0 25px 1px rgba(255,255,255,0.05);
|
||||
border-radius: 8px;
|
||||
width: var(--content-search-image-size);
|
||||
height: var(--content-search-image-size);
|
||||
margin-right: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
img.content-search-image {
|
||||
max-width: var(--content-search-image-size);
|
||||
max-height: var(--content-search-image-size);
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 5px 1px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
h3.content-search-title {
|
||||
float: none;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.content-tag-container a:not(:first-child) {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
div.content-tag-container a, div.content-tag-container i {
|
||||
/* Doesn't fix the line return issue ! */
|
||||
display: inline-block;
|
||||
}
|