Commit de migration (re-création) du GIT

This commit is contained in:
xdrm-brackets 2015-10-20 10:44:40 +02:00
parent 90b15575a7
commit b8d067fd2a
59 changed files with 4670 additions and 1 deletions

77
API.js Executable file
View File

@ -0,0 +1,77 @@
/* classe API */
function APIClass(){};
APIClass.prototype = {
xhr: [], // tableau d'objets pour les requêtes ajax
/* transaction avec le serveur (API.php)
*
* @param pRequest<Object> l'objet passé en JSON à API.php
* @param pHandler<Function> fonction qui s'éxécutera lors de la réponse (1 argument -> réponse<Object>)
*
* @return answer<Object> l'objet retourné par API.php via pHandler (1er argument)
*
***************************************************************************************************
*
* @usecase
* 1. var answerObject = sendRequest(
* 2. { var1: "exemple", var2: 198294 },
* 3. function(rep){ alert(rep); }
* 4. );
* @explain
* 1. on appelle la fonction <=> on créé la requête
* 2. on passe l'objet qui sera envoyé
* 3. on passe une fonction qui utilise un argument (sera la réponse de API.php) (sous forme d'objet)
*
*/
send: function(pRequest, pHandler){
// on efface les requêtes qui sont terminées (toutes celles de this.xhr)
for( var i = 0 ; i < this.xhr.length ; i++ ){
if( this.xhr[i].readyState == 4 ) // si terminée
this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée
}
// on créé une nouvelle entrée
this.xhr.push(null);
i = this.xhr.length-1;
// création de l'objet AJAX
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
this.xhr[i] = new XMLHttpRequest();
else // IE5, IE6
this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest');
console.log(pRequest);
var ptrAPI = this;
this.xhr[i].onreadystatechange = function(){
if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée
/* DEBUG : affiche la réponse BRUTE de API.php */
// console.log('API.php => '+ptrAPI.xhr[i].responseText);
console.log(JSON.parse(ptrAPI.xhr[i].responseText) );
/* si success de requête */
if( [0,200].indexOf(ptrAPI.xhr[i].status) > -1 ){ // si fichier existe et reçu
try{ pHandler( JSON.parse(ptrAPI.xhr[i].responseText) ); } // si on peut parser, on envoie
catch(e){ pHandler({request:'corrupted'}); } // sinon on envoie obj.request = 'corrupted'
}
/* sinon retourne obj.request = 'unreachable' */
else
pHandler({request: 'unreachable'});
}
}
// on créé un formulaire POST (virtuel)
var form = new FormData();
form.append('json', JSON.stringify(pRequest) ); // on créé la variable $_POST['json']=>request
this.xhr[i].open('POST', 'API.php', true);
this.xhr[i].send( form );
}
};

99
API.php Executable file
View File

@ -0,0 +1,99 @@
<?php
/* GESTION DE L'AUTHENTIFICATION - SI L'UTILISATEUR EST CONNECTÉ */
// A faire
/* si l'utilisateur est connecté */
if( true ){
$answer = new stdClass(); // on initialise la réponse (Objet vide)
/* si $_POST['json'] existe */
if( !empty($_POST) && isset($_POST['json']) ){
$request = json_decode( $_POST['json'] ); // on décode la requête
/* si le JSON n'est pas corrompu (décodable) */
if( $request != null ){ // si le json n'est pas corrompu
/* ROUTAGE (niveau 0) */
switch( $request->level_0 ){
/***************/
/* UTILISATEUR */
/***************/
case 'user':
if( isset($request->level_1) ){ include 'manager/user.php'; user_switch_level_1($request, $answer); }
else { $answer->request = 'missing_level_1'; }
break;
/***********/
/* GROUPES */
/***********/
case 'groups':
$answer->type = "group";
break;
/******/
/* UE */
/******/
case 'ues':
break;
/**********/
/* MODULE */
/**********/
case 'modules':
break;
/************/
/* CONTRÔLE */
/************/
case 'tests':
break;
/**************/
/* PARAMETRES */
/**************/
case 'settings':
break;
/***********/
/* DEFAULT */
/***********/
default:
$answer->request = 'unknown_level_0';
break;
}
if( $answer == null )
$answer->request = 'no_level_0';
}else // si json corrompu (undécodable)
$answer->request = 'jsoncorrupted';
}else // $_POST vide [OU] $_POST['json'] pas défini
$answer->request = 'nopost';
// on envoie (affiche) l'objet en JSON
echo json_encode($answer);
}
?>

0
LICENSE Normal file → Executable file
View File

1
README.md Normal file → Executable file
View File

@ -1,2 +1 @@
# SID
Système d'Information du Département

0
css/container.css Executable file
View File

293
css/global.css Executable file
View File

@ -0,0 +1,293 @@
/*
*
* Gestion des règles globales
* -------------------------------------
* 1-1. sections
* 1-2. titres des sections
* 2-1. tableaux génériques
* 2-2. tableaux manuels
* 3. formulaires
* 4. paragraphes
* 5. liens
* 6. ...
*
*/
/*********************/
/*** 1-1. Sections ***/
/*********************/
Hgroup + section{
/* position */
display: none; /* on cache par défaut si le titre n'est pas actif */
position: absolute;
top: calc( 5px + 3em + 1px ); /* 1px pour que le border soit au même endroit que celui de Hgroup */
left: 0;
width: calc( 100% - 2*2em );
height: auto;
padding: 2em; /* top right/left bottom */
/* border */
border-top: 1px solid #aaa;
/* z axis */
z-index: 7;
}
/* on active le premier par défaut si aucun n'est .active*/
/*Hgroup:nth-child(1) + section{
display: block;
z-index: 8;
}*/
Hgroup.active + section{
display: block;
z-index: 9;
}
/********************************/
/*** 1-2. Titres des sections ***/
/********************************/
Hgroup{
/* position */
display: block;
position: relative;
float: left;
margin-top: 5px;
margin-left: 1em;
height: 3em;
padding: 0 2em;
/* border */
border-radius: 3px 3px 0 0;
border: 1px solid transparent;
border-bottom-color: #aaa;
/* background */
background-color: inherit;
/* foreground */
color: #666;
text-align: center;
line-height: 3em;
/* Xtra */
cursor: pointer;
/* animation */
transition: .1s ease-in-out;
-moz-transition: .1s ease-in-out;
-webkit-transition: .1s ease-in-out;
-ms-transition: .1s ease-in-out;
-o-transition: .1s ease-in-out;
/* z axis */
z-index: 10;
}
/*Hgroup:nth-child(1) ~ .active,*/
Hgroup.active{
/* border */
border-color: #aaa;
border-bottom-color: inherit;
/* foreground */
color: #000;
}
/********************************/
/*** 2-1. Tableaux génériques ***/
/********************************/
table {
font-family:Arial, Helvetica, sans-serif;
color:#666;
font-size:12px;
text-shadow: 1px 1px 0px #fff;
background:#eaebec;
margin:20px;
border:#ccc 1px solid;
border-spacing: 0;
-moz-border-radius:3px;
-webkit-border-radius:3px;
border-radius:3px;
-moz-box-shadow: 0 1px 2px #d1d1d1;
-webkit-box-shadow: 0 1px 2px #d1d1d1;
box-shadow: 0 1px 2px #d1d1d1;
text-align: center;
}
table th {
padding:21px 25px 22px 25px;
border-top:1px solid #fafafa;
border-bottom:1px solid #e0e0e0;
background: #ededed;
background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#ebebeb));
background: -moz-linear-gradient(top, #ededed, #ebebeb);
}
table tr:first-child th:first-child {
-moz-border-radius-topleft:3px;
-webkit-border-top-left-radius:3px;
border-top-left-radius:3px;
}
table tr:first-child th:last-child {
-moz-border-radius-topright:3px;
-webkit-border-top-right-radius:3px;
border-top-right-radius:3px;
}
table tr {
padding-left:20px;
}
table td:first-child {
border-left: 0;
}
table td {
padding:18px;
border-top: 1px solid #ffffff;
border-bottom:1px solid #e0e0e0;
border-left: 1px solid #e0e0e0;
background: #fafafa;
background: -webkit-gradient(linear, left top, left bottom, from(#fbfbfb), to(#fafafa));
background: -moz-linear-gradient(top, #fbfbfb, #fafafa);
}
table tr.even td {
background: #f6f6f6;
background: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f6f6f6));
background: -moz-linear-gradient(top, #f8f8f8, #f6f6f6);
}
table tr:last-child td {
border-bottom:0;
}
table tr:last-child td:first-child {
-moz-border-radius-bottomleft:3px;
-webkit-border-bottom-left-radius:3px;
border-bottom-left-radius:3px;
}
table tr:last-child td:last-child {
-moz-border-radius-bottomright:3px;
-webkit-border-bottom-right-radius:3px;
border-bottom-right-radius:3px;
}
table tr:hover td {
background: #f2f2f2;
background: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#f0f0f0));
background: -moz-linear-gradient(top, #f2f2f2, #f0f0f0);
}
/* http://johnsardine.com/example/simple-little-table/ */
/**********************/
/*** 3. Formulaires ***/
/**********************/
/* champs de texte */
section form input[type=text],
section form input[type=password]{
/* position */
display: block;
position: relative;
margin: 2em 0;
padding: .8em;
padding-left: 2.5em;
/* border */
border-radius: 3px;
border: 1px solid #aaa;
/* foreground */
font-family: inherit;
font-size: 1em;
color: #b1b1b1;
/* background */
background: #fff url(../src/input_icon/default_grayscale.svg) center left .35em no-repeat;
background-size: 1.8em 1.8em;
transition: .2s ease-in-out;
-moz-transition: .2s ease-in-out;
-webkit-transition: .2s ease-in-out;
-ms-transition: .2s ease-in-out;
-o-transition: .2s ease-in-out;
}
/* boutons */
section form input[type=button]{
/* position */
display: block;
position: relative;
margin: 1em 0;
padding: .8em;
/* border */
border-radius: 3px;
border: 0;
box-shadow: 1px 1px 0 #207fa8, 2px 2px 0 #207fa8;
/* foreground */
font-family: inherit;
font-size: 1em;
color: #fff;
font-weight: bold;
/* background */
background: #29a2d6;
/* Xtra */
cursor: pointer;
}
/* clic sur les boutons */
section form input[type=button]:focus{
box-shadow: 0 0 0 transparent;
margin-top: calc( 1em + 2px );
margin-left: 2px;
}
/* quand on selectionne */
section form input[type=text]:focus,
section form input[type=password]:focus{
background-image: url(../src/input_icon/default.svg);
color: #000;
border-color: #29a2d6;
}
/* GESTION DES ICÔNES SPECIFIQUES */
section form input[type=password] { background-image: url(../src/input_icon/password_grayscale.svg); }
section form input[type=password]:focus{ background-image: url(../src/input_icon/password.svg); }
section form input.user { background-image: url(../src/input_icon/user_grayscale.svg); }
section form input.user:focus { background-image: url(../src/input_icon/user.svg); }

10
css/header.css Executable file
View File

@ -0,0 +1,10 @@
/*
*
* Gestion complète du HEADER
* -------------------------------------
* 1. icon
* 2. connection/inscription
* 3. mot de passe perdu
* 4. ...
*
*/

189
css/layout.css Executable file
View File

@ -0,0 +1,189 @@
/*
*
* Positionnement global et mise en page
* -------------------------------------
* 1. Propriétés globales
* 2. MENU
* 3. CONTAINER
* 4. msgBox
*
*/
/******************************/
/*** 1. Propriétés globales ***/
/******************************/
*{ /* on supprime le margin/padding par défaut */
margin : 0;
padding: 0;
}
/* on initialise le body avec les valeurs par défaut [compatibilité] */
body{
/* position */
display: block;
position: absolute;
top : 0;
left : 0;
width : 100%;
height: 100%;
/* background */
background: #fff;
/* overflow */
overflow-x: hidden; /* empêche la barre horizontale de scroll [précaution] */
/* foreground */
font: 18px 'Open Sans', 'Helvetica', 'Arial', 'sans-serif';
font-size: 16px;
}
/***************/
/*** 2. MENU ***/
/***************/
#MENU{
/* position */
display: flex;
position: fixed;
top : 0;
left : 0;
width : 5.5em;
height: 100%;
/* flex */
flex-direction : column;
justify-content: flex-start;
flex-wrap: nowrap; /* default, une seule colonne */
/* background */
/*background: #424c54 url(https://www.iut-tlse3.fr/static/ui/v1/icons/iut/iut.png) bottom .9em center no-repeat;*/
background: #424c54;
/* foreground */
/*font-size: 1.7vh;*/
/* z axis */
z-index: 2;
/* list */
list-style-type: none;
}
/********************/
/*** 3. CONTAINER ***/
/********************/
#CONTAINER{
/* position */
display: block;
position: absolute;
top : 0;
left : 5.5em;
width : calc( 100% - 5.5em );
min-height: 100%;
/* background */
background: #fff;
/* foreground */
/*font-size: 1.7vh;*/
/* border < inherit < hgroup */
border-color: #fff;
/* z axis */
z-index: 0;
}
/*****************/
/*** 4. MSGBOX ***/
/*****************/
#MSGBOX{
/* position */
display: block;
position: fixed;
top: calc( 100% - 2*1em - 1em - 1em ); /* 100% - padding - taille - marge */
left: 30%;
width: 40%;
height: 1em;
padding: 1em;
/* border */
border-radius: 3px;
border: 1px solid transparent;
/* background */
background-color: #f64b2f;
/* foreground */
color: #fff;
text-shadow: 1px 1px 1px #d33e27;
line-height: 1em;
transition: all 0s ease 0s, top .3s ease-in-out;
-moz-transition: all 0s ease 0s, top .3s ease-in-out;
-webkit-transition: all 0s ease 0s, top .3s ease-in-out;
-ms-transition: all 0s ease 0s, top .3s ease-in-out;
-o-transition: all 0s ease 0s, top .3s ease-in-out;
}
/* LES DIFFERENTES CLASSES */
/* validation ou réussite */
#MSGBOX.success{
border-color: #689525;
background-color: #7eb62e;
text-shadow: 1px 1px 1px #689525;
}
/* information */
#MSGBOX.info{
border-color: #278fd0;
background-color: #2fa9f6;
text-shadow: 1px 1px 1px #278fd0;
}
/* avertissement */
#MSGBOX.warning{
border-color: #d87620;
background-color: #f68725;
text-shadow: 1px 1px 1px #d87620;
}
/* notice */
#MSGBOX.error{
border-color: #d33e27;
background-color: #f64b2f;
text-shadow: 1px 1px 1px #d33e27;
}
/* LORSQUE PAS ACTIVE */
#MSGBOX:not( [class] ), /* si n'a pas de classe */
#MSGBOX[class='']{ /* ou qu'elle est vide */
top: 100%;
transition: all 0s ease .3s, top .3s ease-in-out;
-moz-transition: all 0s ease .3s, top .3s ease-in-out;
-webkit-transition: all 0s ease .3s, top .3s ease-in-out;
-ms-transition: all 0s ease .3s, top .3s ease-in-out;
-o-transition: all 0s ease .3s, top .3s ease-in-out;
}

170
css/menu.css Executable file
View File

@ -0,0 +1,170 @@
*
* Gestion complète du MENU
* -------------------------------------
* 1. propriétés complémentaires #MENU
* 2. position textes
* 3. icônes
* 4. Labels
*
*/
/*******************************************/
/*** 1. Propriétés complémentaires #MENU ***/
/*******************************************/
#MENU{}
/**************************/
/*** 2. Position textes ***/
/**************************/
#MENU li{
/* position */
display: block;
position: relative;
margin: .75em;
width: 4em; /* 5.5 - 1.5 */
height: 4em;
/* border */
border-radius: .3em;
/* background */
background: center center no-repeat;
background-size: auto 2.2em;
/* Xtra */
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* animation */
transition: all 0s, background-color .2s ease-in-out;
-moz-transition: all 0s, background-color .2s ease-in-out;
-webkit-transition: all 0s, background-color .2s ease-in-out;
-ms-transition: all 0s, background-color .2s ease-in-out;
-o-transition: all 0s, background-color .2s ease-in-out;
}
/*****************/
/*** 3. Icônes ***/
/*****************/
/* dernier en bas */
#MENU li:last-child{ align-self: flex-start; }
/* icônes de base */
#MENU li[data-link='home'] { background-image: url(../src/menu_icon/home_grayscale.svg); }
#MENU li[data-link='groups'] { background-image: url(../src/menu_icon/groups_grayscale.svg); }
#MENU li[data-link='ue'] { background-image: url(../src/menu_icon/ue_grayscale.svg); }
#MENU li[data-link='modules'] { background-image: url(../src/menu_icon/modules_grayscale.svg); }
#MENU li[data-link='marks'] { background-image: url(../src/menu_icon/marks_grayscale.svg); }
#MENU li[data-link='settings'] { background-image: url(../src/menu_icon/settings_grayscale.svg); }
#MENU li[data-link='auth'] { background-image: url(../src/menu_icon/auth_grayscale.svg); }
/* HOVER ou active (page courante) */
#MENU li:hover, #MENU li.active{
color: #fff;
background-color: rgba(0,0,0,.3);
}
/* icône quand HOVER ou .active */
#MENU li[data-link='home']:hover , #MENU li[data-link='home'].active { background-image: url(../src/menu_icon/home.svg); }
#MENU li[data-link='groups']:hover , #MENU li[data-link='groups'].active { background-image: url(../src/menu_icon/groups.svg); }
#MENU li[data-link='ue']:hover , #MENU li[data-link='ue'].active { background-image: url(../src/menu_icon/ue.svg); }
#MENU li[data-link='modules']:hover , #MENU li[data-link='modules'].active { background-image: url(../src/menu_icon/modules.svg); }
#MENU li[data-link='marks']:hover , #MENU li[data-link='marks'].active { background-image: url(../src/menu_icon/marks.svg); }
#MENU li[data-link='settings']:hover , #MENU li[data-link='settings'].active { background-image: url(../src/menu_icon/settings.svg); }
#MENU li[data-link='auth']:hover , #MENU li[data-link='auth'].active { background-image: url(../src/menu_icon/auth.svg); }
/* le séparateur qui remplit l'espace entre le haut et le bas */
#MENU li.fill{
flex-grow: 1;
opacity: 0;
cursor: default;
}
/*****************/
/*** 4. Labels ***/
/*****************/
#MENU li[data-text]::before{ /* affichage du texte */
content: attr(data-text);
/* position */
display: block;
position: absolute;
top: .4em;
left: 6em;
width: auto;
width: 0;
height: 3em;
padding: 0 0;
/* border */
border-radius: 5px;
/* background */
background: #232323;
/* foreground */
line-height: 3em;
/* animation */
transition: .1s ease-out;
-moz-transition: .1s ease-out;
-webkit-transition: .1s ease-out;
-ms-transition: .1s ease-out;
-o-transition: .1s ease-out;
/* overflow */
overflow: hidden;
/* z axis */
z-index: -1;
}
#MENU li[data-text]::after{ /* petite flèche */
content: '';
/* position */
display: none;
position: absolute;
top: 1.16em;
left: 5.7em;
/* border */
border-style: solid;
border-width: .8em .8em .8em 0;
border-color: transparent #232323 transparent transparent;
/* animation */
transition: .2s ease-in;
-moz-transition: .2s ease-in;
-webkit-transition: .2s ease-in;
-ms-transition: .2s ease-in;
-o-transition: .2s ease-in;
/* z axis */
z-index: -1;
}
/* lors du survol */
#MENU li[data-text]:hover::before{ width: auto; left: 6em; padding: 0 1em; } /* affichage du texte */
#MENU li[data-text]:hover::after{ display: block; } /* affichage de la petite flèche

78
index.php Executable file
View File

@ -0,0 +1,78 @@
<?php require('manager/security.php'); session_init();
// $_SERVER['HTTP_USER_AGENT']; // dépends du navigateur (version, système X, OS)
// $_SERVER['REMOTE_ADDR']; // ip publique de l'utilisateur
?>
<!DOCTYPE html>
<html>
<head>
<title>Système d'Information du Département</title>
<!-- Informations de la page -->
<meta charset='utf-8'>
<meta name='author' content='Aurélien CLERAC; Cédric ELOUNDOU; Guillaume FAUVET; Adrien MARQUES {xdrm}'>
<meta name='desctiption' content="Système d'Information du Département Informatique" >
<!-- Dépendences CSS -->
<link type='text/css' rel='stylesheet' href='css/font.css' /> <!-- Chargement de/des police/s -->
<link type='text/css' rel='stylesheet' href='css/layout.css' /> <!-- Positionnement global des pages -->
<link type='text/css' rel='stylesheet' href='css/header.css' /> <!-- Gestion du header -->
<link type='text/css' rel='stylesheet' href='css/container.css'/> <!-- Gestion du container -->
<link type='text/css' rel='stylesheet' href='css/menu.css' /> <!-- Gestion du menu -->
<link type='text/css' rel='stylesheet' href='css/global.css' /> <!-- Style global -->
<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<!-- Dépendences Javascript -->
<!--<script type='text/javascript' src='http://xdrm.fr/module/pageManager.min.js'></script> --><!-- Gestion des ressources/pages côté client -->
<script type='text/javascript' src='js/pageManager.js' ></script> <!-- Gestion des ressources/pages côté client -->
<script type='text/javascript' src='API.js' ></script> <!-- API client communique avec API serveur -->
<script type='text/javascript' src='js/shortcut.js' ></script> <!-- Gestion des raccourcis clavier -->
</head>
<body><!-- CORPS DE LA PAGE -->
<!-- MENU DE LA PAGE -->
<ul id='MENU'>
<li data-link='home' data-text='Accueil' ></li>
<li data-link='groups' data-text='Groupes' ></li>
<li data-link='ue' data-text='Suivi' ></li>
<li data-link='modules' data-text='Modules' ></li>
<li data-link='marks' data-text='Notes' ></li>
<li data-link='settings' data-text='Paramètres' ></li>
<li class='fill'></li>
<li data-link='auth' data-text='Authentification'></li>
</ul>
<!-- CONTENEUR DE LA PAGE -->
<div id='CONTAINER'></div>
<!-- MESSAGE BOX DE LA PAGE -->
<div id='MSGBOX' class=''>Hey! Your password is not the right one.</div>
<!-- Dépendences Javascript après chargement des éléments -->
<script type='text/javascript' src='js/actionScript.js'></script>
</body>
</html>

264
js/actionScript.js Executable file
View File

@ -0,0 +1,264 @@
/***********************************************************
* *
* SCRIPT POST-HTML - SCRIPT PRINCIPAL *
* *
************************************************************
* *
* [0] Variables *
* [1] Gestionnaires de navigation *
* [a] pageManager.js *
* [b] API.js *
* [2] Gestion des liens *
* [a] catégories *
* [b] sous-parties *
* [3] Gestion des formulaires *
* [4] Gestion de la messageBox *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [0] VARIABLES
==============================================================*/
var msgBoxTimeout = null;
/* pageManager */
var pageM;
/* API */
var API;
/* Structure de la page */
var DOM = {
menu : document.getElementById('MENU'),
container : document.getElementById('CONTAINER'),
msgBox : document.getElementById('MSGBOX')
};
/* [1] GESTIONNAIRES DE NAVIGATION
==============================================================*/
/* [a] pageManager.js
==============================================================*/
pageM = new pageManager(); // instance principale
/* initialisation du gestionnaire */
pageM.setPage(null, 'page', DOM.container, ['home', 'groups', 'ue', 'modules', 'marks', 'auth', 'settings'] );
/* [b] API.js
==============================================================*/
API = new APIClass();
/* [2] GESTION DES LIENS
==============================================================*/
/* [a] CATÉGORIES
==============================================================*/
/* GESTION DES CATEGORIES (SECTIONS)
*
* @param section<Element> l'élément à activer
*
* [1] selectionne l'élément, l'affichage de la page associée est géré par pageManager.js
* [2] déselectionne l'élément précédemment selectioné
*
*/
function selectSection(section){
// si @subSection est un <Element> de type <li> qui a la propriété "data-link" [ET] section pas déjà active
if( section instanceof Element && section.tagName == 'LI' && section.dataset.hasOwnProperty('link') && section.className != 'active' ){
// on charge la page
pageM.setPage( section.dataset.link );
// on récupère la section déja selectionnée si elle existe
var last = document.querySelector('#MENU li.active');
if( last != null ) // si une section est déjà activée
last.className = ''; // on désactive la courante
section.className = 'active'; // on active @section
}else // sinon on affiche l'erreur
console.log("[selectSection_Error] - ("+section+")");
}
/* activation au chargement en fonction de la page courante de pageManager.js */
lastSection = document.querySelector('[data-link='+pageM.page+']');
lastSection.className = 'active'; // on l'active
/* Gestion des liens du menu */
DOM.menu.addEventListener('click', function(e){ selectSection( e.target ); }, false);
/* [b] SOUS-PARTIES
==============================================================*/
/* GESTION DES SOUS-PARTIES (SOUS-CATÉGORIES)
*
* @param subSection<Element> l'élément à activer
*
* [1] selectionne l'élément, l'affichage de la page associée est géré en CSS3
* [2] déselectionne l'élément précédemment selectioné
*
*/
function selectSubSection(subSection){
// si @subSection est un <Element> de type HGROUP [ET]
if( subSection instanceof Element && subSection.tagName == 'HGROUP' ){
if( subSection.className != 'active' ){ // si @subSection pas déjà active
// on récupère la sous-partie selectionnée en cours
var last = document.querySelector('hgroup.active');
if( last != null ) // si un sous-partie est déjà selectionnée
last.className = ''; // on la désactive
subSection.className = 'active'; // on active @subSection
}else // sinon on affiche l'erreur
console.log("[selectSubSection_Error] - ("+subSection+")");
}
}
/* gestion du clic sur les sous-parties */
DOM.container.addEventListener('click', function(e){ selectSubSection(e.target); }, false);
/* [3] GESTION DES FORMULAIRES
==============================================================*/
/* INITIALISE UN FORMULAIRE POUR QU'IL INTERPRETE UN OBJET LORS DE SA SOUMISSIONS
*
* @param pForm<Element> le formulaire cible
* @param pHandler<Function> fonction exécutée lors de la soumission du formulaire
*
* [1] parcourt les élements du formulaire @pForm et active un évènement lors du "submit"
* [2] retourne l'objet à @pHandler lors du "submit"
*
*
* @example
*
* <form id='nomFormulaire'>
*
* <input type='text' name='nomDuChamp1' value='valeurDuChamp1'>
* <input type='mail' name='nomduChamp2' value='valeurDuChamp2'>
*
* <input type='submit' value='VALIDER'>
*
* </form>
*
* @explaination
*
* Lors du clic sur le bouton [VALIDER], la fonction @pHandler s'exécutera avec pour paramètre un objet
* OBJ{ id: nomFormulaire, nomDuChamp1: valeurDuChamp1, nomDuChamp2: valeurDuChamp2 }
*
*/
function initForm(pForm, pHandler){
// vérification des arguments
var isForm = pForm instanceof Element && pForm.tagName == 'FORM';
var isFunc = pHandler instanceof Function;
// si les arguments sont corrects
if( pForm instanceof Element && pForm.tagName == 'FORM' ){
var submitButton = null; // contiendra le bouton d'envoi du formulaire
for( var i = 0 ; i < pForm.children.length ; i++ )
if( pForm.children[i].type == 'button' && pForm.children[i].name == 'submit' ){
submitButton = pForm.children[i]; // on définit le bouton
break; // on sort du for
}
// on définit l'évènement de validation du formulaie
function submitEvent(){
var obj = {} // on créé l'objet qui va être envoyé
for( var i = 0 ; i < pForm.children.length ; i++ ) // on parcourt les enfants
if( pForm.children[i].tagName == 'INPUT' && pForm.children[i].name != 'submit' ) // si c'est un champ et que c'est pas le bouton
obj[pForm.children[i].name] = pForm.children[i].value; // alors on enregistre le champ dans l'objet
// on exécute la fonction @pHandler en lui envoyant les arguments
pHandler(obj);
}
// on définit l'évènement du clic sur le bouton
submitButton.addEventListener('click', function(e){
submitEvent(e.target.parentNode); // on envoie le formulaire
}, false);
// on définit l'évènement de l'appui sur la touche [ENTRER]
pForm.addEventListener('keydown', function(e){
if(e.keyCode==13) submitEvent(e.target); // si c'est la bonne touche, on submit le formulaire
}, false);
}else
console.log('[initForm_Error] - ('+pForm+', '+pHandler+')');
}
/* [4] GESTION DE LA MESSAGEBOX
==============================================================*/
function messageBox(message, type){
/* on affecte le message */
DOM.msgBox.innerHTML = message;
/* on définit le style s'il est correct */
if( ['success', 'info', 'warning', 'error'].indexOf(type) > -1 )
DOM.msgBox.className = type;
else
DOM.msgBox.className = 'info';
if( msgBoxTimeout != null ) // si une autre message box est en cours, on arrête son timeout
clearTimeout(msgBoxTimeout);
msgBoxTimeout = setTimeout( function(){
DOM.msgBox.className = '';
}, 2000);
}

237
js/pageManager.js Executable file
View File

@ -0,0 +1,237 @@
function pageManager(){};
var ptrPageManager; // pointeur global pour l'utilisation de fonctions de fonctions
pageManager.prototype = {
depJS: null, // la dépendance javascript
depCSS: null, // la dépendance css
xhr: [], // tableau d'objets pour les requêtes ajax
page: null, // l'indice de la page courante dans pagelist
vars: [], // les variables suivant le nom de la page dans l'URL
path: '', // le chemin du dossier contenant les pages (.php)
pagelist: null, // la liste des pages pouvant être chargées
container: null, // élément DOM qui contiendra le contenu des pages à charger
/* =======================================================================
Cette fonction effectue une requête Ajax (compatible à partir de IE5)
PARAMETRES:
- pLink<string> le lien à charger
- pHandler<function> une fonction qui s'éxécutera avec la réponse de la requête passée en paramètre (voir exemples dessous pour pHandler)
- pMethod<string> type de méthode, vaut 'POST' ou 'GET' et vaut 'POST' par défaut ou s'il n'est pas renseigné
- pForm<FormData> formulaire de type FormData() contenant les données à envoyer (uniquement en POST), si pForm vaut GET les données doivent être passées dans l'URL
========================================================================== */
ajax: function(pLink, pHandler, pMethod, pForm){
// on efface les requêtes qui sont terminées et on push une nouvelle
for( var i = 0 ; i < this.xhr.length ; i++ ){
if( this.xhr[i].readyState == 4 ) // si terminée
this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée
}
this.xhr.push(true);
i = this.xhr.length-1;
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
this.xhr[i] = new XMLHttpRequest();
else // IE5, IE6
this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest');
var ptrPageManager = this;
this.xhr[i].onreadystatechange = function(){
if( ptrPageManager.xhr[i].readyState == 4 ) // si la requête est terminée
if( [0,200].indexOf(ptrPageManager.xhr[i].status) > -1 ) // si fichier existe et reçu
pHandler(ptrPageManager.xhr[i].responseText);
else // si code d'erreur retourne null
pHandler();
}
// gestion de la méthode
var method = ( typeof pMethod == 'string' && /^POST|GET$/i.test(pMethod) ) ? pMethod.toUpperCase() : 'POST';
// gestion du formulaire si la méthode est POST
var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null;
this.xhr[i].open( method, pLink, true);
this.xhr[i].send( form );
},
/***************************************************** [APPLICATION] Ajax() ******************************************************/
// EXEMPLES DE FONCTIONS POUR pHandler //
// 1. var a = function(param){ alert(param); } // les deux notations 1 et 2 sont équivalents
// 2. function a(param){ alert(param); } // les deux notations 1 et 2 sont équivalents
// ajax( 'index.php', a ); // utilisation d'une fonction définie
// ajax( 'index.php', alert ); // utilisation d'une fonction prédéfinie
// ajax( 'index.php', alert, 'GET' ); // utilisation de méthode
// var fd = new FormData(); // création d'un formulaire
// fd.append('var', 100); // ajout de la variable VAR qui vaut 100
// ajax( 'index.php', alert, null, fd ); // saut de paramètre avec null + envoi formulaire
// ajax( 'index.php?var=10', alert, 'GET' ); // envoi formulaire en GET (dans l'url)
// ajax( 'index.php?var=10', alert, 'POST', fd ); // envoi formulaire en GET (dans l'url) + en POST via le formulaire FD
/* =======================================================================
Cette fonction effectue une décomposition de l'URL sur le shéma spécifié dessous
Renvoie pour http://www.exemple.com/dirA/dirB/#/NOMPAGE/VARPAGE
- null si la page n'est pas référencée dans le tableau PAGELIST
- null si le lien ne contient pas /#/NOMPAGE à la fin
- null si NOMPAGE ne contient pas uniquement : lettres, chiffres, underscore
- null si VARPAGE ne contient pas uniquement : lettres, chiffres, underscore
- un objet contenant {page: valeur, var: valeur}
========================================================================== */
explodeURL: function(url_data){
url_data = (arguments.length >= 1) ? url_data : document.URL;
// si pageList est correct et que l'URL correspond à un schéma de page => continue [sinon] return null
if( this.pagelist != null && /^(?:.+)\/#\/([a-z0-9_]+)\/?(?:\/((?:[a-z0-9_]+\/)+)\/?)?$/i.test(url_data) ){
// si la page récupérée dans l'url est dans la liste => renvoi de l'objet [sinon] null
var vars = RegExp.$2.split('/');
while( vars[vars.length-1] == '' ) // on supprime les dernières entrées vides
vars.pop();
return ( this.pagelist.indexOf(RegExp.$1) > -1 ) ? {page: RegExp.$1, var: vars} : null;
}else
return null;
},
/* =======================================================================
Cette fonction ajoute des dépendances (un js et un css) situés dans le répertoire des pages.
pageDir/
_JS/
page1.js
page2.js
_CSS/
page1.css
page2.css
========================================================================== */
loadDependencies: function(){
// si depCSS est un élément du DOM c'est à dire qu'il contient le fichier de la page précédente et qu'il est enfant de <head>, on le détruit
if( typeof this.depCSS == 'object' && this.depCSS instanceof Element && this.depCSS.parentNode == document.head )
document.head.removeChild( this.depCSS );
// si depJS est un élément du DOM c'est à dire qu'il contient le fichier de la page précédente, on le détruit
if( typeof this.depJS == 'object' && this.depJS instanceof Element && this.depJS.parentNode == document.head )
document.head.removeChild( this.depJS );
ptrPageManager = this;
// si le fichier css existe
this.ajax(this.path+'/'+'_CSS'+'/'+this.page+'.css', function(e){
if( e != null ){ // on charge la dépendance CSS si le fichier existe
ptrPageManager.depCSS = document.createElement('link');
ptrPageManager.depCSS.rel = 'stylesheet';
ptrPageManager.depCSS.type = 'text/css';
ptrPageManager.depCSS.href = ptrPageManager.path+'/'+'_CSS'+'/'+ptrPageManager.page+'.css';
document.head.appendChild(ptrPageManager.depCSS);
}else
console.log('[loadDependencies_Error] - ('+ptrPageManager.path+'/'+'_CSS'+'/'+ptrPageManager.page+'.css'+')');
});
// si le fichier js existe
this.ajax(this.path+'/'+'_JS'+'/'+this.page+'.js', function(e){
if( e != null ){ // on charge la dépendance JS si le fichier existe
ptrPageManager.depJS = document.createElement('script');
ptrPageManager.depJS.type = 'text/javascript';
ptrPageManager.depJS.src = ptrPageManager.path+'/'+'_JS'+'/'+ptrPageManager.page+'.js';
document.head.appendChild(ptrPageManager.depJS);
}else
console.log('[loadDependencies_Error] - ('+ptrPageManager.path+'/'+'_JS'+'/'+ptrPageManager.page+'.js'+')');
});
},
/* =======================================================================
Cette fonction est celle qui gère les 2 autres et celle que l'utilisateur utilisera
PARAMETRES:
- pName<string> le nom de la page à charger (lettres, chiffres, underscore) (*)
- pPath<string> chemin (relatif ou absolu) du dossier contenant les pages de même nom de fichier que le nom (extension .php)
- pContainer<Element> l'élément du DOM qui contiendra la page chargée (**)
- pPageList<Array<string>> tableau contenant la liste des pages sous forme de chaînes de caractères (**) (***)
* Le chemin du dossier sans le '/' final si c'est le dossier actuel le chemin est une chaîne vide
Si le dossier est 'page' et que l'on cherche la page 'accUe1l', la requête sera vers 'page/accUe1l.php'
le nom de la page est sensible à la casse
** 1. pPageList et pContainer doivent être mis en paramètres uniquement à la première utilisation
et la première utilisation doit se faire au chargement de la page car elle permetra
de mettre l'URL à jour et/ou charger la page de l'URL
*** la première page du tableau est la page par défaut (qui est chargée si l'URL ne contient
pas la page ou si la page de l'URL ne correspond à aucune page de la liste)
========================================================================== */
setPage: function(pName, pPath, pContainer, pPageList){
// liste de pages si c'est un tableau
var pageList = ( typeof pPageList == 'object' && pPageList instanceof Array ) ? pPageList : null; // si this.pagelist n'est pas overwrite il vaut null
if( pageList != null ){ // si c'est un tableau
for( var i = 0 ; i < pageList.length ; i++ ){ // on parcourt tout les éléments pour vérifier que chaque élément ne contient que : lettres, chiffres, underscore [non]> pageList = null
pageList = ( typeof pageList[i] == 'string' && /^[a-z0-9_]+$/i.test(pageList[i]) ) ? pageList : null;
if( pageList == null ) break; // si le tableau est null stoppe la boucle
}
}
/* on attribue la variable temporaire pageList à l'attribut de l'objet si la variable pageList temporaire n'est pas nulle */
this.pagelist = ( pageList != null ) ? pageList : this.pagelist;
// affecte à l'attribut page la page par défaut (premier élément de pagelist)
this.page = this.pagelist[0];
// affecte pPath à l'attribut path s'il est renseigné
this.path = ( typeof pPath == 'string' ) ? pPath : this.path;
/* on attribue le paramètre pContainer à l'attribut si il est spécifié */
this.container = ( typeof pContainer == 'object' && pContainer instanceof Element ) ? pContainer : this.container;
// si this.pagelist && this.container ne sont pas null &&
if( this.pagelist != null && this.container != null ){
// si le pName est renseigné et qu'il est dans pagelist
if( typeof pName == 'string' && this.pagelist.indexOf(pName) > -1 ){
// affecte pName à l'attribut page
this.page = pName;
// charge le contenu de la page dans le container
var ptrPageManager = this;
// formulaire POST
var fd = new FormData();
for( var i = 0 ; i < this.vars.length ; i++ )
fd.append(this.vars[i], null);
this.ajax(this.path+'/'+this.page+'.php', function(e){
ptrPageManager.container.innerHTML = e;
ptrPageManager.loadDependencies();
}, 'POST', fd);
// change l'URL en conséquences(stateObj, titre, url)
if( this.vars.length > 0 ) // si il y a des variables
window.history.pushState(null, this.page, '#/'+this.page+'/'+this.vars.join('/')+'/');
else // s'il n'y en a pas
window.history.pushState(null, this.page, '#/'+this.page+'/');
}else{ // si la page n'est pas spécifiée ou qu'elle n'est pas dans la liste des pages
var urlGet = this.explodeURL();
// si on a récupéré le numéro de la page dans l'URL et qu'elle fait partie de la liste des pages
if( urlGet != null ){
this.page = urlGet.page;
// charge le contenu de la page dans le container
var ptrThis = this;
// formulaire POST
var fd = new FormData();
this.vars.length = 0;
for( var i = 0 ; i < urlGet.var.length ; i++ ){ // replacing object variables with explodeURL variables
this.vars[i] = urlGet.var[i];
fd.append(this.vars[i], null);
}
this.ajax(this.path+'/'+this.page+'.php', function(e){
ptrThis.container.innerHTML = e;
ptrThis.loadDependencies();
}, 'POST', fd);
// change l'URL en conséquences(stateObj, titre, url)
if( this.vars.length > 0 ) // si il y a des variables
window.history.pushState(null, this.page, '#/'+this.page+'/'+this.vars.join('/')+'/');
else // s'il n'y en a pas
window.history.pushState(null, this.page, '#/'+this.page+'/');
}else // si l'url ne contient rien, on charge la page par défaut
this.setPage(this.pagelist[0]);
}
}else
console.log('pagelist et container manquant');
}
}

145
js/shortcut.js Executable file
View File

@ -0,0 +1,145 @@
/* Retourne le keyCode correspondant à la chaîne
*
* @param keyStore enchaînement de touches sous forme de string
* @param handler function qui s'éxécute lors du raccourci
*
* return keyCode le code de la touche correspondante
*/
function strToKeyCode(str){
// on enregistre le keyCode du premier caractère
var keyCode = str.toUpperCase().charCodeAt(0);
// s'il s'agit d'un caractère uniquement (entre "a" et "z")
if( str.length == 1 && keyCode >= 65 && keyCode <= 90 )
return keyCode; // on retourne le keyCode associé
else
switch( str ){
case 'ctrl': return 17; break;
case 'maj': return 16; break;
case 'alt': return 18; break;
case 'tab': return 9; break;
}
return null;
}
var shortcutList = []; // contient les combinaisons de touches
var shortcutStep = []; // contient l'avancée d'un raccourcis
/* Gestion des raccourcis claviers
*
* @param keyStore enchaînement de touches sous forme de string
* @param handler function qui s'éxécute lors du raccourci
*
*/
function Shortcut(keyStore, handler){
var splittedString = keyStore.toLowerCase().split('+'), // découpe la chaîne (en minuscule) par "+"
splittedKeyCode = new Array(); // contiendra les keyCode de chaque touche
// pour chaque touche, on récupère le keyCode
for( var i = 0 ; i < splittedString.length ; i++ )
splittedKeyCode[i] = strToKeyCode( splittedString[i] ); // on enregistre le keyCode correspondant
// on ajout à la liste globale
eventIndex = shortcutList.length;
shortcutList.push( splittedKeyCode );
// on initialise l'avancement
shortcutStep[eventIndex] = 0;
// creation de la fonction d'évènement
shortcutList[eventIndex].push( function(k, f, h){ /* k<keyCode> ; f<eventIndex> ; h<handler()> */
// on cherche l'avancée
var step = shortcutStep[f];
// on regarde si la touche est bonne
if( shortcutList[f][step] == k ){ // si c'est la touche suivante
if( step >= shortcutList[f].length-2 ){ // si c'était la dernière touche
// on initialise le tableau
for( var i = 0 ; i < shortcutStep[f].length ; i++ )
shortcutStep[f][i] = 0;
h(); // EXECUTION DE : handler();
}else // sinon on incrémente l'avancée
shortcutStep[f]++;
}else // si c'est pas la bonne touche, on réinitialise le tableau
shortcutStep[f] = 0;
});
console.log( shortcutList );
// création de l'évènement
window.addEventListener(
'keydown',
function(e){ e.preventDefault(); shortcutList[eventIndex][shortcutList[eventIndex].length-1](e.keyCode, eventIndex, handler); },
false
);
}
/* quand on lâche une touche, tout les raccourcis s'effacent */
window.addEventListener('keyup', function(){
for( var i = 0 ; i < shortcutStep.length ; i++ )
shortcutStep[i] = 0;
}, false);
/*** UTILISATION ***/
// Shortcut(
// 'ctrl+s',
// function(){ alert('sauvegardé'); }
// );

18
manager/database.php Executable file
View File

@ -0,0 +1,18 @@
<?php
class DataBase{
/* ATTRIBUTS */
private $host;
private $dbname;
private $username;
private $password;
private $connection;
public function __construct($host, $dbname, $username, $password){
this->connection = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
}
}
?>

76
manager/security.php Executable file
View File

@ -0,0 +1,76 @@
<?php
/***********************************************************
* *
* MANAGER DE SECURITE GENERALE ET SPECIFIQUE *
* *
************************************************************
* *
* [0] Constantes *
* [1] Session & redirection *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [0] CONSTANTES
============================================================*/
function getPermissions(){ return array('student', 'teacher', 'master', 'admin'); }
/* [1] SESSIONS & REDIRECTION
============================================================*/
/* ETABLIT UNE SESSION SÉCURISÉE
*
* [1] Définit un id_session (PHPSESSID) unique et propre à une connection
* + propre à un navigateur (navigateur, version, OS, système X, ...)
* + propre à un accès (ip publique = box)
*
* [2] Démarre la session
*
*/
function session_init(){
session_id( // on définit le session id
sha1( // qui est un Hash MD5
$_SERVER['HTTP_USER_AGENT']. // qui correspond aux infos système disponibles de l'utilisateur
$_SERVER['REMOTE_ADDR'] // et de son ip publique
)
);
session_start(); // on démarre la session
$PERMISSIONS = getPermissions();
// on vérifie l'intégrité des variables session
$usernameDefinedProperly = isset($_SESSION['username']) && !empty($_SESSION['username']) && gettype($_SESSION['username']) == 'string' && strlen($_SESSION['username']) > 0;
$permissionsDefinedProperly = isset($_SESSION['permissions']) && !empty($_SESSION['permissions']) && gettype($_SESSION['permissions']) == 'string' && strlen($_SESSION['permissions']) > 0;
// si les variables sessions ne sont pas toutes les 2 correctes
if( !($usernameDefinedProperly && $permissionsDefinedProperly) ){
$_SESSION['username'] = null; // on les initialise à NULL
$_SESSION['permissions'] = null;
}
}
?>

135
manager/user.php Executable file
View File

@ -0,0 +1,135 @@
<?php require('manager/security.php'); session_init();
/***********************************************************
* *
* MANAGER DES UTILISATEURS *
* *
************************************************************
* *
* [0] Constantes *
* [1] ROUTAGE de niveau 1 *
* [2] Authentification *
* [a] userlist *
* [b] connection *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [1] ROUTAGE DE NIVEAU 1
============================================================*/
function user_switch_level_1($request, $answer){
switch( $request->level_1 ){
/****************************/
/* authentification (login) */
/****************************/
case 'authentification':
$areSetParam = isset($request->username) && isset($request->password); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->username) && is_string($request->password); // ils sont tous 2 des string
$nEmptyParam = $typeOkParam && strlen($request->username) > 0 && strlen($request->password) > 0; // d'au moins 1 caractère
if( $areSetParam && $typeOkParam && $nEmptyParam )
$answer->request = user_authentification($request->username, $request->password);
else{
if ( !$areSetParam ) $answer->request= 'missing_param';
elseif( !$typeOkParam ) $answer->request = 'wrong_type';
else $answer->request = 'empty_param';
}
break;
/***********/
/* DEFAULT */
/***********/
default:
$answer->request = 'unknown_level_1';
break;
}
}
/* [2] AUTHENTIFICATION
============================================================*/
/* [a] userlist */
function user_getUserList(){
$userlistFile = file_get_contents("src/userlist.json");
return json_decode( $userlistFile );
}
/* [b] CONNECTION
========================================================*/
/* GESTION DE L'AUTHENTIFICATION D'UN UTILISATEUR
*
* @param username<String> Identifiant de l'utilisateur
* @param password<String> Mot de passe de l'utilisateur
*
* si @username est référencé et que le mot de passe associé vaut @password
* alors @return TRUE sinon FALSE
* + mise ajout à @answer
*
* Les variables sessions suivantes sont définies :
* - $_SESSION['permissions']
* - $_SESSION['userid']
* - $_SESSION['username']
*
* @return Boolean true si l'utilisateur est ok
*/
function user_authentification($username, $password){
// [1] On récupère la liste d'utilisateurs (/src/userlist.json)
$userList = user_getUserList();
// [2] On check l'existence de l'utilisateur
if( isset($userList->{$username}) ){
// [3] On check le mot de passe
if( $userList->{$username}->password == $password ){
// on définit les variables session
$_SESSION['username'] = $username;
$_SESSION['permissions'] = $userList->{$username}->permissions;
return 'success';
}else
return 'wrong_password';
}else
return 'unknown_user';
}
?>

80
page/_JS/auth.js Executable file
View File

@ -0,0 +1,80 @@
/***********************************************************
* *
* SCRIPT LOCAL DE LA PAGE D'AUTHENTIFICATION *
* *
************************************************************
* *
* [0] Variables *
* [1] Gestion des formulaires *
* [a] Gestion des réponses *
* [b] Initialisation des formulaires *
* *
* *
* *
* *
* *
* *
* *
* *
* *
***********************************************************/
/* [0] Variables
==============================================================*/
var subSections = document.querySelectorAll('hgroup');
/* [1] Gestion des formulaires
==============================================================*/
/* [a] Gestion des réponses
==============================================================*/
/* GESTION DU COMPORTEMENT EN FONCTION DE LA REPONSE POUR LE [LOGIN]
*
* @param response
*
* Gestion de toutes les réponse possibles avec une "messageBox" ou de redirection
*
*/
function manageAuthentificationResponse(response){
switch( response.request ){
case 'success':
messageBox('Vous êtes maintenant connecté', 'success'); // on affiche le message
selectSection( document.querySelector('#MENU li:first-child') ); // on redirige vers la page d'accueil
break;
// case 'missing_param': messageBox('Un des champs requis n\'est pas présent', 'warning'); break;
// case 'empty_param': messageBox('Un des champs requis est vide', 'warning'); break;
// case 'unknown_user': messageBox('Nom d\'utilisateur inconnu', 'error'); break;
// case 'wrong_password': messageBox('Mot de passe incorrect', 'error'); break;
case 'empty_param': case 'missing_param': case 'unknown_user': case 'wrong_password':
messageBox('Identifiants incorrects', 'error');
break;
default:
messageBox('Erreur interne', 'error');
break;
}
}
/* [b] Initialisation des formulaires
==============================================================*/
initForm( // initialisation du formulaire de connection
document.querySelector('#user'), // formulaire (élément DOM)
function(request){ // handler
// ajout d'informations à la requête
request.level_0 = 'user';
request.level_1 = 'authentification';
API.send(request, function(response){ manageAuthentificationResponse(response); });
}
);

43
page/_JS/groups.js Executable file
View File

@ -0,0 +1,43 @@
var subSections = document.querySelectorAll('hgroup');
// si aucune sous-partie n'est active, on active la première
if( document.querySelector('#CONTAINER hgroup.active') == null )
selectSubSection( document.querySelector('#CONTAINER hgroup') );
/*************************************************/
/****************** EXEMPLE API ******************/
/*************************************************/
/* objet envoyé à API.php */
var request = {
level_0: 'groups',
level_1: 'visualiser',
group : 'ego'
};
// console.log( request );
// envoi de la requête
// @ on envoie l'objet
// @ quand réception: affichage de l'objet reçu
//
API.send(request, function(){} );

42
page/auth.php Executable file
View File

@ -0,0 +1,42 @@
<?php require('../manager/security.php'); session_init();
/****************************/
/* FORMULAIRE DE CONNECTION */
/****************************/
?>
<hgroup class='active'>Connection</hgroup>
<section>
<form id='user' style='width: 20em; margin-left: calc(50% - 20em/2);'>
<input type='text' name='username' placeholder='username' class='user' style='width:calc( 100% - 2*1.8em );'>
<input type='password' name='password' placeholder='password' style='width:calc( 100% - 2*1.8em );'>
<input type='button' name='submit' value='Connection' style='width:50%;margin-left: 25%;'>
</form>
</section>
<?php
/***************************/
/* VISUALISATION DU PROFIL */
/***************************/
if( isset($_SESSION['permissions']) && $_SESSION['permissions'] != null ){ ?>
<hgroup>Mon Profil</hgroup>
<section>
username = <?php echo $_SESSION['username']; ?><br>
droits = <?php echo $_SESSION['permissions']; ?>
</section>
<?php } ?>

1
page/career.php Executable file
View File

@ -0,0 +1 @@
career.php

145
page/groups.php Executable file
View File

@ -0,0 +1,145 @@
<?php require('../manager/security.php'); session_init();
/****************************************
* *
* SECTION "GROUPES" *
* *
*****************************************
*
* [1] Mon Groupe (studend + prof)
* [2] Tout les groupes (tous connecté)
* [3] Modifier les groupes (admin)
* [4] Répartir les élèves (admin)
*
*****************************************/
/* [1] Mon Groupe (eleve)
============================================*/
if( $_SESSION['permissions'] == 'student' ){ ?>
<hgroup class='active'>Mon Groupe</hgroup>
<section>
<table>
<thead>
<tr>
<th>Nom</th>
<th>Prénom</th>
<th>Blablabla</th>
</tr>
</thead>
<tbody>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
<tr>
<td>001</td>
<td>002</td>
<td>003</td>
</tr>
</tbody>
</table>
</section>
<?php } ?>
<?php if( $_SESSION['permissions'] == 'teacher' ){ ?>
<hgroup class='active'>Mes Groupe</hgroup>
<section>
<table>
<thead>
<tr>
<th>Nom du groupe</th>
<th>Nombre d'élèves</th>
<th>Nombre de modules</th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td>30</td>
<td>2</td>
</tr>
<tr>
<td>B</td>
<td>28</td>
<td>3</td>
</tr>
<tr>
<td>D</td>
<td>32</td>
<td>1</td>
</tr>
<tr>
<td>F</td>
<td>21</td>
<td>2</td>
</tr>
</tbody>
</table>
</section>
<?php } ?>
<hgroup>Tout les groupes</hgroup>
<section>
Tout les groupes<br/>
bla<br/>
bla<br/>
</section>
<hgroup>Mon Groupe 2</hgroup>
<section>
Mon Groupe 2<br/>
bla<br/>
bla<br/>
</section>

42
page/home.php Executable file
View File

@ -0,0 +1,42 @@
<?php require('../manager/security.php'); session_init();
/****************************************
* *
* SECTION "GROUPES" *
* *
*****************************************
*
* [1] Présentation (studend + prof)
* [2] Tout les groupes (tous connecté)
* [3] Modifier les groupes (admin)
* [4] Répartir les élèves (admin)
*
*****************************************/
if( $_SESSION['permissions'] )
?>
<hgroup class='active'>Présentation</hgroup>
<section>
Bienvenue sur la plateforme de gestion des élèves.<br/><br/>
Seuls les membres du département y possède un accès, c'est à dire:<br/>
<ul style='margin-left: 2em;list-style: none;'>
<li>- Elèves</li>
<li>- Enseignants</li>
<li>- Personnel administratif</li>
</ul>
Si vous faite partie de cette liste et que vous n'avez pas de compte, veuillez envoyer une requête au chef du département: Monsieur. Max Chevalier.
</section>
<hgroup>Qui peut avoir accès à la plateforme</hgroup>
<section>
blabla
</section>

1
page/marks.php Executable file
View File

@ -0,0 +1 @@
Notes ici !!!

4
page/modules.php Executable file
View File

@ -0,0 +1,4 @@
<?php require('../manager/security.php'); session_init(); ?>
modules.php

1
page/semestre.php Executable file
View File

@ -0,0 +1 @@
semestre.php

1
page/settings.php Executable file
View File

@ -0,0 +1 @@
settings.php

1
page/ue.php Executable file
View File

@ -0,0 +1 @@
ue.php

1
src/input_icon/default.svg Executable file
View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><path d="M10 34v4h28v-4h-28zm9-8.4h10l1.8 4.4h4.2l-9.5-22h-3l-9.5 22h4.2l1.8-4.4zm5-13.64l3.74 10.04h-7.48l3.74-10.04z"/><path d="M0 0h48v48h-48z" fill="none"/></svg>

After

Width:  |  Height:  |  Size: 271 B

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="48"
viewBox="0 0 48 48"
width="48"
id="svg3035"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="default_grayscale.svg">
<metadata
id="metadata3045">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3043" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="789"
inkscape:window-height="480"
id="namedview3041"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="10"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="svg3035" />
<path
d="M10 34v4h28v-4h-28zm9-8.4h10l1.8 4.4h4.2l-9.5-22h-3l-9.5 22h4.2l1.8-4.4zm5-13.64l3.74 10.04h-7.48l3.74-10.04z"
id="path3037"
style="fill:#757575;fill-opacity:1" />
<path
d="M0 0h48v48h-48z"
fill="none"
id="path3039" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

49
src/input_icon/password.svg Executable file
View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 24 24"
id="Layer_1"
version="1.0"
viewBox="0 0 24 24"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="100%"
height="100%"
sodipodi:docname="password.svg"><metadata
id="metadata4501"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs4499" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="747"
inkscape:window-height="480"
id="namedview4497"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-4.322034"
inkscape:cy="12"
inkscape:window-x="10"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><g
id="g3176"
transform="matrix(0.9,0,0,0.9,1.2,1.2)"><path
id="path4493"
d="M 9,2 C 5.1,2 2,5.1 2,9 c 0,3.9 3.1,7 7,7 3.9,0 7,-3.1 7,-7 C 16,5.1 12.9,2 9,2 z M 7.5,10 C 6.1,10 5,8.9 5,7.5 5,6.1 6.1,5 7.5,5 8.9,5 10,6.1 10,7.5 10,8.9 8.9,10 7.5,10 z"
inkscape:connector-curvature="0" /><path
id="path4495"
d="m 15,11 -4,4 2,2 v 0 h 2 v 2 l 0,0 h 2 v 2 l 0.7,0.7 c 0.2,0.2 0.4,0.3 0.7,0.3 H 21 c 0.6,0 1,-0.4 1,-1 v -2.6 c 0,-0.3 -0.1,-0.5 -0.3,-0.7 L 15,11 z"
inkscape:connector-curvature="0" /></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 24 24"
id="Layer_1"
version="1.0"
viewBox="0 0 24 24"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="100%"
height="100%"
sodipodi:docname="password_grayscale.svg"><metadata
id="metadata4501"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs4499" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="789"
inkscape:window-height="480"
id="namedview4497"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><g
id="g3137"
transform="matrix(0.9,0,0,0.9,1.2,1.2)"><path
style="fill:#757575;fill-opacity:1"
id="path4493"
d="M 9,2 C 5.1,2 2,5.1 2,9 c 0,3.9 3.1,7 7,7 3.9,0 7,-3.1 7,-7 C 16,5.1 12.9,2 9,2 z M 7.5,10 C 6.1,10 5,8.9 5,7.5 5,6.1 6.1,5 7.5,5 8.9,5 10,6.1 10,7.5 10,8.9 8.9,10 7.5,10 z"
inkscape:connector-curvature="0" /><path
style="fill:#757575;fill-opacity:1"
id="path4495"
d="m 15,11 -4,4 2,2 v 0 h 2 v 2 l 0,0 h 2 v 2 l 0.7,0.7 c 0.2,0.2 0.4,0.3 0.7,0.3 H 21 c 0.6,0 1,-0.4 1,-1 v -2.6 c 0,-0.3 -0.1,-0.5 -0.3,-0.7 L 15,11 z"
inkscape:connector-curvature="0" /></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

59
src/input_icon/user.svg Executable file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 48 48"
height="48px"
id="Layer_1"
version="1.1"
viewBox="0 0 48 48"
width="48px"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="user.svg"><metadata
id="metadata3897"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs3895" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview3893"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.6440676"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="g3883"
inkscape:snap-page="true" /><g
id="g3883"><g
id="g3885"
transform="matrix(1.4565369,0,0,1.4565369,-10.956886,-15.211429)"><circle
cx="24"
cy="18.796"
r="5.0840001"
id="circle3887"
sodipodi:cx="24"
sodipodi:cy="18.796"
sodipodi:rx="5.0840001"
sodipodi:ry="5.0840001"
style="fill:#231f20"
d="m 29.084,18.796 c 0,2.807815 -2.276184,5.084 -5.084,5.084 -2.807816,0 -5.084,-2.276185 -5.084,-5.084 0,-2.807816 2.276184,-5.084001 5.084,-5.084001 2.807816,0 5.084,2.276185 5.084,5.084001 z" /><path
d="M 30.943,25.688 H 17.056 c -0.904,0 -1.638,0.733 -1.638,1.638 v 10.337 c 2.501,1.554 5.443,2.467 8.605,2.467 3.142,0 6.066,-0.902 8.559,-2.439 V 27.326 c 0,-0.904 -0.734,-1.638 -1.639,-1.638 z"
id="path3889"
inkscape:connector-curvature="0"
style="fill:#231f20" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 48 48"
height="48px"
id="Layer_1"
version="1.1"
viewBox="0 0 48 48"
width="48px"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="user_grayscale.svg"><metadata
id="metadata3897"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs3895" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="789"
inkscape:window-height="480"
id="namedview3893"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="24"
inkscape:cy="24"
inkscape:window-x="812"
inkscape:window-y="292"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1"
inkscape:snap-page="true" /><g
id="g3883"
style="fill:#757575;fill-opacity:1"
transform="matrix(1.4565369,0,0,1.4565369,-10.956886,-15.211429)"><g
id="g3885"
style="fill:#757575;fill-opacity:1"><circle
cx="24"
cy="18.796"
r="5.0840001"
id="circle3887"
style="fill:#757575;fill-opacity:1"
d="m 29.084,18.796 c 0,2.807815 -2.276184,5.084 -5.084,5.084 -2.807816,0 -5.084,-2.276185 -5.084,-5.084 0,-2.807816 2.276184,-5.084001 5.084,-5.084001 2.807816,0 5.084,2.276185 5.084,5.084001 z"
sodipodi:cx="24"
sodipodi:cy="18.796"
sodipodi:rx="5.0840001"
sodipodi:ry="5.0840001" /><path
d="M 30.943,25.688 H 17.056 c -0.904,0 -1.638,0.733 -1.638,1.638 v 10.337 c 2.501,1.554 5.443,2.467 8.605,2.467 3.142,0 6.066,-0.902 8.559,-2.439 V 27.326 c 0,-0.904 -0.734,-1.638 -1.639,-1.638 z"
id="path3889"
style="fill:#757575;fill-opacity:1"
inkscape:connector-curvature="0" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

53
src/menu_icon/auth.svg Executable file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 32 32"
height="32px"
id="svg2"
version="1.1"
viewBox="0 0 32 32"
width="32px"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="auth.svg"><metadata
id="metadata15"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview11"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="-30.821772"
inkscape:cy="18.025372"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="g7" /><g
id="background"><rect
fill="none"
height="32"
width="32"
id="rect4" /></g><g
id="group_x5F_full"><g
id="g7"><path
d="m 16,8 c 1.657,0 3,-1.343 3,-3 0,-1.657 -1.343,-3 -3,-3 -1.657,0 -3,1.343 -3,3 0,1.657 1.343,3 3,3 z m 6,3 c 0,0 0,-2 -2,-2 -0.5,0 -8,0 -8,0 0,0 -2,0 -2,2 l 0,7 c 0,2 2,2 2,2 l 0,10 8,0 0,-10 c 0,0 2,0 2,-2 0,-2 0,-7 0,-7 z"
id="path9"
style="fill:#ffffff;fill-opacity:1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssscscssccccsc" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 32 32"
height="32px"
id="svg2"
version="1.1"
viewBox="0 0 32 32"
width="32px"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="groups.svg"><metadata
id="metadata15"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview11"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="8.6358548"
inkscape:cy="18.025372"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="g7" /><g
id="background"><rect
fill="none"
height="32"
width="32"
id="rect4" /></g><g
id="group_x5F_full"><g
id="g7"><path
d="m 16,8 c 1.657,0 3,-1.343 3,-3 0,-1.657 -1.343,-3 -3,-3 -1.657,0 -3,1.343 -3,3 0,1.657 1.343,3 3,3 z m 6,3 c 0,0 0,-2 -2,-2 -0.5,0 -8,0 -8,0 0,0 -2,0 -2,2 l 0,7 c 0,2 2,2 2,2 l 0,10 8,0 0,-10 c 0,0 2,0 2,-2 0,-2 0,-7 0,-7 z"
id="path9"
style="fill:#60676d;fill-opacity:1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssscscssccccsc" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

51
src/menu_icon/groups.svg Executable file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 32 32"
height="32px"
id="svg2"
version="1.1"
viewBox="0 0 32 32"
width="32px"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="groups.svg"><metadata
id="metadata15"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview11"
showgrid="false"
inkscape:zoom="7.375"
inkscape:cx="-10.305085"
inkscape:cy="16"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="g7" /><g
id="background"><rect
fill="none"
height="32"
width="32"
id="rect4" /></g><g
id="group_x5F_full"><g
id="g7"><path
d="M8,20c0-2,0-10,0-10s0.005-0.45,0.239-1C6.16,9,4,9,4,9s-2,0-2,2v7c0,2,2,2,2,2v10h6v-8C10,22,8,22,8,20z M8,8 c0.52,0,1.001-0.144,1.427-0.376c0.059-0.036,0.125-0.068,0.188-0.103C10.446,6.988,11,6.061,11,5c0-1.657-1.343-3-3-3 S5,3.343,5,5S6.343,8,8,8z M28,9h-4.238C23.995,9.55,24,10,24,10s0,8,0,10s-2,2-2,2v8h6V20c0,0,2,0,2-2s0-7,0-7S30,9,28,9z M22.38,7.519c0.065,0.035,0.134,0.068,0.194,0.105C23,7.856,23.48,8,24,8c1.657,0,3-1.343,3-3s-1.343-3-3-3s-3,1.343-3,3 C21,6.059,21.552,6.985,22.38,7.519z M16,8c1.657,0,3-1.343,3-3s-1.343-3-3-3s-3,1.343-3,3S14.343,8,16,8z M22,11c0,0,0-2-2-2 c-0.5,0-8,0-8,0s-2,0-2,2v7c0,2,2,2,2,2v10h8V20c0,0,2,0,2-2S22,11,22,11z"
id="path9"
style="fill:#ffffff;fill-opacity:1" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 32 32"
height="32px"
id="svg2"
version="1.1"
viewBox="0 0 32 32"
width="32px"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="1445005302_group_full.svg"><metadata
id="metadata15"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview11"
showgrid="false"
inkscape:zoom="7.375"
inkscape:cx="-10.305085"
inkscape:cy="16"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="g7" /><g
id="background"><rect
fill="none"
height="32"
width="32"
id="rect4" /></g><g
id="group_x5F_full"><g
id="g7"><path
d="M8,20c0-2,0-10,0-10s0.005-0.45,0.239-1C6.16,9,4,9,4,9s-2,0-2,2v7c0,2,2,2,2,2v10h6v-8C10,22,8,22,8,20z M8,8 c0.52,0,1.001-0.144,1.427-0.376c0.059-0.036,0.125-0.068,0.188-0.103C10.446,6.988,11,6.061,11,5c0-1.657-1.343-3-3-3 S5,3.343,5,5S6.343,8,8,8z M28,9h-4.238C23.995,9.55,24,10,24,10s0,8,0,10s-2,2-2,2v8h6V20c0,0,2,0,2-2s0-7,0-7S30,9,28,9z M22.38,7.519c0.065,0.035,0.134,0.068,0.194,0.105C23,7.856,23.48,8,24,8c1.657,0,3-1.343,3-3s-1.343-3-3-3s-3,1.343-3,3 C21,6.059,21.552,6.985,22.38,7.519z M16,8c1.657,0,3-1.343,3-3s-1.343-3-3-3s-3,1.343-3,3S14.343,8,16,8z M22,11c0,0,0-2-2-2 c-0.5,0-8,0-8,0s-2,0-2,2v7c0,2,2,2,2,2v10h8V20c0,0,2,0,2-2S22,11,22,11z"
id="path9"
style="fill:#60676d;fill-opacity:1" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

151
src/menu_icon/home.svg Executable file
View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20.5585mm"
height="23.953442mm"
viewBox="0 0 72.845081 84.874394"
id="svg4286"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="icon_grayscale.svg"
inkscape:export-filename="/home/xdrm/Bureau/GRAPHISM/logo/flask100.png"
inkscape:export-xdpi="123.54987"
inkscape:export-ydpi="123.54987">
<defs
id="defs4288" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="48.184781"
inkscape:cy="27.605616"
inkscape:document-units="px"
inkscape:current-layer="g4521-8"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:snap-bbox="false"
inkscape:bbox-nodes="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-edge-midpoints="false"
inkscape:object-paths="true"
inkscape:object-nodes="true"
inkscape:snap-grids="true"
inkscape:snap-page="true"
inkscape:snap-nodes="true" />
<metadata
id="metadata4291">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(15.022256,-191.80268)">
<g
id="g4517"
transform="translate(-609.72838,51.305182)">
<g
id="g4519"
transform="matrix(4.0416382,0,0,4.0416382,422.29019,-4060.1699)">
<g
id="g4191"
inkscape:export-xdpi="73.431374"
inkscape:export-ydpi="73.431374"
style="fill:#ababab;fill-opacity:1" />
<g
inkscape:export-ydpi="73.431374"
inkscape:export-xdpi="73.431374"
id="g4195"
transform="translate(0.18745231,-35.076806)">
<circle
style="fill:#bdbdbd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.442;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="circle4197"
cx="12.003395"
cy="1040.9"
r="15.162507"
inkscape:export-xdpi="73.431374"
inkscape:export-ydpi="73.431374"
d="m 27.165902,1040.9 c 0,8.374 -6.788486,15.1625 -15.162507,15.1625 -8.3740213,0 -15.162507,-6.7885 -15.162507,-15.1625 0,-8.374 6.7884857,-15.1625 15.162507,-15.1625 8.374021,0 15.162507,6.7885 15.162507,15.1625 z" />
<path
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.442;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 66.068359,4.7871094 A 61.281367,61.281367 0 0 0 4.7871094,66.068359 61.281367,61.281367 0 0 0 66.068359,127.34961 l 0,-122.5625006 z"
transform="matrix(0.24742442,0,0,0.24742442,-4.3437287,1024.5529)"
id="path4199"
inkscape:connector-curvature="0"
inkscape:export-xdpi="73.431374"
inkscape:export-ydpi="73.431374" />
</g>
<g
id="g4517-8"
transform="matrix(0.24742442,0,0,0.24742442,-64.81656,1013.5329)">
<g
id="g4519-2"
transform="matrix(4.0416382,0,0,4.0416382,422.29019,-4060.1699)">
<g
id="g4521-8">
<path
id="path4523-1"
style="color:#000000;text-indent:0;text-transform:none;block-progression:tb;fill:#c3c7c7;fill-opacity:1"
d="m 8.9868,1030.4 0,7.8 c -1.8639,2.9 -3.8033,5.8 -5.625,8.8 -0.9343,1.5 -0.0087,3.8 1.7506,4.2 1.2656,0.3 2.5733,0.1 3.8564,0.2 3.1672,0 6.3372,0 9.5032,-0.1 2.044,-0.2 3.264,-2.8 2.077,-4.5 -1.813,-2.9 -3.721,-5.7 -5.562,-8.6 l 0,-7.8 -6.0002,0 z"
inkscape:connector-curvature="0" />
<path
id="path4525-4"
d="m 15.469805,1042.9 c 0,0.5358 -0.433988,0.9698 -0.969805,0.9698 -0.535817,0 -0.969805,-0.434 -0.969805,-0.9698 0,-0.5358 0.433988,-0.9698 0.969805,-0.9698 0.535817,0 0.969805,0.434 0.969805,0.9698 z"
inkscape:connector-curvature="0"
style="fill:#ac0000;fill-opacity:1" />
<path
id="path4529-2"
d="m 12.580262,1042.5105 c 0,0.8731 -0.707167,1.5803 -1.580262,1.5803 -0.873095,0 -1.5802621,-0.7072 -1.5802621,-1.5803 0,-0.8731 0.7071671,-1.5803 1.5802621,-1.5803 0.873095,0 1.580262,0.7072 1.580262,1.5803 z"
inkscape:connector-curvature="0"
style="fill:#ac0000;fill-opacity:1" />
<path
id="path4531-5"
d="m 7.4729,1042.4 c -1.098,1.7 -2.2018,3.4 -3.2812,5.1 -0.6853,1.2 0.3032,2.8 1.6875,2.9 l 12.313,0 c 1.396,-0.1 2.274,-1.9 1.5,-3 -1.071,-1.7 -2.149,-3.4 -3.219,-5 l -9.0001,0 z"
inkscape:connector-curvature="0"
style="fill:#ac0000;fill-opacity:1" />
<path
id="path4527"
style="text-indent:0;text-transform:none;block-progression:tb;color:#000000;fill:#000000;fill-opacity:0.17258881"
d="m 9,1030.4 0,7.8 c -1.8639,2.9 -3.8033,5.8 -5.625,8.8 -0.9343,1.5 -0.0092,3.8 1.75,4.2 1.2656,0.3 2.5607,0.1 3.8438,0.2 l 3.0002,0 0,-21 -2.969,0 z"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4537-0"
transform="translate(-60,0)" />
</g>
</g>
<g
id="g4537"
transform="translate(-60,0)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

151
src/menu_icon/home_grayscale.svg Executable file
View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20.5585mm"
height="23.953442mm"
viewBox="0 0 72.845081 84.874394"
id="svg4286"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="icon.svg"
inkscape:export-filename="/home/xdrm/Bureau/GRAPHISM/logo/flask100.png"
inkscape:export-xdpi="123.54987"
inkscape:export-ydpi="123.54987">
<defs
id="defs4288" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="48.184781"
inkscape:cy="27.605616"
inkscape:document-units="px"
inkscape:current-layer="g4521-8"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:snap-bbox="false"
inkscape:bbox-nodes="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-edge-midpoints="false"
inkscape:object-paths="true"
inkscape:object-nodes="true"
inkscape:snap-grids="true"
inkscape:snap-page="true"
inkscape:snap-nodes="true" />
<metadata
id="metadata4291">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(15.022256,-191.80268)">
<g
id="g4517"
transform="translate(-609.72838,51.305182)">
<g
id="g4519"
transform="matrix(4.0416382,0,0,4.0416382,422.29019,-4060.1699)">
<g
id="g4191"
inkscape:export-xdpi="73.431374"
inkscape:export-ydpi="73.431374"
style="fill:#ababab;fill-opacity:1" />
<g
inkscape:export-ydpi="73.431374"
inkscape:export-xdpi="73.431374"
id="g4195"
transform="translate(0.18745231,-35.076806)">
<circle
style="fill:#bdbdbd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.442;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="circle4197"
cx="12.003395"
cy="1040.9"
r="15.162507"
inkscape:export-xdpi="73.431374"
inkscape:export-ydpi="73.431374"
d="m 27.165902,1040.9 c 0,8.374 -6.788486,15.1625 -15.162507,15.1625 -8.3740213,0 -15.162507,-6.7885 -15.162507,-15.1625 0,-8.374 6.7884857,-15.1625 15.162507,-15.1625 8.374021,0 15.162507,6.7885 15.162507,15.1625 z" />
<path
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.442;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 66.068359,4.7871094 A 61.281367,61.281367 0 0 0 4.7871094,66.068359 61.281367,61.281367 0 0 0 66.068359,127.34961 l 0,-122.5625006 z"
transform="matrix(0.24742442,0,0,0.24742442,-4.3437287,1024.5529)"
id="path4199"
inkscape:connector-curvature="0"
inkscape:export-xdpi="73.431374"
inkscape:export-ydpi="73.431374" />
</g>
<g
id="g4517-8"
transform="matrix(0.24742442,0,0,0.24742442,-64.81656,1013.5329)">
<g
id="g4519-2"
transform="matrix(4.0416382,0,0,4.0416382,422.29019,-4060.1699)">
<g
id="g4521-8">
<path
id="path4523-1"
style="color:#000000;text-indent:0;text-transform:none;block-progression:tb;fill:#c3c7c7;fill-opacity:1"
d="m 8.9868,1030.4 0,7.8 c -1.8639,2.9 -3.8033,5.8 -5.625,8.8 -0.9343,1.5 -0.0087,3.8 1.7506,4.2 1.2656,0.3 2.5733,0.1 3.8564,0.2 3.1672,0 6.3372,0 9.5032,-0.1 2.044,-0.2 3.264,-2.8 2.077,-4.5 -1.813,-2.9 -3.721,-5.7 -5.562,-8.6 l 0,-7.8 -6.0002,0 z"
inkscape:connector-curvature="0" />
<path
id="path4525-4"
d="m 15.469805,1042.9 c 0,0.5358 -0.433988,0.9698 -0.969805,0.9698 -0.535817,0 -0.969805,-0.434 -0.969805,-0.9698 0,-0.5358 0.433988,-0.9698 0.969805,-0.9698 0.535817,0 0.969805,0.434 0.969805,0.9698 z"
inkscape:connector-curvature="0"
style="fill:#60676d;fill-opacity:1" />
<path
id="path4529-2"
d="m 12.580262,1042.5105 c 0,0.8731 -0.707167,1.5803 -1.580262,1.5803 -0.873095,0 -1.5802621,-0.7072 -1.5802621,-1.5803 0,-0.8731 0.7071671,-1.5803 1.5802621,-1.5803 0.873095,0 1.580262,0.7072 1.580262,1.5803 z"
inkscape:connector-curvature="0"
style="fill:#60676d;fill-opacity:1" />
<path
id="path4531-5"
d="m 7.4729,1042.4 c -1.098,1.7 -2.2018,3.4 -3.2812,5.1 -0.6853,1.2 0.3032,2.8 1.6875,2.9 l 12.313,0 c 1.396,-0.1 2.274,-1.9 1.5,-3 -1.071,-1.7 -2.149,-3.4 -3.219,-5 l -9.0001,0 z"
inkscape:connector-curvature="0"
style="fill:#60676d;fill-opacity:1" />
<path
id="path4527"
style="text-indent:0;text-transform:none;block-progression:tb;color:#000000;fill:#000000;fill-opacity:0.17258881"
d="m 9,1030.4 0,7.8 c -1.8639,2.9 -3.8033,5.8 -5.625,8.8 -0.9343,1.5 -0.0092,3.8 1.75,4.2 1.2656,0.3 2.5607,0.1 3.8438,0.2 l 3.0002,0 0,-21 -2.969,0 z"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4537-0"
transform="translate(-60,0)" />
</g>
</g>
<g
id="g4537"
transform="translate(-60,0)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

57
src/menu_icon/marks.svg Executable file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="100%"
height="100%"
viewBox="45.6 168.9 504 504"
id="Layer_1"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="marks.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview3156"
showgrid="false"
inkscape:zoom="1.8035714"
inkscape:cx="36.871282"
inkscape:cy="252"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><metadata
id="metadata19"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs17" /><path
d="m 129.5,65.40625 c -22.5,0 -40.90625,18.40625 -40.90625,40.90625 l 0,326.78125 C 88.59375,455.59375 107,474 129.5,474 l 245.09375,0 c 22.5,0 40.90625,-18.40625 40.90625,-40.90625 l 0,-326.90625 c 0,-22.4 -18.40625,-40.78125 -40.90625,-40.78125 l -102.09375,0 c 0,11.2 -9.20625,20.40625 -20.40625,20.40625 -11.2,0 -20.40625,-9.20625 -20.40625,-20.40625 l -102.1875,0 z M 129.5,96 374.59375,96 c 6.1,0 10.21875,4.0875 10.21875,10.1875 l 0,326.90625 c 0,6.1 -4.11875,10.21875 -10.21875,10.21875 l -245.09375,0 c -6.1,0 -10.1875,-4.11875 -10.1875,-10.21875 l 0,-326.90625 C 119.3125,100.0875 123.4,96 129.5,96 z"
transform="translate(45.6,168.9)"
id="path3"
style="fill:#455a64;fill-opacity:1" /><path
d="M 420.2,612.2 H 175.1 c -6.1,0 -10.2,-4.1 -10.2,-10.2 V 275.1 c 0,-6.1 4.1,-10.2 10.2,-10.2 h 245.1 c 6.1,0 10.2,4.1 10.2,10.2 V 602 c 0,6.1 -4.1,10.2 -10.2,10.2 z"
id="path4784"
style="fill:#ffffff" /><g
id="g7"><path
d="m 252,24.5 c -22.5,0 -40.90625,18.40625 -40.90625,40.90625 l -50.90625,0 0,40.90625 c 0,11.2 9.20625,20.375 20.40625,20.375 l 143,0 c 11.2,0 20.40625,-9.175 20.40625,-20.375 l 0,-40.90625 -51.09375,0 C 292.90625,42.90625 274.5,24.5 252,24.5 z m 0,20.5 c 11.2,0 20.40625,9.20625 20.40625,20.40625 0,7.690321 -4.27799,14.43264 -10.625,17.90625 -0.58572,0.320552 -1.19351,0.612039 -1.8125,0.875 -0.61055,0.259375 -1.23547,0.487695 -1.875,0.6875 -1.89039,0.590607 -3.91463,0.928145 -6,0.9375 -0.38156,0 -0.74837,-0.01018 -1.125,-0.03125 -0.31469,-0.01615 -0.62657,-0.06326 -0.9375,-0.09375 -0.0306,-0.0031 -0.0632,0.0033 -0.0937,0 -0.31073,-0.03192 -0.6309,-0.07908 -0.9375,-0.125 -0.0305,-0.0047 -0.0633,0.0048 -0.0937,0 C 248.6004,85.515274 248.30136,85.435832 248,85.375 238.73594,83.460938 231.6875,75.20625 231.6875,65.40625 l -0.0937,0 C 231.59375,54.20625 240.8,45 252,45 z"
transform="translate(45.6,168.9)"
id="path9"
style="fill:#90a4ae;fill-opacity:1" /></g><path
d="m 365.1,383.4 -92,91.9 -42.9,-43.9 -25.5,25.6 69.4,68.4 116.5,-116.5 z"
id="polygon13"
style="fill:#455a64;fill-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="100%"
height="100%"
viewBox="45.6 168.9 504 504"
id="Layer_1"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="marks_grayscale.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview3156"
showgrid="false"
inkscape:zoom="1.8035714"
inkscape:cx="-70.693076"
inkscape:cy="252"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><metadata
id="metadata19"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs17" /><path
d="m 129.5,65.40625 c -22.5,0 -40.90625,18.40625 -40.90625,40.90625 l 0,326.78125 C 88.59375,455.59375 107,474 129.5,474 l 245.09375,0 c 22.5,0 40.90625,-18.40625 40.90625,-40.90625 l 0,-326.90625 c 0,-22.4 -18.40625,-40.78125 -40.90625,-40.78125 l -102.09375,0 c 0,11.2 -9.20625,20.40625 -20.40625,20.40625 -11.2,0 -20.40625,-9.20625 -20.40625,-20.40625 l -102.1875,0 z M 129.5,96 374.59375,96 c 6.1,0 10.21875,4.0875 10.21875,10.1875 l 0,326.90625 c 0,6.1 -4.11875,10.21875 -10.21875,10.21875 l -245.09375,0 c -6.1,0 -10.1875,-4.11875 -10.1875,-10.21875 l 0,-326.90625 C 119.3125,100.0875 123.4,96 129.5,96 z"
transform="translate(45.6,168.9)"
id="path3"
style="fill:#60676d;fill-opacity:1" /><path
d="M 420.2,612.2 H 175.1 c -6.1,0 -10.2,-4.1 -10.2,-10.2 V 275.1 c 0,-6.1 4.1,-10.2 10.2,-10.2 h 245.1 c 6.1,0 10.2,4.1 10.2,10.2 V 602 c 0,6.1 -4.1,10.2 -10.2,10.2 z"
id="path4784"
style="fill:#898f95;fill-opacity:1" /><g
id="g7"
style="fill:#7d868d;fill-opacity:1"><path
d="m 252,24.5 c -22.5,0 -40.90625,18.40625 -40.90625,40.90625 l -50.90625,0 0,40.90625 c 0,11.2 9.20625,20.375 20.40625,20.375 l 143,0 c 11.2,0 20.40625,-9.175 20.40625,-20.375 l 0,-40.90625 -51.09375,0 C 292.90625,42.90625 274.5,24.5 252,24.5 z m 0,20.5 c 11.2,0 20.40625,9.20625 20.40625,20.40625 0,7.690321 -4.27799,14.43264 -10.625,17.90625 -0.58572,0.320552 -1.19351,0.612039 -1.8125,0.875 -0.61055,0.259375 -1.23547,0.487695 -1.875,0.6875 -1.89039,0.590607 -3.91463,0.928145 -6,0.9375 -0.38156,0 -0.74837,-0.01018 -1.125,-0.03125 -0.31469,-0.01615 -0.62657,-0.06326 -0.9375,-0.09375 -0.0306,-0.0031 -0.0632,0.0033 -0.0937,0 -0.31073,-0.03192 -0.6309,-0.07908 -0.9375,-0.125 -0.0305,-0.0047 -0.0633,0.0048 -0.0937,0 C 248.6004,85.515274 248.30136,85.435832 248,85.375 238.73594,83.460938 231.6875,75.20625 231.6875,65.40625 l -0.0937,0 C 231.59375,54.20625 240.8,45 252,45 z"
transform="translate(45.6,168.9)"
id="path9"
style="fill:#7d868d;fill-opacity:1" /></g><path
d="m 365.1,383.4 -92,91.9 -42.9,-43.9 -25.5,25.6 69.4,68.4 116.5,-116.5 z"
id="polygon13"
style="fill:#51565b;fill-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

71
src/menu_icon/modules.svg Executable file
View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="307.12741"
height="307.12741"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="modules.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="-238.69216"
inkscape:cy="223.42432"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-187.7979,-368.72978)">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 196.95714,405.84184 c -6.52926,6.52927 -6.50716,17.04832 0.0221,23.57759 l 9.1703,9.17029 51.50831,-51.50831 -9.1703,-9.17029 c -6.52927,-6.52927 -17.04833,-6.55137 -23.57759,-0.0221 l -27.95283,27.95283 z m 19.73272,43.28819 176.57781,176.57782 51.50831,-51.50831 -176.57781,-176.57782 -51.50831,51.50831 z m 184.73163,184.73165 70.35712,18.87091 -18.8488,-70.37923 -51.50832,51.50832 z"
id="rect2996"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 439.57212,368.72978 -7.44673,7.44671 22.67162,22.67161 -3.91118,3.91119 -22.67161,-22.67161 -10.49613,10.49611 14.71667,14.71667 -4.15425,4.15425 -14.71666,-14.71666 -11.13693,11.13693 22.67161,22.67161 -3.91119,3.91118 -22.67161,-22.67161 -10.49613,10.49612 14.71667,14.71667 -4.15425,4.15425 -14.71666,-14.71667 -11.13694,11.13693 22.67162,22.67161 -3.91118,3.91119 -22.67161,-22.67161 -10.49613,10.49611 14.71667,14.71667 -4.15425,4.15425 -14.71666,-14.71666 -6.89429,6.89429 55.3532,55.3532 92.29953,-92.29953 z m -105.64617,216.35258 -55.35321,-55.35321 -6.25347,6.25348 22.67161,22.67161 -3.91119,3.91118 -22.67161,-22.67161 -10.49611,10.49612 14.71666,14.71666 -4.15426,4.15426 -14.71667,-14.71667 -11.13692,11.13693 22.67161,22.67161 -3.91118,3.91119 -22.67161,-22.67161 -10.49612,10.49611 14.71666,14.71667 -4.15425,4.15425 -14.71667,-14.71667 -11.13692,11.13694 22.67161,22.67161 -3.91119,3.91118 -22.67161,-22.67161 -10.49611,10.49612 14.71666,14.71666 -4.15426,4.15426 -14.71667,-14.71667 -6.56283,6.56283 55.35321,55.35322 z"
id="rect3786"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="307.12741"
height="307.12741"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="modules_grayscale.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="-238.69216"
inkscape:cy="223.42432"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-187.7979,-368.72978)">
<path
style="fill:#60676d;fill-opacity:1;stroke:none"
d="m 196.95714,405.84184 c -6.52926,6.52927 -6.50716,17.04832 0.0221,23.57759 l 9.1703,9.17029 51.50831,-51.50831 -9.1703,-9.17029 c -6.52927,-6.52927 -17.04833,-6.55137 -23.57759,-0.0221 l -27.95283,27.95283 z m 19.73272,43.28819 176.57781,176.57782 51.50831,-51.50831 -176.57781,-176.57782 -51.50831,51.50831 z m 184.73163,184.73165 70.35712,18.87091 -18.8488,-70.37923 -51.50832,51.50832 z"
id="rect2996"
inkscape:connector-curvature="0" />
<path
style="fill:#60676d;fill-opacity:1;stroke:none"
d="m 439.57212,368.72978 -7.44673,7.44671 22.67162,22.67161 -3.91118,3.91119 -22.67161,-22.67161 -10.49613,10.49611 14.71667,14.71667 -4.15425,4.15425 -14.71666,-14.71666 -11.13693,11.13693 22.67161,22.67161 -3.91119,3.91118 -22.67161,-22.67161 -10.49613,10.49612 14.71667,14.71667 -4.15425,4.15425 -14.71666,-14.71667 -11.13694,11.13693 22.67162,22.67161 -3.91118,3.91119 -22.67161,-22.67161 -10.49613,10.49611 14.71667,14.71667 -4.15425,4.15425 -14.71666,-14.71666 -6.89429,6.89429 55.3532,55.3532 92.29953,-92.29953 z m -105.64617,216.35258 -55.35321,-55.35321 -6.25347,6.25348 22.67161,22.67161 -3.91119,3.91118 -22.67161,-22.67161 -10.49611,10.49612 14.71666,14.71666 -4.15426,4.15426 -14.71667,-14.71667 -11.13692,11.13693 22.67161,22.67161 -3.91118,3.91119 -22.67161,-22.67161 -10.49612,10.49611 14.71666,14.71667 -4.15425,4.15425 -14.71667,-14.71667 -11.13692,11.13694 22.67161,22.67161 -3.91119,3.91118 -22.67161,-22.67161 -10.49611,10.49612 14.71666,14.71666 -4.15426,4.15426 -14.71667,-14.71667 -6.56283,6.56283 55.35321,55.35322 z"
id="rect3786"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

49
src/menu_icon/settings.svg Executable file
View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="64"
height="64"
viewBox="0 0 64 64"
id="Layer_1"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="settings.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1210"
inkscape:window-height="809"
id="namedview3221"
showgrid="false"
inkscape:zoom="3.6875"
inkscape:cx="-20.610169"
inkscape:cy="32"
inkscape:window-x="10"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="g3111" /><metadata
id="metadata3121"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs3119" /><g
id="g3111"><path
d="m 36.167,32 c 0,2.30137 -1.86563,4.167 -4.167,4.167 -2.30137,0 -4.167,-1.86563 -4.167,-4.167 0,-2.30137 1.86563,-4.167 4.167,-4.167 2.30137,0 4.167,1.86563 4.167,4.167 z"
id="circle3113"
style="fill:#ffffff;fill-opacity:1" /><path
d="M 55.192,27.87 49.367,26.778 C 49.013,25.6 48.549,24.47 47.975,23.407 l 3.37,-4.927 c 0.312,-0.456 0.248,-1.142 -0.143,-1.532 l -4.155,-4.156 c -0.391,-0.391 -1.076,-0.454 -1.532,-0.143 l -4.928,3.372 c -1.094,-0.59 -2.259,-1.063 -3.473,-1.42 L 36.028,8.807 C 35.925,8.264 35.396,7.824 34.843,7.824 h -5.877 c -0.553,0 -1.082,0.44 -1.185,0.983 l -1.097,5.851 c -1.165,0.356 -2.282,0.82 -3.334,1.392 l -4.866,-3.329 c -0.456,-0.312 -1.142,-0.248 -1.532,0.143 l -4.156,4.156 c -0.391,0.391 -0.454,1.076 -0.143,1.532 l 3.35,4.896 c -0.564,1.052 -1.021,2.168 -1.371,3.331 L 8.808,27.87 c -0.542,0.103 -0.982,0.632 -0.982,1.185 v 5.877 c 0,0.553 0.44,1.082 0.982,1.185 l 5.82,1.091 c 0.355,1.188 0.823,2.328 1.401,3.399 l -3.312,4.842 c -0.312,0.456 -0.248,1.142 0.143,1.532 l 4.155,4.156 c 0.391,0.391 1.076,0.454 1.532,0.143 l 4.84,-3.313 c 1.041,0.563 2.146,1.021 3.299,1.375 l 1.097,5.852 c 0.103,0.542 0.632,0.982 1.185,0.982 h 5.877 c 0.553,0 1.082,-0.44 1.185,-0.982 l 1.086,-5.796 c 1.201,-0.354 2.354,-0.821 3.438,-1.401 l 4.902,3.354 c 0.456,0.312 1.142,0.248 1.532,-0.143 l 4.155,-4.154 c 0.391,-0.391 0.454,-1.076 0.143,-1.532 l -3.335,-4.874 c 0.589,-1.084 1.063,-2.237 1.423,-3.44 l 5.819,-1.091 c 0.542,-0.103 0.982,-0.632 0.982,-1.185 v -5.877 c 0,-0.553 -0.441,-1.082 -0.983,-1.185 z M 32,42.085 c -5.568,0 -10.083,-4.515 -10.083,-10.086 0,-5.567 4.515,-10.083 10.083,-10.083 5.57,0 10.086,4.516 10.086,10.083 0,5.571 -4.517,10.086 -10.086,10.086 z"
id="path3115"
style="fill:#ffffff;fill-opacity:1" /></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="64"
height="64"
viewBox="0 0 64 64"
id="Layer_1"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="settings.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1210"
inkscape:window-height="809"
id="namedview3221"
showgrid="false"
inkscape:zoom="3.6875"
inkscape:cx="-20.610169"
inkscape:cy="32"
inkscape:window-x="10"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="g3111" /><metadata
id="metadata3121"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs3119" /><g
id="g3111"><path
d="m 36.167,32 c 0,2.30137 -1.86563,4.167 -4.167,4.167 -2.30137,0 -4.167,-1.86563 -4.167,-4.167 0,-2.30137 1.86563,-4.167 4.167,-4.167 2.30137,0 4.167,1.86563 4.167,4.167 z"
id="circle3113"
style="fill:#60676d;fill-opacity:1" /><path
d="M 55.192,27.87 49.367,26.778 C 49.013,25.6 48.549,24.47 47.975,23.407 l 3.37,-4.927 c 0.312,-0.456 0.248,-1.142 -0.143,-1.532 l -4.155,-4.156 c -0.391,-0.391 -1.076,-0.454 -1.532,-0.143 l -4.928,3.372 c -1.094,-0.59 -2.259,-1.063 -3.473,-1.42 L 36.028,8.807 C 35.925,8.264 35.396,7.824 34.843,7.824 h -5.877 c -0.553,0 -1.082,0.44 -1.185,0.983 l -1.097,5.851 c -1.165,0.356 -2.282,0.82 -3.334,1.392 l -4.866,-3.329 c -0.456,-0.312 -1.142,-0.248 -1.532,0.143 l -4.156,4.156 c -0.391,0.391 -0.454,1.076 -0.143,1.532 l 3.35,4.896 c -0.564,1.052 -1.021,2.168 -1.371,3.331 L 8.808,27.87 c -0.542,0.103 -0.982,0.632 -0.982,1.185 v 5.877 c 0,0.553 0.44,1.082 0.982,1.185 l 5.82,1.091 c 0.355,1.188 0.823,2.328 1.401,3.399 l -3.312,4.842 c -0.312,0.456 -0.248,1.142 0.143,1.532 l 4.155,4.156 c 0.391,0.391 1.076,0.454 1.532,0.143 l 4.84,-3.313 c 1.041,0.563 2.146,1.021 3.299,1.375 l 1.097,5.852 c 0.103,0.542 0.632,0.982 1.185,0.982 h 5.877 c 0.553,0 1.082,-0.44 1.185,-0.982 l 1.086,-5.796 c 1.201,-0.354 2.354,-0.821 3.438,-1.401 l 4.902,3.354 c 0.456,0.312 1.142,0.248 1.532,-0.143 l 4.155,-4.154 c 0.391,-0.391 0.454,-1.076 0.143,-1.532 l -3.335,-4.874 c 0.589,-1.084 1.063,-2.237 1.423,-3.44 l 5.819,-1.091 c 0.542,-0.103 0.982,-0.632 0.982,-1.185 v -5.877 c 0,-0.553 -0.441,-1.082 -0.983,-1.185 z M 32,42.085 c -5.568,0 -10.083,-4.515 -10.083,-10.086 0,-5.567 4.515,-10.083 10.083,-10.083 5.57,0 10.086,4.516 10.086,10.083 0,5.571 -4.517,10.086 -10.086,10.086 z"
id="path3115"
style="fill:#60676d;fill-opacity:1" /></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

53
src/menu_icon/ue.svg Executable file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 45.6 168.9 504 504"
id="Layer_1"
version="1.1"
viewBox="45.6 168.9 504 504"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="100%"
height="100%"
sodipodi:docname="ue.svg"><metadata
id="metadata3350"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs3348" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="789"
inkscape:window-height="480"
id="namedview3346"
showgrid="false"
inkscape:zoom="0.46825397"
inkscape:cx="252"
inkscape:cy="252"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><path
d="M297.6,495.4c-40.9,0-74.4-33.5-74.4-74.4s33.5-74.4,74.4-74.4V185.3C167.4,185.3,62,290.7,62,420.9 s105.4,235.6,235.6,235.6c54.6,0,105.4-18.6,146.3-50.8l-99.2-126.5C331.1,489.2,315,495.4,297.6,495.4z"
fill="#00BCD4"
id="path3340"
style="fill:#ffffff;fill-opacity:1" /><path
d="M372.1,420.9h161.2c0-130.2-105.4-235.6-235.6-235.6v161.2C338.6,346.5,372.1,380,372.1,420.9z"
fill="#448AFF"
id="path3342"
style="fill:#bfc1c3;fill-opacity:1" /><path
d="M533.3,420.9H372.1c0,23.6-11.2,44.6-28.5,58.3l99.2,126.5C498.5,562.3,533.3,495.4,533.3,420.9z"
fill="#3F51B5"
id="path3344"
style="fill:#84888c;fill-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

53
src/menu_icon/ue_grayscale.svg Executable file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 45.6 168.9 504 504"
id="Layer_1"
version="1.1"
viewBox="45.6 168.9 504 504"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="100%"
height="100%"
sodipodi:docname="ue_grayscale.svg"><metadata
id="metadata3350"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs3348" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="789"
inkscape:window-height="480"
id="namedview3346"
showgrid="false"
inkscape:zoom="0.46825397"
inkscape:cx="252"
inkscape:cy="252"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><path
d="M297.6,495.4c-40.9,0-74.4-33.5-74.4-74.4s33.5-74.4,74.4-74.4V185.3C167.4,185.3,62,290.7,62,420.9 s105.4,235.6,235.6,235.6c54.6,0,105.4-18.6,146.3-50.8l-99.2-126.5C331.1,489.2,315,495.4,297.6,495.4z"
fill="#00BCD4"
id="path3340"
style="fill:#7c858c;fill-opacity:1" /><path
d="M372.1,420.9h161.2c0-130.2-105.4-235.6-235.6-235.6v161.2C338.6,346.5,372.1,380,372.1,420.9z"
fill="#448AFF"
id="path3342"
style="fill:#5b6369;fill-opacity:1" /><path
d="M533.3,420.9H372.1c0,23.6-11.2,44.6-28.5,58.3l99.2,126.5C498.5,562.3,533.3,495.4,533.3,420.9z"
fill="#3F51B5"
id="path3344"
style="fill:#494d51;fill-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

32
src/userlist.json Executable file
View File

@ -0,0 +1,32 @@
{
"eleve1": {
"permissions": "student",
"password" : "eleve1password"
},
"eleve2": {
"permissions": "student",
"password" : "eleve2password"
},
"prof1": {
"permissions": "teacher",
"password" : "prof1password"
},
"prof2": {
"permissions": "master",
"password" : "prof2password"
},
"admin1": {
"permissions": "admin",
"password" : "admin1password"
},
"admin2": {
"permissions": "admin",
"password" : "admin2password"
}
}

35
xdoc/cdcf_droits Executable file
View File

@ -0,0 +1,35 @@
ETUDIANT
Consulter son dossier (suivi des notes par semestre, UE, module)
Consulter ses notes
Consulter la composition de son groupe
Consulter la composition des autres groupes du même semestre
ENSEIGNANT (sans droits spécifiques)
Consulter la composition des groupes du semestre actuel
ENSEIGNANT + correcteur du contrôle "X" pour les groupes A, B, et F
Saisie des notes pour le contrôle X des groupes A, B, et F
Consultation et correction des notes du contrôle X des groupes A, B, et F
ENSEIGNANT + droit d'accès au dossiers des étudiants du groupe D
Consulter le dossier des étudiants du groupe D
ENSEIGNANT + droit de lecture des données étudiants
Consulter et importer au format Excel
la liste des élèves par groupe (groupes selectionnés)
les notes d'un contrôle (groupes selectionnés)
la liste des notes d'un module (groupes selectionnés)
la liste des notes d'un UE (groupes selectionnés)
la liste des notes d'un semestre (groupes selectionnés)
ENSEIGNANT + droit de modification des données étudiant
Idem que précédemment + modification
Modification de la composition des groupes
Importation au format Excel de la liste des étudiants
NOTE: Ces droits sont cummulables et selectionnés par l'administrateur
ADMINISTRATEUR:
Tous les droits vus précédemment
Possibilité d'octroyer, retirer des droits aux enseignants

123
xdoc/droits.svg Executable file
View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="Nouveau document 1">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="440.30355"
inkscape:cy="752.35858"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3759">
<rect
y="166.77112"
x="92.865952"
height="23.618221"
width="119.33418"
id="rect2985"
style="fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:0.61528546;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3755"
y="185.56688"
x="114.95106"
style="font-size:17.78576851px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
style="font-size:17.78576851px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Standard Symbols L;-inkscape-font-specification:Standard Symbols L"
y="185.56688"
x="114.95106"
id="tspan3757"
sodipodi:role="line">étudiant</tspan></text>
</g>
<g
id="g3764"
transform="translate(180,0)">
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:0.61528546;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3766"
width="119.33418"
height="23.618221"
x="92.865952"
y="166.77112" />
<text
xml:space="preserve"
style="font-size:17.78576851px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="102.6886"
y="183.48695"
id="text3768"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3770"
x="102.6886"
y="183.48695"
style="font-size:17.78576851px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Standard Symbols L;-inkscape-font-specification:Standard Symbols L">enseignant</tspan></text>
</g>
<g
transform="translate(360,0)"
id="g3772">
<rect
y="166.81358"
x="92.908417"
height="23.533291"
width="155.10966"
id="rect3774"
style="fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:0.70021498;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text3776"
y="185.21082"
x="104.07491"
style="font-size:17.78576851px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
style="font-size:17.78576851px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Standard Symbols L;-inkscape-font-specification:Standard Symbols L"
y="185.21082"
x="104.07491"
id="tspan3778"
sodipodi:role="line">administrateur</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
xdoc/login-page.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

1
xdoc/rdv1_tutrice Executable file
View File

@ -0,0 +1 @@
Dater les documents

258
xdoc/sid.rules Executable file
View File

@ -0,0 +1,258 @@
Organisation GIT
----------------
master o--------------o-------------------o-------------------o---->
| | | |
dev o----o----o----o----o----o----o----o----o----o----o----o----o----o----o
perso .....................
[DEV] active tout le temps
MERGE des branches perso toutes les semaines (au moins)
MERGE de la branche DEV vers MASTER à chaque réunion des branches perso
Organisation TRELLO
-------------------
[ A faire ] - tâches qu'il faut réaliser (1 seul language, un seul fichier)
[ En cours ] - Personne attribuée
[ A vérifier ] - Vérifier par qqn d'extérieur
[ A confirmer] - confirmation par client + W3C
[ Fini ] - ...
Architecture Fichiers
---------------------
├── index.php
├── API.js
├── API.php
├── css
│   ├── container.css
│   ├── footer.css
│   ├── header.css
│   ├── layout.css
│   ├── menu.css
│   ├── page1.css
│   ├── page2.css
│   └── pagen.css
├── js
├── manager
│   ├── controles.php
│   ├── DATABASE.php
│   ├── etudiant.php
│   ├── excel.php
│   ├── groups.php
│   ├── history.php
│   ├── MCC.php
│   └── users.php
└── src
Commentaires d'entête des fonctions
-----------------------------------
/* NOM : Résumé
*
* @param nomParam1<number> Le nombre de bits..
* @param nomParam2<String> Description param2
* @param nomParam3<String> [OBLIGATOIRE]
*
* Explication plus précise mais en prenant en compte les params et le return
* @return = @nomParam1 concaté avec la chaîne @nomParam2
*
* @return nomVar[<number>]
*
*/
Vérification d'intégrité des paramètres
---------------------------------------
1) Créer une fonction booléenne qui vérifie le type d'un paramètre
2) Créer un booléen de vérification pour chaque paramèter utilisant "1)"
Types pris en compte:
number
int
double
float
strings
char
boolean
[]
int
..
@FUNCTION verifType(variable:void, type:string)
exemples de @type
'int' - si entier
'bool' - si booléen
'int[]' - si tableau d'entier
'string[10]' - si tableau de string de taille 10
'int[][10]' - si matrice de string de taille n*10
function(p1, p2, p3){
verifType(
func_get_args(),
[ 'string', 'int', 'int[10]' ],
[ null, null, null ]
);
........
}
Liste des pages
---------------
I. GROUPES
[eleve] Mon groupe
[tous] Tout les groupes
[admin] Modifier les groupes
+ ajouter
+ supprimer
[admin] Répartition d'élèves
+ ajouter (drag&drop)
+ retirer (drag&drop)
+ déplacer (drag&drop)
II. SEMESTRE/UE
[eleve ] Mon parcourt
[prof autorisé] Mes élèves
[admin ] Les élèves
III. MODULE
[eleve ] Mes modules
+ par semestre
+ par ue
[prof autorisé] Mes modules
+ modifier contenu
. créer/modifier section
. upload document
. rédiger paragraphe
[admin ] Les modules
+ ajouter
+ supprimer
+ modifier
. titre
. section (ajouter/supprimer/modifier)
IV. CONTRÔLE
[eleve ] Mes contrôles
+ par semestre
+ par ue
+ par module
[prof autorisé] Mes contrôles
+ saisir notes (par groupe)
+ modifier notes (par groupe)
[admin ] Contrôles
+ consulter
. par semestre
. par ue
. par module
+ modifier
V. PARAMÈTRES
...
Groupes
Mon groupe
visualiser
Tous
visualiser
Administration
modifier la liste d'élèves (drag & drop) (par ordre alpha)
Parametres
Profil
visualiser
modifier
password
mail
description
VISUALISER LES NOTES CLASSÉES PAR MODULES
{
'level_0': 'visualiser',
'level_1': 'notes',
'affichage': 'module'
}
VISUALISER TOUT LES GROUPES
{
'level_O': 'visualiser',
'level_1': 'groupe',
'affichage': 'tous'
}
VISUALISER MON GROUPE
{
'level_O': 'visualiser',
'level_1': 'groupe',
'affichage': 'ego'
}
MODIFIER UN GROUPE
{
'level_O': 'administrer',
'level_1': 'groupe',
'groupe': 'A',
'action': 'supprimer',
'membres': [123, 567]
}
SAISIR LES NOTES D'UN PARTIEL
{
'level_O': 'saisir',
'level_1': 'notes',
'module': 'M3102',
'groupe': 'A'
}
Chevalier RDV (2)
Eleve peut consulter notes (semestre uniquement)
+ pas de moyenne (règlement intérieur => uniquement sur relevé de notes)
Rôles cummulatifs (admin choice)
Profs correcteurs n'accèdent
Historique des notes (1 courant + 1 antécédent uniquement)
PROF
[x] Visualiser les notes (choix des groupes/modules)
[x] Saisie des notes (choix des groupes/modules)
[x] visualiser parcourt étu (groupes/modules)

BIN
xdoc/svg/API.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

437
xdoc/svg/API.svg Executable file
View File

@ -0,0 +1,437 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="API.svg"
inkscape:export-filename="/home/xdrm/Bureau/SID/doc/API.png"
inkscape:export-xdpi="80"
inkscape:export-ydpi="80">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="437.70499"
inkscape:cy="856.03674"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:snap-page="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.70000004999999987;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3120"
width="744.09448"
height="1052.3622"
x="0"
y="0" />
<g
id="g3764"
transform="matrix(2.5075553,0,0,2.6272984,-650.40047,-1595.2959)">
<rect
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3766"
width="235.87062"
height="46.972092"
x="292.10999"
y="952.3941" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="364.37146"
y="987.58911"
id="text3768"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3770"
x="364.37146"
y="987.58911">API.js</tspan></text>
</g>
<g
id="g4094"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,6.3845942)">
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 556.16951,869.22894 0,-106.86912 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,106.86912"
id="path3870"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<text
xml:space="preserve"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="581.7948"
y="823.75385"
id="text3919"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3921"
x="581.7948"
y="823.75385">JSON &lt;String&gt;</tspan></text>
</g>
<g
id="g4099"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,6.3845942)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3917"
d="m 156.33714,762.35982 0,106.86912 12.94537,-10.53324 m -26.05837,0 12.94537,10.53324 0,-106.86912"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text3923"
y="812.32526"
x="14.651978"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="812.32526"
x="14.651978"
id="tspan3925"
sodipodi:role="line">JSON &lt;String&gt;</tspan></text>
</g>
<g
transform="matrix(0.94302367,0,0,0.98805582,111.56753,82.239214)"
id="g4071">
<g
id="g4083"
transform="translate(50.311915,0)">
<rect
y="590.3941"
x="292.10999"
height="46.972092"
width="235.87062"
id="rect4073"
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text4075"
y="628.46997"
x="352.50623"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="628.46997"
x="352.50623"
sodipodi:role="line"
id="tspan4079">PARSE</tspan></text>
</g>
<g
transform="translate(-349.68809,0)"
id="g4188">
<rect
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4190"
width="235.87062"
height="46.972092"
x="292.10999"
y="590.3941" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="322.50623"
y="628.46997"
id="text4192"
sodipodi:linespacing="125%"><tspan
id="tspan4194"
sodipodi:role="line"
x="322.50623"
y="628.46997">UNPARSE</tspan></text>
</g>
</g>
<g
id="g4104"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,-209.01157)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4106"
d="m 556.16951,869.22894 0,-106.86912 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,106.86912"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text4108"
y="823.75385"
x="581.7948"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="823.75385"
x="581.7948"
id="tspan4110"
sodipodi:role="line">JSON &lt;Object&gt;</tspan></text>
</g>
<g
transform="matrix(2.4592852,0,0,2.5767233,-624.66468,-1111.5933)"
id="g4112">
<rect
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4114"
width="235.87062"
height="46.972092"
x="292.10999"
y="590.3941" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="316.33435"
y="628.4895"
id="text4116"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4118"
x="316.33435"
y="628.4895">ROUTAGE</tspan><tspan
id="tspan4120"
sodipodi:role="line"
x="316.33435"
y="678.4895" /></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2.04188538;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 535.38315,386.58835 -51.59243,-54.05612 -1.16448,11.87586 m 12.58001,-13.18074 -11.33461,1.22009 51.59243,54.05612"
id="path4122"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4142"
d="m 564.55379,386.72808 51.59242,-54.05612 -11.3346,-1.22009 m 12.58001,13.18074 -1.16448,-11.87587 -51.59243,54.05612"
style="fill:none;stroke:#000000;stroke-width:2.04188538;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4144"
d="m 549.01878,390.95296 0,-76.44688 -8.83818,7.53476 m 17.79081,0 -8.83817,-7.53476 0,76.44688"
style="fill:none;stroke:#000000;stroke-width:2.04188538;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<g
id="g4178"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,45.906827)">
<rect
y="126.87906"
x="40.222729"
height="123.60535"
width="684.23999"
id="rect4146"
style="fill:none;stroke:#000000;stroke-width:3.41925287;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text4148"
y="178.27158"
x="268.58295"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="178.27158"
x="268.58295"
id="tspan4150"
sodipodi:role="line">MANAGERS:</tspan><tspan
id="tspan4152"
y="228.27158"
x="268.58295"
sodipodi:role="line">TRAITEMENT</tspan></text>
</g>
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:3.78600001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path4154"
sodipodi:cx="365.67523"
sodipodi:cy="38.674103"
sodipodi:rx="32.324883"
sodipodi:ry="6.5659914"
d="m 398.00011,38.674103 a 32.324883,6.5659914 0 1 1 -64.64976,0 32.324883,6.5659914 0 1 1 64.64976,0 z"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,6.3845942)" />
<path
d="m 398.00011,38.674103 a 32.324883,6.5659914 0 1 1 -64.64976,0 32.324883,6.5659914 0 1 1 64.64976,0 z"
sodipodi:ry="6.5659914"
sodipodi:rx="32.324883"
sodipodi:cy="38.674103"
sodipodi:cx="365.67523"
id="path4156"
style="fill:none;stroke:#000000;stroke-width:3.78600001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,6.3845942)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:3.78600001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path4158"
sodipodi:cx="365.67523"
sodipodi:cy="38.674103"
sodipodi:rx="32.324883"
sodipodi:ry="6.5659914"
d="m 398.00011,38.674103 a 32.324883,6.5659914 0 1 1 -64.64976,0 32.324883,6.5659914 0 1 1 64.64976,0 z"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,6.3845942)" />
<path
d="m 398.00011,38.674103 a 32.324883,6.5659914 0 1 1 -64.64976,0 32.324883,6.5659914 0 1 1 64.64976,0 z"
sodipodi:ry="6.5659914"
sodipodi:rx="32.324883"
sodipodi:cy="38.674103"
sodipodi:cx="365.67523"
id="path4160"
style="fill:none;stroke:#000000;stroke-width:3.78600001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,26.145711)" />
<path
transform="matrix(0.94302367,0,0,0.98805582,21.135226,45.906827)"
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:3.78600001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path4162"
sodipodi:cx="365.67523"
sodipodi:cy="38.674103"
sodipodi:rx="32.324883"
sodipodi:ry="6.5659914"
d="m 398.00011,38.674103 a 32.324883,6.5659914 0 1 1 -64.64976,0 32.324883,6.5659914 0 1 1 64.64976,0 z" />
<path
style="fill:none;stroke:#000000;stroke-width:3.57152557;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 335.36419,83.528502 0,-40.227987"
id="path4166"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.57152557;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 395.98713,44.712023 0,41.639496"
id="path4168"
inkscape:connector-curvature="0" />
<g
transform="matrix(0.94302367,0,0,0.98805582,8.705621,-418.96168)"
id="g4172">
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 378.48761,576.51104 0,-39.01198 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,39.72626"
id="path4174"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4176"
d="m 378.48761,538.21334 0,39.01198 -12.94537,-10.53324 m 26.05837,0 -12.94537,10.53324 0,-39.72626"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g4196"
transform="matrix(0.94302367,0,0,0.98805582,21.135226,-210.98769)">
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 156.33714,762.35982 0,106.86912 12.94537,-10.53324 m -26.05837,0 12.94537,10.53324 0,-106.86912"
id="path4198"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<text
xml:space="preserve"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="14.651978"
y="812.32526"
id="text4200"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4202"
x="14.651978"
y="812.32526">JSON &lt;Object&gt;</tspan></text>
</g>
<g
transform="matrix(0.94302367,0,0,0.98805582,21.135226,-448.12108)"
id="g4204">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4206"
d="m 156.33714,768.35982 0,80.86912 12.94537,-10.53324 m -26.05837,0 12.94537,10.53324 0,-80.86912"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text4208"
y="812.32526"
x="14.651978"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="812.32526"
x="14.651978"
id="tspan4210"
sodipodi:role="line">JSON &lt;Object&gt;</tspan></text>
</g>
<rect
style="fill:none;stroke:#0000ff;stroke-width:3.21870518;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4212"
width="711.11505"
height="577.52271"
x="15.156742"
y="304.97867" />
<text
sodipodi:linespacing="125%"
id="text3795-7"
y="807.30737"
x="242.95764"
style="font-size:38.6110878px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"
transform="scale(0.97694602,1.023598)"><tspan
y="807.30737"
x="242.95764"
id="tspan3797-9"
sodipodi:role="line"
style="font-weight:bold;-inkscape-font-specification:Sawasdee Bold">API.php physique</tspan><tspan
y="855.57123"
x="242.95764"
sodipodi:role="line"
id="tspan3799-5"
style="font-weight:bold;-inkscape-font-specification:Sawasdee Bold" /></text>
<rect
style="fill:none;stroke:#ff0000;stroke-width:3.69495058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect4238"
width="735.12762"
height="790.00507"
x="6.4768095"
y="106.64539" />
<text
transform="scale(0.97694602,1.023598)"
xml:space="preserve"
style="font-size:38.6110878px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="468.14914"
y="142.98389"
id="text4240"
sodipodi:linespacing="125%"><tspan
style="font-weight:bold;fill:#ff0000;fill-opacity:1;-inkscape-font-specification:Sawasdee Bold"
sodipodi:role="line"
id="tspan4242"
x="468.14914"
y="142.98389">API.php réel</tspan><tspan
style="font-weight:bold;fill:#ff0000;fill-opacity:1;-inkscape-font-specification:Sawasdee Bold"
id="tspan4244"
sodipodi:role="line"
x="468.14914"
y="191.24774" /></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

BIN
xdoc/svg/architecture.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

341
xdoc/svg/architecture.svg Executable file
View File

@ -0,0 +1,341 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="architecture.svg"
inkscape:export-filename="/home/xdrm/Bureau/SID/doc/architecture.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="540.78237"
inkscape:cy="705.51236"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1056"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:snap-page="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.70000004999999987;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3099"
width="744.09448"
height="1052.3622"
x="0"
y="0" />
<g
id="g3759"
transform="translate(-31.819817,0)">
<rect
y="952.3941"
x="292.10999"
height="46.972092"
width="235.87062"
id="rect2985"
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text3755"
y="986.08527"
x="324.01013"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="986.08527"
x="324.01013"
id="tspan3757"
sodipodi:role="line">index.php</tspan></text>
</g>
<g
id="g3764"
transform="translate(-31.819817,-142)">
<rect
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3766"
width="235.87062"
height="46.972092"
x="292.10999"
y="952.3941" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="364.37146"
y="987.58911"
id="text3768"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3770"
x="364.37146"
y="987.58911">API.js</tspan></text>
</g>
<g
id="g3840"
transform="translate(-31.819817,0)">
<rect
y="590.3941"
x="292.10999"
height="46.972092"
width="235.87062"
id="rect3793"
style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
sodipodi:linespacing="125%"
id="text3795"
y="624.26099"
x="342.95544"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="624.26099"
x="342.95544"
id="tspan3797"
sodipodi:role="line">API.php</tspan><tspan
y="674.26099"
x="342.95544"
sodipodi:role="line"
id="tspan3799" /></text>
</g>
<g
id="g3846">
<rect
style="fill:none;stroke:#000000;stroke-width:4.70649815;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3801"
width="607.83069"
height="111.84582"
x="74.310135"
y="300.87335" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="242.16103"
y="368.95447"
id="text3803"
sodipodi:linespacing="125%"><tspan
id="tspan3807"
sodipodi:role="line"
x="242.16103"
y="368.95447">manager/*.php</tspan></text>
</g>
<path
d="m 433.1849,505.36459 a 26.093435,26.093435 0 1 1 -52.18687,0 26.093435,26.093435 0 1 1 52.18687,0 z"
sodipodi:ry="26.093435"
sodipodi:rx="26.093435"
sodipodi:cy="505.36459"
sodipodi:cx="407.09146"
id="path3830"
style="fill:#000000;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc"
transform="translate(-28.865982,0)" />
<g
id="g3874">
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 436.16951,769.22894 0,-106.86912 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,106.86912"
id="path3870"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3917"
d="m 316.33714,662.35982 0,106.86912 12.94537,-10.53324 m -26.05837,0 12.94537,10.53324 0,-106.86912"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
xml:space="preserve"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="461.79483"
y="723.75385"
id="text3919"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3921"
x="461.79483"
y="723.75385">JSON &lt;String&gt;</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3923"
y="712.32526"
x="174.65198"
style="font-size:17.68278885px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
xml:space="preserve"><tspan
y="712.32526"
x="174.65198"
id="tspan3925"
sodipodi:role="line">JSON &lt;String&gt;</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 420.34476,933.65389 0,-59.01198 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,59.72626"
id="path3870-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3948"
d="m 316.34476,875.35619 0,59.01198 -12.94537,-10.53324 m 26.05837,0 -12.94537,10.53324 0,-59.72626"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:type="arc"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.78600000999999997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3950"
sodipodi:cx="135.35715"
sodipodi:cy="960.57648"
sodipodi:rx="75.35714"
sodipodi:ry="51.785713"
d="m 210.71429,960.57648 a 75.35714,51.785713 0 1 1 -150.714282,0 75.35714,51.785713 0 1 1 150.714282,0 z" />
<path
d="m 210.71429,960.57648 a 75.35714,51.785713 0 1 1 -150.714282,0 75.35714,51.785713 0 1 1 150.714282,0 z"
sodipodi:ry="51.785713"
sodipodi:rx="75.35714"
sodipodi:cy="960.57648"
sodipodi:cx="135.35715"
id="path3952"
style="fill:none;stroke:#000000;stroke-width:3.78600001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc"
transform="translate(502.14286,-12.142857)" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="626.18164"
y="958.42383"
id="text3954"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3956"
x="626.18164"
y="958.42383">js</tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="107.14426"
y="970.48859"
id="text3958"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3960"
x="107.14426"
y="970.48859">css</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 378.48761,576.51104 0,-39.01198 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,39.72626"
id="path3870-3-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3980"
d="m 378.48761,538.21334 0,39.01198 -12.94537,-10.53324 m 26.05837,0 -12.94537,10.53324 0,-39.72626"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 413.68241,491.86402 92.55137,-53.43456 -15.59473,-5.9444 m 13.02918,22.56722 2.64937,-16.47764 -92.55137,53.43456"
id="path3870-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4000"
d="m 342.3176,491.86402 -92.55137,-53.43456 15.59473,-5.9444 m -13.02918,22.56722 -2.64937,-16.47764 92.55137,53.43456"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4002"
d="m 406.23763,486.69509 62.12635,-62.12634 -13.64884,-1.40225 m 15.14854,15.14855 -1.40225,-13.64885 -62.12634,62.12635"
style="fill:none;stroke:#000000;stroke-width:2.4021039;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:2.4021039;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 349.86368,486.69509 -62.12635,-62.12634 13.64884,-1.40225 m -15.14854,15.14855 1.40225,-13.64885 62.12634,62.12635"
id="path4004"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 342.3176,491.86402 -92.55137,-53.43456 15.59473,-5.9444 m -13.02918,22.56722 -2.64937,-16.47764 92.55137,53.43456"
id="path4006"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<g
id="g3840-5"
transform="translate(-31.819817,-397.94654)">
<g
id="g4038"
transform="translate(11.428566,-40)">
<rect
style="fill:none;stroke:#000000;stroke-width:2.36803818;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3793-0"
width="293.974"
height="58.542999"
x="251.62973"
y="582.25958" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"
x="263.71439"
y="621.91193"
id="text3795-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3797-9"
x="263.71439"
y="621.91193">DATABASE.php</tspan><tspan
id="tspan3799-1"
sodipodi:role="line"
x="263.71439"
y="671.91193" /></text>
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 378.48761,238.21334 0,39.01198 -12.94537,-10.53324 m 26.05837,0 -12.94537,10.53324 0,-39.72626"
id="path4044"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path4046"
d="m 378.48761,276.51104 0,-39.01198 -12.94537,10.53324 m 26.05837,0 -12.94537,-10.53324 0,39.72626"
style="fill:none;stroke:#000000;stroke-width:2.92181826;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

6
xdoc/test.php Executable file
View File

@ -0,0 +1,6 @@
<?php
$file = file_get_contents("../src/userlist.json");
echo var_dump( json_decode($file) );
?>

34
xdoc/verifType.php Executable file
View File

@ -0,0 +1,34 @@
<?php
/* verifType : gestion de l'intégrité des paramètres
*
* @param varArrays< *[] > Les variables respectives des paramètres
* @param typeArray< String[] > Les types respectifs des paramètres
* @param defaultArray< *[] > Les valeurs par défaut (respectives)
*
* Vérifie si le type @varArray[n] correspond au type spécifié par le chaîne @typeArray[n]
* si oui, la variable est inchangée
* si non, attribue la valeur @defaultArray[n]
*
*/
function verifType($valueVar, $typeVar, $defaultVar){
return ( gettype($valueVar) == $typeVar ) ? $valueVar : $defaultVar;
}
// implémenter un format pour les types complexes !!! :P
function test1($arg1, $arg2, $arg3){
$arg1 = verifType($arg1, 'integer', 0);
$arg2 = verifType($arg2, 'string', 'void');
$arg3 = verifType($arg3, 'boolean', true);
echo $arg1.' - '.$arg2.' - '.$arg3;
}
// test1( Array(), Array(), Array() );
?>