diff options
Diffstat (limited to 'public')
-rw-r--r-- | public/assets/user_full.svg | 22 | ||||
-rw-r--r-- | public/assets/user_hollow.svg | 18 | ||||
-rw-r--r-- | public/css/body.css | 52 | ||||
-rw-r--r-- | public/css/form.css | 14 | ||||
-rw-r--r-- | public/index.php | 65 |
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 | } |
184 | section button | 191 | section 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 | } |
192 | section button:hover | 199 | section 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 | |||
199 | article a:hover | 206 | article 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 | ||
5 | 1/ intégrer les classes Request et Response sans changer modifier les liens | ||
6 | 2/ méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc, pour un pré-routage (légères modifications des liens) | ||
7 | 3/ 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... | ||
10 | 4/ utiliser le routeur de symfony: nécéssite que tous les contrôleurs soient des classes avec un namespace | ||
11 | 5/ http-foundation possède aussi une classe Session. intéressant! | ||
12 | */ | ||
13 | |||
4 | declare(strict_types=1); | 14 | declare(strict_types=1); |
5 | 15 | ||
16 | use Symfony\Component\HttpFoundation\Request; | ||
17 | //use Symfony\Component\HttpFoundation\Session\Session; | ||
18 | |||
6 | 19 | ||
7 | /* -- partie 1: prétraitement -- */ | 20 | /* -- partie 1: prétraitement -- |
21 | code à 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 |
10 | require "../vendor/autoload.php"; | 24 | require "../vendor/autoload.php"; |
@@ -12,6 +26,11 @@ require "../vendor/autoload.php"; | |||
12 | // configuration possible par l'utilisateur | 26 | // configuration possible par l'utilisateur |
13 | Config::load('../config/config.ini'); | 27 | Config::load('../config/config.ini'); |
14 | 28 | ||
29 | // générateur de liens | ||
30 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 | ||
31 | URL::setPort(Config::$port); | ||
32 | URL::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 |
16 | require('../src/installation.php'); | 35 | require('../src/installation.php'); |
17 | phpDependancies(); | 36 | phpDependancies(); |
@@ -20,13 +39,10 @@ phpDependancies(); | |||
20 | // $entityManager | 39 | // $entityManager |
21 | require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter | 40 | require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter |
22 | 41 | ||
23 | // générateur de liens | 42 | $request = Request::createFromGlobals(); |
24 | URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 | ||
25 | URL::setPort(Config::$port); | ||
26 | URL::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) |
30 | ini_set('session.cookie_samesite', 'Strict'); | 46 | ini_set('session.cookie_samesite', 'Strict'); |
31 | ini_set('session.cookie_httponly', 'On'); | 47 | ini_set('session.cookie_httponly', 'On'); |
32 | ini_set('session.use_strict_mode', 'On'); | 48 | ini_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 | ||
42 | require '../src/controller/password.php'; | ||
43 | existUsers($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 | ||
49 | define('CURRENT_PAGE', !empty($_GET['page']) ? htmlspecialchars($_GET['page']) : 'accueil'); | ||
50 | $id = ''; | ||
51 | if(!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 -- */ | ||
57 | require '../src/request_router.php'; | ||
58 | |||
59 | |||
60 | /* -- affichage d'une page -- */ | ||
61 | // mode modification d'une page activé | ||
62 | if($_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 | 60 | define('CURRENT_PAGE', htmlspecialchars($request->query->get('page') ?? 'accueil')); |
75 | $view_builder = new ViewBuilder($node); | 61 | require '../src/router.php'; \ No newline at end of file |
76 | echo $view_builder->render(); // et voilà! \ No newline at end of file | ||