diff options
author | polo <ordipolo@gmx.fr> | 2022-02-24 02:29:14 +0100 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2022-02-24 02:29:14 +0100 |
commit | f19db76cc3b21785619ffd24bfb34692a3aaa66a (patch) | |
tree | 7a715c3bc89232a981f3150caa46e61cba7850f2 | |
parent | 2c5dc14a9cd8bd847c724c0d43ddce8be0069013 (diff) | |
download | melaine-f19db76cc3b21785619ffd24bfb34692a3aaa66a.zip |
recursiveIterator
-rw-r--r-- | controller/backup.php | 105 | ||||
-rw-r--r-- | controller/installation.php | 30 | ||||
-rw-r--r-- | index.php | 42 | ||||
-rw-r--r-- | model/Album.php | 17 | ||||
-rw-r--r-- | public/css/accueil.css (renamed from public/accueil.css) | 10 | ||||
-rw-r--r-- | public/css/discographie.css (renamed from public/discographie.css) | 6 | ||||
-rw-r--r-- | public/css/donnees_hors_editeur.css (renamed from public/donnees_hors_editeur.css) | 6 | ||||
-rw-r--r-- | public/css/melaine.css (renamed from public/melaine.css) | 12 | ||||
-rw-r--r-- | public/css/menu.css (renamed from public/menu.css) | 0 | ||||
-rw-r--r-- | public/css/normalize.css (renamed from public/normalize.css) | 0 | ||||
-rw-r--r-- | view/album.php | 4 | ||||
-rw-r--r-- | view/backup.php | 86 | ||||
-rw-r--r-- | view/discographie.php | 4 | ||||
-rw-r--r-- | view/melaine.php | 4 | ||||
-rw-r--r-- | view/password.php | 4 | ||||
-rw-r--r-- | view/template-formulaires.php | 14 | ||||
-rw-r--r-- | view/template.php | 9 | ||||
-rw-r--r-- | à faire après livraison.txt | 2 | ||||
-rw-r--r-- | Ã faire avant livraison.txt | 11 |
19 files changed, 258 insertions, 108 deletions
diff --git a/controller/backup.php b/controller/backup.php index d0060c9..13b68df 100644 --- a/controller/backup.php +++ b/controller/backup.php | |||
@@ -1,10 +1,12 @@ | |||
1 | <?php | 1 | <?php |
2 | // controller/backup.php | 2 | // controller/backup.php |
3 | 3 | ||
4 | function extraction($from) | 4 | function sauvegarder($from) |
5 | { | 5 | { |
6 | $title = 'extraction des données'; | ||
7 | |||
6 | $chemin = "data/"; | 8 | $chemin = "data/"; |
7 | $nomFichier = "sauvegarde_site_melaine.zip"; | 9 | $nomFichier = "melaineDATA.zip"; |
8 | 10 | ||
9 | // création ou remplacement d'une archive zip | 11 | // création ou remplacement d'une archive zip |
10 | // une erreur est jetée si l'extension zip n'est pas activée | 12 | // une erreur est jetée si l'extension zip n'est pas activée |
@@ -14,10 +16,7 @@ function extraction($from) | |||
14 | } | 16 | } |
15 | catch (Throwable $e) | 17 | catch (Throwable $e) |
16 | { | 18 | { |
17 | echo('Erreur: la classe ZipArchive est introuvable, la sauvegarde est impossible. L\'extension ZIP de PHP est-elle activée dans le fichier php.ini?<br/> | 19 | echo($erreur); |
18 | Veuillez prévenir l\'administrateur.<br/> | ||
19 | Vous pouvez aussi récupérer manuellement les fichiers en vous connectant au serveur avec un client FTP, il suffit de récupérer tout le dossier "data".<br/><br/> | ||
20 | <a href="index.php" >Retour au site</a>'); | ||
21 | die(); | 20 | die(); |
22 | } | 21 | } |
23 | 22 | ||
@@ -36,45 +35,65 @@ function extraction($from) | |||
36 | // pour pouvoir manipuler le fichier depuis filezilla ou ssh | 35 | // pour pouvoir manipuler le fichier depuis filezilla ou ssh |
37 | chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres | 36 | chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres |
38 | 37 | ||
39 | ?> | 38 | require('view/backup.php'); |
40 | <head> | ||
41 | <meta charset="utf-8" /> | ||
42 | <title>extraction des données</title> | ||
43 | <link rel="stylesheet" type="text/css" href="public/accueil.css" /> | ||
44 | </head> | ||
45 | <body> | ||
46 | <div id="bloc_page" style="padding: 5px;"> | ||
47 | Toutes les données du sites ont été rassemblées dans un gros fichier que vous pouvez garder par exemple sur votre ordinateur.<br/> | ||
48 | Vous pourrez l'utiliser plus tard pour restaurer le site dans l'état où il se trouve aujourd'hui. Ceci est utile dans le cas d'un changement d'hébergement ou dans le cas d'un problème affectant le serveur.<br/> | ||
49 | Ce fichier se nomme <i>sauvegarde_site_melaine.zip</i>.<br/><br/> | ||
50 | <a href="data/sauvegarde_site_melaine.zip" style="border: 2px black ridge;" >Cliquez ici pour télécharger</a><br/><br/> | ||
51 | <a href="index.php?page=<?= $from ?>" >Retour au site</a> | ||
52 | </div> | ||
53 | </body> | ||
54 | <?php | ||
55 | } | 39 | } |
56 | 40 | ||
57 | function insertion($from) | 41 | function restaurer($from) |
58 | { | 42 | { |
59 | ?> | 43 | $title = 'Restauration des données'; |
60 | <head> | ||
61 | <meta charset="utf-8" /> | ||
62 | <title>Restauration des données avec un backup</title> | ||
63 | <link rel="stylesheet" type="text/css" href="public/accueil.css" /> | ||
64 | </head> | ||
65 | <body> | ||
66 | <div id="bloc_page" style="padding: 5px;"> | ||
67 | Restauration des données à partir d'une sauvegarde.<br/><br/> | ||
68 | Vous devez avoir créé un fichier nommé <i>sauvegarde_site_melaine.zip</i><br/> | ||
69 | en cliquant sur <i>Extraire les données</i>.<br/><br/> | ||
70 | 44 | ||
71 | <form action="index.php?from=<?= $from ?>&action=insertion" method="post" > | 45 | $chemin = "data/"; |
72 | <input type="file" accept=".zip" ><br/> | 46 | $nomFichier = "melaineDATA.zip"; |
73 | <!-- ajouter une demande de confirmation en JS au submit --> | 47 | |
74 | <input type="submit" ><br/><br/> | 48 | require('view/backup.php'); |
75 | <a href="index.php?page=<?= $from ?>" >Retour au site</a> | 49 | } |
76 | </form> | 50 | |
77 | </div> | 51 | // inutile |
78 | </body> | 52 | function creerMelainePHP() |
79 | <?php | 53 | { |
54 | $nomFichier = "melainePHP.zip"; | ||
55 | |||
56 | try | ||
57 | { | ||
58 | $Zip = new ZipArchive(); | ||
59 | } | ||
60 | catch (Throwable $e) // absence de l'extension zip | ||
61 | { | ||
62 | echo($erreur); | ||
63 | die(); | ||
64 | } | ||
65 | |||
66 | if ($Zip->open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) | ||
67 | { | ||
68 | exit("Impossible d'ouvrir le fichier <i>" . $nomFichier . "</i>.\n"); | ||
69 | } | ||
70 | |||
71 | // fichiers à la racine | ||
72 | $Zip->addGlob('*.php', 0, array('')); | ||
73 | $Zip->addGlob('.htaccess', 0, array('')); | ||
74 | $Zip->addGlob('*.txt', 0, array('')); | ||
75 | |||
76 | // tous les dossiers sauf data et .git | ||
77 | $listeDossiers = array('model', 'view', 'controller', 'public', 'lib'); | ||
78 | foreach($listeDossiers as $path) | ||
79 | { | ||
80 | // les deux lignes suivantes me dépassent un peu, | ||
81 | // mais ça marche et c'est comme ça qu'il faut faire | ||
82 | $directory = new RecursiveDirectoryIterator($path); | ||
83 | $iterator = new RecursiveIteratorIterator($directory); | ||
84 | |||
85 | foreach ($iterator as $info) | ||
86 | { | ||
87 | // chemins inutiles . et .. | ||
88 | if($info->getFilename() != "." && $info->getFilename() != "..") | ||
89 | { | ||
90 | //var_dump($info->getPathname()); | ||
91 | $Zip->addGlob($info->getPathname(), 0, array('')); | ||
92 | } | ||
93 | } | ||
94 | } | ||
95 | |||
96 | $Zip->close(); | ||
97 | |||
98 | chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal) | ||
80 | } \ No newline at end of file | 99 | } \ No newline at end of file |
diff --git a/controller/installation.php b/controller/installation.php index 9d612dd..6037e17 100644 --- a/controller/installation.php +++ b/controller/installation.php | |||
@@ -45,11 +45,28 @@ function installation() | |||
45 | 45 | ||
46 | // créer les dossiers (fait également à l'extraction du zip de données) | 46 | // créer les dossiers (fait également à l'extraction du zip de données) |
47 | // attention: ne fonctionne pas sans une manipulation préalable | 47 | // attention: ne fonctionne pas sans une manipulation préalable |
48 | // - modifier soit-même les droits du dossier data (777), quoique 111 serait pas mal non plus | 48 | // - modifier soit-même les droits du dossier data pour 777 |
49 | // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant | 49 | // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant |
50 | 50 | ||
51 | // le 0 devant signifie que le nombre est en octal | 51 | // création des dossiers |
52 | $droitsDossiers = 0777; // mettre 0700 Ã la fin | 52 | |
53 | // valeur en octal | ||
54 | $droitsDossiers = 0777; // mettre 0755 en production | ||
55 | |||
56 | if(!file_exists('data') && !mkdir('data')) | ||
57 | { | ||
58 | $erreur = 'data'; | ||
59 | $title = 'Dossier data absent'; | ||
60 | require('view/backup.php'); | ||
61 | exit(); | ||
62 | } | ||
63 | if(!touch('data')) | ||
64 | { | ||
65 | $erreur = 'data'; | ||
66 | $title = 'Écriture non autorisée dans le dossier data'; | ||
67 | require('view/backup.php'); | ||
68 | exit(); | ||
69 | } | ||
53 | 70 | ||
54 | $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives'); | 71 | $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives'); |
55 | foreach ($listePages as $page) | 72 | foreach ($listePages as $page) |
@@ -93,6 +110,13 @@ function installation() | |||
93 | chmod('data/password.txt', 0600); | 110 | chmod('data/password.txt', 0600); |
94 | } | 111 | } |
95 | 112 | ||
113 | // créer le melainePHP.zip | ||
114 | if(!file_exists("data/melainePHP.zip")) | ||
115 | { | ||
116 | require('controller/backup.php'); | ||
117 | creerMelainePHP(); | ||
118 | } | ||
119 | |||
96 | // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers | 120 | // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers |
97 | 121 | ||
98 | // création d'un mot de passe si password.txt est vide | 122 | // création d'un mot de passe si password.txt est vide |
@@ -12,7 +12,7 @@ if(!empty($_SESSION['erreur'])) | |||
12 | unset($_SESSION['erreur']); | 12 | unset($_SESSION['erreur']); |
13 | } | 13 | } |
14 | 14 | ||
15 | // à modifier par l'utilisateur | 15 | // fichier destiné à l'utilisateur |
16 | require('config.php'); | 16 | require('config.php'); |
17 | 17 | ||
18 | // au premier démarrage du site | 18 | // au premier démarrage du site |
@@ -208,7 +208,8 @@ if(isset($_GET['page'])) | |||
208 | } | 208 | } |
209 | 209 | ||
210 | 210 | ||
211 | // actions en mode admin, recharger une des pages principales | 211 | // actions en mode admin depuis le menu orange |
212 | // recharger une des pages principales | ||
212 | elseif($_SESSION['admin'] == 1 && isset($_GET['action'])) | 213 | elseif($_SESSION['admin'] == 1 && isset($_GET['action'])) |
213 | { | 214 | { |
214 | if($_GET['action'] == 'modif_mdp') | 215 | if($_GET['action'] == 'modif_mdp') |
@@ -216,24 +217,33 @@ elseif($_SESSION['admin'] == 1 && isset($_GET['action'])) | |||
216 | //changePassword($secret); | 217 | //changePassword($secret); |
217 | changePassword(); | 218 | changePassword(); |
218 | } | 219 | } |
219 | // extraction du contenu du dossier data | ||
220 | else if($_GET['action'] == 'extraction') | ||
221 | { | ||
222 | require('controller/backup.php'); | ||
223 | extraction($_GET['from']); | ||
224 | } | ||
225 | // l'inverse, insertion des données d'une sauvegarde | ||
226 | else if($_GET['action'] == 'insertion') | ||
227 | { | ||
228 | require('controller/backup.php'); | ||
229 | insertion($_GET['from']); | ||
230 | } | ||
231 | else | 220 | else |
232 | { | 221 | { |
233 | accueil(); | 222 | require_once('controller/backup.php'); |
223 | |||
224 | // extraction du contenu du dossier data | ||
225 | if($_GET['action'] == 'sauvegarde') | ||
226 | { | ||
227 | sauvegarder($_GET['from']); | ||
228 | } | ||
229 | // insertion des données d'une sauvegarde | ||
230 | elseif($_GET['action'] == 'restauration') | ||
231 | { | ||
232 | restaurer($_GET['from']); | ||
233 | } | ||
234 | // tout sauf le dossier data | ||
235 | /*elseif($_GET['action'] == 'extrairePHP') | ||
236 | { | ||
237 | extrairePHP($_GET['from']); | ||
238 | }*/ | ||
239 | else | ||
240 | { | ||
241 | accueil(); | ||
242 | } | ||
234 | } | 243 | } |
235 | } | 244 | } |
236 | 245 | ||
246 | // à supprimer, on utilisera plutôt une variable de session | ||
237 | // renvoi ici par le .htaccess si lien mort ou sans http:// au début | 247 | // renvoi ici par le .htaccess si lien mort ou sans http:// au début |
238 | elseif(isset($_GET['erreur'])) | 248 | elseif(isset($_GET['erreur'])) |
239 | { | 249 | { |
@@ -253,4 +263,4 @@ elseif(isset($_GET['erreur'])) | |||
253 | else | 263 | else |
254 | { | 264 | { |
255 | accueil(); | 265 | accueil(); |
256 | } | 266 | } \ No newline at end of file |
diff --git a/model/Album.php b/model/Album.php index 5e93d05..9c90a6b 100644 --- a/model/Album.php +++ b/model/Album.php | |||
@@ -7,11 +7,13 @@ class Album extends Article | |||
7 | 7 | ||
8 | public function __construct($page) | 8 | public function __construct($page) |
9 | { | 9 | { |
10 | $this->page = $page; | 10 | // pour: page, fileCode, time et makeFileList() |
11 | $this->fileCode = ''; // désigne un fichier json et un html | 11 | parent::__construct($page); |
12 | //$this->page = $page; | ||
13 | //$this->fileCode = ''; // désigne un fichier json et un html | ||
12 | $this->format = 'json'; // vaut 'html' dans la classe mère | 14 | $this->format = 'json'; // vaut 'html' dans la classe mère |
13 | $this->time = time(); | 15 | //$this->time = time(); |
14 | $this->makeFileList(); | 16 | //$this->makeFileList(); |
15 | } | 17 | } |
16 | 18 | ||
17 | // GET | 19 | // GET |
@@ -58,10 +60,14 @@ class Album extends Article | |||
58 | } | 60 | } |
59 | 61 | ||
60 | // read | 62 | // read |
63 | |||
64 | // hydratation | ||
61 | public function readAll() | 65 | public function readAll() |
62 | { | 66 | { |
63 | // mettre le JSON dans fileList[$i]['content'] | 67 | // mettre le JSON dans fileList[$i]['content'] |
64 | parent::readAll(); | 68 | parent::readAll(); |
69 | // = surcharge, appeler la méthode de la classe mère | ||
70 | // permet de ne pas la remplacer par la nouvelle | ||
65 | 71 | ||
66 | $this->format = 'html'; | 72 | $this->format = 'html'; |
67 | for($i = 0; $i < $this->fileListCount; $i++) | 73 | for($i = 0; $i < $this->fileListCount; $i++) |
@@ -92,6 +98,7 @@ class Album extends Article | |||
92 | $this->format = 'json'; | 98 | $this->format = 'json'; |
93 | } | 99 | } |
94 | 100 | ||
101 | // hydratation | ||
95 | public function readOne() | 102 | public function readOne() |
96 | { | 103 | { |
97 | for($i = 0; $i < $this->fileListCount; $i++) | 104 | for($i = 0; $i < $this->fileListCount; $i++) |
diff --git a/public/accueil.css b/public/css/accueil.css index f951334..622ce1f 100644 --- a/public/accueil.css +++ b/public/css/accueil.css | |||
@@ -3,11 +3,11 @@ | |||
3 | @font-face /* pour .police_titre */ | 3 | @font-face /* pour .police_titre */ |
4 | { | 4 | { |
5 | font-family: "you_are_loved"; | 5 | font-family: "you_are_loved"; |
6 | src: url('fonts/you_are_loved.ttf') format('truetype'), | 6 | src: url('../fonts/you_are_loved.ttf') format('truetype'), |
7 | url('fonts/you_are_loved.eot'), | 7 | url('../fonts/you_are_loved.eot'), |
8 | url('fonts/you_are_loved.eot?#iefix') format('embedded-opentype'), | 8 | url('../fonts/you_are_loved.eot?#iefix') format('embedded-opentype'), |
9 | url('fonts/you_are_loved.woff2') format('woff2'), | 9 | url('../fonts/you_are_loved.woff2') format('woff2'), |
10 | url('fonts/you_are_loved.woff') format('woff'); | 10 | url('../fonts/you_are_loved.woff') format('woff'); |
11 | } | 11 | } |
12 | 12 | ||
13 | .no_underline | 13 | .no_underline |
diff --git a/public/discographie.css b/public/css/discographie.css index 65ae2c3..8ed3700 100644 --- a/public/discographie.css +++ b/public/css/discographie.css | |||
@@ -215,7 +215,7 @@ a:hover figure figcaption | |||
215 | { | 215 | { |
216 | width: 630px; | 216 | width: 630px; |
217 | height: 171px; | 217 | height: 171px; |
218 | background-image: url("mouette.png"); | 218 | background-image: url("../mouette.png"); |
219 | } | 219 | } |
220 | 220 | ||
221 | #contenu | 221 | #contenu |
@@ -237,7 +237,7 @@ a:hover figure figcaption | |||
237 | { | 237 | { |
238 | width: 480px; | 238 | width: 480px; |
239 | height: 131px; | 239 | height: 131px; |
240 | background-image: url("mouette_petit.png"); | 240 | background-image: url("../mouette_petit.png"); |
241 | margin: auto; | 241 | margin: auto; |
242 | } | 242 | } |
243 | 243 | ||
@@ -264,7 +264,7 @@ a:hover figure figcaption | |||
264 | { | 264 | { |
265 | width: 320px; | 265 | width: 320px; |
266 | height: 88px; | 266 | height: 88px; |
267 | background-image: url("mouette_mini.png"); | 267 | background-image: url("../mouette_mini.png"); |
268 | margin: auto; | 268 | margin: auto; |
269 | } | 269 | } |
270 | 270 | ||
diff --git a/public/donnees_hors_editeur.css b/public/css/donnees_hors_editeur.css index 4a8d49e..7b377ea 100644 --- a/public/donnees_hors_editeur.css +++ b/public/css/donnees_hors_editeur.css | |||
@@ -24,8 +24,8 @@ input[type="checkbox"]:checked{border: none; background: #26ab33;} | |||
24 | .table td{border: 1px grey solid; padding: 7px; min-width: 30px;} | 24 | .table td{border: 1px grey solid; padding: 7px; min-width: 30px;} |
25 | td p{margin: 0px;} | 25 | td p{margin: 0px;} |
26 | 26 | ||
27 | .image{margin: 0px; margin: auto;} | 27 | .image{margin: 0px;text-align: center;margin: auto;height: 100%;} |
28 | .image img{max-width: 100%;} | 28 | .image img{width: 100%;} |
29 | .image-style-side{float: right;} | 29 | .image-style-side{float: right;} |
30 | .image-style-side:not(.image_resized){max-width: 50%;} | 30 | .image-style-side:not(.image_resized){max-width: 50%;} |
31 | .image>figcaption{padding: 7px; text-align: center; font-size: small; background-color: #f0f0f0;} | 31 | .image>figcaption{padding: 7px; text-align: center; font-size: small; background-color: #f0f0f0;} |
@@ -42,7 +42,7 @@ iframe{min-width: 400px; min-height: 300px; max-width: 1200px; max-height: 900px | |||
42 | 42 | ||
43 | @media screen and (min-width: 700px) | 43 | @media screen and (min-width: 700px) |
44 | { | 44 | { |
45 | .image{max-width: 630px;} | 45 | .image{/*max-width: 630px;*/width: auto;} |
46 | } | 46 | } |
47 | 47 | ||
48 | @media screen and (max-width: 699px) | 48 | @media screen and (max-width: 699px) |
diff --git a/public/melaine.css b/public/css/melaine.css index 09f38aa..429ccec 100644 --- a/public/melaine.css +++ b/public/css/melaine.css | |||
@@ -36,14 +36,14 @@ figure | |||
36 | { | 36 | { |
37 | width: 630px; | 37 | width: 630px; |
38 | height: 171px; | 38 | height: 171px; |
39 | background-image: url("mouette.png"); | 39 | background-image: url("../mouette.png"); |
40 | } | 40 | } |
41 | 41 | ||
42 | #photo | 42 | #photo |
43 | { | 43 | { |
44 | width: 630px; | 44 | width: 630px; |
45 | height: 230px; | 45 | height: 230px; |
46 | background-image: url("melaine/photo.png"); | 46 | background-image: url("../melaine/photo.png"); |
47 | position: relative; | 47 | position: relative; |
48 | bottom: 30px; | 48 | bottom: 30px; |
49 | } | 49 | } |
@@ -60,7 +60,7 @@ figure | |||
60 | { | 60 | { |
61 | width: 480px; | 61 | width: 480px; |
62 | height: 131px; | 62 | height: 131px; |
63 | background-image: url("mouette_petit.png"); | 63 | background-image: url("../mouette_petit.png"); |
64 | margin: auto; | 64 | margin: auto; |
65 | } | 65 | } |
66 | 66 | ||
@@ -68,7 +68,7 @@ figure | |||
68 | { | 68 | { |
69 | width: 480px; | 69 | width: 480px; |
70 | height: 191px; | 70 | height: 191px; |
71 | background-image: url("melaine/photo_petit.png"); | 71 | background-image: url("../melaine/photo_petit.png"); |
72 | margin: auto; | 72 | margin: auto; |
73 | position: relative; | 73 | position: relative; |
74 | bottom: 24px; | 74 | bottom: 24px; |
@@ -86,7 +86,7 @@ figure | |||
86 | { | 86 | { |
87 | width: 320px; | 87 | width: 320px; |
88 | height: 88px; | 88 | height: 88px; |
89 | background-image: url("mouette_mini.png"); | 89 | background-image: url("../mouette_mini.png"); |
90 | margin: auto; | 90 | margin: auto; |
91 | } | 91 | } |
92 | 92 | ||
@@ -94,7 +94,7 @@ figure | |||
94 | { | 94 | { |
95 | width: 320px; | 95 | width: 320px; |
96 | height: 127px; | 96 | height: 127px; |
97 | background-image: url("melaine/photo_mini.png"); | 97 | background-image: url("../melaine/photo_mini.png"); |
98 | margin: auto; | 98 | margin: auto; |
99 | position: relative; | 99 | position: relative; |
100 | bottom: 17px; | 100 | bottom: 17px; |
diff --git a/public/menu.css b/public/css/menu.css index 0e17e34..0e17e34 100644 --- a/public/menu.css +++ b/public/css/menu.css | |||
diff --git a/public/normalize.css b/public/css/normalize.css index 784422c..784422c 100644 --- a/public/normalize.css +++ b/public/css/normalize.css | |||
diff --git a/view/album.php b/view/album.php index 783cfab..e2731a1 100644 --- a/view/album.php +++ b/view/album.php | |||
@@ -5,8 +5,8 @@ | |||
5 | // utilise discographie.css | 5 | // utilise discographie.css |
6 | ob_start(); | 6 | ob_start(); |
7 | ?> | 7 | ?> |
8 | <link rel="stylesheet" type="text/css" href="public/discographie.css" /> | 8 | <link rel="stylesheet" type="text/css" href="public/css/discographie.css" /> |
9 | <link rel="stylesheet" type="text/css" href="public/donnees_hors_editeur.css" /> | 9 | <link rel="stylesheet" type="text/css" href="public/css/donnees_hors_editeur.css" /> |
10 | <?php | 10 | <?php |
11 | $css = ob_get_clean(); | 11 | $css = ob_get_clean(); |
12 | 12 | ||
diff --git a/view/backup.php b/view/backup.php new file mode 100644 index 0000000..b4339e4 --- /dev/null +++ b/view/backup.php | |||
@@ -0,0 +1,86 @@ | |||
1 | <?php | ||
2 | // view/backup.php | ||
3 | |||
4 | // message dossier data | ||
5 | if(isset($erreur) && $erreur == 'data') | ||
6 | { | ||
7 | ob_start(); | ||
8 | ?> | ||
9 | <h2>Bienvenue sur le site de Melaine Favennec.</h2> | ||
10 | <h3><i><?= $title ?></i></h3> | ||
11 | <p>La configuration n'est pas terminée, veuillez créer un dossier "data" à la racine du site et lui donner les droits 777 (lecture + écriture + entrer dedans).</p> | ||
12 | <p>Ceci peut être réalisé depuis le logiciel FTP que vous avez utilisé pour télécharger le site sur le serveur de votre hébergeur.</p> | ||
13 | <p>Vous devriez également pouvoir utiliser SSH (linux, mac, windows 10/11) ou "putty" (anciens windows) en tapant ces commandes (utilisateur avancé):</p> | ||
14 | <p><i>ssh "nom_utilisateur"@"nom_de_domaine"</i><br/> | ||
15 | <i>cd /chemin/racine/du/site</i> (le dossier "melaine")<br/> | ||
16 | <i>mkdir data</i><br/> | ||
17 | <i>chmod 777 data</i></p> | ||
18 | <p><a href="index.php" >Recharger la page</a></p> | ||
19 | <?php | ||
20 | $content = ob_get_clean(); | ||
21 | } | ||
22 | |||
23 | // page sauvegarde | ||
24 | if(isset($_GET['action']) && $_GET['action'] == 'sauvegarde') | ||
25 | { | ||
26 | ob_start(); | ||
27 | ?> | ||
28 | <p>Toutes les données du sites (textes, photos) ont été rassemblées dans un gros fichier que vous pouvez garder si vous le souhaitez sur votre ordinateur.</p> | ||
29 | <p>Vous pourrez l'utiliser plus tard pour restaurer le site dans l'état où il se trouve aujourd'hui. Ceci est utile dans le cas d'un changement d'hébergement ou dans le cas d'un problème affectant le serveur.</p> | ||
30 | <p>Ce fichier se nomme <i>melaineDATA.zip</i>.</p><br/> | ||
31 | |||
32 | <p><a href="data/melaineDATA.zip" style="border: 2px black ridge; padding: 2px;" >Cliquez ici pour télécharger</a></p><br/> | ||
33 | <p><a href="index.php?page=<?= $from ?>" >Retour au site</a></p> | ||
34 | <?php | ||
35 | $content = ob_get_clean(); | ||
36 | |||
37 | ob_start(); | ||
38 | ?> | ||
39 | <p>Erreur: la classe ZipArchive est introuvable, la sauvegarde est impossible. L\'extension ZIP de PHP est-elle activée dans le fichier php.ini?</p> | ||
40 | <p>Veuillez prévenir l\'administrateur.</p> | ||
41 | <p>Vous pouvez aussi récupérer manuellement les fichiers en vous connectant au serveur avec un client FTP, il suffit de récupérer tout le dossier "data".</p><br/> | ||
42 | <p><a href="index.php" >Retour au site</a></p> | ||
43 | <?php | ||
44 | $erreur = ob_get_clean(); | ||
45 | } | ||
46 | // page restauration | ||
47 | elseif(isset($_GET['action']) && $_GET['action'] == 'restauration') | ||
48 | { | ||
49 | ob_start(); | ||
50 | ?> | ||
51 | <p>Restauration des données à partir d'une sauvegarde.</p> | ||
52 | <p>Vous devez avoir créé un fichier nommé <i>melaineDATA.zip</i><br/> | ||
53 | en cliquant sur <i>Extraire les données</i>.</p><br/> | ||
54 | |||
55 | <form action="index.php?from=<?= $from ?>&action=insertion" method="post" > | ||
56 | <input type="file" accept=".zip" ><br/> | ||
57 | |||
58 | <!-- demande de confirmation en JS au submit --> | ||
59 | |||
60 | <input type="submit" value="Injecter les données" ><br/><br/> | ||
61 | <a href="index.php?page=<?= $from ?>" >Retour au site</a> | ||
62 | </form> | ||
63 | <?php | ||
64 | $content = ob_get_clean(); | ||
65 | } | ||
66 | ?> | ||
67 | <!DOCTYPE html> | ||
68 | <html lang="fr" > | ||
69 | <head> | ||
70 | <meta charset="utf-8" /> | ||
71 | <title><?= $title ?></title> | ||
72 | <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> | ||
73 | <?php | ||
74 | if(isset($_GET['action']) && $_GET['action'] == 'restauration') | ||
75 | { | ||
76 | echo('<script type="text/javascript" src="public/main.js" ></script>'); | ||
77 | } | ||
78 | ?> | ||
79 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
80 | </head> | ||
81 | <body> | ||
82 | <div id="bloc_page" style="padding: 10px;" > | ||
83 | <?= $content ?> | ||
84 | </div> | ||
85 | </body> | ||
86 | </html> \ No newline at end of file | ||
diff --git a/view/discographie.php b/view/discographie.php index 2b70159..904201a 100644 --- a/view/discographie.php +++ b/view/discographie.php | |||
@@ -4,8 +4,8 @@ | |||
4 | // variable $css | 4 | // variable $css |
5 | ob_start(); | 5 | ob_start(); |
6 | ?> | 6 | ?> |
7 | <link rel="stylesheet" type="text/css" href="public/<?= $page_actuelle ?>.css" /> | 7 | <link rel="stylesheet" type="text/css" href="public/css/<?= $page_actuelle ?>.css" /> |
8 | <link rel="stylesheet" type="text/css" href="public/donnees_hors_editeur.css" /> | 8 | <link rel="stylesheet" type="text/css" href="public/css/donnees_hors_editeur.css" /> |
9 | <?php | 9 | <?php |
10 | $css = ob_get_clean(); | 10 | $css = ob_get_clean(); |
11 | 11 | ||
diff --git a/view/melaine.php b/view/melaine.php index 2325f5c..ea8434a 100644 --- a/view/melaine.php +++ b/view/melaine.php | |||
@@ -4,8 +4,8 @@ | |||
4 | // variable $css | 4 | // variable $css |
5 | ob_start(); | 5 | ob_start(); |
6 | ?> | 6 | ?> |
7 | <link rel="stylesheet" type="text/css" href="public/<?= $page_actuelle ?>.css" /> | 7 | <link rel="stylesheet" type="text/css" href="public/css/<?= $page_actuelle ?>.css" /> |
8 | <link rel="stylesheet" type="text/css" href="public/donnees_hors_editeur.css" /> | 8 | <link rel="stylesheet" type="text/css" href="public/css/donnees_hors_editeur.css" /> |
9 | <?php | 9 | <?php |
10 | $css = ob_get_clean(); | 10 | $css = ob_get_clean(); |
11 | 11 | ||
diff --git a/view/password.php b/view/password.php index 2dabcdd..d63e986 100644 --- a/view/password.php +++ b/view/password.php | |||
@@ -55,8 +55,8 @@ ob_start(); | |||
55 | 55 | ||
56 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> | 56 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> |
57 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > | 57 | <link rel="icon" type="image/png" href="public/mouette-logo.png" > |
58 | <link rel="stylesheet" type="text/css" href="public/normalize.css"> | 58 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css"> |
59 | <link rel="stylesheet" type="text/css" href="public/accueil.css" /> | 59 | <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> |
60 | <script type="text/javascript" src="public/main.js" ></script> | 60 | <script type="text/javascript" src="public/main.js" ></script> |
61 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 61 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
62 | </head> | 62 | </head> |
diff --git a/view/template-formulaires.php b/view/template-formulaires.php index f6d7ec0..7873500 100644 --- a/view/template-formulaires.php +++ b/view/template-formulaires.php | |||
@@ -97,6 +97,7 @@ if($page_actuelle == 'discographie') | |||
97 | 'imageStyle:align-right',*/ | 97 | 'imageStyle:align-right',*/ |
98 | //'imageResize', // optionnel, on a les poignées dans les coins de l'image | 98 | //'imageResize', // optionnel, on a les poignées dans les coins de l'image |
99 | 'linkImage', | 99 | 'linkImage', |
100 | 'toggleImageCaption', | ||
100 | 'imageTextAlternative' | 101 | 'imageTextAlternative' |
101 | ] | 102 | ] |
102 | }, | 103 | }, |
@@ -144,9 +145,7 @@ if($page_actuelle == 'discographie') | |||
144 | // - à inclure l'adresse de l'image dans le HTML produit par l'éditeur | 145 | // - à inclure l'adresse de l'image dans le HTML produit par l'éditeur |
145 | simpleUpload: { | 146 | simpleUpload: { |
146 | uploadUrl: 'index.php?action=upload_image&page=<?= $page_actuelle ?>', | 147 | uploadUrl: 'index.php?action=upload_image&page=<?= $page_actuelle ?>', |
147 | // noter qu'il est possible (parce que souhaitable je ne pense pas) d'envoyer une requête AJAX | 148 | |
148 | // en indiquant une adresse "statique" du type: fichier.txt ou .xml, jpg, png, etc, | ||
149 | |||
150 | // Headers supplémentaires envoyés avec la requête | 149 | // Headers supplémentaires envoyés avec la requête |
151 | // c'est ici qu'on installe les mécanismes de sécurités comme l'authentification et la protection au CSRF | 150 | // c'est ici qu'on installe les mécanismes de sécurités comme l'authentification et la protection au CSRF |
152 | headers: { | 151 | headers: { |
@@ -171,11 +170,12 @@ if($page_actuelle == 'discographie') | |||
171 | //alert(ClassicEditor.builtinPlugins.map( plugin => plugin.pluginName )); | 170 | //alert(ClassicEditor.builtinPlugins.map( plugin => plugin.pluginName )); |
172 | 171 | ||
173 | var initial = '<?= $texte ?>'; | 172 | var initial = '<?= $texte ?>'; |
173 | |||
174 | editor.setData(initial); | 174 | editor.setData(initial); |
175 | } ) | 175 | } ) |
176 | .catch( error => { | 176 | .catch( error => { |
177 | console.error( error ); | 177 | console.error( error ); |
178 | } ); | 178 | } ); |
179 | </script> | 179 | </script> |
180 | </form> | 180 | </form> |
181 | </div> | 181 | </div> |
diff --git a/view/template.php b/view/template.php index aeb157a..9422736 100644 --- a/view/template.php +++ b/view/template.php | |||
@@ -10,8 +10,8 @@ | |||
10 | 10 | ||
11 | <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> --> | 11 | <!-- <link rel="shortcut icon" type="image/x-icon" href="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/normalize.css"> | 13 | <link rel="stylesheet" type="text/css" href="public/css/normalize.css"> |
14 | <link rel="stylesheet" type="text/css" href="public/accueil.css" /> | 14 | <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> |
15 | <?php | 15 | <?php |
16 | if(isset($css)) // fichiers CSS supplémentaires | 16 | if(isset($css)) // fichiers CSS supplémentaires |
17 | { | 17 | { |
@@ -80,8 +80,9 @@ if($_SESSION['admin'] == 1) | |||
80 | <p><a href="index.php?from=<?= $page_actuelle ?>&action=sauvegarde" > | 80 | <p><a href="index.php?from=<?= $page_actuelle ?>&action=sauvegarde" > |
81 | Sauvegarder les données de tout le site.</a></p> | 81 | Sauvegarder les données de tout le site.</a></p> |
82 | <p><a href="index.php?from=<?= $page_actuelle ?>&action=restauration" >Restaurer les données avec une sauvegarde.</a></p> | 82 | <p><a href="index.php?from=<?= $page_actuelle ?>&action=restauration" >Restaurer les données avec une sauvegarde.</a></p> |
83 | <p><a href="melainePHP.zip" > | 83 | <p><a href="data/melainePHP.zip" > |
84 | Télécharger le code PHP pour migration.</a></p> | 84 | Télécharger le code PHP pour migration. |
85 | </a></p> | ||
85 | </div> | 86 | </div> |
86 | </div> | 87 | </div> |
87 | <?php | 88 | <?php |
diff --git a/à faire après livraison.txt b/à faire après livraison.txt index da55d4e..c283c22 100644 --- a/à faire après livraison.txt +++ b/à faire après livraison.txt | |||
@@ -2,6 +2,8 @@ Le reste du site | |||
2 | 2 | ||
3 | liens sans http dans l'éditeur | 3 | liens sans http dans l'éditeur |
4 | 4 | ||
5 | plugin autosave | ||
6 | |||
5 | Editeur "inline" ou "balloon block" | 7 | Editeur "inline" ou "balloon block" |
6 | 8 | ||
7 | Possibilité de regarder une image en grand dans une fenêtre javascript | 9 | Possibilité de regarder une image en grand dans une fenêtre javascript |
diff --git a/Ã faire avant livraison.txt b/Ã faire avant livraison.txt index b852baf..7823545 100644 --- a/Ã faire avant livraison.txt +++ b/Ã faire avant livraison.txt | |||
@@ -1,9 +1,10 @@ | |||
1 | tri des albums selon l'année | 1 | Sauvegarde des données !! |
2 | (avec des plages de timestamps?) | ||
3 | 2 | ||
4 | Identification avec deux codes (login + mot de passe) | 3 | menu chronologie page album |
5 | 4 | ||
6 | fichier backup.php -> mettre le html à part | 5 | remplacer l'encadré orange |
7 | 6 | ||
8 | Sauvegarde des données !! | 7 | tri des albums selon l'année |
8 | (avec des plages de timestamps?) | ||
9 | 9 | ||
10 | Identification avec deux codes (login + mot de passe) | ||