Compare commits

..

1 commit

Author SHA1 Message Date
baptistereb
a37cde1244 . 2023-03-11 20:56:47 +01:00
129 changed files with 16736 additions and 359605 deletions

View file

@ -7,20 +7,6 @@ nécessaires liées à la semaine daccueil.
Le site est fait à une fin humoristique. Il sert à guider les PPAs mais également à les
amuser avant leur rentrée.
# 2023
Des modifications ont été apportées au site par Théo Mougnibas notamment sur :
- les variables globales et le template
- les menus
- la structure de la base de donnée
- tout le fonctionnement de la com ville
- améliorations du panneau d'administration
- Tout le fonctionnement des mots croisés
- ajout de la possibilité pour la com ville et photos d'upload eux-même leurs photos
Si vous avez des questions dessus, n'hésitez pas :D
## 2022
Des connaissances en HTML et CSS sont requises mais peuvent être plus ou moin apprises sur le tas, la page de la com_ville en revanche demande des connaissances en php(voir avec Baptiste Rébillard pour le fonctionnemet ou dans la section "pages" qui arrivera plus tard dans ce readme).
Le site est originelement celui de Arnaud Vergnet, mais en 2022 Baptiste Rébillard et Guillaume Joffre ont entrepris de le modifier de fond en comble (Baptiste le back et Guillaume le front).
@ -29,9 +15,6 @@ Donc si vous avez des questions le site on le connait par coeur !
Ce readme est également rédigé par Baptiste Rébillard il faudra donc le mettre à jour mais s'il n'est pas assez compréhensible il ne faut pas hésiter à me poser des questions.
PS : je suis éclaté en orthographe donc je m'excuse... Donc ce document va sûrement vous arracher les yeux mais il a le mérite d'exister !
# Structure
Les vues et script (pages vues par l'utilisateur) sont dans le main folder (./).
@ -93,7 +76,7 @@ id = 1; answer = réponse de l'énigme de la plaquette; point = nombre de points
| name | varchar(30) | | |
| team | tinyint(11) | | X |
on doit tout entrer manuellement dans la base de données en revanche le formulaire du mot croisé va se construire automatiquement sans rien faire au fur et a mesure qu'on y ajoute des nom à deviner.
on doit tout entrer manuellement dans la base de données en revanche le formulaire du mot croisé va se construire automatiquement sans rien faire au fur et a mesure qu'on y ajotue des nom à deviner.
id correspont donc au numéro du mot à trouver, name au mot à trouver, et team reste à NULL tout le temps et ne servirait que si on modifiai le php pour ajouter des points de manière différente.
@ -134,6 +117,15 @@ Par défaut il faut avoir une seule ligne vide, le script se chargera de la modi
| team | tinyint(1) | | |
| id_staff | text | | |
### ville
| Nom | Type | AUTO_INCREMENT | NULL |
| :----------- |:------------:|:---------------:|:-----:|
| session | int(11) | X | |
| state | int(11) | | |
| time_begin | int(11) | | |
ici il y a les session car il y a la session du matin et la session de l'après midi, cette table permet de savoir quelle session à été lancé, et le temps(unix) à laquelle la session à été lancé si elle l'a été.
### ville_epreuve
@ -142,18 +134,9 @@ Par défaut il faut avoir une seule ligne vide, le script se chargera de la modi
| id | int(11) | X | |
| indice | text | | |
| reponse | varchar(50) | | |
| photo | varchar(50) | | X |
| id_equipe | int(11) | | X |
| est_finale | BOOLEAN | | |
| ordre | int(11) | | |
| est_trouvee | BOOLEAN | | |
| photo | varchar(20) | | X |
ici il va falloir mettre chaque épreuve à la main, indice correspond à ce qui va etre affiché aux PPA à chaque étape, la réponse à ce que doivent deviner les PPA, et éventuellement une photos pour les aider qui se trouve dans "assets/img/ville/"
Le champ "id_equipe" est une clé étrangère faisant reférence à la taple ville_equipe. Cette clé est utile si l'on veut mettre des indices différents pour chaque équipe (NULL si universel).
Le bouléen "est_finale" va servir à mettre fin au chronomètre si l'équipe trouve la réponse de l'énigme.
L'entier "ordre" est simplement là pour spécifier la position dans laquelle l'énigme va apparaître dans le parcours de l'équipe.
Le bouléen "est_trouvee" va simplement indiquer si une épreuve est complétée ou non
### ville_equipe
@ -161,22 +144,15 @@ Le bouléen "est_trouvee" va simplement indiquer si une épreuve est complétée
| :----------- |:------------:|:---------------:|:-----:|
| id | int(11) | X | |
| nom | varchar(50) | | |
| begin | int(11) | | |
| temps | text | | X |
les identifiants des équipes ne doivent pas bouger, les noms c'est juste pour l'affichage utilisateur.
les identifiants des équipes ne doivent pas bouger, les noms c'est juste pour l'affichage utilisateur et le "begin" est l'étape à laquelle démarre l'équipe, car ils ne démarrent pas tous à la même épreuve !
la colonne temps permet d'enregistrer les temps à chaque étape (en temps unix évidemment).
# Pages
### globals.php
> Dans toutes ces pages, vous retrouverez plusieurs fois les noms des teams.
Pour les changer de manière globale, modifiez les valeurs de $TEAM1 et $TEAM2 dans assets/scripts/globals.php
le fichier globals.php contient aussi la carte du site pour build dynamiquement le menu des liens/
### anim.php
Page sans complexité, juste du contenu, demander le contenu auprès de la com'anim.
### blouse.php
@ -308,7 +284,7 @@ Il faut juste modifier les noms des équipes car tout va être gérer via l'espa
### team.php
Il y a deux sections via 2 liens :
team.php?id=team1 et team.php?id=team1 ( pas besoin de modifier les lien avec le nom des équipes si vous avez déjà update les variables globales TEAM1 et TEAEM2 dans assets/scripts/globals.php),
team.php?id=pkpeach et team.php?id=pkpeach il faut donc modifier les lien avec le nom des équipes (ligne 16 et 42),
sinon il va falloir harceler le prez et vice prez pour avoir les petits messages encourageant pour les équipes, si ça prend un peu de temps n'oublie pas que tu peux utiliser la page "construction.php" expliqué un peu plus haut dans ce readme.
### vacances.php

View file

@ -1,50 +0,0 @@
<?php
include "script.php";
include "../script/db_init.php";
if($user['perm'] < 3) {
header('Location: deco.php');
}
if(isset($_GET["radio_bdd"])){
switch($_GET["radio_bdd"]){
case "drop":
//drop_bdd($LISTE_TABLES,$db);
break;
case "create":
create_bdd($LISTE_TABLES_DROP,$db);
break;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin / index</title>
</head>
<body>
<main>
<form action="/admin/bdd.php">
<input type="radio" name="radio_bdd" id="drop_bdd" value="drop">
<label for="drop_bdd">Supprimer la base de données</label>
<input type="radio" name="radio_bdd" id="create_bdd" value="create">
<label for="create_bdd">Créer la base de données</label>
<input type="submit" value="CLIQUE PAS SUR MOI, PAS LE VENDREDI STP">
</form>
</main>
</body>

View file

@ -1,114 +0,0 @@
<?php
include "script.php";
$refresh_rate = 15; //refresh rate en seconde (en gros on refresh la page toute les 15sec)
if($user['perm'] < 1) {
header('Location: deco.php');
}
// Compress image
function compressImage($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
}
// ajout d'une epreuve
if(isset($_POST['add_photo'])){
//$upload_state prend plusieurs valeurs :
// 1 si tout est valide et l'image n'existe pas déjà
// 0 si une verification a invalidé le fichier
$EXT_WHITELIST = array("gif","jpg","jpeg","png");
/* gestion des uploads d'images indices */
$target_dir = "../assets/img/com_photo/full_q/";
$target_file = $target_dir . basename($_FILES["photo"]["name"]);
$upload_state = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
$check = $_FILES["photo"]["size"] > pow(2,6);;
if($check !== false) {
$upload_state = 1;
} else {
$upload_state = 0;
}
if (file_exists($target_file)) {
$upload_state = 0;
}
// limite de taille
if ($_FILES["photo"]["size"] > pow(2,40)) {
$upload_state = 0;
}
// check le type de fichier
if (!in_array($imageFileType,$EXT_WHITELIST)){
$upload_state = 0;
}
switch($upload_state){
case 1:
compressImage($_FILES["photo"]["tmp_name"],"../assets/img/com_photo/thumbs/".$_FILES["photo"]["name"],10);
move_uploaded_file($_FILES["photo"]["tmp_name"],$target_file);
break;
case 0:
?> <script>
alert("L'image envoyée n'a pas passées tout les tests de vérifications.");
</script>
<?php
break;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin / Com'Photo</title>
<link rel="stylesheet" type="text/css" href="com_ville.css" />
</head>
<body>
<main>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="photo" placeholder="image.png" id="photo" class="input_inline" accept=".png,.jpg,.jpeg,.gif">
<label for="photo">Seulement les images au format gif, png, jpeg et jpg sont acceptées.</label>
<input type="submit" name="add_photo" value="Ajouter la photo" class="submit_inline">
</form>
<h3>Difficultés pour convertir vos images au bon format ? Essayez <a href="https://image.online-convert.com/convert-to-jpg">Ce site</a></h3>
</main>
</body>
</html>

View file

@ -1,8 +1,6 @@
<?php
include "script.php";
include "../assets/scripts/globals.php";
if($user['perm'] < 3) {
header('Location: deco.php');
}
@ -10,38 +8,20 @@ if($user['perm'] < 3) {
$req = $db->query("SELECT * FROM enigma WHERE id = 1");
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
/*
Le principe est qu'une seule énigme est émise en même temps,
il s'agit de la même pour les deux équipes.
D'où le fait que l'id de l'entrée est hardcode à 1.
La série de if est faite pour n'avoir qu'a remplir la/les colonne(s) dans l'interface
que l'on souhaite modifier dans la BDD.
*/
if(isset($_POST['send'])) {
// on vérifie les privilèges de l'utilisateur
if($user['perm'] >= 3) {
if(isset($_POST['answer']) AND !empty($_POST['answer'])) {
$ans = htmlspecialchars($_POST['answer']);
$req = $db->prepare("UPDATE enigma SET answer = ? WHERE id = 1");
$req->execute(array($ans));
}
if(isset($_POST['points']) AND !empty($_POST['points'])) {
$point = (int) htmlspecialchars($_POST['points']);
$req = $db->prepare("UPDATE enigma SET point = ? WHERE id = 1");
$req->execute(array($point));
}
if(isset($_POST['team']) AND !empty($_POST['team'])) {
switch (htmlspecialchars($_POST['team'])) {
// le cas "t" est lorsque aucune équipe n'a encore trouvé
case "t":
$t_int = NULL;
break;
@ -71,13 +51,11 @@ if(isset($_POST['send'])) {
<form method="POST">
<input type="texte" name="answer" placeholder="answer" class="input_inline">
<input type="number" name ="points" placeholder="points" class="input_inline">
<select name="team" class="input_inline" id="team">
<option value="t">AUCUNE EQUIPE</option>
<option value="t0"><?=$TEAM1?></option>
<option value="t1"><?=$TEAM2?></option>
<select name="team" class="input_inline">
<option value="t">NULL</option>
<option value="t0">Pkpeach</option>
<option value="t1">Boomario</option>
</select>
<label for="team">Equipe ayant trouvé l'énigme.</label>
<input type="submit" name="send" value="Mettre à jour" class="submit_inline">
</form>
<table class="acces">
@ -91,14 +69,13 @@ if(isset($_POST['send'])) {
<td><?= $r[0]['id'] ?></td>
<td><?= $r[0]['answer'] ?></td>
<td><?= $r[0]['point'] ?></td>
<td>
<?php
<td><?php
switch ($r[0]['team']) {
case "0":
echo $TEAM1;
echo "Pkpeach";
break;
case "1":
echo $TEAM2;
echo "Boomario";
break;
}
?></td>

View file

@ -140,7 +140,7 @@ if(isset($_POST['send'])) {
<input type="text" placeholder="identifiant INSA" name="pseudo" class="input_inline">
<select name="perm" class="input_inline">
<option value="v0">GDA - Perm 0</option>
<option value="v1">Ville/Photo - Perm 1</option>
<option value="v1">Ville - Perm 1</option>
<option value="v2">Bureau - Perm 2</option>
<option value="v3">Admin - Perm 3</option>
</select>
@ -172,7 +172,7 @@ if(isset($_POST['send'])) {
echo "<a href='?ville=".$admin['id']."'><font color='green'>GDA</font></a>";
break;
case 1:
echo "<a href='?bur=".$admin['id']."'><font color='#3498DB'>Ville/Photo</font></a>";
echo "<a href='?bur=".$admin['id']."'><font color='#3498DB'>Ville</font></a>";
break;
case 2:
echo "<a href='?adm=".$admin['id']."'><font color='orange'>Bureau</font></a>";

View file

@ -1,14 +1,9 @@
<?php
$page = "index";
include "script.php";
//CAS
require_once("../phpCAS-1.3.6/CAS.php");
// Initialize phpCAS
phpCAS::client(CAS_VERSION_2_0, "cas.insa-toulouse.fr", 443, 'cas', true);
@ -44,8 +39,6 @@ if(isset($_POST['login'])) {
session_destroy();
header('Refresh:0');
}
?>
<!DOCTYPE html>
<html>
@ -74,8 +67,6 @@ if(isset($_POST['login'])) {
echo "<font color='red'>Admin</font>";
break;
}
echo "<br> Si l'onglet que vous recherchez n'est pas disponible, demandez avec amour et volupté une élévation d'acces à un respo web.";
} else {
?>
<form method="POST">
@ -87,8 +78,6 @@ if(isset($_POST['login'])) {
echo "<font color='red'>".$error."</font>";
}
?>
</main>
</body>
</html>

View file

@ -1,80 +0,0 @@
<?php
include "script.php";
include "../script/db_init.php";
if($user['perm'] < 3) {
header('Location: deco.php');
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin / Mots croisés</title>
</head>
<body>
<?php
if(isset($_POST["AJ_MOT"])){
$mot = htmlspecialchars($_POST["mot"]);
$req = $db->prepare("INSERT INTO mots_croise(name,trouve) VALUES(?,?)");
$req->execute(array($mot,0));
echo "exec";
}
if(isset($_POST["SUPP_MOT"])){
$req = $db->prepare("DELETE FROM mots_croise WHERE id=?");
$req->execute(array($_POST["id_mot"]));
}
?>
<main>
<form method="POST">
<input type="text" name="mot" id="mot_input" placeholder="mot à deviner" class="input_inline">
<input type="text" name="AJ_MOT" value="AJ_MOT" hidden>
<input type="submit" value="ajouter ce mot" class="submit_inline">
</form>
<h4>/!\Ajoutez les mots dans l'ordre de la grille/!\<h4>
<?php
$req = $db->query('SELECT * FROM mots_croise');
?>
<table class="acces">
<tr>
<th width="10%">ID (db)</th>
<th width="60%">Mot</th>
<th width="30%">Action</th>
</tr>
<?php
while($mot = $req->fetch()) {
?>
<tr>
<td><?= $mot['id'] ?></td>
<td><?= $mot['name'] ?></td>
<td>
<form method="POST">
<input type="text" name="SUPP_MOT" value="SUPP_MOT" hidden>
<input type="number" value="<?=$mot['id']?>" name="id_mot" hidden>
<input type="submit" value="supprimer" class="submit_inline">
</form>
</td>
</tr>
<?php } ?>
</table>
</main>
</body>

View file

@ -78,14 +78,7 @@ if(isset($_POST['send'])) {
header('Refresh: 0');
} else {
if(isset($_POST['day']) AND !empty($_POST['day'])
AND isset($_POST['title']) AND !empty($_POST['title'])
AND isset($_POST['description']) AND !empty($_POST['description'])
AND isset($_POST['color']) AND !empty($_POST['color'])
AND isset($_POST['order_start']) AND !empty($_POST['order_start'])
AND isset($_POST['length']) AND !empty($_POST['length'])
AND isset($_POST['num_planning']) AND !empty($_POST['num_planning'])
AND isset($_POST['opacity'])) {
if(isset($_POST['day']) AND !empty($_POST['day']) AND isset($_POST['title']) AND !empty($_POST['title']) AND isset($_POST['description']) AND !empty($_POST['description']) AND isset($_POST['color']) AND !empty($_POST['color']) AND isset($_POST['order_start']) AND !empty($_POST['order_start']) AND isset($_POST['length']) AND !empty($_POST['length']) AND isset($_POST['num_planning']) AND !empty($_POST['num_planning']) AND isset($_POST['opacity'])) {
$day = (int) htmlspecialchars($_POST['day']);
$title = htmlspecialchars($_POST['title']);
@ -229,5 +222,4 @@ if(isset($_POST['send'])) {
</table>
</main>
</body>
</html>

View file

@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.cmv-progress {
color: white;
min-height: 200px;
background-color: #333;
}
h5.cmv-title {
font-size: 1.1em;
padding: 1em 1em 0;
}
.cmv-container {
display:flex;
position:relative;
width:90%;
margin:auto;
height:100px;
}
.cmv-step {
position: relative;
width: 36px;
height: 36px;
background-color: #ccc;
color: black;
z-index: 5;
border-radius: 50%;
line-height: 36px;
text-align: center;
}
.cmv-step.fait, .cmv-step.active {
background-color: #06a6b7;
}
.cmv-step.active:before {
content: "";
position: absolute;
display: block;
background-color: white;
margin: 15%;
width: 70%;
height: 70%;
border-radius: 50%;
z-index: -15;
}
.cmv-way {
position: relative;
flex: 1;
}
.cmv-way.fait:before {
background-color: #06a6b7;
}
.cmv-way:before {
content: "";
display: block;
width: 120%; height: 1px;
margin-left: -10%;
margin-top: 17px;
background-color: #eee;
}
.cmv-fixed:before {
content: "";
width:1px; height: 7px;
background-color: white;
position: absolute;
top:42px;
left: 18px;
}
.cmv-fixed {
color: white;
width: 100%;
margin-top: 2px;
}
.cmv-relative {
content: "52m";
position: absolute;
color: white;
text-align: center;
width: 100%;
top: -10px;
}
</style>
</head>
<body>
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe 1-1</h5>
<div class="cmv-container">
<?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = 4;
/** $etape : À quelle étape en est cette équipe */
$etape = 5;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
$current = $etape - $depart + 1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
echo '<div class="cmv-fixed">--:--</div>';
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
echo '<div class="cmv-relative">--m</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
}
echo '</div>';
}
}
?>
</div>
</div>
</body>
</html>

View file

@ -1,5 +1,6 @@
<?php
include_once "../script/db.php";
include "../script/db.php";
session_start();
if(isset($_SESSION['id'])) {
@ -24,26 +25,20 @@ if($user_exist != 1) {
switch ($user['perm']) {
case 1:
$content = $content."<a href='ville.php'><li class='yellow'>Com'ville</li></a>"
."<a href='com_photo.php'><li class='yellow'>Com'Photo</li></a>";
$content = $content."<a href='ville.php'><li class='yellow'>Com'ville</li></a>";
break;
case 2:
$content = $content
."<a href='ville.php'><li class='yellow'>Com'ville</li></a>"
.'<a href="planning.php"><li class="orange">Planning</li></a>'
."<a href='com_photo.php'><li class='yellow'>Com'Photo</li></a>";
.'<a href="planning.php"><li class="orange">Planning</li></a>';
break;
case 3:
$content = $content
."<a href='ville.php'><li class='yellow'>Com'ville</li></a>"
."<a href=\"planning.php\"><li class=\"orange\">Planning</li></a>"
."<a href='com_photo.php'><li class='yellow'>Com'Photo</li></a>"
."<a href=\"mots_croises.php\"><li class=\"orange\">Mots croises</li></a>"
."<a href=\"gestion_des_acces.php\"><li class=\"red\">Gestion des accès</li></a>"
."<a href=\"enigma.php\"><li class=\"red\">Enigma</li></a>"
."<a href=\"../matomo\" target=\"_matomo\"><li class=\"red\">Matomo</li></a>"
."<a href=\"bdd.php\"><li class=\"red\">/!\DANGER ZONE/!\</li></a>";
.'<a href="planning.php"><li class="orange">Planning</li></a>'
.'<a href="gestion_des_acces.php"><li class="red">Gestion des accès</li></a>'
.'<a href="enigma.php"><li class="red">Enigma</li></a>'
.'<a href="../matomo" target="_matomo"><li class="red">Matomo</li></a>';
break;
}

View file

@ -1,8 +1,6 @@
<?php
include "script.php";
include "../assets/scripts/globals.php";
$req = $db->query('SELECT id, texte, points, team, id_staff FROM scores');
@ -75,8 +73,8 @@ if(isset($_POST['send'])) {
<input type="text" placeholder="Texte" name="texte" class="input_inline">
<input type="number" placeholder="point" name="point" class="input_inline">
<select name="team" class="input_inline">
<option value="t0"><?=$TEAM1?></option>
<option value="t1"><?=$TEAM2?></option>
<option value="t0">Pkpeach</option>
<option value="t1">Boomario</option>
</select>
<input type="submit" name="send" value="Ajouter" class="submit_inline">
</form>
@ -88,8 +86,8 @@ if(isset($_POST['send'])) {
<br><br>
<form method="POST">
<input type="submit" name="teamall" value="All" class="submit_inline">
<input type="submit" name="team0" value="<?=$TEAM1?>" class="submit_inline">
<input type="submit" name="team1" value="<?=$TEAM2?>" class="submit_inline">
<input type="submit" name="team0" value="Pkpeach" class="submit_inline">
<input type="submit" name="team1" value="Boomario" class="submit_inline">
</form>
<br><br>
<table class="acces">
@ -111,10 +109,10 @@ if(isset($_POST['send'])) {
<td><?php
switch ($stat['team']) {
case "0":
echo $TEAM1;
echo "Pkpeach";
break;
case "1":
echo $TEAM2;
echo "Boomario";
break;
}
?></td>

View file

@ -7,132 +7,41 @@ if($user['perm'] < 1) {
header('Location: deco.php');
}
if(isset($_POST['start1'])) {
$req = $db->prepare("UPDATE ville SET state = ?, time_begin = ? WHERE session = 1");
$req->execute(array(1, time()));
header('Refresh: 0');
}
if(isset($_POST['start2'])) {
$req = $db->prepare("UPDATE ville SET state = ?, time_begin = ? WHERE session = 2");
$req->execute(array(1, time()));
header('Refresh: 0');
}
if(isset($_POST['stop1'])) {
$req = $db->query("UPDATE ville SET state = 2 WHERE session = 1");
header('Refresh: 0');
}
if(isset($_POST['stop2'])) {
$req = $db->query("UPDATE ville SET state = 2 WHERE session = 2");
header('Refresh: 0');
}
// ajout d'une epreuve
if(isset($_POST['add_epreuve'])){
//$upload_state prend plusieurs valeurs :
// 1 si tout est valide et l'image n'existe pas déjà
// 0 si une verification a invalidé le fichier
// 2 si l'image existe déjà mais l'upload est valide, on va alors utiliser le nom pour la bdd
$file_name = null;
if($_FILES["photo"]["name"] != ""){
echo $_FILES["photo"]["name"];
$EXT_WHITELIST = array("gif","jpg","jpeg","raw","png","svg");
/* gestion des uploads d'images indices */
$target_dir = "../assets/img/com_ville/";
$target_file = $target_dir . basename($_FILES["photo"]["name"]);
$upload_state = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
$check = $_FILES["photo"]["size"] > pow(2,2);;
if($check !== false) {
$upload_state = 1;
} else {
$upload_state = 0;
}
if (file_exists($target_file)) {
$upload_state = 2;
}
// limite de taille
if ($_FILES["photo"]["size"] > pow(2,40)) {
$upload_state = 0;
}
// check le type de fichier
if (!in_array($imageFileType,$EXT_WHITELIST)){
$upload_state = 0;
}
$file_name = "";
switch($upload_state){
case 1:
move_uploaded_file($_FILES["photo"]["tmp_name"],$target_file);
$file_name = htmlspecialchars($_FILES["photo"]["name"]);
break;
case 2:
$file_name = htmlspecialchars($_FILES["photo"]["name"]);
break;
case 0:
?> <script>
alert("L'image envoyée n'a pas passées tout les tests de vérifications.");
</script>
<?php
break;
}
if(isset($_POST['reset1'])) {
if(htmlspecialchars($_POST['code']) == "anti-missclick") {
$req = $db->query("UPDATE ville SET state = 0, time_begin = 0 WHERE session = 1");
$req = $db->query("UPDATE ville_equipe SET temps = NULL WHERE id < 17");
header('Refresh: 0');
}
$_POST['est_finale'] = $_POST['est_finale'] == 'on' ? 1 : 0;
$req = $db->prepare("INSERT INTO ville_epreuve(indice,reponse,photo,id_equipe,est_finale,ordre,est_trouvee) VALUES(?,?,?,?,?,?,?)");
$req->execute(array(htmlspecialchars($_POST['indice']),
htmlspecialchars($_POST['reponse']),
$file_name,
(int)htmlspecialchars($_POST['id_equipe']),
(int)htmlspecialchars($_POST['est_finale']),
(int)htmlspecialchars($_POST['ordre']),
0
));
}
//ajout d'une equipe
if(isset($_POST['add_equipe'])){
$req = $db->prepare("INSERT INTO ville_equipe(nom,temps) VALUES(?,?)");
$req->execute(array(htmlspecialchars($_POST['nom']),NULL));
if(isset($_POST['reset2'])) {
if(htmlspecialchars($_POST['code']) == "anti-missclick") {
$req = $db->query("UPDATE ville SET state = 0, time_begin = 0 WHERE session = 2");
$req = $db->query("UPDATE ville_equipe SET temps = NULL WHERE id > 16");
header('Refresh: 0');
}
}
// suppression d'une équipe
if(isset($_POST['del_equipe'])){
$req = $db->prepare("DELETE FROM ville_equipe WHERE id=?");
$req->execute(array(htmlspecialchars((int)$_POST['id_ekip'])));
}
//suppression d'une épreuve
if(isset($_POST['del_epreuve'])){
$req = $db->prepare("DELETE FROM ville_epreuve WHERE id=?");
$req->execute(array((int)$_POST['id_epreuve']));
}
// reinitialiser la progression d'une equipe,
// utile si l'on fait plusieurs sessions
if(isset($_POST['reset_ekip'])){
$req = $db->prepare("UPDATE ville_epreuve SET est_trouvee=0 WHERE id_equipe=?");
$req->execute(array(htmlspecialchars((int)$_POST['id_equipe'])));
$req = $db->prepare("UPDATE ville_equipe SET temps=NULL WHERE id=?");
$req->execute(array(htmlspecialchars((int)$_POST['id_equipe'])));
}
if(isset($_POST['copier_chemin'])){
$sql = "INSERT INTO ville_epreuve (id_equipe, indice, reponse, photo, est_finale, ordre)
SELECT ?, indice, reponse, photo, est_finale, ordre
FROM ville_epreuve
WHERE id_equipe = ?";
$stmt = $db->prepare($sql);
$stmt->execute([htmlspecialchars((int)$_POST["id_equipe_dst"]), htmlspecialchars((int)$_POST["id_equipe_og"])]);
}
?>
<!DOCTYPE html>
<html>
@ -144,84 +53,348 @@ if(isset($_POST['copier_chemin'])){
</head>
<body>
<main>
<form method="POST" enctype="multipart/form-data">
<input type="text" name="indice" placeholder="indice" class="input_inline">
<input type="text" name="reponse" placeholder="réponse" class="input_inline">
<input type="file" name="photo" placeholder="image.png" id="photo" class="input_inline">
<input type="number" name="id_equipe" id="id_equipe" class="input_inline" value="<?= isset($_GET["ekip"]) ? (int)$_GET["ekip"]:1;?>">
<label for="id_equipe">id de l'équipe</label>
<br>
<input type="radio" name="est_finale" id="est_finale" class="input_inline">
<label for="est_finale">ultime épreuve</label>
<input type="number" name="ordre" id="ordre" class="input_inline">
<label for="ordre">ordre de l'épreuve</label>
<input type="submit" name="add_epreuve" value="Ajouter l'épreuve" class="submit_inline">
</form>
<hr>
<form method="POST">
<input type="text" name="nom" placeholder="nom de l'équipe" class="input_inline">
<input type="submit" name="add_equipe" value="Ajouter l'équipe" class="submit_inline">
</form>
<hr>
<form method="POST">
<input type="number" name="id_equipe" id="id_equipe" class="input_inline" value="<?= isset($_GET["ekip"]) ? (int)$_GET["ekip"]:1;?>">
<input type="submit" name="reset_ekip" value="Reinitialiser la progression de l'équipe" class="submit_inline">
</form>
<hr>
<h4>Copier le chemin d'une équipe pour une autre équipe</h4>
<form method="POST">
<input type="number" name="id_equipe_og" id="id_equipe_og" class="input_inline" value="<?= isset($_GET["ekip"]) ? (int)$_GET["ekip"]:1;?>">
<label for="id_equipe_og">Equipe d'origine</label>
<input type="number" name="id_equipe_dst" id="id_equipe_dst" class="input_inline" value="0">
<label for="id_equipe_dst">Equipe de destination</label>
<input type="submit" name="copier_chemin" value="Copier le chemin" class="submit_inline">
</form>
<h4>Equipes déjà enregistrées :</h4>
<table class="acces">
<?php
$req = $db->query('SELECT * FROM ville_equipe');
while($equipe = $req->fetch()) {
if(isset($_GET['session']) AND !empty($_GET['session']))
{
$session = (int) htmlspecialchars($_GET['session']);
if($session == 1) {
?>
<a href="ville.php?session=1" class="href_session_selected">Session matin</a>
<a href="ville.php?session=2" class="href_session">Session aprem</a>
<br>
<?php
$req = $db->query("SELECT state FROM ville WHERE session = 1");
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
echo "<th><a href=\"?ekip=".$equipe['id']."\">".htmlspecialchars($equipe['nom'])."(".$equipe['id'].")"."<a></th><wbr>";
if($r[0]['state'] == 0) {
?>
<font color="green">Session non demarré, </font>
<form method="POST">
<input type="submit" name="start1" value="Démarrer la session" class="submit_inline"></form>
</form>
<?php
} elseif($r[0]['state'] >= 1) {
if($r[0]['state'] == 1) {
?>
<font color="orange">Session en cours, </font>
<form method="POST">
<input type="submit" name="stop1" value="Stopper la session" class="submit_inline"></form>
</form>
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
<?php
} elseif($r[0]['state'] == 2) {
?>
<font color="red">Session terminé, </font>
<form method="POST">
<input type="text" name="code" placeholder="anti-missclick" class="input_inline">
<input type="submit" name="reset1" value="Reset la session" class="submit_inline"></form>
</form>
<?php
}
echo "<br><br><br>";
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 1");
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id < 17');
while($e = $reqe->fetch()) {
$temps_init = $e["temps"];
$tab_time = NULL;
$tab_time = explode(";", $temps_init);
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
if($temps_init == NULL) {
$avancement = (int) 0;
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
} else {
$avancement = count($tab_time);
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
}
//node 0
?>
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
<div class="cmv-container">
<div class="cmv-step fait">0
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
</div>
<div class="cmv-way fait">
<div class="cmv-relative"><?= $delta_time_0 ?></div>
</div>
<?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = $e['begin'];
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
//$etape = 1;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
//$current = $etape - $depart + 1;
$current = $avancement+1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
if($i == $current) {
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
} else {
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
if($i < $current-1) {
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
} else {
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
}
}
?>
</div>
</div>
<?php
} //fin du while e
}
} elseif($session == 2) {
?>
<a href="ville.php?session=1" class="href_session">Session matin</a>
<a href="ville.php?session=2" class="href_session_selected">Session aprem</a>
<br>
<?php
$req = $db->query("SELECT state FROM ville WHERE session = 2");
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
if($r[0]['state'] == 0) {
?>
<font color="green">Session non demarré, </font>
<form method="POST">
<input type="submit" name="start2" value="Démarrer la session" class="submit_inline"></form>
</form>
<?php
} elseif($r[0]['state'] >= 1) {
if($r[0]['state'] == 1) {
?>
<font color="orange">Session en cours, </font>
<form method="POST">
<input type="submit" name="stop2" value="Stopper la session" class="submit_inline"></form>
</form>
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
<?php
} elseif($r[0]['state'] == 2) {
?>
<font color="red">Session terminé, </font>
<form method="POST">
<input type="text" name="code" placeholder="anti-missclick" class="input_inline">
<input type="submit" name="reset2" value="Reset la session" class="submit_inline"></form>
</form>
<?php
}
echo "<br><br><br>";
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 2");
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id > 16');
while($e = $reqe->fetch()) {
$temps_init = $e["temps"];
$tab_time = NULL;
$tab_time = explode(";", $temps_init);
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
if($temps_init == NULL) {
$avancement = (int) 0;
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
} else {
$avancement = count($tab_time);
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
}
//node 0
?>
<div class="cmv-progress">
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
<div class="cmv-container">
<div class="cmv-step fait">0
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
</div>
<div class="cmv-way fait">
<div class="cmv-relative"><?= $delta_time_0 ?></div>
</div>
<?php
/** Pour une équipe donnée */
/** $depart : Le point de départ de cette équipe */
$depart = $e['begin'];
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
//$etape = 1;
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
for ($i = 1; $i <= 17; $i++) {
/** $node : Le numéro dans la node à l'emplacement $i
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
$node = ($i + $depart - 2) % 17 + 1;
/** $current : À quel index est placé la node correspondante à l'$etape
* exemple : une équipe qui commence au point 17 en est au point 3,
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
//$current = $etape - $depart + 1;
$current = $avancement+1;
if ($current < 0) {
$current = $current + 17;
}
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
$state = '';
if ($i < $current) {
$state = ' fait';
} elseif ($i === $current) {
$state = ' active';
}
echo '<div class="cmv-step'.$state.'">';
echo $node;
if ($i <= $current) {
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
if($i == $current) {
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
} else {
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
if ($i < 17) {
echo '<div class="cmv-way'.$state.'">';
if ($i < $current) {
if($i < $current-1) {
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
} else {
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
}
}
echo '</div>';
}
}
?>
</div>
</div>
<?php
} //fin du while e
}
} else {
header('Location: ../error.php');
}
} else {
?>
</table>
<hr>
<?php
$ekip = isset($_GET["ekip"]) ? (int)$_GET["ekip"]:1;
$req = $db->prepare('SELECT * FROM ville_epreuve WHERE id_equipe=?');
$req->execute(array($ekip));
?>
<form method="POST">
<input type="number" name="ekip" id="id_equipe" placeholder="numéro de l'équipe" class="input_inline">
<label for="ekip">Numéro de l'équipe dont tu veux voir le tableau</label>
<input type="submit" name="aff_equipe" value="Afficher le tableau de l'équipe" class="submit_inline">
</form>
<a href="ville.php?session=1" class="href_session">Session matin</a>
<a href="ville.php?session=2" class="href_session">Session aprem</a>
<table class="acces">
<tr>
<th width="10%">ID (db)</th>
<th width="70%">Indice</th>
<th width="10%">Reponse</th>
<th width="10%">Photos</th>
<th width="10%">Id_equipe</th>
<th width="10%">Est finale</th>
<th width="10%">Ordre</th>
<th width="10%">Est trouvée</th>
<th width="10%">Action</th>
<th width="10%">ID (db)</td>
<th width="70%">Indice</td>
<th width="10%">reponse</td>
<th width="10%">photos</td>
</tr>
<?php
$req = $db->query('SELECT id, indice, reponse, photo FROM ville_epreuve');
while($epreuve = $req->fetch()) {
?>
<tr>
@ -229,23 +402,11 @@ if(isset($_POST['copier_chemin'])){
<td><?= $epreuve['indice'] ?></td>
<td><?= $epreuve['reponse'] ?></td>
<td><?php if(isset($epreuve['photo'])) { ?><img src="../assets/img/com_ville/<?= $epreuve['photo'] ?>" style="height: 100px;"><?php } else { echo "<font color='red'>no photos</font>"; }?></td>
<td><?= $epreuve['id_equipe'] ?></td>
<td><?= $epreuve['est_finale'] == 0 ? "non":"oui" ?></td>
<td><?= $epreuve['ordre'] ?></td>
<td><?= $epreuve['est_trouvee'] == 0 ? "non":"oui" ?></td>
<td>
<form method="POST">
<input type="text" name="del_epreuve" value="del_epreuve" hidden>
<input type="number" value="<?=$epreuve['id']?>" name="id_epreuve" hidden>
<input type="submit" value="supprimer">
</form>
</td>
</tr>
<?php } ?>
</table>
<?php ?>
<?php } ?>
</main>
</body>
</html>

View file

@ -1,33 +1,51 @@
<?php
ob_start(); // Start reading html
include "assets/scripts/globals.php";
?>
<main>
<div class="box-jaune">
<span class="corners corners-top"></span>
<span class="corners corners-bottom"></span>
<div class="zone_txt">
<p>
Vous savez, moi je ne pense pas quil y ait de bonnes ou de mauvaises semaines daccueil. Moi
si je devais résumer aujourdhui la ComAnim avec vous,
</p>
<p>
Je dirais que cest avant tout du rire et de la bienveillance.
Des rencontres entre PPA, des liens qui se créeront et qui dureront.
Et cest assez curieux de se dire que les rencontres, les hasards forgent une destinée, parce que
quand on a le goût de lINSA, le goût de lentraide, on trouve nécessairement un GDA prêt à vous
tendre la main.
</p>
<p>
Et ce sera le cas de tous les Petits Prodiges Amusés et ils diront merci à la ComAnim ils
danseront la ComAnim ils chanteront la ComAnim ils ne seront que joie. Et quand les Supaéro
nous diront mais comment faites-vous pour faire une semaine daccueil si réussie ? Eh bien je
leur répondrai simplement que cest cet esprit, ces valeurs de lINSA qui nous ont poussés à
créer cette si belle semaine.
</p>
<div class="title">Message de la Com'anim</div>
<span class="circles circles-top"></span>
<span class="circles circles-bottom"></span>
</div>
<section>
<p>Coucou Petit.e Pêche Agréable,</p>
<p>Nous cest la ComAnim, on est pour taccueillir dans la joie et la bonne humeur avec de RATvissantes activités faites mains. Voici un petit mot pour découvrir notre Com en détails :</p>
<p><font color="red">C</font>ombative peu importe le budget (très) serré.</p>
<p><font color="red">O</font>pérationnelle, le stock de peau de banane complet.</p>
<p><font color="red">M</font>eilleure Com, mais ça tu le découvriRAT par toi-même.</p>
<p><font color="red"></font></p>
<p><font color="red">A</font>ssurée, tout est prêt, on tattend.</p>
<p><font color="red">N</font>aturelle et toujours humble.</p>
<p><font color="red">I</font>maginative, deux plots et un ballon nous suffise.</p>
<p><font color="red">M</font>ultitâches : soirée déguisée, concert, rencontre on est !</p>
<p><strong style="text-decoration: underline;">Attention très important :</strong> Le mardi au soir, il y aura une soirée déguisée. Nous comptons sur toi pour RATmener ton meilleur déguisement sur le thème de ton choix. Il y aura des prix pour les plus créatifs…</p>
<p>Gros bisous,</p>
<p>On a hâte de vous <s>épuiser</s> rencontrer 😊</p>
<p>Julimace et aladin</p>
<br><br>
<p><strong><font color="red">PS :</font></strong> n'hésitez pas si vous avez des questions, on répond <strong>RAT</strong>pidement : <a href="https://www.instagram.com/julie_brgs_/" class="link">@julie_brgs_</a> & <a href="https://www.instagram.com/andrea.ldn/" class="link">@andrea.ldn</a></p>
</section>
</main>
<?php
$infopage = ["", "Com'anim", ob_get_clean(), "", "anim","Message de la Com'anim"]; //relativepath, pagetitle, pagecontent, pagescript, pagename | cf structure/template.php ligne 2 à 6
$infopage = ["", "Com'anim", ob_get_clean(), "", "anim"]; //relativepath, pagetitle, pagecontent, pagescript, pagename | cf structure/template.php ligne 2 à 6
include("structure/template.php");
?>

View file

@ -1,139 +1,125 @@
.menu {
position: fixed;
width: 98vw;
bottom: -2px;
left: 0;
width: 100%;
height: auto;
z-index: 2;
overflow: visible;
transition: transform 0.3s;
bottom: 0;
border-radius: 20px;
margin-left: 1vw;
margin-right: 1vw;
margin-bottom: 1vh;
}
#menu ul {
flex-wrap: wrap;
padding: 0;
margin: 0;
list-style: none;
display: flex;
justify-content: center;
color: #fff;
height: auto;
align-items: center;
background-color:#FFF2C8;
background-image: url("../img/bordure-sans-fond.svg");
border-radius: 5px;
}
#menu li {
margin: 0 10px;
font-weight: 900;
}
#menu a {
display: block; /* Add this line to make the link fill the entire menu item */
padding: 15px; /* Add some padding for better readability and clickable area */
color: #6D071A;
text-decoration: none;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
font-size: 30px !important;
background-color: rgba(45, 47, 45, 0);
border-radius: 5px;
font-weight: 900;
}
#menu a:hover{
color: #09c758;
transform: translateY(-2px);
}
/*hide the mobile menu by default*/
.topnav{
visibility: hidden;
height: 0px;
}
/* Add styles for smartphones screens */
@media all and (max-width: 800px) {
.menu{
visibility: hidden;
height: 0px;
}
/* Style the navigation menu */
.topnav {
visibility: visible;
overflow-y: scroll;
background-color: #333;
.tuyau {
position: fixed;
width: 95%;
z-index: 100;
border-radius: 10px;
margin-top: 1vh;
bottom: -2px;
right: 3vw;
width: 8%;
min-width: 6.3vmax;
height: auto;
margin-left: 2.5%;
margin-right: 2.5%;
}
z-index: 2;
cursor: pointer;
/* Hide the links inside the navigation menu (except for logo/home) */
.topnav #mobile_menu_links {
display: none;
}
transition: transform 0.3s;
overflow: visible;
}
/* Style navigation menu links */
.topnav a {
color: white;
padding: 1vh 1vw;
text-decoration: none;
font-size: 4vh;
.menu-link use {
transition: transform 50ms;
transform-origin: center;
}
.menu-link.menu-bottom-line use {
transform-origin: bottom;
}
.menu-link text {
transition: transform 50ms;
}
.menu .menu-link:hover text {
fill: #FFDC00;
transform: translateY(-1px);
}
.menu-link:hover use {
transform: scaleY(1.1);
}
.menu svg {
overflow: visible;
}
.mobile-menu {
display: block;
margin-left: auto;
margin-right: auto;
text-align: center;
}
position: fixed;
top: 0; left: 0;
overflow: hidden;
width: 100%;
z-index: 20;
.topnav li {
height: 0;
background: rgba(15, 15, 23, 0);
transition: background-color 0.2s linear;
}
.mobile-menu .containerF3g {
width: 100%; height: 100%;
overflow: auto;
}
.mobile-grid {
display: flex;
text-align: center;
}
flex-wrap: wrap;
padding: 2vh 60px;
min-height: 100vh;
justify-content: center;
align-content: center;
}
/* Style the hamburger menu */
.topnav a.icon {
background: black;
.mobile-menu-link {
min-width: 100px;
width: 50%;
display: block;
opacity: 0;
cursor: pointer;
transform: translateY(10%);
transition: transform 0.2s ease-out, opacity 0.2s linear 0.05s;
}
nav.mobile-menu.open .mobile-menu-link {
transform: translateY(0);
opacity: 1;
}
.menu-link:hover text {
fill: #FFDC00;
}
.mobile-brick {
display: block;
}
span.close-mobile-menu {
color: #FFF;
font-size: 80px;
display: block;
position: absolute;
right: 0;
top: 0;
}
/* Add a grey background color on mouse-over */
.topnav a:hover {
background-color: #ddd;
color: black;
}
.active {
background-color: rgb(27, 170, 22);;
color: white;
}
-webkit-user-select: none; /* Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+/Edge */
user-select: none; /* Standard */
cursor: pointer;
bottom: 0;
right: 20px;
transition: color 0.5s;
}
span.close-mobile-menu:hover {
color: #FFDC00;
}

View file

@ -0,0 +1,12 @@
section {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80%;
max-width: 800px;
margin-left: auto;
margin-right: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
text-align: left;
}

View file

@ -1,3 +1,19 @@
section {
background-color: rgba(255,255,255,0.5);
max-width: 800px;
margin-left: auto;
margin-right: auto;
padding-bottom: 50px;
font-size: 1.2rem;
margin-top: 40px;
text-align: left;
}
#texte {
margin: 50px;
}
section ul li {
list-style: inside;
}
@ -21,9 +37,3 @@ section ul li {
width: 100%;
text-align: center;
}
.ul-couleurs{
background-color:#FFFFFF;
border-radius: 10px;
padding: 10px;
}

View file

@ -10,30 +10,6 @@ section {
margin-top: 40px;
}
#ekip{
width: 20vw;
height: 10vh;
border-radius: 5px;
font-size: large;
}
.btn-equipe{
background-color: #a06827;
color: #ffffff;
padding: 5vh 10vw 5vh 10vw;
margin-top: 30px;
border-radius: 10px;
font-size: large;
font-weight: bolder;
}
.main-form{
font-size: 2vw;
}
a.team {
display: block;
color: black;
@ -114,29 +90,3 @@ th {
td.title {
color: red;
}
@keyframes rotate-zoom {
0% {
transform: rotate(0deg) scale(1);
}
25%{
transform: rotate(90deg) scale(1.5);
}
50% {
transform: rotate(180deg) scale(2);
}
75%{
transform: rotate(270deg) scale(1.5);
}
100% {
transform: rotate(360deg) scale(1);
}
}
.prez-ep {
animation-name: rotate-zoom;
animation-duration: 2s; /* Adjust the duration as desired */
animation-timing-function: linear;
animation-iteration-count: infinite;
width: 30%;
height: 30%;
}

View file

@ -0,0 +1,64 @@
body {
color: white;
background-color: white;
}
.box-jaune h1 {
margin: 0 0 0.5em;
padding: 0;
}
section h1 {
margin: 0;
padding: 10px;
}
section h4 {
margin: 0;
padding: 10px;
}
#main_content {
display: block;
background-color: rgba(255,255,255,0); //pour mettre un magnifique fond
width: 40%;
margin-left: auto;
margin-right: auto;
font-size: 1.2rem;
}
section {
display: block;
width: 80%;
padding: 0;
margin: 20px auto auto;
align-items: center;
border: 5px solid white;
background: rgba(0,0,0,0.5);
}
section ul {
list-style-type: none;
}
section li {
margin-bottom: 30px;
}
section .title_com {
width: 100%;
background-color: white;
color: black;
margin: 0px;
padding: 10px 0px 10px 0px;
}
.fonction_bureau {
display: inline-block;
background-color: white;
color: black;
padding: 10px;
margin-top: 0;
font-size: 1.5rem;
}

View file

@ -1,30 +0,0 @@
#taupe{
top: 100%;
}
#decompte{
margin-top: 5%;
width: 100%;
height: 200%;
font-size: 10vh;
color: rgb(196, 23, 23);
}
/* ajuste le décompte pour les petits écrans*/
@media all and (max-width: 800px) {
#decompte{
font-size: 7vh;
color: rgb(40, 230, 11);
border-radius: 10px;
width: 95%;
margin-left: 2.5%;
margin-right: 2.5%;
}
}

View file

@ -1,33 +1,11 @@
#decompte{
margin-top: 5%;
width: 70%;
height: 200%;
font-size: 10vh;
color: rgb(230, 11, 11);
padding: 10px;
border-radius: 10px;
margin-right: 15vw;
margin-left: 15vw;
z-index: 1;
/*background-color: rgba(255, 228, 196, 0.378);*/
border-width: 10px;
border-color: red;
border: solid;
}
/* ajuste le décompte pour les petits écrans*/
@media all and (max-width: 800px) {
#decompte{
font-size: 7vh;
color: rgb(45, 255, 13);
background-color: rgba(27, 187, 205, 0.188);
border-radius: 10px;
width: 95%;
margin-left: 2.5%;
margin-right: 2.5%;
}
#msg_acc {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80%;
max-width: 800px;
margin-left: auto;
margin-right: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}

View file

@ -1,31 +1,39 @@
main {
color: rgb(0, 0, 0);
color: white;
font-size: 1.4rem;
}
section {
display: block;
width: 80%;
padding: 0;
margin: 20px auto auto;
align-items: center;
border: 5px solid white;
background: rgba(0,0,0,0.5);
}
div p {
section p {
padding: 0 12px;
}
div h1 {
section h1 {
width: 100%;
background-color: rgba(45, 100, 145, 0.497);
background-color: white;
color: black;
margin: 0;
padding: 10px 0 10px 0;
border-radius: 5px;
}
div .title_contact {
section .title_contact {
display: inline-block;
background-color: rgba(45, 100, 145, 0.497);
background-color: white;
color: black;
padding: 10px;
margin-top: 0;
font-size: 1.5rem;
border-radius: 5px;
}
.starterpack {

View file

@ -1,3 +1,12 @@
#desc {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80vw;
margin: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}
iframe {
width: 50vw;
@ -6,11 +15,12 @@ iframe {
#video {
display: block;
width: 70vw;
width: 80vw;
padding: 0;
margin: auto;
margin-top: 20px;
text-align: center;
border: 5px solid white;
}
#video ul {
@ -22,7 +32,7 @@ iframe {
}
#video .title_video {
width: 70vw;
width: 100%;
background-color: white;
color: black;
margin: 0px;

View file

@ -2,6 +2,19 @@
text-align: center;
}
section {
background-color: rgba(255,255,255,0.5);
max-width: 800px;
margin-left: auto;
margin-right: auto;
font-size: 1.2rem;
margin-top: 40px;
text-align: left;
display: block;
width: 80vw;
padding: 50px;
}
#maps {
position: relative;
display: block;

View file

@ -0,0 +1,15 @@
section {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80%;
max-width: 800px;
margin-left: auto;
margin-right: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}
section ul li {
list-style: inside;
}

View file

@ -2,6 +2,16 @@ body {
text-align: center;
}
section {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80vw;
margin-left: auto;
margin-right: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}
a {
text-decoration: none;

View file

@ -4,6 +4,7 @@ main {
margin: 0;
width: 100%;
}
section {
display: block;
background-color: rgba(255,255,255,0.5);

View file

@ -33,3 +33,13 @@ iframe {
margin: 0px;
padding: 10px 0px 10px 0px;
}
#desc {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80vw;
margin: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}

View file

@ -2,6 +2,18 @@ main {
text-align: center;
}
section {
display: block;
background-color: rgba(255,255,255,0.5);
width: 80%;
max-width: 800px;
margin-left: auto;
margin-right: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}
table.out {
margin-top: 50px;
margin-right: auto;

View file

@ -0,0 +1,12 @@
section {
display: block;
text-align: left;
background-color: rgba(255,255,255,0.5);
width: 80%;
max-width: 800px;
margin-left: auto;
margin-right: auto;
padding: 50px;
font-size: 1.2rem;
margin-top: 40px;
}

View file

@ -3,6 +3,14 @@ main {
width: 100vw;
}
section {
display: inline-block;
background-color: rgba(255,255,255,0.5);
aspect-ratio: 425/600;
width: 43vw;
margin: 60px auto 1vw;
}
img {
width: 100%;
background-color: transparent;
@ -22,16 +30,6 @@ form {
height: 30px;
margin: 5px;
}
.numeric-input {
display: inline-block;
width: 10%;
background-color: white;
border: 3px solid grey;
border-radius: 4px;
text-align: center;
height: 30px;
margin: 5px;
}
.submit {
width: 50%;

View file

@ -1,38 +0,0 @@
.conteneur-oeuf-de-paque{
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
@keyframes rotation {
to{
visibility: visible;
transform: rotate3d(1, 1, 1, 0deg);
}
from{
transform: rotate3d(1, 1, 1, 360deg);
}
}
.vice-prez{
top: 0%;
position: fixed;
animation-name: rotation;
animation-duration: 1s;
animation-iteration-count: infinite;
}
.clash-gif{
position: fixed;
top: 0%;
}

View file

@ -1,34 +1,19 @@
/* Custom Obelix font definition : */
/* Custom mario font definition : */
@font-face{
font-family: "Lapsus Pro Bold";
src: url("../fonts/lapsus-pro.ttf");
font-family: "Mario Extended";
src: url("../fonts/MarioFontExtended.otf") format("opentype");
}
*, *::before, *::after {
box-sizing: border-box;
}
.zone_txt {
display: block;
background-color: rgba(88, 159, 218, 0.798);
width: 90vw;
margin-left: auto;
margin-right: auto;
padding: 5vw;
font-size: 2rem;
margin-top: 40px;
border-radius: 15px;
color: black;
z-index: 1;
}
html {
font-size: 20px;
}
body {
font-family: 'Lapsus Pro Bold';
font-family: 'Mario Extended', sans-serif;
font-size: 1rem;
@ -37,45 +22,27 @@ body {
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 100vh;
background-attachment: fixed;
background-color: #bdc7f3;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 40' width='80' height='40'%3E%3Cpath fill='%235289ea' fill-opacity='0.2' d='M0 40a19.96 19.96 0 0 1 5.9-14.11 20.17 20.17 0 0 1 19.44-5.2A20 20 0 0 1 20.2 40H0zM65.32.75A20.02 20.02 0 0 1 40.8 25.26 20.02 20.02 0 0 1 65.32.76zM.07 0h20.1l-.08.07A20.02 20.02 0 0 1 .75 5.25 20.08 20.08 0 0 1 .07 0zm1.94 40h2.53l4.26-4.24v-9.78A17.96 17.96 0 0 0 2 40zm5.38 0h9.8a17.98 17.98 0 0 0 6.67-16.42L7.4 40zm3.43-15.42v9.17l11.62-11.59c-3.97-.5-8.08.3-11.62 2.42zm32.86-.78A18 18 0 0 0 63.85 3.63L43.68 23.8zm7.2-19.17v9.15L62.43 2.22c-3.96-.5-8.05.3-11.57 2.4zm-3.49 2.72c-4.1 4.1-5.81 9.69-5.13 15.03l6.61-6.6V6.02c-.51.41-1 .85-1.48 1.33zM17.18 0H7.42L3.64 3.78A18 18 0 0 0 17.18 0zM2.08 0c-.01.8.04 1.58.14 2.37L4.59 0H2.07z'%3E%3C/path%3E%3C/svg%3E");
}
.bg{
background-color: #499135;
background-repeat: no-repeat, no-repeat;
background-size: auto,cover;
body::before {
content: "";
position: fixed;
height: 100%;
width: 100%;
/* s/o coconut.jpeg */
z-index: -10000000;
z-index: -2;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
clip-path: polygon(0 0, 55% 0, 45% 100%, 0 100%);
clip-path: polygon(0 0, calc(54% + 20px) 0, calc(46% - 20px) 100%, 0 100%);
background-color: #f3e8c4;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 40' width='80' height='40'%3E%3Cpath fill='%23efc725' fill-opacity='0.2' d='M0 40a19.96 19.96 0 0 1 5.9-14.11 20.17 20.17 0 0 1 19.44-5.2A20 20 0 0 1 20.2 40H0zM65.32.75A20.02 20.02 0 0 1 40.8 25.26 20.02 20.02 0 0 1 65.32.76zM.07 0h20.1l-.08.07A20.02 20.02 0 0 1 .75 5.25 20.08 20.08 0 0 1 .07 0zm1.94 40h2.53l4.26-4.24v-9.78A17.96 17.96 0 0 0 2 40zm5.38 0h9.8a17.98 17.98 0 0 0 6.67-16.42L7.4 40zm3.43-15.42v9.17l11.62-11.59c-3.97-.5-8.08.3-11.62 2.42zm32.86-.78A18 18 0 0 0 63.85 3.63L43.68 23.8zm7.2-19.17v9.15L62.43 2.22c-3.96-.5-8.05.3-11.57 2.4zm-3.49 2.72c-4.1 4.1-5.81 9.69-5.13 15.03l6.61-6.6V6.02c-.51.41-1 .85-1.48 1.33zM17.18 0H7.42L3.64 3.78A18 18 0 0 0 17.18 0zM2.08 0c-.01.8.04 1.58.14 2.37L4.59 0H2.07z'%3E%3C/path%3E%3C/svg%3E");
}
/* papier peint pour petits écrans (smartphones) */
@media all and (max-width: 800px) {
.bg{
background-position: 2vw 15vh, center center;
background-size: auto,cover;
height: 100vh;
width: 100vw;
min-width: 550px;
}
}
@supports (-webkit-touch-callout: none) and (max-width: 800px){
/* CSS specific to iOS phones */
}
main {
text-align: center;
height: 100%;
@ -104,39 +71,64 @@ a.linkmail:hover {
-webkit-text-stroke: 1px white;
}
/* BEGIN PANCARTE */
.pancarte {
/** START BOX JAUNE **/
.box-jaune {
display: inline-block;
position: relative;
padding: 10px;
margin: 40px 10vw 0;
font-size: 2.5px;
background-color: #a06827;
border-top: solid 2em #a06827;
border-left: solid 2em #a06827;
border-right: solid 2em #a06827;
border-bottom: solid 2em #332806;
background-color: #efd21f;
border-top: solid 2em #fbf322;
border-left: solid 2em #a29013;
border-right: solid 2em #f7e31c;
border-bottom: solid 2em #73590b;
border-radius: 10px;
z-index: 1;
clip-path: polygon(
0 2.00em,1em 1em,2.00em 0,
calc(100% - 2.00em) 0,calc(100% - 1em) 1em,100% 2.00em,
100% calc(100% - 2.00em),calc(100% - 1em) calc(100% - 1em),calc(100% - 2.00em) 100%,
2.00em 100%,1em calc(100% - 1em),0 calc(100% - 2.00em)
);
}
/*
ajoute une petite marge au dessus de la pancarte sur mobile pour laisser
de la place a la navbar
ajuste aussi la taille du texte de la pancarte
*/
@media all and (max-width: 800px) {
.pancarte{
margin-top: 10vh;
}
.corners-top::before {
top: -2em;
left: -2em;
background-color: #bfa018;
}
.pancarte .title {
.corners-top::after {
top: -2em;
right: -2em;
background-color: #fbfa87;
}
.corners-bottom::before {
bottom: -1.9em;
left: -2em;
background-color: #44350d;
}
.corners-bottom::after {
bottom: -1.9em;
right: -2em;
background-color: #967912;
}
.corners::before,
.corners:after {
content:"";
position: absolute;
display:block;
width: 2em;
height: 2em;
z-index: 2;
}
.box-jaune .title {
padding: 3vw 4.5vw;
color: black;
font-size: 1.5rem;
@ -172,7 +164,7 @@ ajuste aussi la taille du texte de la pancarte
right: 3em;
}
/** END PANCARTE **/
/** END BOX JAUNE **/
.menu_space_bottom {
position: sticky;
@ -192,7 +184,7 @@ ajuste aussi la taille du texte de la pancarte
footer {
display: block;
flex-shrink: 0;
background-color: #74c457;
background-color: #6cc54d;
background-image: url("data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%237ee15e' fill-rule='evenodd'%3E%3Cpath d='M0 40L40 0H20L0 20M40 40V20L20 40'/%3E%3C/g%3E%3C/svg%3E");
border-radius: 20px 20px 0 0;
-webkit-box-shadow: 0 0 8px -1px rgba(8, 10, 13, 0.34);
@ -201,7 +193,6 @@ footer {
padding: 50px;
font-size: 1rem;
color: black;
z-index: 1;
}
.footer-text-area {
@ -210,8 +201,6 @@ footer {
margin-top: 2vh;
margin-left: auto;
margin-right: auto;
font-size: 3vh;
}
@ -237,7 +226,3 @@ section {
#main_content {
padding-top: 20px;
}
.pc_container{
text-align: center;
}

Binary file not shown.

View file

@ -1,13 +1,13 @@
<?php
function colored_text($str) {
$cl = ["Royal Blue", "green", "red","brown","yellow"];
$cl = ["red", "blue", "green", "orange", "grey", "brown", "purple"];
$str_out = "";
$ant_color = "";
for($i=0; $i<=strlen($str)-1 ;$i++) {
$color = $cl[rand(0, count($cl)-1)];
$color = $cl[rand(0, 6)];
while($color == $ant_color) {
$color = $cl[rand(0, count($cl)-1)];
$color = $cl[rand(0, 6)];
}
$ant_color = $color;
$str_out = $str_out."<font color='".$color."'>".$str[$i]."</font>";

Binary file not shown.

Binary file not shown.

BIN
assets/img/35.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 309 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 454 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 169 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 2.5 MiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 212 KiB

View file

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="500" height="500" viewBox="0 0 500 500" xml:space="preserve">
<desc>Created with Fabric.js 4.6.0</desc>
<defs>
</defs>
<g transform="matrix(2.63 0 0 0.52 260.78 198.31)" id="wez2Ww8CpL1QWcfcIThkZ" >
<path style="stroke: rgb(248,117,126); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -67.67241 -67.67241 L 67.67242 -67.67241 L 67.67242 67.67242 L -67.67241 67.67242 z" stroke-linecap="round" />
</g>
<g transform="matrix(1 0 0 1.63 44.4 198.28)" id="p-kuD9gcWX0uPDCf9wVph" >
<path style="stroke: rgb(217,190,90); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -38.36207 -28.37219 C -38.36207 -33.88945 -31.075210000000002 -38.36207 -22.086420000000004 -38.36207 L 22.086419999999997 -38.36207 L 22.086419999999997 -38.36207 C 31.07521 -38.36207 38.362069999999996 -33.889450000000004 38.362069999999996 -28.372190000000003 L 38.362069999999996 28.372189999999996 L 38.362069999999996 28.372189999999996 C 38.362069999999996 33.88945 31.075209999999995 38.362069999999996 22.086419999999997 38.362069999999996 L -22.086420000000004 38.362069999999996 L -22.086420000000004 38.362069999999996 C -31.075210000000006 38.362069999999996 -38.36207 33.88945 -38.36207 28.372189999999996 z" stroke-linecap="round" />
</g>
<g transform="matrix(1 0 0 1.63 461.21 198.31)" id="CDzTthWUfteWkJu2NojN4" >
<path style="stroke: rgb(217,190,90); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -38.36207 -28.37219 C -38.36207 -33.88945 -31.075210000000002 -38.36207 -22.086420000000004 -38.36207 L 22.086419999999997 -38.36207 L 22.086419999999997 -38.36207 C 31.07521 -38.36207 38.362069999999996 -33.889450000000004 38.362069999999996 -28.372190000000003 L 38.362069999999996 28.372189999999996 L 38.362069999999996 28.372189999999996 C 38.362069999999996 33.88945 31.075209999999995 38.362069999999996 22.086419999999997 38.362069999999996 L -22.086420000000004 38.362069999999996 L -22.086420000000004 38.362069999999996 C -31.075210000000006 38.362069999999996 -38.36207 33.88945 -38.36207 28.372189999999996 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.72 0 0 1.2 461.21 198.01)" id="U4HPsI1Tu9_aouwWBxMLd" >
<path style="stroke: rgb(209,104,137); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(181,168,157); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -32.18475 C -43.10345 -38.214980000000004 -34.91597 -43.10345 -24.81621 -43.10345 L 24.8162 -43.10345 L 24.8162 -43.10345 C 34.91597 -43.10345 43.10344 -38.214980000000004 43.10344 -32.18475 L 43.10344 32.18475 L 43.10344 32.18475 C 43.10344 38.214980000000004 34.91596 43.10345 24.8162 43.10345 L -24.81621 43.10345 L -24.81621 43.10345 C -34.915980000000005 43.10345 -43.10345 38.214980000000004 -43.10345 32.18475 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.72 0 0 1.2 44.4 198.28)" id="nU7SdAq5JL2lIJBhRppSj" >
<path style="stroke: rgb(209,104,137); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(181,168,157); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -32.18475 C -43.10345 -38.214980000000004 -34.91597 -43.10345 -24.81621 -43.10345 L 24.8162 -43.10345 L 24.8162 -43.10345 C 34.91597 -43.10345 43.10344 -38.214980000000004 43.10344 -32.18475 L 43.10344 32.18475 L 43.10344 32.18475 C 43.10344 38.214980000000004 34.91596 43.10345 24.8162 43.10345 L -24.81621 43.10345 L -24.81621 43.10345 C -34.915980000000005 43.10345 -43.10345 38.214980000000004 -43.10345 32.18475 z" stroke-linecap="round" />
</g>
<g transform="matrix(3.94 0 0 -0.08 252.8 196.77)" id="MDR6cUyKI2GNyTOeDArN-" >
<path style="stroke: rgb(193,80,199); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(181,168,157); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.62 0 0 0.05 462.24 194.43)" id="Lgh3ZKzBDnuCJzYM0EyvR" >
<path style="stroke: rgb(6,161,71); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.62 0 0 0.05 44.4 196.58)" id="78FTt5zzP1zQcTPMopwHe" >
<path style="stroke: rgb(6,161,71); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.62 0 0 0.05 44.4 227.19)" id="4FU5SH2U-8G4kTFfPTl9N" >
<path style="stroke: rgb(6,161,71); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.62 0 0 0.05 44.4 167.27)" id="mEMaY-15TJ14Ck7dvqZDo" >
<path style="stroke: rgb(6,161,71); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.62 0 0 0.05 462.61 231.5)" id="nAGl7ZFuWgDuN4_DQ1kh0" >
<path style="stroke: rgb(6,161,71); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
<g transform="matrix(0.62 0 0 0.05 462.61 165.12)" id="b29hIhfF6Edj51xXIjdaU" >
<path style="stroke: rgb(6,161,71); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(223,211,201); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(0, 0)" d="M -43.10345 -43.10345 L 43.10345 -43.10345 L 43.10345 43.10345 L -43.10345 43.10345 z" stroke-linecap="round" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 KiB

BIN
assets/img/cursor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
assets/img/error.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1 MiB

BIN
assets/img/ico_promo_60.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

14633
assets/img/mot_croise.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 609 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.1 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 845 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 942 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 1.5 MiB

View file

@ -77,13 +77,13 @@ $desc = [
'L\'amicale : c\'est l\'Association des élèves, à côté de quelques clubs. Si tu as besoin de quelque chose ce sera toujours là-bas.',
"Batiment nord de l'amicale",
'Le Ptit Kawa, mais PK c\'est mieux (Peks pour les intimes). Le bar de l\'INSA, idéal pour se reposer entre les cours en jouant à la coinche ou au mus, ou pour se détendre les mercredi soir grâce aux soirée PK !',
'Ce qui se passe au trou reste au trou.',
'aka "le Gouffre" (F gang)',
"J'ai mis au pluriel mais y'en a que deux t'enflames pas",
"La VMA tu travailleras, ton âme tu perdras.",
"Pour faire du sport ^^",
'',
'',
'',
'',
'(T\'es plus blattes ou moisissures ?)',
'',
'Formation continue - 0 vanne on sait pas que que c\'est',
'',

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/pdf/image.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/pdf/parrainage.pdf Normal file

Binary file not shown.

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