summaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
Diffstat (limited to 'public')
-rw-r--r--public/assets/user_full.svg22
-rw-r--r--public/assets/user_hollow.svg18
-rw-r--r--public/css/body.css52
-rw-r--r--public/css/form.css14
-rw-r--r--public/index.php65
5 files changed, 115 insertions, 56 deletions
diff --git a/public/assets/user_full.svg b/public/assets/user_full.svg
new file mode 100644
index 0000000..b211c67
--- /dev/null
+++ b/public/assets/user_full.svg
@@ -0,0 +1,22 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Written by Treer (gitlab.com/Treer) -->
3<svg
4 version="1.1"
5 xmlns="http://www.w3.org/2000/svg"
6 xmlns:xlink="http://www.w3.org/1999/xlink"
7 width="600"
8 height="600"
9 fill="white">
10
11 <title>Abstract user icon</title>
12
13 <defs>
14 <clipPath id="circular-border">
15 <circle cx="300" cy="300" r="250" />
16 </clipPath>
17 </defs>
18
19 <circle cx="300" cy="300" r="280" fill="black" />
20 <circle cx="300" cy="230" r="100" />
21 <circle cx="300" cy="550" r="190" clip-path="url(#circular-border)" />
22</svg> \ No newline at end of file
diff --git a/public/assets/user_hollow.svg b/public/assets/user_hollow.svg
new file mode 100644
index 0000000..ca26d18
--- /dev/null
+++ b/public/assets/user_hollow.svg
@@ -0,0 +1,18 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Written by Treer (gitlab.com/Treer) -->
3<svg
4 version="1.1"
5 xmlns="http://www.w3.org/2000/svg"
6 xmlns:xlink="http://www.w3.org/1999/xlink"
7 width="600"
8 height="600"
9 stroke="black"
10 stroke-width="30"
11 fill="none">
12
13 <title>Abstract user icon</title>
14
15 <circle cx="300" cy="300" r="265" />
16 <circle cx="300" cy="230" r="115" />
17 <path d="M106.81863443903,481.4 a205,205 1 0,1 386.36273112194,0" stroke-linecap="butt" />
18</svg> \ No newline at end of file
diff --git a/public/css/body.css b/public/css/body.css
index a03510f..274627c 100644
--- a/public/css/body.css
+++ b/public/css/body.css
@@ -55,6 +55,13 @@ section > h3
55 margin: 0; 55 margin: 0;
56 text-align: center; 56 text-align: center;
57} 57}
58.login_form
59{
60 background-color: white;
61 margin: 15px;
62 padding: 15px;
63}
64
58.grid_columns 65.grid_columns
59{ 66{
60 display: grid; 67 display: grid;
@@ -181,7 +188,7 @@ button .action_icon:hover
181 display: flex; 188 display: flex;
182 justify-content: end; 189 justify-content: end;
183} 190}
184section button 191section button, section input[type=submit]
185{ 192{
186 color: #ff1d04; 193 color: #ff1d04;
187 font-size: medium; 194 font-size: medium;
@@ -189,7 +196,7 @@ section button
189 background-color: white; 196 background-color: white;
190 border: lightgrey 2px outset; /* rend identiques les boutons firefox et chromium */ 197 border: lightgrey 2px outset; /* rend identiques les boutons firefox et chromium */
191} 198}
192section button:hover 199section button:hover, section input[type=submit]:hover
193{ 200{
194 background-color: yellow; 201 background-color: yellow;
195 border-radius: 4px; 202 border-radius: 4px;
@@ -199,4 +206,45 @@ section button:hover
199article a:hover 206article a:hover
200{ 207{
201 cursor: pointer; 208 cursor: pointer;
209}
210
211.user_edit_header
212{
213 /*display: flex;
214 justify-content: space-evenly;
215 align-items: center;*/
216 display: grid;
217 grid-template-columns: repeat(3, 1fr);
218 text-align: center;
219 padding: 15px;
220}
221.user_icon
222{
223 height: 36px;
224}
225.user_edit_flex
226{
227 /*display: flex;
228 flex-wrap: wrap;
229 justify-content: space-between;*/
230 display: grid;
231 grid-template-columns: repeat(2, 1fr);
232}
233@media screen and (max-width: 900px)
234{
235 .user_edit_flex
236 {
237 display: block;
238 }
239}
240@media screen and (max-width: 500px)
241{
242 .empty_column
243 {
244 display: none;
245 }
246 .user_edit_header
247 {
248 grid-template-columns: repeat(2, 1fr);
249 }
202} \ No newline at end of file 250} \ No newline at end of file
diff --git a/public/css/form.css b/public/css/form.css
index 84c73ac..5bfa768 100644
--- a/public/css/form.css
+++ b/public/css/form.css
@@ -14,20 +14,6 @@
14.form .full_width_column{ 14.form .full_width_column{
15 grid-column: 1 / span 2; 15 grid-column: 1 / span 2;
16} 16}
17.form_inputs input[type=submit]
18{
19 color: #ff1d04;
20 font-size: medium;
21 border-radius: 4px;
22 background-color: white;
23 border: lightgrey 2px outset;
24}
25.form_inputs input[type=submit]:hover
26{
27 background-color: yellow;
28 border-radius: 4px;
29 cursor: pointer;
30}
31 17
32.no_recipient_warning{ 18.no_recipient_warning{
33 color: red; 19 color: red;
diff --git a/public/index.php b/public/index.php
index b7eeeae..89bb203 100644
--- a/public/index.php
+++ b/public/index.php
@@ -1,10 +1,24 @@
1<?php 1<?php
2// public/index/php 2// public/index/php
3 3
4/* plan d'action pour symfonyfier le site
51/ intégrer les classes Request et Response sans changer modifier les liens
62/ méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc, pour un pré-routage (légères modifications des liens)
73/ passer à des chemins modernes "ciblant des ressources" genre /chemin/de/la/page
8 le mode modification de page doit thérioquement être appelé comme ça: /chemin/de/la/page/modif_page
9 apparemment, le from=nom_page pour les formulaires ne se fait pas...
104/ utiliser le routeur de symfony: nécéssite que tous les contrôleurs soient des classes avec un namespace
115/ http-foundation possède aussi une classe Session. intéressant!
12*/
13
4declare(strict_types=1); 14declare(strict_types=1);
5 15
16use Symfony\Component\HttpFoundation\Request;
17//use Symfony\Component\HttpFoundation\Session\Session;
18
6 19
7/* -- partie 1: prétraitement -- */ 20/* -- partie 1: prétraitement --
21code à exécuter pour toutes requêtes */
8 22
9// une nouvelle classe? taper: composer dump-autoload -o 23// une nouvelle classe? taper: composer dump-autoload -o
10require "../vendor/autoload.php"; 24require "../vendor/autoload.php";
@@ -12,6 +26,11 @@ require "../vendor/autoload.php";
12// configuration possible par l'utilisateur 26// configuration possible par l'utilisateur
13Config::load('../config/config.ini'); 27Config::load('../config/config.ini');
14 28
29// générateur de liens
30URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443
31URL::setPort(Config::$port);
32URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path);
33
15// les messages d'erreur de déploiement qu'on aime 34// les messages d'erreur de déploiement qu'on aime
16require('../src/installation.php'); 35require('../src/installation.php');
17phpDependancies(); 36phpDependancies();
@@ -20,13 +39,10 @@ phpDependancies();
20// $entityManager 39// $entityManager
21require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter 40require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter
22 41
23// générateur de liens 42$request = Request::createFromGlobals();
24URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443
25URL::setPort(Config::$port);
26URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path);
27 43
28// session 44// session
29//require('controller/Session.php'); 45// (symfony/http-foundation pourrait nous aider avec les sessions)
30ini_set('session.cookie_samesite', 'Strict'); 46ini_set('session.cookie_samesite', 'Strict');
31ini_set('session.cookie_httponly', 'On'); 47ini_set('session.cookie_httponly', 'On');
32ini_set('session.use_strict_mode', 'On'); 48ini_set('session.use_strict_mode', 'On');
@@ -38,39 +54,8 @@ if($_SESSION['admin'] === false || empty($_SESSION['user'])){ // OUT !!
38 $_SESSION['admin'] = false; 54 $_SESSION['admin'] = false;
39} 55}
40 56
41// login, mot de passe et captcha
42require '../src/controller/password.php';
43existUsers($entityManager); // si la table user est vide, on en crée un
44
45
46/* -- partie 2: contrôleurs -- */
47
48// navigation avec des GET
49define('CURRENT_PAGE', !empty($_GET['page']) ? htmlspecialchars($_GET['page']) : 'accueil');
50$id = '';
51if(!empty($_GET['id']))
52{
53 $id = htmlspecialchars($_GET['id']); // nettoyage qui n'abime pas les id du genre "n16"
54}
55
56/* -- routeur des données de formulaires et requêtes AJAX -- */
57require '../src/request_router.php';
58
59
60/* -- affichage d'une page -- */
61// mode modification d'une page activé
62if($_SESSION['admin'] && isset($_GET['page']) && isset($_GET['action']) && $_GET['action'] === 'modif_page'
63 && $_GET['page'] !== 'connexion' && $_GET['page'] !== 'article' && $_GET['page'] !== 'nouvelle_page' && $_GET['page'] !== 'menu_chemins')
64{
65 // les contrôles de la 2è ligne devraient utiliser un tableau
66 MainBuilder::$modif_mode = true;
67}
68 57
69// contrôleur accédant au modèle 58/* -- partie 2: routage et contrôleurs -- */
70$director = new Director($entityManager, true);
71$director->makeRootNode($id);
72$node = $director->getNode();
73 59
74// contrôleur principal des vues 60define('CURRENT_PAGE', htmlspecialchars($request->query->get('page') ?? 'accueil'));
75$view_builder = new ViewBuilder($node); 61require '../src/router.php'; \ No newline at end of file
76echo $view_builder->render(); // et voilà! \ No newline at end of file