diff options
author | polo <ordipolo@gmx.fr> | 2023-03-03 23:44:43 +0100 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2023-03-03 23:44:43 +0100 |
commit | c0b176ae142624d6a6daa0f65ea6fead448b8b47 (patch) | |
tree | e06445897db82e0f3cddd13bb2a67860fcf9fc3c | |
parent | a1a9c5d80d800f6c38b900c66c77db05801a6f1d (diff) | |
download | melaine-c0b176ae142624d6a6daa0f65ea6fead448b8b47.zip |
inversion de positions
-rw-r--r-- | controller/admin.php | 34 | ||||
-rw-r--r-- | controller/ajax.php | 46 | ||||
-rw-r--r-- | controller/installation.php | 24 | ||||
-rw-r--r-- | controller/password.php | 2 | ||||
-rw-r--r-- | controller/visitor.php | 2 | ||||
-rw-r--r-- | index.php | 77 | ||||
-rw-r--r-- | lib/ckeditor5/config online builder.png | bin | 0 -> 33029 bytes | |||
-rw-r--r-- | model/Article.php | 102 | ||||
-rw-r--r-- | public/css/discographie.css | 11 | ||||
-rw-r--r-- | public/css/main.css (renamed from public/css/accueil.css) | 13 | ||||
-rw-r--r-- | public/css/menu.css | 4 | ||||
-rw-r--r-- | public/css/pages_articles_simples.css | 8 | ||||
-rw-r--r-- | public/icone_descendre.png | bin | 0 -> 8648 bytes | |||
-rw-r--r-- | public/icone_flèche.xcf | bin | 0 -> 6734 bytes | |||
-rw-r--r-- | public/icone_monter.png | bin | 0 -> 8655 bytes | |||
-rw-r--r-- | public/inversion.js | 16 | ||||
-rw-r--r-- | view/articlesContent.php | 15 | ||||
-rw-r--r-- | view/backup.php | 6 | ||||
-rw-r--r-- | view/discographie.php | 7 | ||||
-rw-r--r-- | view/pageArticlesSimples.php | 4 | ||||
-rw-r--r-- | view/password.php | 2 | ||||
-rw-r--r-- | view/template.php | 2 |
22 files changed, 312 insertions, 63 deletions
diff --git a/controller/admin.php b/controller/admin.php index 93d1900..845fab1 100644 --- a/controller/admin.php +++ b/controller/admin.php | |||
@@ -33,16 +33,14 @@ function pageArticlesSimplesAdmin(string $page, string $title, string $headerPai | |||
33 | $Articles->fileCode = $fileCode; | 33 | $Articles->fileCode = $fileCode; |
34 | $_SESSION['target'] = $Articles->fileCode; | 34 | $_SESSION['target'] = $Articles->fileCode; |
35 | 35 | ||
36 | // suppression | ||
37 | if($suppression) | 36 | if($suppression) |
38 | { | 37 | { |
39 | $Articles->delete(); | 38 | $Articles->delete(); |
40 | 39 | ||
41 | // redirection immédiate avant affichage | 40 | // c'est fait, on recharge |
42 | header('Location: index.php?page=' . $page); | 41 | header('Location: index.php?page=' . $page); |
43 | exit(); | 42 | exit(); |
44 | } | 43 | } |
45 | // modification | ||
46 | else | 44 | else |
47 | { | 45 | { |
48 | $title = "Modifier un article"; | 46 | $title = "Modifier un article"; |
@@ -91,7 +89,7 @@ function pageArticlesSimplesAdmin(string $page, string $title, string $headerPai | |||
91 | } | 89 | } |
92 | 90 | ||
93 | // un article (= actualité) | 91 | // un article (= actualité) |
94 | function menuEdit($fileCode, $suppression) | 92 | function menuEdit($fileCode, int $suppression) |
95 | { | 93 | { |
96 | $page = "menu"; | 94 | $page = "menu"; |
97 | $title = "Melaine Favennec - menu BD"; | 95 | $title = "Melaine Favennec - menu BD"; |
@@ -100,56 +98,56 @@ function menuEdit($fileCode, $suppression) | |||
100 | } | 98 | } |
101 | 99 | ||
102 | // plusieurs articles | 100 | // plusieurs articles |
103 | function melaineEdit($fileCode, $suppression) | 101 | function melaineEdit($fileCode, int $suppression) |
104 | { | 102 | { |
105 | $page = "melaine"; | 103 | $page = "melaine"; |
106 | $title = "Mais qui est Melaine Favennec?"; | 104 | $title = "Mais qui est Melaine Favennec?"; |
107 | $headerPaintedTitle = 'Melaine Favennec'; | 105 | $headerPaintedTitle = 'Melaine Favennec'; |
108 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 106 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
109 | } | 107 | } |
110 | function musiqueEdit($fileCode, $suppression) | 108 | function musiqueEdit($fileCode, int $suppression) |
111 | { | 109 | { |
112 | $page = "musique"; | 110 | $page = "musique"; |
113 | $title = "Musique"; | 111 | $title = "Musique"; |
114 | $headerPaintedTitle = 'Musique'; | 112 | $headerPaintedTitle = 'Musique'; |
115 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 113 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
116 | } | 114 | } |
117 | function presseEdit($fileCode, $suppression) | 115 | function presseEdit($fileCode, int $suppression) |
118 | { | 116 | { |
119 | $page = "presse"; | 117 | $page = "presse"; |
120 | $title = "La presse"; | 118 | $title = "La presse"; |
121 | $headerPaintedTitle = 'La Presse'; | 119 | $headerPaintedTitle = 'La Presse'; |
122 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 120 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
123 | } | 121 | } |
124 | function livresEdit($fileCode, $suppression) | 122 | function livresEdit($fileCode, int $suppression) |
125 | { | 123 | { |
126 | $page = "livres"; | 124 | $page = "livres"; |
127 | $title = "Livres"; | 125 | $title = "Livres"; |
128 | $headerPaintedTitle = 'Dans les livres'; | 126 | $headerPaintedTitle = 'Dans les livres'; |
129 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 127 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
130 | } | 128 | } |
131 | function jaimeEdit($fileCode, $suppression) | 129 | function jaimeEdit($fileCode, int $suppression) |
132 | { | 130 | { |
133 | $page = "jaime"; | 131 | $page = "jaime"; |
134 | $title = "J'aime"; | 132 | $title = "J'aime"; |
135 | $headerPaintedTitle = 'J\'aime'; | 133 | $headerPaintedTitle = 'J\'aime'; |
136 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 134 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
137 | } | 135 | } |
138 | function peintureEdit($fileCode, $suppression) | 136 | function peintureEdit($fileCode, int $suppression) |
139 | { | 137 | { |
140 | $page = "peinture"; | 138 | $page = "peinture"; |
141 | $title = "peinture"; | 139 | $title = "peinture"; |
142 | $headerPaintedTitle = 'Celtic Boats'; | 140 | $headerPaintedTitle = 'Celtic Boats'; |
143 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 141 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
144 | } | 142 | } |
145 | function archivesEdit($fileCode, $suppression) | 143 | function archivesEdit($fileCode, int $suppression) |
146 | { | 144 | { |
147 | $page = "archives"; | 145 | $page = "archives"; |
148 | $title = "Archives"; | 146 | $title = "Archives"; |
149 | $headerPaintedTitle = 'Archives'; | 147 | $headerPaintedTitle = 'Archives'; |
150 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); | 148 | pageArticlesSimplesAdmin($page, $title, $headerPaintedTitle, $fileCode, $suppression); |
151 | } | 149 | } |
152 | function legalEdit($fileCode, $suppression) | 150 | function legalEdit($fileCode, int $suppression) |
153 | { | 151 | { |
154 | $page = "legal"; | 152 | $page = "legal"; |
155 | $title = "Mentions légales"; | 153 | $title = "Mentions légales"; |
@@ -159,7 +157,7 @@ function legalEdit($fileCode, $suppression) | |||
159 | 157 | ||
160 | 158 | ||
161 | // page plus complexe que les autres | 159 | // page plus complexe que les autres |
162 | function discoEdit($fileCode, $suppression) | 160 | function discoEdit($fileCode, int $suppression) |
163 | { | 161 | { |
164 | $page = "discographie"; | 162 | $page = "discographie"; |
165 | $title = "Discographie"; | 163 | $title = "Discographie"; |
@@ -270,3 +268,13 @@ function discoEdit($fileCode, $suppression) | |||
270 | // fin de l'assemblage | 268 | // fin de l'assemblage |
271 | require('view/template.php'); | 269 | require('view/template.php'); |
272 | } | 270 | } |
271 | |||
272 | |||
273 | // version sans JS (l'autre est dans ajax.php) | ||
274 | function inversionPositions(string $page, $fileCode, string $class, int $direction) | ||
275 | { | ||
276 | $Object = new $class($page); | ||
277 | $Object->fileCode = $fileCode; | ||
278 | // direction: 1 = monter, -1 = descendre | ||
279 | $Object->inversionPositions($direction); | ||
280 | } \ No newline at end of file | ||
diff --git a/controller/ajax.php b/controller/ajax.php index 24710d8..188b01f 100644 --- a/controller/ajax.php +++ b/controller/ajax.php | |||
@@ -1,7 +1,9 @@ | |||
1 | <?php | 1 | <?php |
2 | // controller/ajax.php | 2 | // controller/ajax.php |
3 | 3 | // | |
4 | // traitement des requêtes AJAX | 4 | // traitement des requêtes AJAX |
5 | |||
6 | |||
5 | // -> insertion d'une image dans l'éditeur | 7 | // -> insertion d'une image dans l'éditeur |
6 | if(isset($_GET['action']) && isset($_GET['page']) && $_GET['action'] == 'upload_image') | 8 | if(isset($_GET['action']) && isset($_GET['page']) && $_GET['action'] == 'upload_image') |
7 | { | 9 | { |
@@ -30,6 +32,48 @@ if(isset($_GET['action']) && isset($_GET['page']) && $_GET['action'] == 'upload_ | |||
30 | } | 32 | } |
31 | 33 | ||
32 | 34 | ||
35 | // inversion des positions de deux éléments d'une page | ||
36 | /*if(isset($_GET['action']) && isset($_GET['page']) && ($_GET['action'] == 'monter' || $_GET['action'] == 'descendre') && isset($_GET['file_code']) && !empty($_GET['file_code'])) | ||
37 | { | ||
38 | // sécurité !! | ||
39 | if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) | ||
40 | { | ||
41 | header('Location: index.php?erreur=interdit'); | ||
42 | } | ||
43 | else | ||
44 | { | ||
45 | require('controller/admin.php'); | ||
46 | require('model/Article.php'); | ||
47 | |||
48 | $pagesArticlesSimples = ['menu', 'melaine', 'musique', 'presse', 'livres', 'jaime', 'peinture', 'archives', 'legal']; | ||
49 | $sens = 0; | ||
50 | |||
51 | if($_GET['action'] == 'monter') | ||
52 | { | ||
53 | $sens = 1; | ||
54 | } | ||
55 | if($_GET['action'] == 'descendre') | ||
56 | { | ||
57 | $sens = 0; | ||
58 | } | ||
59 | |||
60 | if(in_array($_GET['page'], $pagesArticlesSimples)) | ||
61 | { | ||
62 | // 1 pour monter | ||
63 | inversionPositions($_GET['page'], $_GET['file_code'], 'Article', $sens); | ||
64 | } | ||
65 | elseif($_GET['page'] == 'discographie') | ||
66 | { | ||
67 | require('model/Album.php'); | ||
68 | |||
69 | // 1 pour monter | ||
70 | inversionPositions($_GET['page'], $_GET['file_code'], 'Album', $sens); | ||
71 | } | ||
72 | } | ||
73 | exit(); // stop !! | ||
74 | }*/ | ||
75 | |||
76 | |||
33 | // page restauration quand le fichier zip est lourd | 77 | // page restauration quand le fichier zip est lourd |
34 | // -> input file onchange | 78 | // -> input file onchange |
35 | if(isset($_GET['action']) && $_GET['action'] == 'restauration' | 79 | if(isset($_GET['action']) && $_GET['action'] == 'restauration' |
diff --git a/controller/installation.php b/controller/installation.php index 5aa5ac9..2e4e1c3 100644 --- a/controller/installation.php +++ b/controller/installation.php | |||
@@ -32,8 +32,8 @@ function installation() | |||
32 | // - créer le dossier data à la racine du site | 32 | // - créer le dossier data à la racine du site |
33 | // - lui donner les droits du dossier data pour 777 | 33 | // - lui donner les droits du dossier data pour 777 |
34 | 34 | ||
35 | // valeur en octal | 35 | // droits en octal |
36 | $droitsDossiers = 0777; // mettre 0755 en production | 36 | $droitsDossiers = 0777; |
37 | $droitsFichiers = 0666; | 37 | $droitsFichiers = 0666; |
38 | 38 | ||
39 | if(!file_exists('data') && !mkdir('data')) | 39 | if(!file_exists('data') && !mkdir('data')) |
@@ -68,16 +68,22 @@ function installation() | |||
68 | { | 68 | { |
69 | createIndexPHP('data/' . $page . '/index.php', $droitsFichiers); | 69 | createIndexPHP('data/' . $page . '/index.php', $droitsFichiers); |
70 | } | 70 | } |
71 | foreach ($sousDossiers as $dossier) | 71 | if(!file_exists('data/' . $page . '/positions.json')) |
72 | { | 72 | { |
73 | if(!file_exists('data/' . $page . '/' . $dossier)) | 73 | // création de fichiers VIDES (gestion par le modèle) |
74 | touch('data/' . $page . '/positions.json'); | ||
75 | chmod('data/' . $page . '/positions.json', $droitsFichiers); | ||
76 | } | ||
77 | foreach ($sousDossiers as $sousDossier) | ||
78 | { | ||
79 | if(!file_exists('data/' . $page . '/' . $sousDossier)) | ||
74 | { | 80 | { |
75 | mkdir('data/' . $page . '/' . $dossier); | 81 | mkdir('data/' . $page . '/' . $sousDossier); |
76 | chmod('data/' . $page . '/' . $dossier, $droitsDossiers); | 82 | chmod('data/' . $page . '/' . $sousDossier, $droitsDossiers); |
77 | } | 83 | } |
78 | if(!file_exists('data/' . $page . '/' . $dossier . '/index.php')) | 84 | if(!file_exists('data/' . $page . '/' . $sousDossier . '/index.php')) |
79 | { | 85 | { |
80 | createIndexPHP('data/' . $page . '/' . $dossier . '/index.php', $droitsFichiers); | 86 | createIndexPHP('data/' . $page . '/' . $sousDossier . '/index.php', $droitsFichiers); |
81 | } | 87 | } |
82 | } | 88 | } |
83 | // if(!file_exists('data/' . $page . '/multimedia')) | 89 | // if(!file_exists('data/' . $page . '/multimedia')) |
@@ -87,7 +93,7 @@ function installation() | |||
87 | // } | 93 | // } |
88 | } | 94 | } |
89 | 95 | ||
90 | // dossier supplémentaire dans discographie | 96 | // dossier "json" dans discographie |
91 | if(!file_exists('data/discographie/json')) | 97 | if(!file_exists('data/discographie/json')) |
92 | { | 98 | { |
93 | mkdir('data/discographie/json'); | 99 | mkdir('data/discographie/json'); |
diff --git a/controller/password.php b/controller/password.php index 9d9b45b..efc8975 100644 --- a/controller/password.php +++ b/controller/password.php | |||
@@ -1,7 +1,7 @@ | |||
1 | <?php | 1 | <?php |
2 | // controller/password.php | 2 | // controller/password.php |
3 | 3 | ||
4 | // fonction exécutée à l'ouverture de chaque page | 4 | // exécutée dans installation.php à l'ouverture de chaque page |
5 | function existPassword() | 5 | function existPassword() |
6 | { | 6 | { |
7 | // création du fichier | 7 | // création du fichier |
diff --git a/controller/visitor.php b/controller/visitor.php index e0cd7fc..d03197d 100644 --- a/controller/visitor.php +++ b/controller/visitor.php | |||
@@ -32,8 +32,8 @@ function pageArticlesSimplesVisitor(string $page, string $title, string $headerP | |||
32 | { | 32 | { |
33 | // données dans $Articles->fileList['content'] | 33 | // données dans $Articles->fileList['content'] |
34 | $Articles->readAll(); | 34 | $Articles->readAll(); |
35 | // lourd? | ||
35 | $Articles->fileList = array_reverse($Articles->fileList); | 36 | $Articles->fileList = array_reverse($Articles->fileList); |
36 | //var_dump($Articles->fileList[0]); | ||
37 | } | 37 | } |
38 | 38 | ||
39 | // Assemblage | 39 | // Assemblage |
@@ -17,18 +17,17 @@ if(!empty($_SESSION['erreur'])) | |||
17 | // variables globales, dépendances et config par l'utilisateur | 17 | // variables globales, dépendances et config par l'utilisateur |
18 | require('controller/config.php'); | 18 | require('controller/config.php'); |
19 | 19 | ||
20 | // au premier démarrage du site (création du dossier "data") | ||
21 | require('controller/installation.php'); | ||
22 | |||
23 | // penser à faire qu'on ne l'ouvre pas tout le temps | ||
24 | // -> présence du data/password.txt? | 20 | // -> présence du data/password.txt? |
25 | require('controller/password.php'); | 21 | require('controller/password.php'); |
26 | 22 | ||
23 | // au premier démarrage du site (création du dossier "data") | ||
24 | require('controller/installation.php'); | ||
27 | installation(); | 25 | installation(); |
28 | 26 | ||
29 | // traitement des requêtes AJAX | 27 | // traitement des requêtes AJAX, execute exit() à la fin |
30 | require('controller/ajax.php'); | 28 | require('controller/ajax.php'); |
31 | 29 | ||
30 | |||
32 | // traitement des POST du ckeditor | 31 | // traitement des POST du ckeditor |
33 | // la fonction submitCKeditor est "autonome", elle n'affiche rien puis redirige sans GET | 32 | // la fonction submitCKeditor est "autonome", elle n'affiche rien puis redirige sans GET |
34 | if(isset($_SESSION['admin']) && $_SESSION['admin'] == 1 | 33 | if(isset($_SESSION['admin']) && $_SESSION['admin'] == 1 |
@@ -67,13 +66,7 @@ if(isset($_GET['action']) && isset($_GET['page'])) | |||
67 | 66 | ||
68 | 67 | ||
69 | 68 | ||
70 | // construction des pages | ||
71 | |||
72 | // mode visiteur (sans l'éditeur) | ||
73 | require('controller/visitor.php'); | ||
74 | |||
75 | // modèle | 69 | // modèle |
76 | //if(isset($_GET['page']) && $_GET['page'] != 'menu') | ||
77 | if(isset($_GET['page'])) // utile? | 70 | if(isset($_GET['page'])) // utile? |
78 | { | 71 | { |
79 | require('model/Article.php'); | 72 | require('model/Article.php'); |
@@ -84,6 +77,11 @@ if(isset($_GET['page'])) // utile? | |||
84 | } | 77 | } |
85 | 78 | ||
86 | 79 | ||
80 | |||
81 | // contrôleurs | ||
82 | // mode visiteur (sans l'éditeur) | ||
83 | require('controller/visitor.php'); | ||
84 | |||
87 | // contrôleur des pages en mode admin | 85 | // contrôleur des pages en mode admin |
88 | if(isset($_SESSION['admin']) && $_SESSION['admin'] == 1) | 86 | if(isset($_SESSION['admin']) && $_SESSION['admin'] == 1) |
89 | { | 87 | { |
@@ -97,7 +95,8 @@ else | |||
97 | } | 95 | } |
98 | 96 | ||
99 | 97 | ||
100 | // page du site demandée | 98 | |
99 | // traitements des GET (page du site et action souhaitée) | ||
101 | if(isset($_GET['page'])) | 100 | if(isset($_GET['page'])) |
102 | { | 101 | { |
103 | $pagesArticlesSimples = ['menu', 'melaine', 'musique', 'presse', 'livres', 'jaime', 'peinture', 'archives', 'legal']; | 102 | $pagesArticlesSimples = ['menu', 'melaine', 'musique', 'presse', 'livres', 'jaime', 'peinture', 'archives', 'legal']; |
@@ -138,6 +137,33 @@ if(isset($_GET['page'])) | |||
138 | $fonctionEdit('', 0); | 137 | $fonctionEdit('', 0); |
139 | } | 138 | } |
140 | } | 139 | } |
140 | // modification d'un positions.json (version sans JS) | ||
141 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'monter') | ||
142 | { | ||
143 | if(isset($_GET['file_code']) && !empty($_GET['file_code'])) | ||
144 | { | ||
145 | // 1 pour monter | ||
146 | inversionPositions($_GET['page'], $_GET['file_code'], 'Article', 1); | ||
147 | $fonctionVisitor(); | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | $fonctionVisitor(); | ||
152 | } | ||
153 | } | ||
154 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'descendre') | ||
155 | { | ||
156 | if(isset($_GET['file_code']) && !empty($_GET['file_code'])) | ||
157 | { | ||
158 | // -1 pour descendre | ||
159 | inversionPositions($_GET['page'], $_GET['file_code'], 'Article', -1); | ||
160 | $fonctionVisitor(); | ||
161 | } | ||
162 | else | ||
163 | { | ||
164 | $fonctionVisitor(); | ||
165 | } | ||
166 | } | ||
141 | // suppression | 167 | // suppression |
142 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'suppression') | 168 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'suppression') |
143 | { | 169 | { |
@@ -171,6 +197,33 @@ if(isset($_GET['page'])) | |||
171 | discoEdit('', 0); | 197 | discoEdit('', 0); |
172 | } | 198 | } |
173 | } | 199 | } |
200 | // modification d'un positions.json (version sans JS) | ||
201 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'monter') | ||
202 | { | ||
203 | if(isset($_GET['file_code']) && !empty($_GET['file_code'])) | ||
204 | { | ||
205 | // 1 pour monter | ||
206 | inversionPositions($_GET['page'], $_GET['file_code'], 'Album', 1); | ||
207 | discoVisitor(); | ||
208 | } | ||
209 | else | ||
210 | { | ||
211 | discoVisitor(); | ||
212 | } | ||
213 | } | ||
214 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'descendre') | ||
215 | { | ||
216 | if(isset($_GET['file_code']) && !empty($_GET['file_code'])) | ||
217 | { | ||
218 | // 0 pour descendre | ||
219 | inversionPositions($_GET['page'], $_GET['file_code'], 'Album', -1); | ||
220 | discoVisitor(); | ||
221 | } | ||
222 | else | ||
223 | { | ||
224 | discoVisitor(); | ||
225 | } | ||
226 | } | ||
174 | // suppression | 227 | // suppression |
175 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'suppression') | 228 | else if($_SESSION['admin'] == 1 && isset($_GET['action']) && $_GET['action'] == 'suppression') |
176 | { | 229 | { |
diff --git a/lib/ckeditor5/config online builder.png b/lib/ckeditor5/config online builder.png new file mode 100644 index 0000000..77cab31 --- /dev/null +++ b/lib/ckeditor5/config online builder.png | |||
Binary files differ | |||
diff --git a/model/Article.php b/model/Article.php index d0fb019..f4fe65a 100644 --- a/model/Article.php +++ b/model/Article.php | |||
@@ -10,8 +10,9 @@ class Article | |||
10 | { | 10 | { |
11 | // pour tous les articles | 11 | // pour tous les articles |
12 | public $page; // page et donc dossier concerné | 12 | public $page; // page et donc dossier concerné |
13 | public $format = 'html'; // vaut 'html' ou 'json' | 13 | public $format = 'html'; // 'html' ou 'json' |
14 | public $fileListCount; | 14 | public $fileListCount; // pour les boucles "for" |
15 | // pas de "foreach", on a besoin des compteurs $i | ||
15 | public $fileList; // = toutes les données | 16 | public $fileList; // = toutes les données |
16 | 17 | ||
17 | // pour un article (ou album) spécifique | 18 | // pour un article (ou album) spécifique |
@@ -30,11 +31,17 @@ class Article | |||
30 | // noter que le chemin et l'extension ne varient pas | 31 | // noter que le chemin et l'extension ne varient pas |
31 | public function makeFileList() | 32 | public function makeFileList() |
32 | { | 33 | { |
34 | // noms des fichiers | ||
33 | // globbing = utiliser un pattern pour cibler des fichiers | 35 | // globbing = utiliser un pattern pour cibler des fichiers |
34 | $nameList = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format); | 36 | $nameList = glob('data/' . $this->page . '/' . $this->format . '/*.' . $this->format); |
35 | 37 | ||
36 | $this->fileListCount = count($nameList); | 38 | $this->fileListCount = count($nameList); |
37 | 39 | ||
40 | // associations: fileCode => position | ||
41 | $positions = $this->readPositionsJSON(); | ||
42 | |||
43 | // $this->fileList[] | ||
44 | $positionMax = 0; | ||
38 | for($i = 0; $i < $this->fileListCount; $i++) | 45 | for($i = 0; $i < $this->fileListCount; $i++) |
39 | { | 46 | { |
40 | $pathInfo = pathinfo($nameList[$i]); | 47 | $pathInfo = pathinfo($nameList[$i]); |
@@ -45,9 +52,100 @@ class Article | |||
45 | 'content' => '', | 52 | 'content' => '', |
46 | //'date' => getdate() // peut-être utile plus tard | 53 | //'date' => getdate() // peut-être utile plus tard |
47 | ]; | 54 | ]; |
55 | |||
56 | // récupération des positions disponibles | ||
57 | // celles inutilisées sont ignorées | ||
58 | // une case dans $positions: "1677796758" => 2 | ||
59 | if(isset($positions[$fileCode]) && $positions[$fileCode] > 0) | ||
60 | { | ||
61 | $this->fileList[$i]['position'] = $positions[$fileCode]; | ||
62 | $positionMax = max($positions[$fileCode], $positionMax); | ||
63 | } | ||
64 | else | ||
65 | { | ||
66 | $this->fileList[$i]['position'] = 0; | ||
67 | } | ||
68 | } | ||
69 | $this->updatePositionsJSON($positionMax); | ||
70 | |||
71 | // réordonner "fileList" par rapport aux positions | ||
72 | if(!empty($this->fileList)) | ||
73 | { | ||
74 | $this->sortFileListByPositions(); | ||
75 | } | ||
76 | } | ||
77 | |||
78 | private function readPositionsJSON() // retourne array ou NULL | ||
79 | { | ||
80 | if(file_exists('data/' . $this->page . '/positions.json')) | ||
81 | { | ||
82 | // "true" pour retourner un tableau et non un objet | ||
83 | $positions = json_decode(file_get_contents('data/' . $this->page . '/positions.json'), true); | ||
84 | } | ||
85 | return $positions; | ||
86 | } | ||
87 | |||
88 | private function updatePositionsJSON(int $positionMax = -1) | ||
89 | { | ||
90 | // créer les positions manquantes | ||
91 | $positions = []; | ||
92 | for($i = 0; $i < $this->fileListCount; $i++) | ||
93 | { | ||
94 | // fonction appelée par makeFileList() | ||
95 | if($positionMax >= 0) | ||
96 | { | ||
97 | if($this->fileList[$i]['position'] == 0) | ||
98 | { | ||
99 | $positionMax++; | ||
100 | $this->fileList[$i]['position'] = $positionMax; | ||
101 | } | ||
102 | } | ||
103 | |||
104 | // remplissage comme ceci: "1677796758" => 2 | ||
105 | $positions[$this->fileList[$i]['fileCode']] = $this->fileList[$i]['position']; | ||
106 | } | ||
107 | |||
108 | file_put_contents('data/' . $this->page . '/positions.json', json_encode($positions)); | ||
109 | } | ||
110 | |||
111 | private function sortFileListByPositions() | ||
112 | { | ||
113 | // contient les positions seules | ||
114 | $positions = array_column($this->fileList, 'position'); | ||
115 | |||
116 | // magique! | ||
117 | array_multisort($positions, SORT_ASC, $this->fileList); | ||
118 | } | ||
119 | |||
120 | // pour modifier l'ordre des éléments de la page | ||
121 | // faire plus tard une version statique pour traitement AJAX | ||
122 | public function inversionPositions(int $direction) | ||
123 | { | ||
124 | for($i = 0; $i < $this->fileListCount; $i++) | ||
125 | { | ||
126 | if($this->fileList[$i]['fileCode'] == $this->fileCode) | ||
127 | { | ||
128 | // si direction vaut 1, inversion avec l'élément au dessus (puisqu'on les affiche dans l'ordre décroissant) | ||
129 | if(($direction === 1 || $direction === -1) && | ||
130 | isset($this->fileList[$i + $direction]['position'])) | ||
131 | { | ||
132 | $c = $this->fileList[$i]['position']; | ||
133 | $this->fileList[$i]['position'] = $this->fileList[$i + $direction]['position']; | ||
134 | $this->fileList[$i + $direction]['position'] = $c; | ||
135 | |||
136 | // sortie de la boucle | ||
137 | $i = $this->fileListCount; | ||
138 | } | ||
139 | else // inversion du premier avec le précédent ou du dernier avec le suivant | ||
140 | {} | ||
141 | } | ||
48 | } | 142 | } |
143 | |||
144 | // écriture du positions.json | ||
145 | $this->updatePositionsJSON(); | ||
49 | } | 146 | } |
50 | 147 | ||
148 | // du code html pour utiliser les miniatures | ||
51 | private function makeHtmlMiniImages($content) | 149 | private function makeHtmlMiniImages($content) |
52 | { | 150 | { |
53 | // insérer -mini au nom du dossier et au fichier | 151 | // insérer -mini au nom du dossier et au fichier |
diff --git a/public/css/discographie.css b/public/css/discographie.css index 0362bb4..4d602fa 100644 --- a/public/css/discographie.css +++ b/public/css/discographie.css | |||
@@ -45,6 +45,7 @@ aside div | |||
45 | z-index: 1; /* placer le menu déroulant au dessus */ | 45 | z-index: 1; /* placer le menu déroulant au dessus */ |
46 | /*background-color: #9fa8d0;*/ | 46 | /*background-color: #9fa8d0;*/ |
47 | background-color: #a4afd4; | 47 | background-color: #a4afd4; |
48 | /*background-color: white;*/ | ||
48 | border: 2px #3d4c9d solid; | 49 | border: 2px #3d4c9d solid; |
49 | } | 50 | } |
50 | 51 | ||
@@ -60,6 +61,8 @@ aside div | |||
60 | #chronologie p a:hover | 61 | #chronologie p a:hover |
61 | { | 62 | { |
62 | color: black; | 63 | color: black; |
64 | /*background-color: #a4afd4;*/ | ||
65 | background-color: white; | ||
63 | } | 66 | } |
64 | 67 | ||
65 | .linkChrono | 68 | .linkChrono |
@@ -115,7 +118,8 @@ input | |||
115 | padding-bottom: 20px; | 118 | padding-bottom: 20px; |
116 | border-bottom: 1px black solid; | 119 | border-bottom: 1px black solid; |
117 | } | 120 | } |
118 | .boutonAlbum a | 121 | /* mêmes règles que .boutonArticle dans main.css */ |
122 | .boutonAlbum span | ||
119 | { | 123 | { |
120 | padding: 2px; | 124 | padding: 2px; |
121 | border: 4px black groove; | 125 | border: 4px black groove; |
@@ -132,7 +136,6 @@ input | |||
132 | article | 136 | article |
133 | { | 137 | { |
134 | margin: 5px 0px; | 138 | margin: 5px 0px; |
135 | width: 22%; | ||
136 | /*min-width: 300px;*/ | 139 | /*min-width: 300px;*/ |
137 | } | 140 | } |
138 | .articleAvecEditeur | 141 | .articleAvecEditeur |
@@ -230,6 +233,10 @@ a:hover figure figcaption | |||
230 | /* annuler le positionnement du contenu */ | 233 | /* annuler le positionnement du contenu */ |
231 | margin-top: 55px; | 234 | margin-top: 55px; |
232 | } | 235 | } |
236 | article | ||
237 | { | ||
238 | width: 32%; | ||
239 | } | ||
233 | } | 240 | } |
234 | 241 | ||
235 | @media screen and (max-width: 699px) | 242 | @media screen and (max-width: 699px) |
diff --git a/public/css/accueil.css b/public/css/main.css index 2a42e29..77ab7ff 100644 --- a/public/css/accueil.css +++ b/public/css/main.css | |||
@@ -1,4 +1,4 @@ | |||
1 | /* public/accueil.css */ | 1 | /* public/main.css */ |
2 | 2 | ||
3 | /*@font-face | 3 | /*@font-face |
4 | { | 4 | { |
@@ -87,6 +87,11 @@ img | |||
87 | vertical-align: bottom; | 87 | vertical-align: bottom; |
88 | } | 88 | } |
89 | 89 | ||
90 | .boutonArticle span | ||
91 | { | ||
92 | padding: 2px; | ||
93 | border: 4px black groove; | ||
94 | } | ||
90 | .boutonSubmitEditeur | 95 | .boutonSubmitEditeur |
91 | { | 96 | { |
92 | margin-top: 5px; | 97 | margin-top: 5px; |
@@ -111,6 +116,12 @@ article | |||
111 | font-size: 90%; | 116 | font-size: 90%; |
112 | margin: 5px 0; | 117 | margin: 5px 0; |
113 | } | 118 | } |
119 | /* Eviter la superposition d’une entête fixe sur une ancre */ | ||
120 | article:target | ||
121 | { | ||
122 | padding-top: 71px; | ||
123 | margin-top: -71px; | ||
124 | } | ||
114 | .articleAvecEditeur | 125 | .articleAvecEditeur |
115 | { | 126 | { |
116 | background-color: #a8b3d9; | 127 | background-color: #a8b3d9; |
diff --git a/public/css/menu.css b/public/css/menu.css index 28cba08..4bf5262 100644 --- a/public/css/menu.css +++ b/public/css/menu.css | |||
@@ -13,11 +13,11 @@ | |||
13 | { | 13 | { |
14 | font-size: 90%; | 14 | font-size: 90%; |
15 | } | 15 | } |
16 | .boutonArticle a | 16 | /*.boutonArticle span |
17 | { | 17 | { |
18 | padding: 2px; | 18 | padding: 2px; |
19 | border: 4px black groove; | 19 | border: 4px black groove; |
20 | } | 20 | }*/ |
21 | 21 | ||
22 | .sectionActu | 22 | .sectionActu |
23 | {} | 23 | {} |
diff --git a/public/css/pages_articles_simples.css b/public/css/pages_articles_simples.css index 9b6d2c3..2f3e901 100644 --- a/public/css/pages_articles_simples.css +++ b/public/css/pages_articles_simples.css | |||
@@ -26,14 +26,14 @@ figure | |||
26 | } | 26 | } |
27 | .boutonNouvelArticle | 27 | .boutonNouvelArticle |
28 | { | 28 | { |
29 | /* comme "article" dans main.css */ | ||
29 | font-size: 90%; | 30 | font-size: 90%; |
30 | } | 31 | } |
31 | .boutonArticle a | 32 | .boutonArticle span |
32 | { | 33 | { |
33 | padding: 2px; | 34 | position: relative; |
34 | border: 4px black groove; | 35 | bottom: 6px; |
35 | } | 36 | } |
36 | |||
37 | @media screen and (min-width: 700px) | 37 | @media screen and (min-width: 700px) |
38 | { | 38 | { |
39 | #titre | 39 | #titre |
diff --git a/public/icone_descendre.png b/public/icone_descendre.png new file mode 100644 index 0000000..7980297 --- /dev/null +++ b/public/icone_descendre.png | |||
Binary files differ | |||
diff --git a/public/icone_flèche.xcf b/public/icone_flèche.xcf new file mode 100644 index 0000000..7fcf5d6 --- /dev/null +++ b/public/icone_flèche.xcf | |||
Binary files differ | |||
diff --git a/public/icone_monter.png b/public/icone_monter.png new file mode 100644 index 0000000..8e213ec --- /dev/null +++ b/public/icone_monter.png | |||
Binary files differ | |||
diff --git a/public/inversion.js b/public/inversion.js new file mode 100644 index 0000000..20a6871 --- /dev/null +++ b/public/inversion.js | |||
@@ -0,0 +1,16 @@ | |||
1 | // public/inversion.js | ||
2 | |||
3 | // inverser la position de deux "articles" ou albums d'une page | ||
4 | function inversion() | ||
5 | { | ||
6 | var page = ''; | ||
7 | var action = ''; // monter ou descendre | ||
8 | var fileCode = ''; // <?= $Articles->fileList[$i]['fileCode'] ?> | ||
9 | var position = ''; // <?= $Articles->fileList[$i]['position'] ?> | ||
10 | |||
11 | const xhr = new XMLHttpRequest(); | ||
12 | url = 'index.php?page='+page+'&action='+action+'&file_code='+fileCode+'&position='+position+'#'+fileCode; | ||
13 | url = 'index.php?action=restauration&file_name='+fileInfos.name+'&file_size='+fileInfos.size; | ||
14 | xhr.open("GET", url); | ||
15 | xhr.send(); | ||
16 | } \ No newline at end of file | ||
diff --git a/view/articlesContent.php b/view/articlesContent.php index 5f6b587..c07ba75 100644 --- a/view/articlesContent.php +++ b/view/articlesContent.php | |||
@@ -1,7 +1,7 @@ | |||
1 | <?php | 1 | <?php |
2 | // view/articlesContent.php | 2 | // view/articlesContent.php |
3 | 3 | ||
4 | // variable $articlesContent | 4 | // tampon pour $articlesContent |
5 | ob_start(); | 5 | ob_start(); |
6 | if($_SESSION['admin'] == 1) | 6 | if($_SESSION['admin'] == 1) |
7 | { | 7 | { |
@@ -23,7 +23,7 @@ if($_SESSION['admin'] == 1) | |||
23 | <div> | 23 | <div> |
24 | <p class="boutonArticle boutonNouvelArticle" > | 24 | <p class="boutonArticle boutonNouvelArticle" > |
25 | <a href="index.php?page=<?= $page ?>&action=editor" > | 25 | <a href="index.php?page=<?= $page ?>&action=editor" > |
26 | Nouvel article | 26 | <span>Nouvel article</span> |
27 | </a> | 27 | </a> |
28 | </p> | 28 | </p> |
29 | <?php | 29 | <?php |
@@ -85,12 +85,13 @@ for($i = 0; $i < $Articles->fileListCount; $i++) | |||
85 | </div> | 85 | </div> |
86 | <p class="boutonArticle" > | 86 | <p class="boutonArticle" > |
87 | <a href="index.php?page=<?= $page ?>&action=editor&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > | 87 | <a href="index.php?page=<?= $page ?>&action=editor&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > |
88 | Modifier cet article | 88 | <img src="public/icone_modifier.png" ></a> |
89 | </a> | 89 | <a href="index.php?page=<?= $page ?>&action=monter&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>&position=<?= $Articles->fileList[$i]['position'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > |
90 | <!-- un espace --> | 90 | <img src="public/icone_monter.png" ></a> |
91 | <a href="index.php?page=<?= $page ?>&action=descendre&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>&position=<?= $Articles->fileList[$i]['position'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > | ||
92 | <img src="public/icone_descendre.png" ></a> | ||
91 | <a href="index.php?page=<?= $page ?>&action=suppression&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>" onclick="confirmerSuppression()" > | 93 | <a href="index.php?page=<?= $page ?>&action=suppression&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>" onclick="confirmerSuppression()" > |
92 | Supprimer cet article | 94 | <img src="public/icone_supprimer.png" ></a> |
93 | </a> | ||
94 | </p> | 95 | </p> |
95 | <?php | 96 | <?php |
96 | } | 97 | } |
diff --git a/view/backup.php b/view/backup.php index bbea60d..ec2e947 100644 --- a/view/backup.php +++ b/view/backup.php | |||
@@ -54,8 +54,8 @@ elseif(isset($_GET['action']) && $_GET['action'] == 'restauration') | |||
54 | ob_start(); | 54 | ob_start(); |
55 | ?> | 55 | ?> |
56 | <h2>Restauration des données à partir d'une sauvegarde.</h2> | 56 | <h2>Restauration des données à partir d'une sauvegarde.</h2> |
57 | <p>Vous devez avoir créé précédemment un fichier dont le nom commence par <i>melaineDATA</i><br/> | 57 | <p>Vous devez avoir précédemment créé et téléchargé un fichier dont le nom commence par <i>melaineDATA</i><br/> |
58 | à la page <i>Sauvegarder les données.</i></p><br/> | 58 | sur la page <i>Sauvegarder les données.</i></p><br/> |
59 | 59 | ||
60 | <form method="post" enctype="multipart/form-data" action="index.php?from=<?= $from ?>&action=restauration" > | 60 | <form method="post" enctype="multipart/form-data" action="index.php?from=<?= $from ?>&action=restauration" > |
61 | <input id="archiveUpload" type="file" name="archive" accept=".zip" class="boutonBackup" onchange="sendFileSize();" ><br/> | 61 | <input id="archiveUpload" type="file" name="archive" accept=".zip" class="boutonBackup" onchange="sendFileSize();" ><br/> |
@@ -78,7 +78,7 @@ elseif(isset($_GET['action']) && $_GET['action'] == 'restauration') | |||
78 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> | 78 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> |
79 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > | 79 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > |
80 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css" /> | 80 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css" /> |
81 | <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> | 81 | <link rel="stylesheet" type="text/css" href="public/css/main.css" /> |
82 | <?php | 82 | <?php |
83 | if(isset($_GET['action']) && $_GET['action'] == 'restauration') | 83 | if(isset($_GET['action']) && $_GET['action'] == 'restauration') |
84 | { | 84 | { |
diff --git a/view/discographie.php b/view/discographie.php index 2220715..3007c86 100644 --- a/view/discographie.php +++ b/view/discographie.php | |||
@@ -81,10 +81,11 @@ if($_SESSION['admin'] == 1) | |||
81 | { | 81 | { |
82 | $style = ''; | 82 | $style = ''; |
83 | ?> | 83 | ?> |
84 | <!-- le bouton Nouvel album est considéré comme un article --> | ||
84 | <article> | 85 | <article> |
85 | <p class="boutonAlbum" > | 86 | <p class="boutonAlbum" > |
86 | <a href="index.php?page=discographie&action=edition" > | 87 | <a href="index.php?page=discographie&action=edition" > |
87 | Nouvel album | 88 | <span>Nouvel album</span> |
88 | </a> | 89 | </a> |
89 | </p> | 90 | </p> |
90 | </article> | 91 | </article> |
@@ -151,6 +152,10 @@ for($i = 0; $i < $Albums->fileListCount; $i++) | |||
151 | <a href="index.php?<?= $lienBoutonModif[$i] ?>" > | 152 | <a href="index.php?<?= $lienBoutonModif[$i] ?>" > |
152 | <img src="public/icone_modifier.png" > | 153 | <img src="public/icone_modifier.png" > |
153 | </a> | 154 | </a> |
155 | <a href="index.php?page=<?= $page ?>&action=monter&file_code=<?= $Albums->fileList[$i]['fileCode'] ?>&position=<?= $Albums->fileList[$i]['position'] ?>#<?= $Albums->fileList[$i]['fileCode'] ?>" > | ||
156 | <img src="public/icone_monter.png" ></a> | ||
157 | <a href="index.php?page=<?= $page ?>&action=descendre&file_code=<?= $Albums->fileList[$i]['fileCode'] ?>&position=<?= $Albums->fileList[$i]['position'] ?>#<?= $Albums->fileList[$i]['fileCode'] ?>" > | ||
158 | <img src="public/icone_descendre.png" ></a> | ||
154 | <a href="index.php?page=discographie&action=suppression&file_code=<?= $Albums->fileList[$i]['fileCode'] ?>" onclick="confirmerSuppression()" > | 159 | <a href="index.php?page=discographie&action=suppression&file_code=<?= $Albums->fileList[$i]['fileCode'] ?>" onclick="confirmerSuppression()" > |
155 | <img src="public/icone_supprimer.png" > | 160 | <img src="public/icone_supprimer.png" > |
156 | </a> | 161 | </a> |
diff --git a/view/pageArticlesSimples.php b/view/pageArticlesSimples.php index 34f5dca..95f8c46 100644 --- a/view/pageArticlesSimples.php +++ b/view/pageArticlesSimples.php | |||
@@ -39,9 +39,9 @@ $js = ob_get_clean(); | |||
39 | // message lecteur multimedia | 39 | // message lecteur multimedia |
40 | if($page == 'archives') | 40 | if($page == 'archives') |
41 | { | 41 | { |
42 | $explications = '<p > | 42 | $explications = '<p style="padding: 3px 3px 0 3px; background-color: white;"> |
43 | <img style="float: right;" src="public/header_images/logo_real.png" /> | 43 | <img style="float: right;" src="public/header_images/logo_real.png" /> |
44 | Certains liens vidéos nécessitent le lecteur <a href="https://www.real.com" target="_blank" >Real Media</a> (windows, android et iOS) pour être lus.</p> | 44 | Certains liens vidéos nécessitent le lecteur <a href="https://www.real.com" target="_blank" >Real Player</a> (windows, android et iOS) pour être lus.</p> |
45 | <p> | 45 | <p> |
46 | <img style="float: left;" src="public/header_images/logo_vlc.png" /> | 46 | <img style="float: left;" src="public/header_images/logo_vlc.png" /> |
47 | Vous pouvez aussi utiliser le<br/><a href="https://www.videolan.org/vlc/" target="_blank" >lecteur VLC.</a></p>'; | 47 | Vous pouvez aussi utiliser le<br/><a href="https://www.videolan.org/vlc/" target="_blank" >lecteur VLC.</a></p>'; |
diff --git a/view/password.php b/view/password.php index a72766e..93cae95 100644 --- a/view/password.php +++ b/view/password.php | |||
@@ -78,7 +78,7 @@ ob_start(); | |||
78 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> | 78 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> |
79 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > | 79 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > |
80 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css"> | 80 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css"> |
81 | <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> | 81 | <link rel="stylesheet" type="text/css" href="public/css/main.css" /> |
82 | <script type="text/javascript" src="public/main.js" ></script> | 82 | <script type="text/javascript" src="public/main.js" ></script> |
83 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 83 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
84 | </head> | 84 | </head> |
diff --git a/view/template.php b/view/template.php index 7fafbbb..b86a41c 100644 --- a/view/template.php +++ b/view/template.php | |||
@@ -11,7 +11,7 @@ | |||
11 | <!-- <link rel="shortcut icon" type="image/x-icon" href="public/favicon.ico" /> --> | 11 | <!-- <link rel="shortcut icon" type="image/x-icon" href="public/favicon.ico" /> --> |
12 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > | 12 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > |
13 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css"> | 13 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css"> |
14 | <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> | 14 | <link rel="stylesheet" type="text/css" href="public/css/main.css" /> |
15 | <?php | 15 | <?php |
16 | if(isset($css)) // fichiers CSS supplémentaires | 16 | if(isset($css)) // fichiers CSS supplémentaires |
17 | { | 17 | { |