This commit is contained in:
Pascal Engélibert 2021-08-28 14:21:46 +02:00
commit 0e99639294
608 changed files with 1240 additions and 25225 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
thumbs/*
vendor/*

View File

@ -1,20 +1,16 @@
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^guide/?$ guide.php
RewriteRule ^guide/installer-minetest/?$ guide/installer-minetest.php
RewriteRule ^guide/se-deplacer-dans-minetest/?$ guide/se-deplacer-dans-minetest.php
RewriteRule ^guide/constuire-inventaire-minetest/?$ guide/constuire-inventaire-minetest.php
RewriteRule ^guide/monnaie-argent-minetest/?$ guide/monnaie-argent-minetest.php
RewriteRule ^guide/discuter-minetest-mumble/?$ guide/discuter-minetest-mumble.php
RewriteRule ^guide/rejoindre-serveur-minetest/?$ guide/rejoindre-serveur-minetest.php
RewriteRule ^guide/panneaux-minetest/?$ guide/panneaux-minetest.php
RewriteRule ^guide/boite-aux-lettres-minetest/?$ guide/boite-aux-lettres-minetest.php
RewriteRule ^guide/boutique-g1-minetest/?$ guide/boutique-g1-minetest.php
RewriteRule ^soutenir/?$ soutenir.php
RewriteRule ^developper/?$ developper.php
RewriteRule ^guide/?$ guide.php
RewriteRule ^guide/(.*)/?$ guide/$1
RewriteRule ^gbanque/?$ guide/monnaie-argent-minetest [R=301,L]
RewriteRule ^gbank/?$ guide/monnaie-argent-minetest [R=301,L]
RewriteRule ^soutenir/?$ contribuer [R=301,L]
RewriteRule ^developper/?$ contribuer [R=301,L]
RewriteRule ^contribuer/?$ contribuer.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^thumbs/([0-9]+)w/(.*\.(jpg|jpeg|png))$ thumb.php?filename=$2&thumbWidth=$1

View File

@ -9,7 +9,7 @@ if ($_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.
define('DEFAULT_TITLE', 'Juneland');
$acceptedWidth = array(267, 303, 298, 392, 400, 408, 463, 502, 612, 620, 628, 832, 840, 848, 942);
$imgLayouts = [

View File

@ -3,7 +3,7 @@
require 'config.php';
$title = 'Soutenir le développement – Juneland';
$title = 'Contribuer au développement – Juneland';
include 'templates/header.php';
@ -11,10 +11,106 @@ define('FUNDING_PUBKEY', 'ENA89PPrBHS8wxhxgGMZxUXd53nRw1BaXBDvCVmZ6Tip');
?><article>
<h1>Soutenir le développement de Juneland</h1>
<h1>Contribuer au développement de Juneland</h1>
<p>
Il y a deux moyens par lesquels vous pouvez contribuer au développement de Juneland&nbsp;:
</p>
<ul>
<li>
<a href="#dev">
Développer
</a>
des modules et interfaces entre Juneland et l'extérieur (vous serez récompensés en Ğ1 sur le mode du feature bounty)
</li>
<li>
<a href="#donate">
Faire un don
</a>
en monnaie libre Ğ1, pour financer les récompenses
</li>
</ul>
<h2>Merci aux donateurs&#8239;!</h2>
<h2 id="dev">Développer pour Juneland</h2>
<h3>Défis en cours</h2>
<table>
<thead>
<tr>
<th>Récompense</th>
<th>Défi</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nombre">
50 DU<sub>Ğ1</sub>
</td>
<td>
Construire un aérodrome<br />
(quand un mod adéquat sera prêt)
</td>
</tr>
<tr>
<td class="nombre">
100 DU<sub>Ğ1</sub>
</td>
<td>
Importer un mini monde de 100×100
</td>
</tr>
</tbody>
</table>
<h3>Défis relevés</h2>
<table>
<thead>
<tr>
<th>Récompense</th>
<th>Défi</th>
<th>Réalisé</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nombre">
50 DU<sub>Ğ1</sub>
</td>
<td>
Construire un métro
</td>
<td>
par tuxmain
</td>
</tr>
<tr>
<td class="nombre">
100 DU<sub>Ğ1</sub>
</td>
<td>
Exporter ses messages <a href="https://scuttlebutt.nz">Scuttlebutt</a> depuis Juneland
</td>
<td>
par Be1
</td>
</tr>
</tbody>
</table>
<h2 id="donate">Financer les développements</h2>
<h3>Merci aux donateurs&#8239;!</h2>
<?php
require_once('vendor/crowdfunding2/Crowdfunding.class.php');
@ -73,13 +169,7 @@ if (empty($donors)) {
}
?>
<h2>Que soutenez-vous&#8239;?</h2>
<p>
En donnant à Juneland, vous nous aidez à financer les <a href="<?php echo ROOT_URL;?>developper">défis développeurs</a>&nbsp;:
on met les développeurs aux défi de coder une fonctionnalité pour enrichir Juneland. Celui qui l'accomplit remporte le prix.
</p>
<h2>Comment donner</h2>
<h3>Comment donner</h2>
<div class="CTA">
<p>
@ -100,7 +190,7 @@ if (empty($donors)) {
</div>
<h2>État actuel des finances</h2>
<h3>État actuel des finances</h2>
<p>Le projet est actuellement en bonne santé financière.</p>
@ -128,26 +218,7 @@ $footerScripts = '';
$footerScripts .= $chart->getScripts('fr', '#chart', ROOT_URL . 'vendor/crowdfunding2/');
$footerScripts .= '
<script>
function copy() {
var copyText = document.querySelector("input#pubkey");
copyText.select();
document.execCommand("copy");
var successMsg = document.querySelector("#successMsg");
successMsg.style.opacity = "1";
/*successMsg.style.height = "3em";*/
var copyButton = document.querySelector("button#copy");
copyButton.style.animation = "none";
}
document.querySelector("button#copy").addEventListener("click", copy);
</script>';
$footerScripts .= '<script src="js/copy.js"></script>';
include 'templates/footer.php';

0
css/calendar.svg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -3,7 +3,7 @@
--navy: #15262b;
}
#guides > li a dfn span,
.guides > li a dfn span,
body.home main h2 > span {
display: inline-block;
@ -13,8 +13,8 @@ body.home main h2 > span {
#worlds a,
#worlds a:visited,
#guides a,
#guides a:visited {
.guides a,
.guides a:visited {
color: white;
}
@ -23,18 +23,18 @@ body.home main h2 > span {
#worlds dt,
#worlds dd,
#benefits dt,
#benefits dd,
#guides > li a {
.benefits dt,
.benefits dd,
.guides > li a {
position: relative;
}
#worlds dt:before,
#worlds dd:before,
#benefits dt:before,
#benefits dd:before,
#guides > li a {
.benefits dt:before,
.benefits dd:before,
.guides > li a {
box-shadow:
0 0 1.00rem hsl(0, 100%, 100%, 0.5),
@ -46,8 +46,8 @@ body.home main h2 > span {
/*
#worlds dt:before,
#worlds dd:before,
#benefits dt:before,
#benefits dd:before {
.benefits dt:before,
.benefits dd:before {
content: " ";
width: 100%;
@ -61,20 +61,20 @@ body.home main h2 > span {
*/
#worlds dt,
#benefits dt {
.benefits dt {
z-index: 50;
}
#worlds dd img,
#benefits dd img {
.benefits dd img {
position: relative;
z-index: 200;
}
#benefits dt,
#benefits dd,
.benefits dt,
.benefits dd,
#worlds dt,
#worlds dd
{
@ -82,13 +82,13 @@ body.home main h2 > span {
border-style: solid;
}
#benefits dd,
.benefits dd,
#worlds dd {
font-weight: 600;
}
#benefits dt,
.benefits dt,
#worlds dt {
font-weight: bold;
@ -100,26 +100,26 @@ body.home main h2 > span {
/* --------------------------------------- RAISONS DE VENIR --------------------------------------- */
#benefits dd,
#benefits dt {
.benefits dd,
.benefits dt {
color: hsl(0, 0%, 20%);
border-color: var(--navy);
overflow: hidden;
}
#benefits a,
#benefits a:visited {
.benefits a,
.benefits a:visited {
color: inherit;
}
#benefits dd {
.benefits dd {
background-color: var(--nuage-1);
}
#benefits dt{
.benefits dt{
background-color: var(--nuage-1);
}
@ -164,7 +164,7 @@ body.home main h2 > span {
/* ------------------------------------------ GUIDES ------------------------------------------ */
#guides > li a {
.guides > li a {
border-color: transparent;
background-image:
@ -173,35 +173,35 @@ body.home main h2 > span {
background-size: cover, 25.5rem;
}
#guides > li a > span,
#guides > li a img {
.guides > li a > span,
.guides > li a img {
background-color: transparent;
color: black;
}
#guides > li a dfn,
#guides > li a:visited dfn {
.guides > li a dfn,
.guides > li a:visited dfn {
background-color: hsl(0, 0%, 15%);
color: hsl(0, 0%, 95%);
}
#guides > li a:hover {
.guides > li a:hover {
transform: scale(1.05);
border-color: black;
}
#guides {
.guides {
counter-reset: num-tuto;
}
#guides > li a,
#guides > li a:visited {
.guides > li a,
.guides > li a:visited {
text-decoration: none;
}

28
css/hourly-theme.php Normal file
View File

@ -0,0 +1,28 @@
<?php
header("Content-type: text/css");
$h = localtime()[2];
if($h >= 9 and $h < 17) {
$sheet = 't-day';
} elseif($h < 6 or $h > 20) {
$sheet = 't-night';
} else {
$sheet = 't-dawn-or-dusk';
}
echo '
/*
cache : '. session_cache_expire() .'
*/
';
echo file_get_contents($sheet . '.css');

View File

@ -144,22 +144,22 @@ details#invite[open] summary {
#guides img,
.guides img,
#worlds img,
#benefits img
.benefits dd > :first-child
{
width: 100%;
}
#guides {
.guides {
padding-left: 0;
}
#benefits,
#guides {
.benefits,
.guides {
display: grid;
justify-content: center;
@ -167,35 +167,35 @@ details#invite[open] summary {
}
#benefits {
.benefits {
grid-row-gap: 0;
}
#guides {
.guides {
list-style: none;
grid-row-gap: 2rem;
}
#benefits dd {
.benefits dd {
margin-bottom: 1rem;
}
#benefits dt {
.benefits dt {
margin-top: 1rem;
}
#benefits {
.benefits {
margin-top: 0;
}
#worlds,
#guides {
.guides {
padding-top: 1rem;
}
@ -216,10 +216,10 @@ details#invite[open] summary {
margin-bottom: 0;
}
#benefits dt,
.benefits dt,
#worlds dt,
#guides > li a dfn,
#guides > li a:visited dfn {
.guides > li a dfn,
.guides > li a:visited dfn {
padding: 1rem;
text-align: center;
@ -228,28 +228,29 @@ details#invite[open] summary {
border-bottom-width: 0;
}
#benefits dd,
.benefits dd,
#worlds dd,
#guides > li a > span,
#guides > li a img {
.guides > li a > span,
.guides > li a img {
border-top-width: 0;
border-bottom-width: 0.25rem;
margin-left: 0;
}
#guides > li a img {
.guides > li a img {
border-top-width: 0;
border-bottom-width: 0;
}
#benefits dd img,
.benefits dd img,
.benefits dd figure,
#worlds dd img {
display: block;
}
#benefits dd p,
.benefits dd p,
#worlds dd p,
#worlds dd address {
@ -272,30 +273,44 @@ details#invite[open] summary {
text-align: center;
}
.map_button {
display: flex;
align-items: center;
justify-content: center;
padding-bottom: 12px;
}
.map_button img {
width: 48px !important;
padding-right: 8px;
}
/* ------------------------------------------ GUIDES ------------------------------------------ */
#guides > li {
.guides > li {
margin: 0;
padding: 0;
}
#guides > li a,
#guides > li a:visited {
.guides > li a,
.guides > li a:visited {
display: flex;
flex-direction: column;
height: 100%;
}
#guides > li a dfn { order: 1; }
#guides > li a img { order: 2; }
#guides > li a > span { order: 3; }
.guides > li a dfn { order: 1; }
.guides > li a img { order: 2; }
.guides > li a > span { order: 3; }
#guides > li a > span {
.guides > li a > span {
padding: 1rem;
width: calc(100% - 2 * 1rem);
@ -309,8 +324,8 @@ details#invite[open] summary {
/* ------------------------------------------ RESPONSIVE ------------------------------------------ */
#benefits,
#guides,
.benefits,
.guides,
#worlds {
grid-column-gap: var(--col-gap);
@ -318,8 +333,8 @@ details#invite[open] summary {
}
#benefits dt,
#benefits dd,
.benefits dt,
.benefits dd,
#worlds dt,
#worlds dd
{
@ -327,7 +342,7 @@ details#invite[open] summary {
border-right-width: var(--box-border-width);
}
#guides > li a {
.guides > li a {
border-width: var(--box-border-width);
}
@ -335,138 +350,10 @@ details#invite[open] summary {
@media screen and (min-width: 56rem) {
/* BENEFITS */
#benefits > dt:nth-of-type(2n+1),
#benefits > dd:nth-of-type(2n+1) {
grid-column: 1;
}
#benefits > dt:nth-of-type(2n+2),
#benefits > dd:nth-of-type(2n+2) {
grid-column: 2;
}
#benefits dt:nth-of-type(n + 1) {
grid-row: 1;
}
#benefits dd:nth-of-type(n + 1) {
grid-row: 2;
}
#benefits dt:nth-of-type(n + 3) {
grid-row: 3;
}
#benefits dd:nth-of-type(n + 3) {
grid-row: 4;
}
#benefits dt:nth-of-type(n + 5) {
grid-row: 5;
}
#benefits dd:nth-of-type(n + 5) {
grid-row: 6;
}
/* GUIDES */
#guides > li:nth-of-type(2n+1) {
grid-column: 1;
}
#guides > li:nth-of-type(2n+2) {
grid-column: 2;
}
}
@media screen and (min-width: 83.5rem) {
/* BENEFITS */
#benefits > dt:nth-of-type(3n+1),
#benefits > dd:nth-of-type(3n+1) {
grid-column: 1;
}
#benefits > dt:nth-of-type(3n+2),
#benefits > dd:nth-of-type(3n+2) {
grid-column: 2;
}
#benefits > dt:nth-of-type(3n+3),
#benefits > dd:nth-of-type(3n+3) {
grid-column: 3;
}
#benefits dt:nth-of-type(n + 1) {
grid-row: 1;
}
#benefits dd:nth-of-type(n + 1) {
grid-row: 2;
}
#benefits dt:nth-of-type(n + 4) {
grid-row: 3;
}
#benefits dd:nth-of-type(n + 4) {
grid-row: 4;
}
/* WORLDS */
#worlds dd {
grid-row: 2;
margin-bottom: 0rem;
}
/* GUIDES */
#guides > li:nth-of-type(3n+1){
grid-column: 1;
}
#guides > li:nth-of-type(3n+2) {
grid-column: 2;
}
#guides > li:nth-of-type(3n+3) {
grid-column: 3;
}
}
@media screen and (min-width: 28.5rem) {
#benefits {
.benefits {
grid-template-columns:
repeat(
@ -477,8 +364,18 @@ details#invite[open] summary {
);
}
.benefits dd iframe {
#guides {
--embeded-media-ratio: calc(1366/(766 - 20)); /* 1.831099196 */
height: calc(
(var(--benefits-col-nb) * var(--col-width) + (var(--benefits-col-nb) - 1) * var(--col-gap))
/ var(--embeded-media-ratio)
);
}
.guides {
grid-template-columns:
repeat(
@ -502,6 +399,134 @@ details#invite[open] summary {
}
}
@media screen and (min-width: 56rem) {
/* BENEFITS */
.benefits > dt:nth-of-type(2n+1),
.benefits > dd:nth-of-type(2n+1) {
grid-column: 1;
}
.benefits > dt:nth-of-type(2n+2),
.benefits > dd:nth-of-type(2n+2) {
grid-column: 2;
}
.benefits dt:nth-of-type(n + 1) {
grid-row: 1;
}
.benefits dd:nth-of-type(n + 1) {
grid-row: 2;
}
.benefits dt:nth-of-type(n + 3) {
grid-row: 3;
}
.benefits dd:nth-of-type(n + 3) {
grid-row: 4;
}
.benefits dt:nth-of-type(n + 5) {
grid-row: 5;
}
.benefits dd:nth-of-type(n + 5) {
grid-row: 6;
}
/* GUIDES */
.guides > li:nth-of-type(2n+1) {
grid-column: 1;
}
.guides > li:nth-of-type(2n+2) {
grid-column: 2;
}
}
@media screen and (min-width: 83.5rem) {
/* BENEFITS */
.benefits > dt:nth-of-type(3n+1),
.benefits > dd:nth-of-type(3n+1) {
grid-column: 1;
}
.benefits > dt:nth-of-type(3n+2),
.benefits > dd:nth-of-type(3n+2) {
grid-column: 2;
}
.benefits > dt:nth-of-type(3n+3),
.benefits > dd:nth-of-type(3n+3) {
grid-column: 3;
}
.benefits dt:nth-of-type(n + 1) {
grid-row: 1;
}
.benefits dd:nth-of-type(n + 1) {
grid-row: 2;
}
.benefits dt:nth-of-type(n + 4) {
grid-row: 3;
}
.benefits dd:nth-of-type(n + 4) {
grid-row: 4;
}
/* WORLDS */
#worlds dd {
grid-row: 2;
margin-bottom: 0rem;
}
/* GUIDES */
.guides > li:nth-of-type(3n+1){
grid-column: 1;
}
.guides > li:nth-of-type(3n+2) {
grid-column: 2;
}
.guides > li:nth-of-type(3n+3) {
grid-column: 3;
}
}
#video-presentation {
display: block;
margin-left: auto;

View File

@ -196,6 +196,7 @@ main h1 {
text-align: center;
}
main h2 {
font-size: 1.66rem;
@ -235,6 +236,11 @@ article h1 {
padding-bottom: 1rem;
}
article h1 span {
display: block;
}
article > :first-child,
article > :first-child :first-child {

View File

@ -1,85 +0,0 @@
<?php
require 'config.php';
$title = 'Contribuer au développement &#8211; Juneland';
include 'templates/header.php';
?><article>
<h1>Contribuer au développement de Juneland</h1>
<h2>Défis en cours</h2>
<table>
<thead>
<tr>
<th>Récompense</th>
<th>Défi</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nombre">
50 DU<sub>Ğ1</sub>
</td>
<td>
Construire un aérodrome<br />
(quand un mod adéquat sera prêt)
</td>
</tr>
<tr>
<td class="nombre">
100 DU<sub>Ğ1</sub>
</td>
<td>
Importer un mini monde de 100×100
</td>
</tr>
</tbody>
</table>
<h2>Défis relevés</h2>
<table>
<thead>
<tr>
<th>Récompense</th>
<th>Défi</th>
<th>Réalisé</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nombre">
50 DU<sub>Ğ1</sub>
</td>
<td>
Construire un métro
</td>
<td>
par tuxmain
</td>
</tr>
<tr>
<td class="nombre">
100 DU<sub>Ğ1</sub>
</td>
<td>
Exporter ses messages <a href="https://scuttlebutt.nz">Scuttlebutt</a> depuis Juneland
</td>
<td>
par Be1
</td>
</tr>
</tbody>
</table>
</article><?php
include 'templates/footer.php';

View File

@ -3,36 +3,91 @@
$bodyClass = 'guide';
require '../config.php';
$title = 'Ouvrir une boutique dans Minetest';
include '../templates/header.php';
?><article>
<h1>Ouvrir une boutique G1 dans Juneland</h1>
<h1>Ouvrir une boutique G1 dans Juneland Survival</h1>
<h2> construire sa boutique&#8239;?</h2>
<h2> ouvrir sa boutique</h2>
<p>
Vous avez 2 options&nbsp;:
</p>
<ol>
<li>l'ouvrir dans la galerie marchande</li>
<li>l'ouvrir hors de la zone verrouillée</li>
</ol>
<h3>Comment ouvrir sa boutique dans la galerie marchande</h3>
<p>
Pour obenir un local dans un emplacement de choix, postez un message dans la boite aux lettre de tuxmain, que vous trouverez dans sa boutique, à gauche à l'entrée de la zone commerciale.
</p>
<p>
<?php echo image('galerie-marchande-boutique-tuxmain.png', 'Entrée de la galerie marchande', $imgLayouts['article_full_width']); ?>
</p>
<h2>Items utiles pour votre boutique</h2>
<h3>Coffre d'échange</h3>
<p>
C'est LE type de coffre qui vous sera utile pour troquer, notamment par l'intermédiaire de la monnaie (mais pas forcément).
</p>
<p>
Tapez "currency" dans l'inventaire pour trouver le coffre en question.
</p>
<h3>Panneaux avec du texte</h3>
<p>
Pratiques pour y écrire le nom de votre boutique, ou un argumentaire de vente.
</p>
<p>
Tapez "sign" dans l'inventaire pour avoir accès aux panneaux textuels.
</p>
<p>
Clic droit sur le panneau pour écrire à l'intérieur.
</p>
<h3>Panneaux avec icônes</h3>
<p>
On place généralement ce type de panneau au-dessus des coffres d'échange.
</p>
<p>
Tapez "frame" dans l'inventaire pour avoir accès aux cadres avec icônes (il vous faudra placer dans le cadre l'objet que vous souhaitez voir affiché).
</p>
<h3>Boite aux lettres</h3>
<p>
Une boîte aux lettres peut s'avérer pratique pour communiquer avec vos clients, ou simplement avec les autres joueurs quand vous n'êtes pas présent au même moment dans Juneland.
</p>
<p>
Tapez "inbox" dans l'inventaire pour avoir accès à une boîte aux lettres.
</p>
<h2>Sécuriser sa boutique pour que personne ne puisse la détruire</h2>
<h2>Exemples de boutiques</h2>
<section class="gallery gallery_2_1">
<figure>
<?php echo image('boutique-attilax.png', 'Boutique d\'Attilax', $imgLayouts['gallery_2_1']); ?>
<figcaption>Boutique d'Attilax</figcaption>
</figure>
<figure>
<?php echo image('boutique-chant-des-fleurs-2.png', 'Boutique Le Chant des Fleurs', $imgLayouts['gallery_2_1']); ?>
<figcaption>Boutique Le Chant des Fleurs</figcaption>
</figure>
<figure>
<?php echo image('boutique-tuxmain.png', 'Boutique de Tuxmain', $imgLayouts['gallery_2_1']); ?>
<figcaption>Boutique de tuxmain</figcaption>
</figure>
</section>
</article><?php
include '../templates/footer.php';

95
guide/coffres.php Normal file
View File

@ -0,0 +1,95 @@
<?php
$bodyClass = 'guide';
require '../config.php';
$title = '6 façons de protéger ses richesses dans Minetest';
include '../templates/header.php';
?><article>
<h1>Protéger ses richesses dans Minetest</h1>
<h2>1. Les sacs</h2>
<p>
Les sacs vous permettent de conserver vos richesses sur vous lorsque vous mourrez.
</p>
<p>
Vous pouvez acheter des sacs dans la boutique de tuxmain.
</p>
<h2>2. Les coffres</h2>
<p>
Les coffres vous permettent de poser vos richesses dans un endroit, afin de libérer de la place dans votre inventaire.
</p>
<p>
Ils se fabriquent simplement avec 8 planches de bois.
</p>
<p>
Tapez <q>chest</q> dans l'inventaire pour en connaître la recette de fabrication.
</p>
<h2>3. Les coffres verrouillés</h2>
<p>
Les coffres verrouillés servent la même fonction que les coffres, à la différence que vous seuls pouvez y accéder.
</p>
<p>
Avec les coffres verrouillés, les autres joueurs ne peuvent pas vous piquer vos richesses.
</p>
<p>
Tapez <q>locked chest</q> dans l'inventaire pour en connaître la recette de fabrication.
</p>
<h2>4. Les coffres verrouillés partagés</h2>
<p>
Les coffres verrouillés partagés sont des coffres verrouillés qui permettent à d'autres joueurs que vous avez choisi d'accéder à vos richesses (ou d'en déposer).
</p>
<p>
Pratique pour la famille, les amis, etc...
</p>
<p>
Tapez <q>shared locked chest</q> dans l'inventaire pour en connaître la recette de fabrication.
</p>
<h2>5. Les blocs de protection</h2>
<p>
Il vous permettent de protéger une petite zone (5 × 5 × 5).
</p>
<h2>6. Une maison fermée à clef</h2>
<h2>7. Le death compas</h2>
<p>
C'est un genre de boussole qui vous permet de retrouver vos vieux os, ainsi que les richesses que vous aviez sur vous lorsque vous êtes mort.
</p>
<p>
Il faut l'avoir sur vous (et dans votre inventaire, pas dans un sac) lorsque vous mourrez pour qu'il fonctionne.
</p>
</article><?php
include '../templates/footer.php';

View File

@ -39,11 +39,34 @@ include '../templates/header.php';
</table>
<h2>Plan Local d'Urbanisme</h2>
<h2>construire&#8239;?</h2>
<p>Construisez vous voulez, de préférence espacé des autres constructions.</p>
<h2>Sécuriser votre boutique pour que personne ne puisse la détruire</h2>
<p>
Il vous faudra un cube de protection.
</p>
<h2>Exemples de boutiques</h2>
<section class="gallery gallery_2_1">
<figure>
<?php echo image('boutique-attilax.png', 'Boutique d\'Attilax', $imgLayouts['gallery_2_1']); ?>
<figcaption>Boutique d'Attilax</figcaption>
</figure>
<figure>
<?php echo image('boutique-chant-des-fleurs-2.png', 'Boutique Le Chant des Fleurs', $imgLayouts['gallery_2_1']); ?>
<figcaption>Boutique Le Chant des Fleurs</figcaption>
</figure>
<figure>
<?php echo image('boutique-tuxmain.png', 'Boutique de Tuxmain', $imgLayouts['gallery_2_1']); ?>
<figcaption>Boutique de tuxmain</figcaption>
</figure>
</section>
</article><?php

View File

@ -10,11 +10,13 @@ include '../templates/header.php';
<h1>Discuter avec d'autres joueurs grâce à Mumble</h1>
<p>Pour discuter en audio pendant que vous jouez, vous pouvez utiliser notre instance Mumble par l'un des deux moyens suivants&nbsp;:</p>
<p>Pour discuter en audio pendant que vous jouez, vous pouvez utiliser notre instance Mumble.</p>
<p>2 options s'offrent à vous&nbsp;:</p>
<ul>
<li>Sans rien installer, <a href="https://txmn.tk/mumble" target="_blank">utilisez Mumble dans votre navigateur</a>.</li>
<li><a href="https://www.mumble.info/downloads/" target="_blank">Téléchargez Mumble</a> et connectez-vous au serveur <span class="mono">juneland.fr</span> port <span class="mono">64738</span>.</li>
<li>Ne rien installer, en utilisant <a href="https://txmn.tk/mumble" target="_blank">Mumble dans votre navigateur</a>.</li>
<li><a href="https://www.mumble.info/downloads/" target="_blank">Télécharger Mumble</a> et connectez-vous au serveur <span class="mono">juneland.fr</span> port <span class="mono">64738</span>.</li>
</ul>
</article>

83
guide/gains-minetest.php Normal file
View File

@ -0,0 +1,83 @@
<?php
require '../config.php';
$title = 'Acheter de vrais objets avec vos MineGeld &#8211; Juneland';
$og['title'] = 'Acheter de vrais objets avec vos MineGeld dans Minetest';
$bodyClass = 'guide';
include '../templates/header.php';
?><article>
<h1>Acheter de vrais objets avec vos MineGeld</h1>
<p>
</p>
<h2>Taux de conversion MG &hArr; Ğ1</h2>
<p>
1 MG = 0.1 Ğ1
</p>
<p>
À titre indicatif&nbsp;:
</p>
<ul>
<li>200 MG vous obtiendront un bouquin</li>
</ul>
<h2>Plus que 3 étapes pour acheter de vrais objets</h2>
<h3>1. Cherchez le bien qui vous ferait plaisir</h3>
<p>
Rendez-vous sur <a href="https://www.gchange.fr/">gchange.fr</a> et parcourez les annonces jusqu'à trouver quelque chose qui vous intéresse.
</p>
<p>
Créez un compte gchange et entrez en contact avec le vendeur.
</p>
<h3>2. Créez un compte Ğ1</h3>
<p>
Rendez-vous sur <a href="https://www.cesium.app/">cesium.app</a> pour télécharger Cesium, un client Ğ1 qui vous permettra de faire des transactions avec d'aurtes junistes.
</p>
<p>
Utilisez Cesium pour créer un compte Ğ1.
</p>
<p>
Une fois votre compte créé, vous aurez une <strong>clef publique</strong>, qui est peu comme un IBAN.
</p>
<h3>3. Troquez vos MG contre des Ğ1</h3>
<p>Pour convertir vos MG en Ğ1, rien de plus simple&nbsp;:</p>
<ol>
<li>Mettez les MG à convertir dans votre coffre.</li>
<li>Mettez-y également un livre, dans lequel vous aurez pris soin d'écrire la <strong>clef publique</strong> vers laquelle vous souhaitez que les G1 soient virées.</li>
</ol>
<p>
Vous retrouvez ces instructions également dans la ĞBanque de Juneland Survival.
</p>
</article><?php
include '../templates/footer.php';

View File

@ -1,44 +1,89 @@
<?php
$bodyClass = 'guide';
require '../config.php';
include '../templates/header.php';
$title = 'MineGeld &#8211; La monnaie de Minetest';
$og['title'] = 'Ğbanque &#8211; La monnaie libre Ğ1 est dans Minetest&#8239;!';
$bodyClass = 'guide';
include '../templates/header.php';
?><article>
<h1>Comment utiliser la monnaie libre Ğ1 dans Juneland</h1>
<h1><span>Ğbanque<span class="sr-only"> &#8211; </span><span>Échange Ğ1 contre MG</span></h1>
<p>Pour échanger en Ğ1 dans JuneLand Survival, on utilise un jeton intermédiaire, le MineGeld (MG).</p>
<p>
Pour échanger dans Juneland Survival, les joueurs peuvent troquer objet contre objet. Mais le problème avec le troc est toujours le même&nbsp;: ce n'est vraiment pas pratique.
</p>
<p>Vous pouvez voir les MG un peu comme les tickets boisson dans les festivals.</p>
<p>Les joueurs peuvent échanger dans Juneland en troquant des objets contre des MG. Il est aussi possible d'échanger directement les objets (troc).</p>
<p>
C'est pourquoi, nous avons choisi d'utiliser le MineGeld (MG) comme un jeton intermédiaire de la Ğ1. Le MineGeld est comme une monnaie locale qui serait adossée à la Ğ1. Il existe dans Juneland Survival 10 MG pour chaque Ğ1 sur le compte de la Ğbanque, qui est alimenté par les joueurs.
</p>
<h2>Utiliser ses Ğ1</h2>
<p>Pour obtenir acheter des MG, envoyez une transaction à <span class="mono">DFQ3eHm9GCRsvhtkZMup8sd4WcuQ3wsEr79JpqtyAfzy</span> avec pour commentaire <em>MG</em> suivi de votre pseudo sur MineTest.</p>
<p>Allez ensuite à la ĞBanque dans JuneLand Survival, vos MG seront apparues dans le coffre est inscrit votre pseudo. Nous faisons cette opération manuellement&#8239;; il faudra parfois attendre quelques jours.</p>
<h2>Gagner des Ğ1</h2>
<h2 id="obtenir-des-minegeld">Comment acheter des MG</h2>
<p>Si vous avez beaucoup de MG, vous pouvez les échanger contre des Ğ1.</p>
<p>
Après une première connexion sur le Survival pour vérifier que votre pseudo n'est pas déjà utilisé, nous allons pouvoir vous ouvrir un compte à la Ğbanque.
</p>
<p>Vous trouver les instructions pour faire cette opération directement dans Juneland Survival.</p>
<div class="CTA">
<p>
Envoyez une transaction à la clef suivante, avec pour commentaire <em>MG</em> suivi de votre pseudo sur MineTest.&nbsp;:
</p>
<p class="pubkey-and-copy-button">
<input id="pubkey" type="text" value="DFQ3eHm9GCRsvhtkZMup8sd4WcuQ3wsEr79JpqtyAfzy" readonly />
<button id="copy">
Copier la clef
</button>
</p>
<div id="successMsg">
<p>Clef copiée !</p>
</div>
</div>
<figure>
<?php echo image('cesium-paiement-cropped.png', 'Ouvrir un compte à la Ğbanque', $imgLayouts['article_full_width']); ?>
<figcaption>Le virement ci-dessus procurera 150 MG à Boris</figcaption>
</figure>
<p>
Allez ensuite à la ĞBanque, dans JuneLand Survival ; vos MG seront apparues dans le coffre est inscrit votre pseudo.
</p>
<p class="warn">
Il faudra parfois attendre quelques jours pour voir votre coffre créé et rempli de MG, car Nous faisons cette opération manuellement.
</p>
<h2>Taux de conversion</h2>
<h2 id="conversion-g1-minegeld">Troquer ses MG contre des Ğ1</h2>
<p>Pour convertir vos MG en Ğ1, rien de plus simple&nbsp;:</p>
<ol>
<li>Mettez les MG à convertir dans votre coffre.</li>
<li>Mettez-y également un livre, dans lequel vous aurez pris soin d'écrire la clef publique vers laquelle vous souhaitez que les G1 soient virées.</li>
</ol>
<p>
Vous retrouvez ces instructions également dans la ĞBanque de Juneland Survival.
</p>
<p>1 Ğ1 = 10 MG</p>
</article><?php
$footerScripts = '<script src="../js/copy.js"></script>';
include '../templates/footer.php';

39
guide/s-equiper.php Normal file
View File

@ -0,0 +1,39 @@
<?php
$bodyClass = 'guide';
require '../config.php';
$title = 'S\'équiper pour l\'aventure dans Minetest';
include '../templates/header.php';
?><article>
<h1>S'équiper pour l'aventure</h1>
<h2>Ce dont vous avez besoin</h2>
<ul>
<li>1 armure (casque, plastron, jambière, bottes), pour éviter de vous faire tuer trop rapidement</li>
<li>1 bouclier</li>
<li>1 épée, pour combattre les monstres</li>
<li>1 pioche, si vous voulez miner (pour récupérer, par exemple, du charbon, qui vous permettra de faire des torches)</li>
<li>1 hache, si vous voulez couper du bois (pour faire des planches, puis des bâtonnets, qui sont l'autre ingrédient des torches)</li>
</ul>
<h2>3 façons d'obtenir tout ça</h2>
<p>
Vous pouvez&nbsp;:
</p>
<ul>
<li>soit acheter cet équipement tout fait dans la galerie marchande,</li>
<li>soit acheter les matériaux (bois, pierre, métaux, etc.) nécessaires pour le fabriquer, </li>
<li>soit partir couper du bois à main nu</li>
</ul>
</article><?php
include '../templates/footer.php';

View File

@ -8,7 +8,7 @@ include '../templates/header.php';
?><article>
<h1>Se déplacer dans Juneland</h1>
<h1>Se déplacer dans Minetest</h1>
<p>

80
guide/teleportation.php Normal file
View File

@ -0,0 +1,80 @@
<?php
$bodyClass = 'guide';
require '../config.php';
$title = '5 façons de se téléporter dans Minetest';
include '../templates/header.php';
?><article>
<h1>5 façons de vous téléporter</h1>
<h2>1. En utilisant les téléporteurs</h2>
<p>
C'est simple&nbsp;:
</p>
<p>
Rentrez dans une cabine de téléportation, faites un clic gauche, et choisissez votre destination d'arrivée.
</p>
<h2>2. Revenir au spawn</h2>
<p>
La commande <code>/spawn</code> vous permet à tout moment de revenir au point de départ (le "spawn").
</p>
<p>
Pour l'utiliser, ouvrez le chat, et tapez simplement <code>/spawn</code>.
</p>
<h2>3. Se définir un domicile principal</h2>
<p>
Vous pouvez définir un point comme "votre domicile".
</p>
<p>
Pour ce faire&nbsp;:
</p>
<ol>
<li>Ouvrez votre inventaire.</li>
<li>En bas, cliquez sur la maison avec la flèche <strong style="color: red;">rouge pour définir votre domicile</strong>.</li>
<li>À partir de maintenant, vous pourrez à tout moment cliquer sur la petite maison avec la flèche <strong style="color: green;">verte pour revenir au point que vous avez défini</strong>.</li>
</ol>
<h2>4. Se définir une résidence secondaire</h2>
<p>
De la même façon, utilisez la commande <code>/sethome</code> pour définir l'endroit vous vous trouvez comme résidence secondaire.
</p>
<p>
Par la suite, la commande <code>/home</code> vous téléportera au point ainsi défini.
</p>
<h2>5. Créez votre réseau de téléporteurs</h2>
<p>
Pour les fabriquer, il vous faudra des cristal de Mese, difficiles à trouver.
</p>
<p>
Demandez à attilax ou tuxmain ; ils pourront vous en fabriquer (moyennant MG, ça va de soi ^^).
</p>
</article><?php
include '../templates/footer.php';

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 KiB

BIN
img/Mapping_Kit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 KiB

0
img/boite-aux-lettres.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 358 KiB

After

Width:  |  Height:  |  Size: 358 KiB

0
img/boutique-attilax.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 268 KiB

0
img/boutique-chant-des-fleurs-2.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 534 KiB

After

Width:  |  Height:  |  Size: 534 KiB

BIN
img/boutique-libre-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

BIN
img/boutique-libre-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

BIN
img/boutique-libre-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

0
img/boutiques.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 421 KiB

After

Width:  |  Height:  |  Size: 421 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
img/coffres.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

0
img/course-de-sieges.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 789 KiB

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 KiB

BIN
img/galerie-marchande.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 KiB

BIN
img/gbanque.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

BIN
img/gchange-cadeaux.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

0
img/ile-des-logiciels-libres.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 991 KiB

After

Width:  |  Height:  |  Size: 991 KiB

0
img/juneland-creative.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
img/l-armorique-de-face.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

BIN
img/liste-des-junistes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

BIN
img/playstation-gchange.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

BIN
img/tuxmain-s-mailbox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

457
index.php
View File

@ -49,140 +49,34 @@ include 'templates/header.php';
</details>
-->
<iframe id="video-presentation"
width="560"
height="315"
sandbox="allow-same-origin allow-scripts allow-popups"
src="https://tube.p2p.legal/videos/embed/87ffe1c8-f907-42ac-a4c5-105af4ee54f0"
frameborder="0"
allowfullscreen></iframe>
<h2>Six raisons de venir sur Juneland</h2>
<dl id="benefits">
<dt>
Faites les boutiques en 3D
</dt>
<dd>
<?php echo image('boutiques.png', 'Juneland, serveur Minetest français', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
<dfn>Juneland Creative</dfn> permet de faire les magasins à l'ancienne. Promenez-vous dans les quartiers commerçants et visitez la boutique de chaque juniste pour découvrir qui produit quoi, et voir ce que vous pouvez acheter avec vos Ğ1. Faire du shopping n'a jamais été aussi sympa.
</p>
</dd>
<dt>Rencontrez d'autres junistes</dt>
<dd>
<?php echo image('quai-des-rencontres.png', 'Faire des rencontres sur Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
La licence Ğ1 stipule que, pour certifier quelqu'un afin qu'il rentre dans la toile de confiance Ğ1,
il faut <q>bien le connaître</q>, et l'avoir rencontré dans la vraie vie.
</p>
<p>
Avant ça, pourquoi ne pas commencer à faire connaissance en ligne&#8239;?
Et quoi de plus convivial pour un premier contact qu'un jeu vidéo&#8239;?
</p>
<p>
Au choix, vous pouvez chatter dans Minetest, ou parler de vive voix grâce à
<a href="<?php echo ROOT_URL; ?>guide/discuter-minetest-mumble">notre serveur Mumble</a>.
</p>
<p>
Si on peut dire de nos parcs d'attractions qu'ils sont "virtuels", les rencontres qu'ils facilitent,
elles, sont bien réelles&#8239;!
</p>
</dd>
<dt>Gagnez des Ğ1</dt>
<dd>
<?php echo image('echanger-MG-G1.png', 'De la monnaie dans Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
Dans <dfn>Juneland Survival</dfn>, vous pouvez échanger des objets en MG, des jetons de Ğ1.
</p>
<p>
Vous pouvez ensuite convertir ces MG en Ğ1 pour acheter des objets dans la "vraie vie", par exemple sur <a href="https://gchange.fr">gchange.fr</a>.
</p>
</dd>
<dt>Créez à plusieurs</dt>
<dd>
<?php echo image('ile-des-logiciels-libres.png', 'Collaboration sur Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
<dfn>Juneland Creative</dfn>, c'est aussi, et avant tout, un espace de création artistique dédié au monde du libre en général.
</p>
<p>
Faites un tour sur <em>L'île du libre</em> pour y ajouter votre logiciel préféré.
</p>
</dd>
<dt>
Construisez votre boutique
</dt>
<dd>
<?php echo image('boutique-attilax.png', 'Boutique Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
Quel meilleur moyen pour faire la promo de ce que vous vendez que d'avoir votre propre boutique&#8239;? Dans <dfn>Juneland Creative</dfn>, vous aurez pignon sur rue&#8239;!
</p>
</dd>
<dt>
Jouez
</dt>
<dd>
<?php echo image('course-de-sieges.png', 'Course de sièges dans Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
MineTest est avant tout un jeu, et jouer est indispensable au bien-être d'un être humain.
</p>
<p>
<em>Juneland Survival</em> est un jeu en lui même&nbsp;: il faut survivre aux attaques des monstres.
</p>
<p>
<em>Juneland Creative</em> offre lui aussi son lot de jeux, comme la course de sièges.
</p>
</dd>
</dl>
<h2>Deux mondes, deux ambiances</h2>
<dl id="worlds">
<dt>JuneLand Creative</dt>
<dd>
<?php echo image('juneland-creative.png', 'Juneland Creative, serveur Minetest français', $imgLayouts['col_2_1_bordered']); ?>
<p>
<dfn>JuneLand Creative</dfn> est un monde dédié à la promotion des vendeurs de la Ğ1. On y fait les boutiques ou on construit la sienne.
On admire les oeuvres d'art créées par les autres junistes ou on crée la sienne.
Les ressources y sont illimitées. On peut voler et se téléporter. On y construit ce qu'on veut sans limites.
</p>
<address class="server">
<dfn>MineTest</dfn>
<span>juneland.fr</span>
<span>30000</span>
</address>
<a href="/map/creative">Carte du monde</a>
</dd>
<dt>JuneLand Survival</dt>
<dd>
<?php echo image('outils-pour-le-commerce.png', 'De la monnaie dans Minetest / Minecraft', $imgLayouts['col_2_1_bordered']); ?>
<?php echo image('juneland-colline.png', 'Colline Minetest / Minecraft', $imgLayouts['col_2_1_bordered']); ?>
<p>
<dfn>JuneLand Survival</dfn> est un monde survie il faut récolter, chasser, miner et bricoler pour vivre et pouvoir construire des machines.
On peut gagner des Ğ1 en vendant des ressources, ou au contraire utiliser ses Ğ1 pour obtenir des ressources.
<dfn>JuneLand Survival</dfn>, ça rigole pas&nbsp;:
</p>
<p>
Si vous voulez survivre, il va falloir couper du bois, <q>crafter</q> (<abbr title="c'est-à-dire">càd</abbr> construire des objets), creuser, cueillir, et vous défendre contre les monstres (voire les chasser).
</p>
<p>
Heureusement que la Ğbanque est pour convertir vos Ğ1 en <accronym title="MineGeld">MG</accronym> (et vice versa). Augmentez vos chances de survie en achetant qui une armure, qui une épée, qui à manger.
</p>
<p>
Construisez-vous un refuge, mettez-y un coffre verrouillé pour y planquer tout ce que vous avez glané ici et . Devenez plus compétent et opérationnel chaque jour et discutez avec d'autres joueurs.
</p>
<p>
Enfin, si vous avez l'esprit commerçant, ouvrez votre boutique comme pour jouer à la marchande, mais en mode vachement mieux. Soignez votre déco et votre communication, et rafflez toutes les <accronym title="MineGeld">MG</accronym>.
</p>
<address class="server">
@ -191,15 +85,320 @@ include 'templates/header.php';
<span>30000</span>
</address>
<a href="/map/survival">Carte du monde</a>
<a class="map_button" href="/map/survival"><img alt="Carte" src="img/Mapping_Kit.png"/>Carte du monde</a>
</dd>
<dt>JuneLand Creative</dt>
<dd>
<?php echo image('juneland-creative.png', 'Juneland Creative, serveur Minetest français', $imgLayouts['col_2_1_bordered']); ?>
<p>
<dfn>JuneLand Creative</dfn>, c'est plus détente&nbsp;:
</p>
<p>
Ce monde est une ode à la Ğ1, aux monnaies libres, ainsi qu'au logiciel libre. Vous y trouverez des oeuvres d'art et des boutiques créées par des junistes, et pourrez facilement "apporter votre pierre à l'édifice" en y construisant quelque chose.
</p>
<p>
Vous y serez en "mode Dieu"&nbsp;: vous pourrez voler, vous téléporter, et construire tout ce que vous voudrez sans avoir besoin d'aller préalablement miner les ressources.
</p>
<p>
Le Creative, c'est l'idéal pour se familiariser avec Minetest&nbsp;: comment on s'y déplace, comment on pose des blocs, etc...
</p>
<address class="server">
<dfn>MineTest</dfn>
<span>juneland.fr</span>
<span>30000</span>
</address>
<a class="map_button" href="/map/creative"><img alt="Carte" src="img/Mapping_Kit.png"/>Carte du monde</a>
</dd>
</dl>
<h2>Comment venir visiter Juneland</h2>
<?php
include 'templates/guides-nav.php';
?>
<h2>3 raisons de venir sur le Survival</h2>
<dl class="benefits">
<dt>Faites des kills</dt>
<dd>
<?php echo image('guet-apens-de-canards-pres-de-chez-tuxmain.png', 'Attaque de monstres dans Minetest', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
Dans <dfn>le Survival</dfn>, les monstres ne vous feront pas de cadeau&nbsp;:
</p>
<p>
Vous allez redécouvrir le plaisir qu'il y a à juste rester en vie, ainsi que le confort d'une maison bien fermée.
</p>
<p>
Vous allez parcourir des espaces, retrouver des ailleurs, et renouer avec vos instincts primaires.
</p>
<!--
<p>
Les circuits d'exploration de votre cerveau vont se remettre en marche, et vous allez probablement devenir meilleur dans la résolution de problème.
</p>
-->
</dd>
<dt>Faites des rencontres</dt>
<dd>
<?php echo image('Attilax-devant-la-boutique-d-April-2.png', 'Faire des rencontres sur Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
Dans le Survival, il y a un peu de passage.
</p>
<p>
C'est donc un endroit de choix pour faire des rencontres de qualité.
</p>
</dd>
<dt>Faites du biz</dt>
<dd>
<?php echo image('l-armorique-devanture.png', 'De la monnaie dans Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
Dans le Survival, vous pouvez échanger des objets en <accronym title="MineGeld">MG</accronym>, qui est un genre de monnaie locale adossée à la Ğ1.
</p>
<p>
Venez jouer à la marchande et apprendre au passage les rouages de la vie de commerçant.
</p>
<p>
Emplacement, communication, identité de marque et service client&nbsp;: plus rien n'aura de secret pour vous.
</p>
</dd>
</dl>
<h2>Guide de survie en milieu hostile</h2>
<ol class="guides">
<li>
<a href="<?php echo ROOT_URL; ?>guide/monnaie-argent-minetest">
<dfn>Acheter des MG</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Comment ouvrir un compte à la Ğbanque&#8239;!</span>
<?php echo image('gbanque.png', 'Utiliser de l\'argent dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/s-equiper">
<dfn>S'équiper pour l'aventure</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Ce dont vous avez besoin, et comment l'obtenir</span>
<?php echo image('l-armorique-de-face.png', 'Acheter de l\'équipement dans dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/teleportation">
<dfn>5 façons de se téléporter</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Fini le métro / boulot / dodo</span>
<?php echo image('teleport-banana-land.png', 'Se téléporter dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/coffres">
<dfn>6 façons de protéger ses richesses</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Coffres, sacs et death compas</span>
<?php echo image('panneaux-coffres-April.png', 'Sacs et coffres Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/boutique-g1-minetest">
<dfn>Ouvrir une boutique</dfn>
<span class="sr-only">&nbsp;: </span>
<span>, comment, etc.</span>
<?php echo image('boutique-libre-3.png', 'Ouvrir une boutique dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/gains-minetest">
<dfn><span>Acheter de vrais objets</span> <span>grâce à vos MG</span></dfn>
<span class="sr-only">&nbsp;: </span>
<span></span>
<?php echo image('gchange-cadeaux.png', 'Gagner de l\'argent avec Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/discuter-minetest-mumble">
<dfn>Discuter de vive voix</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Parler de vive voix, c'est toujours plus sympa.</span>
<?php echo image('mumble.png', 'Mumble dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
</ol>
<h2>3 raisons de venir sur le Creative</h2>
<dl class="benefits">
<dt>
Familiarisez vous avec Minetest
</dt>
<dd>
<?php //echo image('boutiques.png', 'Juneland, serveur Minetest français', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
<dfn>Le Creative</dfn>, c'est l'idéal pour se familiariser avec Minetest : comment on s'y déplace, comment on pose des blocs, etc...
</p>
</dd>
<dt>
Prenez-en plein les mirettes
</dt>
<dd>
<iframe
sandbox="allow-same-origin allow-scripts allow-popups"
src="https://tube.p2p.legal/videos/embed/87ffe1c8-f907-42ac-a4c5-105af4ee54f0"
frameborder="0"
allowfullscreen></iframe>
<p>
Grâce aux ressources illimitées, de nombreux junistes et non-junistes ont déjà créé leur univers sur le Creative.
</p>
<p>
Venez admirer leurs créations plus époustouflantes les unes que les autres &#129321;
</p>
</dd>
<dt>Participez à une oeuvre d'art collective</dt>
<dd>
<?php echo image('ile-des-logiciels-libres.png', 'Collaboration sur Minetest / Minecraft', $imgLayouts['col_3_2_1_bordered']); ?>
<p>
Allez dans le bourg et créez votre maison ou votre boutique dans une zone non protégée.
</p>
<p>
Faites un tour sur <em>L'île du libre</em> pour y ajouter votre logiciel préféré.
</p>
<p>
Construisez des cités sous-marines ou des châteaux dans le ciel.
</p>
<p>
Laissez s'exprimer votre imagination et retrouvez votre âme d'enfant.
</p>
</dd>
</dl>
<h2>Se familiariser avec Minetest</h2>
<ol class="guides">
<li>
<a href="<?php echo ROOT_URL; ?>guide/installer-minetest">
<dfn>Installer Minetest</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Guides d'installation pour Windows, MacOS, GNU/Linux, Android, FreeBSD, OpenBSD, DragonFly BSD.</span>
<?php // echo image('name.png', 'alt', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/rejoindre-serveur-minetest">
<dfn>Rejoindre un serveur Juneland</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Se connecter à Juneland Creative ou Juneland Survival, choisir son mot de passe, etc.</span>
<?php echo image('bienvenue-a-juneland.png', 'Colline Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/se-deplacer-dans-minetest">
<dfn>Comment se déplacer</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Accélérer, voler, se téléporter, etc...</span>
<?php echo image('ponts.png', 'Ponts dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/constuire-inventaire-minetest">
<dfn>Comment constuire, détruire, reconstuire</dfn>
<span class="sr-only">&nbsp;: </span>
<span>Matériaux, angles, permis de construire et Plan Local d'Urbanisme&nbsp;: le maire vous dit tout.</span>
<?php echo image('pyramide.png', 'Pyramide dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/panneaux-minetest">
<dfn><span>Comment écrire sur un panneau&nbsp;?</span> <span>Et pour quoi faire&#8239;?</span></dfn>
<span class="sr-only">&nbsp;: </span>
<span>Petites annonces, mots doux... vous saurez tout.</span>
<?php echo image('liste-des-junistes.png', 'Panneaux avec texte dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
<li>
<a href="<?php echo ROOT_URL; ?>guide/boite-aux-lettres-minetest">
<dfn>Comment poster un message dans une boîte aux lettres</dfn>
<span class="sr-only">&nbsp;: </span>
<span>De l'art d'envoyer des missives aux autres joueurs.</span>
<?php echo image('tuxmain-s-mailbox.png', 'Boîte aux lettre dans Minetest / Minecraft', $imgLayouts['col_3_2_1']); ?>
</a>
</li>
</ol>
<?php

16
js/copy.js Normal file
View File

@ -0,0 +1,16 @@
function copy() {
var copyText = document.querySelector("input#pubkey");
copyText.select();
document.execCommand("copy");
var successMsg = document.querySelector("#successMsg");
successMsg.style.opacity = "1";
/*successMsg.style.height = "3em";*/
var copyButton = document.querySelector("button#copy");
copyButton.style.animation = "none";
}
document.querySelector("button#copy").addEventListener("click", copy);

47
juneland.nginx.conf Normal file
View File

@ -0,0 +1,47 @@
server {
listen 80;
listen [::]:80;
root /home/donnees/projets/monnaie-libre/juneland/Juneland-website;
server_name juneland;
location ~ /thumbs/([0-9]+)w/(.*\.(jpg|jpeg|png)) {
try_files $uri /thumb.php?filename=$2&thumbWidth=$1;
}
location / {
rewrite ^/gbanque/?$ /guide/monnaie-argent-minetest redirect;
rewrite ^/gbank/?$ /guide/monnaie-argent-minetest redirect;
rewrite ^/guide/?$ /guide.php;
rewrite ^/guide/(.*)/?$ /guide/$1.php;
rewrite ^/soutenir/?$ /contribuer redirect;
rewrite ^/developper/?$ /contribuer redirect;
rewrite ^/contribuer/?$ /contribuer.php;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
index index.php index.html;
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
}

View File

@ -1,5 +1,5 @@
<ol id="guides">
<ol class="guides">
<li>
<a href="<?php echo ROOT_URL; ?>guide/installer-minetest">

View File

@ -5,21 +5,6 @@ if (!isset($title)) {
$bodyClass = isset($bodyClass) ? ' class="'. $bodyClass .'"' : '';
$h = localtime()[2];
if($h >= 9 and $h < 17) {
$sheet = 't-day';
} elseif($h < 6 or $h > 20) {
$sheet = 't-night';
} else {
$sheet = 't-dawn-or-dusk';
}
function changeEveryNSec ($n, $a) {
$nbElts = count($a);
@ -30,15 +15,17 @@ function changeEveryNSec ($n, $a) {
}
$taglines = [
'<span>terrains numériques constructibles</span> <span>pour junistes</span>',
'<span>mondes 3D</span> <span>pour rencontrer d\'autres junistes</span>',
'<span>pour empiler des cubes</span> <span>entre junistes</span>',
'<span>parc d\'attractions numériques</span> <span>pour la monnaie libre Ğ1&#8239;!</span>',
'<span>des lieux pour créer, jouer, gagner ou dépenser des Ğ1</span>',
'<span>espaces de convivialité numériques</span> <span>pour junistes</span>',
// '<span>terrains numériques constructibles</span> <span>pour junistes</span>',
// '<span>mondes 3D</span> <span>pour rencontrer d\'autres junistes</span>',
// '<span>pour empiler des cubes</span> <span>entre junistes</span>',
// '<span>parc d\'attractions numériques</span> <span>pour la monnaie libre Ğ1&#8239;!</span>',
// '<span>des lieux pour créer, jouer, gagner ou dépenser des Ğ1</span>',
// '<span>espaces de convivialité numériques</span> <span>pour junistes</span>',
'<span>Mieux que</span> <span>"la vraie vie”</span> !'
];
$siteDesc = changeEveryNSec(2, $taglines);
$siteDesc = changeEveryNSec(86400, $taglines);
?>
<!doctype html>
@ -59,7 +46,7 @@ $siteDesc = changeEveryNSec(2, $taglines);
<link rel="icon" type="image/png" href="<?php echo ROOT_URL; ?>Minetest_logo-240px.png"/>
<link rel="stylesheet" href="<?php echo ROOT_URL . 'css/' . $sheet . '.css'; ?>"/>
<link rel="stylesheet" type="text/css" href="<?php echo ROOT_URL . 'css/hourly-theme.php'; ?>"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>

View File

@ -1,6 +1,6 @@
<ul>
<li><a href="<?php echo ROOT_URL; ?>">Présentation</a></li>
<li><a href="<?php echo ROOT_URL; ?>guide">Guides</a></li>
<li><a href="<?php echo ROOT_URL; ?>developper">Développer</a></li>
<li><a href="<?php echo ROOT_URL; ?>soutenir" aria-label="Soutenir" title="Soutenir"></a></li>
<li><a href="<?php echo ROOT_URL; ?>">Accueil</a></li>
<li><a href="<?php echo ROOT_URL; ?>guide/monnaie-argent-minetest">Ğbanque</a></li>
<li><a href="<?php echo ROOT_URL; ?>guide/gains-minetest">Gains</a></li>
<li><a href="<?php echo ROOT_URL; ?>contribuer">Contribuer</a></li>
</ul>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

View File

@ -1,3 +0,0 @@
/img/qrcodes/
/tests/
/cache/

View File

@ -1,27 +0,0 @@
<?php
class Avatar {
private $content;
public $contentType;
public function __construct ($content, $contentType) {
$this->content = $content;
$this->contentType = $contentType;
}
public function getContent () {
return $this->content;
}
public function getContentType () {
return $this->contentType;
}
}

View File

@ -1,332 +0,0 @@
<?php
require_once('Graph.class.php');
class Chart {
private $crowdfunding;
private $points = NULL;
private $displayTarget = true;
private $graphs = [];
public function __construct ($crowdfunding) {
$this->crowdfunding = $crowdfunding;
}
private function addLastPointOfCumulativeGraph ($lastAmount) {
$lastDay = NULL;
if ($this->crowdfunding->isOver()) {
$lastDay = $this->crowdfunding->getEndDate();
} elseif ($this->crowdfunding->hasStartedYet()) {
$lastDay = $this->crowdfunding->today;
}
if (isset($lastDay)) {
$followingDay = (clone $lastDay)->add(new DateInterval('P1D'));
$this->points['amountCollectedByDayCumulative'][] = [
't' => $lastDay->getTimestamp() * 1000,
'y' => $this->crowdfunding->convertIntoChosenUnit($lastAmount)
];
$this->points['amountCollectedByDayCumulative'][] = [
't' => $followingDay->getTimestamp() * 1000,
'y' => $this->crowdfunding->convertIntoChosenUnit($lastAmount)
];
}
}
private function addSecondPointOfTarget ($target) {
$d = NULL;
if ($this->crowdfunding->isOver()) {
$d = $this->crowdfunding->getEndDate();
} else {
if (!$this->crowdfunding->isEvergreen()) {
$d = $this->crowdfunding->getEndDate();
} else {
if ($this->crowdfunding->isEvergreen() == 'monthly') {
// last point will be the last day of the month the campaign starts
$dateOfLastDayOfTheMonth = new DateTime($this->crowdfunding->getStartDate()->format("Y-m-t"));
$d = $dateOfLastDayOfTheMonth;
} else { //if ($this->crowdfunding->isEvergreen() == 'forever') {
if ($this->crowdfunding->hasStartedYet()) {
$d = $this->crowdfunding->now;
} else {
$dateOfLastDayOfTheMonth = new DateTime($this->getStartDate()->format("Y-m-t"));
$d = $dateOfLastDayOfTheMonth;
}
}
}
}
$d->add(new DateInterval('P1D'));
$this->points['targetLine'][] = [
't' => $d->getTimestamp() * 1000,
'y' => $target
];
}
public function displayTarget ($bool = NULL) {
if (isset($bool)) {
$this->displayTarget = $bool;
} else {
return $this->displayTarget;
}
}
public function addGraph ($g) {
$this->graphs[] = $g;
}
private function setPoints () {
$dailyAmount = 0;
$dailyAmountCumulative = 0;
$t_0 = (clone $this->crowdfunding->getStartDate());
$mt_0 = $t_0->getTimestamp() * 1000;
if ($this->crowdfunding->hasTarget()) {
// On trace la droite de l'objectif
$this->points['targetLine'][] = [
't' => $mt_0,
'y' => $this->crowdfunding->getTarget()
];
// For x axis scaling
$this->addSecondPointOfTarget($this->crowdfunding->getTarget());
}
/*
$this->points['amountCollectedByDayCumulative'][] = [
't' => $mt_0,
'y' => 0
];
*/
$tx = $this->crowdfunding->getDonationsList();
if (empty($tx)) {
// For y axis scaling
$this->points['amountCollectedByDay'][] = [
't' => $mt_0,
'y' => 0
];
} else {
$currentDay = new DateTime();
$dayBefore = clone $this->crowdfunding->getStartDate();
foreach ($tx as $t) {
$dailyAmountCumulative += $t->getAmount();
$dailyAmount += $t->getAmount();
$currentDay->setTimestamp($t->getDate()->getTimestamp());
$currentDay->setTime(0, 0, 0);
if ($currentDay != $dayBefore) {
$this->points['amountCollectedByDay'][] = [
't' => $dayBefore->getTimestamp() * 1000,
'y' => $this->crowdfunding->convertIntoChosenUnit($dailyAmount)
];
$this->points['amountCollectedByDayCumulative'][] = [
't' => $dayBefore->getTimestamp() * 1000,
'y' => $this->crowdfunding->convertIntoChosenUnit($dailyAmountCumulative)
];
$lastDailyAmount = $dailyAmount;
$dailyAmount = 0;
}
$dayBefore = clone $currentDay;
}
// Add latest day's tx
$this->points['amountCollectedByDay'][] = [
't' => $dayBefore->getTimestamp() * 1000,
'y' => $this->crowdfunding->convertIntoChosenUnit($lastDailyAmount)
];
$this->addLastPointOfCumulativeGraph($dailyAmountCumulative);
}
}
public function getAmountCollectedByDayPoints () {
if (empty($this->points)) {
$this->setPoints();
}
return json_encode($this->points['amountCollectedByDay']);
}
public function getAmountCollectedByDayCumulativePoints () {
if (empty($this->points)) {
$this->setPoints();
}
$points = isset($this->points['amountCollectedByDayCumulative']) ? $this->points['amountCollectedByDayCumulative'] : [];
return json_encode($points);
}
public function getTargetLinePoints () {
if (empty($this->points)) {
$this->setPoints();
}
return json_encode($this->points['targetLine']);
}
public function setTargetLineColor ($colorStr) {
$this->targetLineColor = new Color($colorStr);
}
public function getScripts ($lang, $whereToInsertChart = 'main', $dir = '') {
if (empty($this->points)) {
$this->setPoints();
}
$out = '<script src="'. $dir .'lib/js/moment.min.js"></script>';
$out .= '<script src="'. $dir .'locales/moment.js/'. $lang .'.js"></script>';
$out .= '<script src="'. $dir .'lib/js/chart.min.js"></script>';
$out .= '<script>
window.onload = function() {
moment.locale(\''. $lang .'\');
var currentLocaleData = moment.localeData();
var dateFormat = currentLocaleData.longDateFormat(\'L\');
var hourFormat = currentLocaleData.longDateFormat(\'LT\');
var container = document.querySelector(\''. $whereToInsertChart .'\');
var div = document.createElement(\'div\');
div.classList.add(\'chart-container\');
var canvas = document.createElement(\'canvas\');
div.appendChild(canvas);
container.appendChild(div);
var chartData = {
datasets: [';
foreach ($this->graphs as $g) {
$out .= $g->getGraph() . ', ';
}
$out .= '
]
};
new Chart(canvas.getContext(\'2d\'), {
type: \'bar\',
data: chartData,
options: {
responsive: true,
animation: {
duration: 1800,
easing: \'easeInCubic\'
},
title: {
display: true
},
scales: {
xAxes: [{
type: \'time\',
time: {
minUnit: \'day\',
tooltipFormat: dateFormat
}
}]
},
tooltips: {
intersect: false
}
}
});
}
</script>';
return $out;
}
}

View File

@ -1,204 +0,0 @@
<?php
class Color {
private $hex;
private $rgb;
private $hsl;
private $alpha;
private $validColorsList = [
'white' => 'ffffff',
'silver' => 'C0C0C0',
'gray' => '808080',
'black' => '000000',
'red' => 'FF0000',
'maroon' => '800000',
'yellow' => 'FFFF00',
'olive' => '808000',
'lime' => '00FF00',
'green' => '008000',
'acqua' => '00FFFF',
'cyan' => '00FFFF',
'teal' => '008080',
'blue' => '0000FF',
'navy' => '000080',
'fuchsia' => 'FF00FF',
'magenta' => 'FF00FF',
'purple' => '800080'
];
private $regexes = [
'hex3' => '/^([a-fA-F0-9]{3}){1,2}$/',
'hex6' => '/^#(([a-fA-F0-9]{3}){1,2})$/',
'rgb' => '/^rgb\( *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])\, *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]) *\)$/',
'rgba' =>'/^hsla\( *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])\, *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), (0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])\, *((0\.[0-9]{1,2}|1))\)$/',
'hsl' => '/^hsl\( *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])\, *([0-9]{1,3}(\.[0-9]{0,2})?)%, *([0-9]{1,3}(\.[0-9]{0,2})?)% *\)$/',
'hsla' => '/^hsla\( *(0?[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])\, *([0-9]{1,3}(\.[0-9]{0,2})?)%, *([0-9]{1,3}(\.[0-9]{0,2})?)%\, *((0\.[0-9]{1,2}|1))\)$/',
];
public function __construct ($colorStr) {
if ($colorStr == 'transparent') {
} else if (array_key_exists($colorStr, $this->validColorsList)) {
$this->hex = $this->validColorsList[$colorStr];
} else if (preg_match($this->regexes['hex3'], $colorStr)) {
$this->hex = $colorStr;
} else if (preg_match($this->regexes['hex6'], $colorStr, $matches)) {
$this->hex = $matches[1];
} else if (preg_match($this->regexes['rgb'], $colorStr, $matches)) {
$this->rgb = array(
'r' => $matches[1],
'g' => $matches[2],
'b' => $matches[3],
);
} else if (preg_match($this->regexes['rgba'], $colorStr, $matches)) {
$this->rgb = array(
'r' => $matches[1],
'g' => $matches[2],
'b' => $matches[3],
'a' =>$matches[5],
);
} else if (preg_match($this->regexes['hsl'], $colorStr, $matches)) {
$this->hsl = array(
'h' => $matches[1],
's' => $matches[2],
'l' => $matches[3],
);
} else if (preg_match($this->regexes['hsla'], $colorStr, $matches)) {
$this->hsl = array(
'h' => $matches[1],
's' => $matches[2],
'l' => $matches[3],
'a' => $matches[5],
);
} else {
$additionnalMsg = '';
if(empty($colorStr)) {
$additionnalMsg = _('Les couleurs hexadécimales doivent être écrites sans le caractère #');
} else {
$additionnalMsg = sprintf(_('Vous avez écrit : %s'), htmlspecialchars($colorStr));
}
throw new Exception(_('La couleur %s n\'est pas au bon format.') . "\n" .
$additionnalMsg . "\n" .
_('Vérifiez votre syntaxe.'));
}
}
public function getRGB () {
if (isset($this->rgb)) {
return $this->rgb;
} elseif (isset($this->hex)) {
return $this->hex2RGB($this->hex);
}
}
public function getRGBa () {
if (isset($this->rgba)) {
return $this->rgba;
}
}
public function getHSLa () {
if (isset($this->hsla)) {
return $this->hsla;
}
}
public function getHex () {
if (isset($this->hex)) {
return $this->hex;
} elseif (isset($this->rgb)) {
return $this->RGB2hex($this->rgb);
}
}
public function getColorAllocation ($imgRessource) {
list($r, $g, $b) = $this->getRGB();
return imageColorAllocate($imgRessource, $r, $g, $b);
}
public function RGB2hex () {
}
public function hex2RGB ($hexStr) {
$strLen = strlen($hexStr);
if ($strLen == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster
$colorVal = hexdec($hexStr);
$r = 0xFF & ($colorVal >> 0x10);
$g = 0xFF & ($colorVal >> 0x8);
$b = 0xFF & $colorVal;
} elseif ($strLen == 3) { //if shorthand notation, need some string manipulations
$r = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
$g = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
$b = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
} else {
throw new Exception(_('Le paramètre %s n\'est pas une couleur.') . "\n" . _('Vérifiez votre syntaxe.'));
}
$this->rgb = array($r, $g, $b);
return $this->rgb;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
<?php
require_once('Donor.class.php');
class Donation {
private $date;
private $amount;
private $donorPubkey;
private $comment;
public function __construct ($amount, $donorPubkey, $time = NULL, $comment = NULL) {
$this->amount = $amount;
$this->donorPubkey = $donorPubkey;
$this->date = new DateTime();
$this->date->setTimestamp($time);
$this->comment = $comment;
}
public function getAmount () {
return $this->amount;
}
public function setAmount ($amount) {
$this->amount = $amount;
}
public function getDate () {
return $this->date;
}
public function getComment () {
return $this->comment;
}
public function getDonorPubkey () {
return $this->donorPubkey;
}
}

View File

@ -1,74 +0,0 @@
<?php
require_once('Avatar.class.php');
require_once('GeoPoint.class.php');
class Donor {
private $pubkey;
private $name;
private $avatar;
private $city;
private $geoPoint;
public function __construct ($pubkey) {
$this->pubkey = $pubkey;
}
public function setName ($name) {
$this->name = $name;
}
public function getName () {
if (isset($this->name)) {
return $this->name;
} else {
return substr($this->pubkey, 0, 8);
}
}
public function setAvatar ($content, $contentType) {
$this->avatar = new Avatar($content, $contentType);
}
public function getAvatar () {
return $this->avatar;
}
public function setCity ($city) {
$this->city = $city;
}
public function getCity () {
return $this->city;
}
public function setGeoPoint ($lon, $lat) {
$this->geoPoint = new GeoPoint($lon, $lat);
}
public function getGeoPoint () {
return $this->geoPoint;
}
}

View File

@ -1,20 +0,0 @@
## Réparés
- Encapsulation
- Suppression des failles XSS
- Vérification des couleurs
- Suppression du nombre de jours restant quand la date de fin est dépassée
- Messages d'erreurs maintenant plus clairs et plus précis
- Ajout du support des thèmes
- Utilisation de GetText pour la traduction
- Possibilité de traduire "DUG1" en entier (donc d'inverser DU et G1, pour l'anglais par exemple)
- SVG : titre maintenant centré
- Amélioration de l'UX formulaire de génération :
- Prévisualisation affichée avant le code d'intégration
- Le noeuds choisi n'est pas dispo, on regarde les autres
- & transformés en &amp;
- Résolution du problème du SVG qui n'était pas généré par certains serveurs à cause du <?xml interprété comme <? (tag d'ouverture php)

Some files were not shown because too many files have changed in this diff Show More