summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.php5
-rw-r--r--controller/admin.php3
-rw-r--r--controller/backup.php188
-rw-r--r--controller/visitor.php38
-rw-r--r--index.php11
-rw-r--r--model/Album.php33
-rw-r--r--model/Article.php8
-rw-r--r--model/Image.php5
-rw-r--r--public/css/accueil.css99
-rw-r--r--public/css/menu.css54
-rw-r--r--public/main.js24
-rw-r--r--view/album.php21
-rw-r--r--view/backup.php32
-rw-r--r--view/discographie.php3
-rw-r--r--view/menu.php6
-rw-r--r--view/password.php6
-rw-r--r--view/template-formulaires.php8
-rw-r--r--view/template.php22
-rw-r--r--à faire après livraison.txt19
-rw-r--r--à faire avant livraison.txt10
20 files changed, 397 insertions, 198 deletions
diff --git a/config.php b/config.php
index fad4c16..be894e9 100644
--- a/config.php
+++ b/config.php
@@ -3,6 +3,11 @@
3// écrire 'gd' ou 'imagick' 3// écrire 'gd' ou 'imagick'
4$imageLibrary = 'imagick'; 4$imageLibrary = 'imagick';
5 5
6// taille max des fichiers à adapter au php.ini
7$maxWeight = 2000000;
8
6// mode de stockage des données 9// mode de stockage des données
7// écrire 'files' ou 'database' 10// écrire 'files' ou 'database'
8$storage = 'files'; 11$storage = 'files';
12// laisser 'files'!!
13// l'utilisation d'une BDD n'est pas prévue pour l'instant \ No newline at end of file
diff --git a/controller/admin.php b/controller/admin.php
index 50f15e2..b8ef7ff 100644
--- a/controller/admin.php
+++ b/controller/admin.php
@@ -191,7 +191,8 @@ function discoEdit($fileCode, $suppression)
191 { 191 {
192 if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) 192 if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html'))
193 { 193 {
194 $lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode']; 194 /*$lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode'];*/
195 $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode'];
195 $avecLien[$i] = true; 196 $avecLien[$i] = true;
196 $linkDiscoChrono[$i] = 'linkChrono'; // css 197 $linkDiscoChrono[$i] = 'linkChrono'; // css
197 } 198 }
diff --git a/controller/backup.php b/controller/backup.php
index 13b68df..81d72b9 100644
--- a/controller/backup.php
+++ b/controller/backup.php
@@ -1,84 +1,64 @@
1<?php 1<?php
2// controller/backup.php 2// controller/backup.php
3 3
4// note: faire que cette fonction soit exécutée automatiquement de temps en temps
4function sauvegarder($from) 5function sauvegarder($from)
5{ 6{
6 $title = 'extraction des données'; 7 $title = 'extraction des données';
7 8
8 $chemin = "data/"; 9 $cheminDestination = "data/";
9 $nomFichier = "melaineDATA.zip"; 10 $date = date("d-m-Y", time());
11 $nomFichier = "melaineDATA_" . $date . ".zip";
12 // ne prendre que les dossiers pour exclure les fichiers password.txt, melaineDATA.zip et melainePHP.zip existant
13 $dossiersCibles = [ 'data/archives', 'data/concerts', 'data/liens', 'data/presse', 'data/ateliers', 'data/discographie', 'data/melaine', 'data/peinture' ];
14 //$fichiersALaRacine = [];
10 15
11 // création ou remplacement d'une archive zip 16 createZip($cheminDestination, $nomFichier, $dossiersCibles);
12 // une erreur est jetée si l'extension zip n'est pas activée
13 try
14 {
15 $zip = new ZipArchive();
16 }
17 catch (Throwable $e)
18 {
19 echo($erreur);
20 die();
21 }
22
23 // création du fichier zip vide
24 // j'ai utilisé l'option ZipArchive::OVERWRITE,
25 // ZipArchive::FL_OVERWRITE n'apparaît qu'avec PHP 8
26 if ($zip->open($chemin . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) {
27 exit("Impossible d'ouvrir le fichier <i>" . $chemin . $nomFichier . "</i>.\n");
28 }
29
30 // ajout des fichiers
31 // chemin complet = data/"pages"/"html ou images"/"tous les fichiers"
32 $zip->addGlob($chemin . '*/*/*', 0, array(''));
33 $zip->close();
34
35 // pour pouvoir manipuler le fichier depuis filezilla ou ssh
36 chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres
37
38 require('view/backup.php');
39}
40
41function restaurer($from)
42{
43 $title = 'Restauration des données';
44
45 $chemin = "data/";
46 $nomFichier = "melaineDATA.zip";
47 17
48 require('view/backup.php'); 18 require('view/backup.php');
49} 19}
50 20
51// inutile
52function creerMelainePHP() 21function creerMelainePHP()
53{ 22{
23 $cheminDestination = 'data/';
54 $nomFichier = "melainePHP.zip"; 24 $nomFichier = "melainePHP.zip";
25 // tous les dossiers sauf data et .git
26 $dossiersCibles = ['model', 'view', 'controller', 'public', 'lib'];
27 $fichiersALaRacine = ['*.php', '.htaccess', '*.txt']; // robots?
28
29 createZip($cheminDestination, $nomFichier, $dossiersCibles, $fichiersALaRacine);
30}
55 31
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 32
66 if ($Zip->open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) 33// les deux premiers paramètres concernent le fichier créé
67 { 34// le quatrième est optionnel et concerne les fichiers à la racine
68 exit("Impossible d'ouvrir le fichier <i>" . $nomFichier . "</i>.\n"); 35function createZip($destinationPath, $zipFileName, array $targetDirectories, array $allPattern = [])
69 } 36{
37 try
38 {
39 $Zip = new ZipArchive();
40 }
41 catch (Throwable $e) // l'extension zip n'est pas activée
42 {
43 echo($e);
44 die();
45 }
46
47 // note: j'ai utilisé l'option ZipArchive::OVERWRITE,
48 // ZipArchive::FL_OVERWRITE n'apparaît qu'avec PHP 8
49 if ($Zip->open($destinationPath . $zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE)
50 {
51 exit("Impossible de créer ou d'ouvrir ou créer le fichier <i>data/" . $zipFileName . ".</i><br />
52 Il est possible que ce fichier existe déjà et soit interdit en écriture.<br />
53 <p><a href=\"index.php\" >Retour au site</a></p>");
54 }
70 55
71 // fichiers à la racine 56 $compteur = 0;
72 $Zip->addGlob('*.php', 0, array(''));
73 $Zip->addGlob('.htaccess', 0, array(''));
74 $Zip->addGlob('*.txt', 0, array(''));
75 57
76 // tous les dossiers sauf data et .git 58 // recherche récursive dans les dossiers dans $directories
77 $listeDossiers = array('model', 'view', 'controller', 'public', 'lib'); 59 foreach($targetDirectories as $path)
78 foreach($listeDossiers as $path)
79 { 60 {
80 // les deux lignes suivantes me dépassent un peu, 61 // les deux lignes suivantes reviennent à utiliser le paramètre "-r" dans la console
81 // mais ça marche et c'est comme ça qu'il faut faire
82 $directory = new RecursiveDirectoryIterator($path); 62 $directory = new RecursiveDirectoryIterator($path);
83 $iterator = new RecursiveIteratorIterator($directory); 63 $iterator = new RecursiveIteratorIterator($directory);
84 64
@@ -87,13 +67,93 @@ function creerMelainePHP()
87 // chemins inutiles . et .. 67 // chemins inutiles . et ..
88 if($info->getFilename() != "." && $info->getFilename() != "..") 68 if($info->getFilename() != "." && $info->getFilename() != "..")
89 { 69 {
90 //var_dump($info->getPathname());
91 $Zip->addGlob($info->getPathname(), 0, array('')); 70 $Zip->addGlob($info->getPathname(), 0, array(''));
71 $compteur++;
92 } 72 }
93 } 73 }
94 } 74 }
95 75
76 // recherche à la racine avec des pattern de noms de fichiers
77 // possibilité d'un tableau vide (paramètre optionnel)
78 foreach($allPattern as $onePattern)
79 {
80 $Zip->addGlob($onePattern, 0, array(''));
81 }
82
96 $Zip->close(); 83 $Zip->close();
97 84
98 chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal) 85 if($compteur > 0)
99} \ No newline at end of file 86 {
87 chmod($destinationPath . $zipFileName, 0666); // en octal
88 }
89 else
90 {
91 $_SESSION['erreur'] = "Extraction des données impossible, le site entier est vide.";
92 }
93}
94
95
96function restaurer($from)
97{
98 $title = 'Restauration des données';
99 $message = '';
100
101 // recharger la même page en écrivant les données
102 if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0)
103 {
104 // une copie du zip est conservée dans data/ au cas où
105 move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']);
106 chmod('data/' . $_FILES['archive']['name'], 0666);
107
108 $nomFichier = 'data/' . $_FILES['archive']['name'];
109
110 // extraction
111 try
112 {
113 $Zip = new ZipArchive();
114 }
115 catch (Throwable $e) // l'extension zip n'est pas activée
116 {
117 echo($e);
118 die();
119 }
120
121 //var_dump($Zip->open($nomFichier, ZipArchive::RDONLY));
122 //var_dump(ZipArchive::ER_NOENT);
123
124 if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE)
125 {
126 $j = 0;
127 for($i = 0; $i < $Zip->numFiles; $i++)
128 {
129 $nomEntree = $Zip->getNameIndex($i);
130 if($Zip->extractTo('.', $nomEntree) === TRUE)
131 {
132 $j++;
133 }
134 else
135 {
136 $message = '<p style="color: red;" >Erreur: extraction du zip impossible.</p>';
137 }
138 chmod($nomEntree, 0666);
139 }
140
141 if($j == $Zip->numFiles)
142 {
143 $message = '<p style="color: red;" >Restauration réussie !!</p>';
144 }
145 $Zip->close();
146 }
147 else
148 {
149 // mauvais fichier
150 $message = '<p style="color: red;" >Erreur: Impossible d\'ouvrir l\'archive Zip."</p>';
151 }
152 }
153 elseif(isset($_FILES['archive']) && $_FILES['archive']['error'] != 0)
154 {
155 $message = '<p style="color: red;" >Erreur: Le fichier n\'a pas pu être téléchargé correctement."</p>';
156 }
157
158 require('view/backup.php');
159}
diff --git a/controller/visitor.php b/controller/visitor.php
index 2656798..f0dc877 100644
--- a/controller/visitor.php
+++ b/controller/visitor.php
@@ -59,7 +59,7 @@ function discoVisitor()
59 59
60 // modèle 60 // modèle
61 $Albums = new Album($page_actuelle); 61 $Albums = new Album($page_actuelle);
62 $Albums->makeFileList(); 62 //var_dump($Albums->fileList); die();
63 63
64 // on récupère tout: JSON, HTML, noms et chemins des fichiers 64 // on récupère tout: JSON, HTML, noms et chemins des fichiers
65 $Albums->readAll(); 65 $Albums->readAll();
@@ -88,19 +88,22 @@ function discoVisitor()
88 /*$lienAlbum = []; 88 /*$lienAlbum = [];
89 $avecLien = []; 89 $avecLien = [];
90 $linkDiscoChrono = [];*/ 90 $linkDiscoChrono = [];*/
91
92 // liens vers les albums
91 for($i = 0; $i < $Albums->fileListCount; $i++) 93 for($i = 0; $i < $Albums->fileListCount; $i++)
92 { 94 {
93 if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) 95 if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html'))
94 { 96 {
95 $lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode']; 97 /*$lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode'];*/
98 $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode'];
96 $avecLien[$i] = true; 99 $avecLien[$i] = true;
97 $linkDiscoChrono[$i] = 'linkChrono'; // css 100 $linkDiscoChrono[$i] = 'linkChrono'; // pour le css
98 } 101 }
99 else 102 else
100 { 103 {
101 $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre']; 104 $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre'];
102 $avecLien[$i] = false; 105 $avecLien[$i] = false;
103 $linkDiscoChrono[$i] = 'noLinkChrono'; // css 106 $linkDiscoChrono[$i] = 'noLinkChrono'; // pour le css
104 } 107 }
105 $lienBoutonModif[$i] = 'page=discographie&action=edition&file_code=' . $Albums->fileList[$i]['fileCode']; 108 $lienBoutonModif[$i] = 'page=discographie&action=edition&file_code=' . $Albums->fileList[$i]['fileCode'];
106 } 109 }
@@ -112,12 +115,31 @@ function discoVisitor()
112} 115}
113 116
114// page d'un album 117// page d'un album
115function album($fileCode, $albumName) 118function album($fileCode)
116{ 119{
117 $page_actuelle = 'discographie'; 120 $page_actuelle = 'discographie'; // ???
118 $title = $albumName; 121
122 $Albums = new Album($page_actuelle);
123 $Albums->getAllJSON();
124 $Albums->fileCode = $fileCode;
125 $Albums->readOne();
119 126
120 $album = Album::readOneHTML($fileCode); // simple, efficace 127 //var_dump($Albums); die();
128
129 $album = $Albums->oneAlbum['HTMLcontent'];
130 //$album = Album::readOneHTML($fileCode);
131
132 for($i = 0; $i < $Albums->fileListCount; $i++)
133 {
134 if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html'))
135 {
136 $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode'];
137 }
138 else
139 {
140 $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre'];
141 }
142 }
121 143
122 // variables $css, $header et $content 144 // variables $css, $header et $content
123 require('view/album.php'); 145 require('view/album.php');
diff --git a/index.php b/index.php
index 73bfb66..c37ffc1 100644
--- a/index.php
+++ b/index.php
@@ -193,7 +193,7 @@ if(isset($_GET['page']))
193 // page visiteur uniquement 193 // page visiteur uniquement
194 elseif($_GET['page'] == 'album') 194 elseif($_GET['page'] == 'album')
195 { 195 {
196 album($_GET['file_code'], $_GET['album_name']); 196 album($_GET['file_code']);
197 } 197 }
198 // page connexion 198 // page connexion
199 elseif($_GET['page'] == 'connexion') 199 elseif($_GET['page'] == 'connexion')
@@ -221,21 +221,16 @@ elseif($_SESSION['admin'] == 1 && isset($_GET['action']))
221 { 221 {
222 require_once('controller/backup.php'); 222 require_once('controller/backup.php');
223 223
224 // extraction du contenu du dossier data 224 // sauvegarde du dossier 'data'
225 if($_GET['action'] == 'sauvegarde') 225 if($_GET['action'] == 'sauvegarde')
226 { 226 {
227 sauvegarder($_GET['from']); 227 sauvegarder($_GET['from']);
228 } 228 }
229 // insertion des données d'une sauvegarde 229 // restauration avec une sauvegarde
230 elseif($_GET['action'] == 'restauration') 230 elseif($_GET['action'] == 'restauration')
231 { 231 {
232 restaurer($_GET['from']); 232 restaurer($_GET['from']);
233 } 233 }
234 // tout sauf le dossier data
235 /*elseif($_GET['action'] == 'extrairePHP')
236 {
237 extrairePHP($_GET['from']);
238 }*/
239 else 234 else
240 { 235 {
241 accueil(); 236 accueil();
diff --git a/model/Album.php b/model/Album.php
index 9c90a6b..3f13939 100644
--- a/model/Album.php
+++ b/model/Album.php
@@ -7,16 +7,32 @@ class Album extends Article
7 7
8 public function __construct($page) 8 public function __construct($page)
9 { 9 {
10 $this->format = 'json'; // vaut 'html' dans la classe mère
11
10 // pour: page, fileCode, time et makeFileList() 12 // pour: page, fileCode, time et makeFileList()
11 parent::__construct($page); 13 parent::__construct($page);
12 //$this->page = $page;
13 //$this->fileCode = ''; // désigne un fichier json et un html
14 $this->format = 'json'; // vaut 'html' dans la classe mère
15 //$this->time = time();
16 //$this->makeFileList();
17 } 14 }
18 15
19 // GET 16 // GET
17 public function getAllJSON() // pour la page album
18 {
19 // mettre le JSON dans fileList[$i]['content']
20 parent::readAll();
21
22 $this->format = 'html';
23
24 for($i = 0; $i < $this->fileListCount; $i++)
25 {
26 $content = json_decode($this->fileList[$i]['content'], true);
27 $this->fileList[$i]['titre'] = $content[0];
28 $this->fileList[$i]['annee'] = $content[1];
29 $this->fileList[$i]['pochette'] = $content[2];
30 $this->fileList[$i]['pochetteMini'] = $content[3];
31 }
32
33 // on remet comme avant
34 $this->format = 'json';
35 }
20 36
21 // SET 37 // SET
22 38
@@ -70,6 +86,7 @@ class Album extends Article
70 // permet de ne pas la remplacer par la nouvelle 86 // permet de ne pas la remplacer par la nouvelle
71 87
72 $this->format = 'html'; 88 $this->format = 'html';
89
73 for($i = 0; $i < $this->fileListCount; $i++) 90 for($i = 0; $i < $this->fileListCount; $i++)
74 { 91 {
75 // ajout du JSON 92 // ajout du JSON
@@ -103,7 +120,7 @@ class Album extends Article
103 { 120 {
104 for($i = 0; $i < $this->fileListCount; $i++) 121 for($i = 0; $i < $this->fileListCount; $i++)
105 { 122 {
106 if($_SESSION['target'] == $this->fileList[$i]['fileCode']) 123 if($this->fileCode == $this->fileList[$i]['fileCode'])
107 { 124 {
108 // json 125 // json
109 $this->oneAlbum['fileCode'] = $this->fileList[$i]['fileCode']; 126 $this->oneAlbum['fileCode'] = $this->fileList[$i]['fileCode'];
@@ -127,7 +144,7 @@ class Album extends Article
127 } 144 }
128 145
129 // page d'un album 146 // page d'un album
130 public static function readOneHTML($fileCode) 147 /*public static function readOneHTML($fileCode)
131 { 148 {
132 if(file_exists('data/discographie/html/' . $fileCode . '.html')) 149 if(file_exists('data/discographie/html/' . $fileCode . '.html'))
133 { 150 {
@@ -137,7 +154,7 @@ class Album extends Article
137 { 154 {
138 return(''); 155 return('');
139 } 156 }
140 } 157 }*/
141 158
142 public function getVignetteJSON() 159 public function getVignetteJSON()
143 { 160 {
diff --git a/model/Article.php b/model/Article.php
index fa9fce1..4ef3a5b 100644
--- a/model/Article.php
+++ b/model/Article.php
@@ -18,6 +18,12 @@
18// $fileList[$fileCode] => [$fileName => 'code', $content => 'contenu'], etc 18// $fileList[$fileCode] => [$fileName => 'code', $content => 'contenu'], etc
19 19
20 20
21// ma struture est mauvaise, elle n'est pas très orientée objet
22// créer une classe structure de données
23// celle-ci sera instanciée dans la première (ou pas du tout)
24// et accesssible avec des GET et des SET
25
26
21class Article 27class Article
22{ 28{
23 // pour tous les articles 29 // pour tous les articles
@@ -25,8 +31,6 @@ class Article
25 public $format = 'html'; // vaut 'html' ou 'json' 31 public $format = 'html'; // vaut 'html' ou 'json'
26 public $fileListCount; 32 public $fileListCount;
27 public $fileList; // = toutes les données 33 public $fileList; // = toutes les données
28 //protected $articles; // contenu de toute la page
29 //protected $nbArticles; // un fichier = un article
30 34
31 // pour un article (ou album) spécifique 35 // pour un article (ou album) spécifique
32 //public $fileName = ''; // = $_SESSION['nomFichier'] 36 //public $fileName = ''; // = $_SESSION['nomFichier']
diff --git a/model/Image.php b/model/Image.php
index ac05f24..793bd8d 100644
--- a/model/Image.php
+++ b/model/Image.php
@@ -3,7 +3,6 @@
3 3
4class Image 4class Image
5{ 5{
6 private const MAX_WEIGHT = 2000000; // à adapter au php.ini
7 private $page; 6 private $page;
8 private $ajax; // vaut true avec le ckeditor 7 private $ajax; // vaut true avec le ckeditor
9 public $path; 8 public $path;
@@ -26,10 +25,12 @@ class Image
26 25
27 public function upload() 26 public function upload()
28 { 27 {
28 global $maxWeight;
29
29 // traitement et enregistrement de l'image 30 // traitement et enregistrement de l'image
30 if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok 31 if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok
31 { 32 {
32 if ($_FILES['upload']['size'] <= self::MAX_WEIGHT) 33 if ($_FILES['upload']['size'] <= $maxWeight)
33 { 34 {
34 $this->pathInfos = pathinfo($_FILES['upload']['name']); 35 $this->pathInfos = pathinfo($_FILES['upload']['name']);
35 $extension = $this->pathInfos['extension']; 36 $extension = $this->pathInfos['extension'];
diff --git a/public/css/accueil.css b/public/css/accueil.css
index 622ce1f..8f7f8c7 100644
--- a/public/css/accueil.css
+++ b/public/css/accueil.css
@@ -134,7 +134,7 @@ form
134 134
135.zoneVideAdmin 135.zoneVideAdmin
136{ 136{
137 padding-top: 20px; 137 padding-top: 10px;
138} 138}
139 139
140#modeAdmin 140#modeAdmin
@@ -144,8 +144,9 @@ form
144 bottom: 0px; 144 bottom: 0px;
145 width: 700px; 145 width: 700px;
146 z-index: 2; 146 z-index: 2;
147 padding-top: 5px; 147 padding-top: 2px;
148 text-align: center; 148 /*text-align: center;*/
149 /*font-family: Sans-serif;*/
149} 150}
150 151
151#modeAdmin p 152#modeAdmin p
@@ -156,33 +157,26 @@ form
156} 157}
157#modeAdmin>div p 158#modeAdmin>div p
158{ 159{
159 /*border: 1px black solid;*/ 160 /*margin: 5px;*/
160 margin: 5px; 161 /*padding: 0px;*/
161 padding: 0px;
162} 162}
163#modeAdmin>p a 163#modeAdmin>p a
164{ 164{
165 padding: 2px; 165 text-decoration: none;
166} 166 color: initial;
167
168#modeAdmin div
169{
170 display: flex;
171 justify-content: space-around;
172
173 margin: 0px;
174 font-size: 85%;
175} 167}
176 168
177#lienModeAdmin 169#lienModeAdmin
178{ 170{
179 margin: 0px 20px; 171 margin: 0px 20px;
180 padding-bottom: 20px;
181} 172}
182 173
183#lienModeAdmin p 174#lienModeAdmin p
184{ 175{
185 text-align: right; 176 text-align: right;
177 /* enlever la bande bleue en dessous du bloc_page */
178 margin-bottom: 0;
179 padding-bottom: 5px;
186} 180}
187 181
188#lienModeAdmin p a 182#lienModeAdmin p a
@@ -225,6 +219,28 @@ form
225 color: #666; 219 color: #666;
226} 220}
227 221
222.boutonBackup
223{
224 /*font-size: initial;*/ /* corrigé par normalize.css */
225 margin: 2px;
226}
227.boutonBackup a
228{
229 text-decoration: none;
230 color: initial;
231}
232
233/* options au survol */
234#options
235{
236 /*display: none;*/
237 display: flex;
238}
239/*#modeAdmin:hover #options
240{
241 display: flex;
242}*/
243
228 244
229/* PC, y compris vieux écrans 800x600 */ 245/* PC, y compris vieux écrans 800x600 */
230@media screen and (min-width: 700px) 246@media screen and (min-width: 700px)
@@ -267,7 +283,7 @@ form
267 283
268 #bienvenue 284 #bienvenue
269 { 285 {
270 background-image: url("accueil/bienvenue.png"); 286 background-image: url("../accueil/bienvenue.png");
271 width: 630px; 287 width: 630px;
272 height: 596px; 288 height: 596px;
273 } 289 }
@@ -285,8 +301,14 @@ form
285 301
286 .zoneVideAdmin, #modeAdmin 302 .zoneVideAdmin, #modeAdmin
287 { 303 {
288 height: 70px; 304 /*height: 30px;*/
305 height: 76px;
289 } 306 }
307
308 /*#modeAdmin:hover
309 {
310 height: 76px;
311 }*/
290} 312}
291 313
292/* "tablettes" et vieux écrans 640x480 */ 314/* "tablettes" et vieux écrans 640x480 */
@@ -341,7 +363,7 @@ form
341 363
342 #bienvenue 364 #bienvenue
343 { 365 {
344 background-image: url("accueil/bienvenue_petit.png"); 366 background-image: url("../accueil/bienvenue_petit.png");
345 width: 480px; 367 width: 480px;
346 height: 463px; 368 height: 463px;
347 margin: auto; 369 margin: auto;
@@ -360,7 +382,7 @@ form
360 382
361 .zoneVideAdmin, #modeAdmin 383 .zoneVideAdmin, #modeAdmin
362 { 384 {
363 height: 75px; 385 height: 71px;
364 } 386 }
365 387
366 #modeAdmin 388 #modeAdmin
@@ -384,7 +406,7 @@ form
384 } 406 }
385 .zoneVideAdmin, #modeAdmin 407 .zoneVideAdmin, #modeAdmin
386 { 408 {
387 height: 70px; 409 height: 66px;
388 } 410 }
389} 411}
390 412
@@ -439,7 +461,7 @@ form
439 461
440 #bienvenue 462 #bienvenue
441 { 463 {
442 background-image: url("accueil/bienvenue_mini.png"); 464 background-image: url("../accueil/bienvenue_mini.png");
443 width: 320px; 465 width: 320px;
444 height: 316px; 466 height: 316px;
445 } 467 }
@@ -462,7 +484,7 @@ form
462 484
463 .zoneVideAdmin, #modeAdmin 485 .zoneVideAdmin, #modeAdmin
464 { 486 {
465 height: 65px; 487 height: 61px;
466 } 488 }
467 489
468 #modeAdmin 490 #modeAdmin
@@ -470,9 +492,16 @@ form
470 max-width: 380px; 492 max-width: 380px;
471 } 493 }
472 494
473 #modeAdmin div 495 .boutonBackup
474 { 496 {
475 /*margin: 5px;*/ 497 /*margin: 5px;*/
498 /*padding: 1px;*/
499
500 }
501 #modeAdmin button
502 {
503 font-size: 95%;
504 padding: 1px;
476 } 505 }
477} 506}
478 507
@@ -481,18 +510,19 @@ form
481{ 510{
482 .zoneVideAdmin, #modeAdmin 511 .zoneVideAdmin, #modeAdmin
483 { 512 {
484 height: 80px; 513 height: 76px;
485 } 514 }
486 515
487 #modeAdmin 516 #modeAdmin
488 { 517 {
489 font-size: 95%; 518 /*font-size: 95%;*/
490 padding: 0px; 519 padding: 0px;
491 } 520 }
492 #modeAdmin>p 521 #modeAdmin>p
493 { 522 {
494 font-size: 90%; 523 /*font-size: 90%;*/
495 margin: 3px; 524 /*margin: 1px;*/
525 text-align: left;
496 } 526 }
497 527
498 #modeAdmin div 528 #modeAdmin div
@@ -501,6 +531,15 @@ form
501 } 531 }
502 #modeAdmin>div p 532 #modeAdmin>div p
503 { 533 {
504 margin: 0px 5px; 534 /*margin: 0px 5px;*/
505 } 535 }
506} 536}
537
538/* spécial */
539@media screen and (max-width: 320px)
540{
541 nav
542 {
543 margin: auto;
544 }
545} \ No newline at end of file
diff --git a/public/css/menu.css b/public/css/menu.css
index 0e17e34..4c521c0 100644
--- a/public/css/menu.css
+++ b/public/css/menu.css
@@ -44,7 +44,7 @@
44 { 44 {
45 width: 630px; 45 width: 630px;
46 height: 171px; 46 height: 171px;
47 background-image: url("mouette.png"); 47 background-image: url("../mouette.png");
48 } 48 }
49 49
50 #contenu 50 #contenu
@@ -67,14 +67,14 @@
67 67
68 #pochette 68 #pochette
69 { 69 {
70 background-image: url("menu/pochette.png"); 70 background-image: url("../menu/pochette.png");
71 width: 308px; 71 width: 308px;
72 height: 271px; 72 height: 271px;
73 } 73 }
74 74
75 #fille_qui_tombe 75 #fille_qui_tombe
76 { 76 {
77 background-image: url("menu/fille_qui_tombe.jpg"); 77 background-image: url("../menu/fille_qui_tombe.jpg");
78 width: 208px; 78 width: 208px;
79 height: 163px; 79 height: 163px;
80 margin: 5px 0px; 80 margin: 5px 0px;
@@ -82,14 +82,14 @@
82 82
83 #canoe 83 #canoe
84 { 84 {
85 background-image: url("menu/canoe.png"); 85 background-image: url("../menu/canoe.png");
86 width: 207px; 86 width: 207px;
87 height: 144px; 87 height: 144px;
88 } 88 }
89 89
90 #cavalier 90 #cavalier
91 { 91 {
92 background-image: url("menu/cavalier.jpg"); 92 background-image: url("../menu/cavalier.jpg");
93 width: 159px; 93 width: 159px;
94 height: 312px; 94 height: 312px;
95 position: relative; 95 position: relative;
@@ -98,7 +98,7 @@
98 98
99 #pommes 99 #pommes
100 { 100 {
101 background-image: url("menu/pommes.jpg"); 101 background-image: url("../menu/pommes.jpg");
102 width: 59px; 102 width: 59px;
103 height: 97px; 103 height: 97px;
104 position: relative; 104 position: relative;
@@ -107,14 +107,14 @@
107 107
108 #sirene 108 #sirene
109 { 109 {
110 background-image: url("menu/sirene.jpg"); 110 background-image: url("../menu/sirene.jpg");
111 width: 320px; 111 width: 320px;
112 height: 174px; 112 height: 174px;
113 } 113 }
114 114
115 #mouette_ocean 115 #mouette_ocean
116 { 116 {
117 background-image: url("menu/mouette_ocean.jpg"); 117 background-image: url("../menu/mouette_ocean.jpg");
118 width: 257px; 118 width: 257px;
119 height: 171px; 119 height: 171px;
120 margin: 5px 0px; 120 margin: 5px 0px;
@@ -122,7 +122,7 @@
122 122
123 #blonde 123 #blonde
124 { 124 {
125 background-image: url("menu/blonde.jpg"); 125 background-image: url("../menu/blonde.jpg");
126 width: 257px; 126 width: 257px;
127 height: 233px; 127 height: 233px;
128 } 128 }
@@ -143,7 +143,7 @@
143 { 143 {
144 width: 480px; 144 width: 480px;
145 height: 131px; 145 height: 131px;
146 background-image: url("mouette_petit.png"); 146 background-image: url("../mouette_petit.png");
147 margin: auto; 147 margin: auto;
148 } 148 }
149 149
@@ -167,14 +167,14 @@
167 167
168 #pochette 168 #pochette
169 { 169 {
170 background-image: url("menu/pochette_petit.png"); 170 background-image: url("../menu/pochette_petit.png");
171 width: 234px; 171 width: 234px;
172 height: 206px; 172 height: 206px;
173 } 173 }
174 174
175 #fille_qui_tombe 175 #fille_qui_tombe
176 { 176 {
177 background-image: url("menu/fille_qui_tombe_petit.jpg"); 177 background-image: url("../menu/fille_qui_tombe_petit.jpg");
178 width: 158px; 178 width: 158px;
179 height: 124px; 179 height: 124px;
180 margin: 4px 0px; 180 margin: 4px 0px;
@@ -182,14 +182,14 @@
182 182
183 #canoe 183 #canoe
184 { 184 {
185 background-image: url("menu/canoe_petit.png"); 185 background-image: url("../menu/canoe_petit.png");
186 width: 157px; 186 width: 157px;
187 height: 109px; 187 height: 109px;
188 } 188 }
189 189
190 #cavalier 190 #cavalier
191 { 191 {
192 background-image: url("menu/cavalier_petit.jpg"); 192 background-image: url("../menu/cavalier_petit.jpg");
193 width: 121px; 193 width: 121px;
194 height: 237px; 194 height: 237px;
195 position: relative; 195 position: relative;
@@ -198,7 +198,7 @@
198 198
199 #pommes 199 #pommes
200 { 200 {
201 background-image: url("menu/pommes_petit.jpg"); 201 background-image: url("../menu/pommes_petit.jpg");
202 width: 45px; 202 width: 45px;
203 height: 74px; 203 height: 74px;
204 position: relative; 204 position: relative;
@@ -207,14 +207,14 @@
207 207
208 #sirene 208 #sirene
209 { 209 {
210 background-image: url("menu/sirene_petit.jpg"); 210 background-image: url("../menu/sirene_petit.jpg");
211 width: 243px; 211 width: 243px;
212 height: 132px; 212 height: 132px;
213 } 213 }
214 214
215 #mouette_ocean 215 #mouette_ocean
216 { 216 {
217 background-image: url("menu/mouette_ocean_petit.jpg"); 217 background-image: url("../menu/mouette_ocean_petit.jpg");
218 width: 195px; 218 width: 195px;
219 height: 130px; 219 height: 130px;
220 margin: 4px 0px; 220 margin: 4px 0px;
@@ -222,7 +222,7 @@
222 222
223 #blonde 223 #blonde
224 { 224 {
225 background-image: url("menu/blonde_petit.jpg"); 225 background-image: url("../menu/blonde_petit.jpg");
226 width: 195px; 226 width: 195px;
227 height: 177px; 227 height: 177px;
228 } 228 }
@@ -243,7 +243,7 @@
243 { 243 {
244 width: 320px; 244 width: 320px;
245 height: 88px; 245 height: 88px;
246 background-image: url("mouette_mini.png"); 246 background-image: url("../mouette_mini.png");
247 margin: auto; 247 margin: auto;
248 } 248 }
249 249
@@ -267,14 +267,14 @@
267 267
268 #pochette 268 #pochette
269 { 269 {
270 background-image: url("menu/pochette_mini.png"); 270 background-image: url("../menu/pochette_mini.png");
271 width: 156px; 271 width: 156px;
272 height: 137px; 272 height: 137px;
273 } 273 }
274 274
275 #fille_qui_tombe 275 #fille_qui_tombe
276 { 276 {
277 background-image: url("menu/fille_qui_tombe_mini.jpg"); 277 background-image: url("../menu/fille_qui_tombe_mini.jpg");
278 width: 105px; 278 width: 105px;
279 height: 82px; 279 height: 82px;
280 margin: 3px 0px; 280 margin: 3px 0px;
@@ -282,14 +282,14 @@
282 282
283 #canoe 283 #canoe
284 { 284 {
285 background-image: url("menu/canoe_mini.png"); 285 background-image: url("../menu/canoe_mini.png");
286 width: 105px; 286 width: 105px;
287 height: 73px; 287 height: 73px;
288 } 288 }
289 289
290 #cavalier 290 #cavalier
291 { 291 {
292 background-image: url("menu/cavalier_mini.jpg"); 292 background-image: url("../menu/cavalier_mini.jpg");
293 width: 80px; 293 width: 80px;
294 height: 158px; 294 height: 158px;
295 position: relative; 295 position: relative;
@@ -298,7 +298,7 @@
298 298
299 #pommes 299 #pommes
300 { 300 {
301 background-image: url("menu/pommes_mini.jpg"); 301 background-image: url("../menu/pommes_mini.jpg");
302 width: 30px; 302 width: 30px;
303 height: 49px; 303 height: 49px;
304 position: relative; 304 position: relative;
@@ -308,14 +308,14 @@
308 308
309 #sirene 309 #sirene
310 { 310 {
311 background-image: url("menu/sirene_mini.jpg"); 311 background-image: url("../menu/sirene_mini.jpg");
312 width: 162px; 312 width: 162px;
313 height: 88px; 313 height: 88px;
314 } 314 }
315 315
316 #mouette_ocean 316 #mouette_ocean
317 { 317 {
318 background-image: url("menu/mouette_ocean_mini.jpg"); 318 background-image: url("../menu/mouette_ocean_mini.jpg");
319 width: 130px; 319 width: 130px;
320 height: 86px; 320 height: 86px;
321 margin: 3px 0px; 321 margin: 3px 0px;
@@ -323,7 +323,7 @@
323 323
324 #blonde 324 #blonde
325 { 325 {
326 background-image: url("menu/blonde_mini.jpg"); 326 background-image: url("../menu/blonde_mini.jpg");
327 width: 130px; 327 width: 130px;
328 height: 118px; 328 height: 118px;
329 } 329 }
diff --git a/public/main.js b/public/main.js
index 9764394..f3fe6f0 100644
--- a/public/main.js
+++ b/public/main.js
@@ -4,7 +4,7 @@ function versMenu()
4{ 4{
5 // ergonomique 5 // ergonomique
6 window.setTimeout("location=('index.php?page=menu');", 10000); 6 window.setTimeout("location=('index.php?page=menu');", 10000);
7 window.setTimeout(function(){location.href="index.php?page=menu"}, 3000); 7 //window.setTimeout(function(){location.href="index.php?page=menu"}, 10000);
8} 8}
9 9
10function deconnexionAutomatique() 10function deconnexionAutomatique()
@@ -88,4 +88,24 @@ function nouveauMotdepasse(page)
88{ 88{
89 confirm('Le mot de passe a été modifié.'); 89 confirm('Le mot de passe a été modifié.');
90 window.setTimeout(location=('index.php?page=' + page + '&message=nouveau_mdp'), 0); 90 window.setTimeout(location=('index.php?page=' + page + '&message=nouveau_mdp'), 0);
91} \ No newline at end of file 91}
92
93// envoie gros fichier ZIP
94// si le fichier ne passe pas la limite de l'hébergeur (php.ini)
95// l'ouvrir en javascript chaque envoyer progressivement
96function extraireZIPetEnvoyerUnParUn()
97{
98 // taille du fichier?
99
100 // taille limite autorisée?
101 // obtenue avant avec phpinfo() puis insérée dans le code JS
102
103 // si le fichier est plus gros que la limite:
104 // extraire l'archive
105 // envoyer les fichiers un par un par des requêtes AJAX
106 // le serveur peut aussi limiter le nombre de fichiers
107 // lors d'un envoie multiple
108 // en les envoyant un par un ça devrait être bon
109
110 // sinon ne rien faire et laisser l'envoi normal se faire
111}
diff --git a/view/album.php b/view/album.php
index e2731a1..86f1e58 100644
--- a/view/album.php
+++ b/view/album.php
@@ -23,7 +23,7 @@ echo "\n";
23?> 23?>
24 <header> 24 <header>
25 <div id="titre" > 25 <div id="titre" >
26 <span class="police_titre" ><?= $albumName ?></span> 26 <span class="police_titre" ><?= $Albums->oneAlbum['titre'] ?> - <?= $Albums->oneAlbum['annee'] ?></span>
27 </div> 27 </div>
28 <div id="photo" ></div> 28 <div id="photo" ></div>
29 </header> 29 </header>
@@ -33,6 +33,25 @@ $header = ob_get_clean();
33// variable $content 33// variable $content
34ob_start(); 34ob_start();
35?> 35?>
36 <aside>
37 <div>
38 <p id="bouton_chronologie" >Chronologie</p>
39 <div id="chronologie" >
40 <!-- ajouter à chaque entrée une ancre et un lien soit vers l'ancre soit vers la page dédiée -->
41<?php
42//for($i = $Albums->fileListCount - 1; $i >= 0; $i--)
43for($i = 0; $i < $Albums->fileListCount; $i++)
44{
45 // menu dessous la mouette
46 // comporte un lien si fichier html existe, sinon une ancre
47?>
48 <p><a class="<?= $linkDiscoChrono[$i] ?>" href="index.php?<?= $lienAlbum[$i] ?>" ><?= $Albums->fileList[$i]['annee'] ?> - <?= $Albums->fileList[$i]['titre'] ?></a></p>
49<?php
50}
51?>
52 </div>
53 </div>
54 </aside>
36 <article id="albumHTML" > 55 <article id="albumHTML" >
37 <?= $album ?> 56 <?= $album ?>
38 </article> 57 </article>
diff --git a/view/backup.php b/view/backup.php
index b4339e4..9fce805 100644
--- a/view/backup.php
+++ b/view/backup.php
@@ -25,12 +25,13 @@ if(isset($_GET['action']) && $_GET['action'] == 'sauvegarde')
25{ 25{
26 ob_start(); 26 ob_start();
27?> 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> 28 <h2>Sauvegarde complète</h2>
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> 29 <p>Toutes les données du sites (textes, photos) ont été rassemblées dans un unique fichier que vous pouvez conserver si vous le souhaitez sur votre ordinateur.</p>
30 <p>Ce fichier se nomme <i>melaineDATA.zip</i>.</p><br/> 30 <p>Vous pourrez l'utiliser plus tard pour restaurer le site dans l'état où il se trouve aujourd'hui ou pour récupérer des fichiers effacés ou perdus. Ceci est utile dans le cas d'un changement d'hébergement, d'un problème affectant le serveur, ou encore d'une mauvaise manipulation.</p>
31 <p>Ce fichier se nomme <i><?= $nomFichier ?></i>.</p>
31 32
32 <p><a href="data/melaineDATA.zip" style="border: 2px black ridge; padding: 2px;" >Cliquez ici pour télécharger</a></p><br/> 33 <button class="boutonBackup" ><a href="data/<?= $nomFichier ?>" >Le télécharger</a></button>
33 <p><a href="index.php?page=<?= $from ?>" >Retour au site</a></p> 34 <button class="boutonBackup" ><a class="boutonBackup" href="index.php?page=<?= $from ?>" >Retour au site</a></button>
34<?php 35<?php
35 $content = ob_get_clean(); 36 $content = ob_get_clean();
36 37
@@ -43,22 +44,26 @@ if(isset($_GET['action']) && $_GET['action'] == 'sauvegarde')
43<?php 44<?php
44 $erreur = ob_get_clean(); 45 $erreur = ob_get_clean();
45} 46}
47
46// page restauration 48// page restauration
49// attention à la taille maximale des fichiers téléchargés en fonction de l'hébergeur
50// si le fichier est trop gros il faut l'ouvrir en javascript en envoyer les données petit à petit
47elseif(isset($_GET['action']) && $_GET['action'] == 'restauration') 51elseif(isset($_GET['action']) && $_GET['action'] == 'restauration')
48{ 52{
49 ob_start(); 53 ob_start();
50?> 54?>
51 <p>Restauration des données à partir d'une sauvegarde.</p> 55 <h2>Restauration des données à partir d'une sauvegarde.</h2>
52 <p>Vous devez avoir créé un fichier nommé <i>melaineDATA.zip</i><br/> 56 <p>Vous devez avoir créé précédemment un fichier <i>melaineDATA.zip</i><br/>
53 en cliquant sur <i>Extraire les données</i>.</p><br/> 57 à la page <i>Sauvegarder les données.</i></p><br/>
54 58
55 <form action="index.php?from=<?= $from ?>&action=insertion" method="post" > 59 <form method="post" enctype="multipart/form-data" action="index.php?from=<?= $from ?>&action=restauration" >
56 <input type="file" accept=".zip" ><br/> 60 <input type="file" name="archive" accept=".zip" class="boutonBackup" ><br/>
57 61
58 <!-- demande de confirmation en JS au submit --> 62 <!-- demande de confirmation en JS au submit -->
59 63
60 <input type="submit" value="Injecter les données" ><br/><br/> 64 <input type="submit" class="boutonBackup" value="Valider" ><br/><br/>
61 <a href="index.php?page=<?= $from ?>" >Retour au site</a> 65 <?= $message ?>
66 <button class="boutonBackup" ><a href="index.php?page=<?= $from ?>" >Retour au site</a></button>
62 </form> 67 </form>
63<?php 68<?php
64 $content = ob_get_clean(); 69 $content = ob_get_clean();
@@ -69,6 +74,9 @@ elseif(isset($_GET['action']) && $_GET['action'] == 'restauration')
69 <head> 74 <head>
70 <meta charset="utf-8" /> 75 <meta charset="utf-8" />
71 <title><?= $title ?></title> 76 <title><?= $title ?></title>
77 <!-- <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> -->
78 <link rel="icon" type="image/png" href="public/mouette-logo.png" >
79 <link rel="stylesheet" type="text/css" href="public/css/normalize.css" />
72 <link rel="stylesheet" type="text/css" href="public/css/accueil.css" /> 80 <link rel="stylesheet" type="text/css" href="public/css/accueil.css" />
73<?php 81<?php
74if(isset($_GET['action']) && $_GET['action'] == 'restauration') 82if(isset($_GET['action']) && $_GET['action'] == 'restauration')
diff --git a/view/discographie.php b/view/discographie.php
index 904201a..e234f58 100644
--- a/view/discographie.php
+++ b/view/discographie.php
@@ -158,9 +158,6 @@ for($i = 0; $i < $Albums->fileListCount; $i++)
158 </p> 158 </p>
159 <?php 159 <?php
160 } 160 }
161?>
162 <!-- </article> -->
163<?php
164 161
165 // bouton pour modifier 162 // bouton pour modifier
166 if($_SESSION['admin'] == 1) 163 if($_SESSION['admin'] == 1)
diff --git a/view/menu.php b/view/menu.php
index c20acf9..4c9e341 100644
--- a/view/menu.php
+++ b/view/menu.php
@@ -4,7 +4,7 @@
4// variable $css 4// variable $css
5ob_start(); 5ob_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<?php 8<?php
9$css = ob_get_clean(); 9$css = ob_get_clean();
10 10
@@ -25,8 +25,8 @@ echo "\n\n";
25 </div> 25 </div>
26 </header> 26 </header>
27 <?php 27 <?php
28$header = ob_get_clean(); 28$header = ob_get_clean();
29 29
30// variable $content 30// variable $content
31ob_start(); 31ob_start();
32echo "\n"; 32echo "\n";
diff --git a/view/password.php b/view/password.php
index d63e986..1509f68 100644
--- a/view/password.php
+++ b/view/password.php
@@ -38,6 +38,9 @@ ob_start();
38 <input type="password" name="nouveauMotdepasse" required > 38 <input type="password" name="nouveauMotdepasse" required >
39 <br /><br /> 39 <br /><br />
40 <input type="submit" value="Valider" > 40 <input type="submit" value="Valider" >
41 <a href="index.php?page=<?= $_GET['from'] ?>" >
42 <input type="button" value="Annuler" />
43 </a>
41 </form> 44 </form>
42<?php 45<?php
43$formulaireModifMDP = ob_get_clean(); 46$formulaireModifMDP = ob_get_clean();
@@ -97,8 +100,7 @@ $warning = ob_get_clean();
97ob_start(); 100ob_start();
98?> 101?>
99 <p class="connexionFooter" > 102 <p class="connexionFooter" >
100 <i>N'oubliez de cliquer sur "déconnexion" quand vous aurez fini.</i><br /> 103 <i>N'oubliez de cliquer sur "déconnexion" quand vous aurez fini.</i>
101 <a href="index.php?page=<?= $_GET['from'] ?>" >Retour à la page précédente</a>
102 </p> 104 </p>
103 </div> 105 </div>
104 </body> 106 </body>
diff --git a/view/template-formulaires.php b/view/template-formulaires.php
index 7873500..d1d47c4 100644
--- a/view/template-formulaires.php
+++ b/view/template-formulaires.php
@@ -69,7 +69,9 @@ if($page_actuelle == 'discographie')
69 // barre d'outils à adapter au "custom build" 69 // barre d'outils à adapter au "custom build"
70 // la liste ici: lib/ckeditor5/src/ckeditor.js 70 // la liste ici: lib/ckeditor5/src/ckeditor.js
71 toolbar: { 71 toolbar: {
72 items: [ 'undo', 'redo', 'selectAll', '|', 'heading', '|', 'alignment', 'bulletedList', 'numberedList', 'todoList', 'blockQuote', 'horizontalLine', '-', 'bold', 'italic', 'underline', 72 items: [ 'undo', 'redo', 'selectAll', '|', 'heading', '|', 'alignment', 'bulletedList', 'numberedList',
73 //'todoList',
74 'blockQuote', 'horizontalLine', '-', 'bold', 'italic', 'underline',
73 //'strikethrough', 75 //'strikethrough',
74 '|', 76 '|',
75 //'fontFamily', 77 //'fontFamily',
@@ -149,8 +151,8 @@ if($page_actuelle == 'discographie')
149 // Headers supplémentaires envoyés avec la requête 151 // Headers supplémentaires envoyés avec la requête
150 // c'est ici qu'on installe les mécanismes de sécurités comme l'authentification et la protection au CSRF 152 // c'est ici qu'on installe les mécanismes de sécurités comme l'authentification et la protection au CSRF
151 headers: { 153 headers: {
152 'X-CSRF-TOKEN': 'CSRF-Token', 154 //'X-CSRF-TOKEN': 'CSRF-Token',
153 Authorization: 'Bearer <JSON Web Token>' 155 //Authorization: 'Bearer <JSON Web Token>'
154 } 156 }
155 }, 157 },
156 // formats acceptés par défaut: jpeg, png, gif, bmp, webp, tiff 158 // formats acceptés par défaut: jpeg, png, gif, bmp, webp, tiff
diff --git a/view/template.php b/view/template.php
index 9422736..4cf0e52 100644
--- a/view/template.php
+++ b/view/template.php
@@ -71,18 +71,18 @@ if($_SESSION['admin'] == 1)
71 71
72 <div id="modeAdmin" > 72 <div id="modeAdmin" >
73 <p>Vous êtes en mode administrateur. 73 <p>Vous êtes en mode administrateur.
74 <a id="options" >Options</a> 74 <!-- <button id="boutonOptions" >Options</button> -->
75 <a href="index.php?page=<?= $page_actuelle ?>&action=deconnexion" >Déconnexion</a> 75 <button><a href="index.php?page=<?= $page_actuelle ?>&action=deconnexion" >Déconnexion</a></button>
76 </p> 76 </p>
77 <div> 77 <div id="options" >
78 <p><a href="index.php?from=<?= $page_actuelle ?>&action=modif_mdp" > 78 <button class="boutonBackup" ><a href="index.php?from=<?= $page_actuelle ?>&action=modif_mdp" >
79 Changer le mot de passe de connexion.</a></p> 79 Changer de mot de passe</a></button>
80 <p><a href="index.php?from=<?= $page_actuelle ?>&action=sauvegarde" > 80 <button class="boutonBackup" ><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</a></button>
82 <p><a href="index.php?from=<?= $page_actuelle ?>&action=restauration" >Restaurer les données avec une sauvegarde.</a></p> 82 <button class="boutonBackup" ><a href="index.php?from=<?= $page_actuelle ?>&action=restauration" >Les restaurer avec une sauvegarde</a></button>
83 <p><a href="data/melainePHP.zip" > 83 <button class="boutonBackup" ><a href="data/melainePHP.zip" >
84 Télécharger le code PHP pour migration. 84 Télécharger le code PHP
85 </a></p> 85 </a></button>
86 </div> 86 </div>
87 </div> 87 </div>
88<?php 88<?php
diff --git a/à faire après livraison.txt b/à faire après livraison.txt
index c283c22..c151c0d 100644
--- a/à faire après livraison.txt
+++ b/à faire après livraison.txt
@@ -1,7 +1,24 @@
1Le reste du site 1remplacer le survol par un clic sur les smartphones
2
3changer de format de sauvegarde (y a mieux que zip)
4
5tri des albums selon l'année
6(avec des plages de timestamps?)
7
8Identification avec deux codes (login + mot de passe)
9
10pages manquantes
2 11
3liens sans http dans l'éditeur 12liens sans http dans l'éditeur
4 13
14zoom sur images
15voir ici pour une galerie en css
16https://www.guyom-design.com/blog/astuces/css/tuto_diapo_css/
17
18système d'onglets
19
20onglets AJAX
21
5plugin autosave 22plugin autosave
6 23
7Editeur "inline" ou "balloon block" 24Editeur "inline" ou "balloon block"
diff --git a/à faire avant livraison.txt b/à faire avant livraison.txt
deleted file mode 100644
index 7823545..0000000
--- a/à faire avant livraison.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1Sauvegarde des données !!
2
3menu chronologie page album
4
5remplacer l'encadré orange
6
7tri des albums selon l'année
8(avec des plages de timestamps?)
9
10Identification avec deux codes (login + mot de passe)