summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.php36
-rw-r--r--controller/Security.php6
-rw-r--r--controller/backup.php70
-rw-r--r--controller/ckeditor.php40
-rw-r--r--controller/installation.php38
-rw-r--r--dependances.php67
-rw-r--r--index.php2
-rw-r--r--lib/ckeditor5/build/index.html0
-rw-r--r--lib/ckeditor5/build/index.php3
-rw-r--r--lib/ckeditor5/build/translations/index.html0
-rw-r--r--lib/ckeditor5/build/translations/index.php3
-rw-r--r--lib/ckeditor5/index.html0
-rw-r--r--lib/ckeditor5/index.php3
-rw-r--r--lib/ckeditor5/src/index.html0
-rw-r--r--lib/ckeditor5/src/index.php3
-rw-r--r--lib/index.html0
-rw-r--r--lib/index.php3
-rw-r--r--model/Image.php3
-rw-r--r--public/accueil/index.html0
-rw-r--r--public/accueil/index.php3
-rw-r--r--public/css/accueil.css14
-rw-r--r--public/css/index.html0
-rw-r--r--public/css/index.php3
-rw-r--r--public/fonts/index.html0
-rw-r--r--public/fonts/index.php3
-rw-r--r--public/header_images/index.html0
-rw-r--r--public/header_images/index.php3
-rw-r--r--public/index.html0
-rw-r--r--public/index.php3
-rw-r--r--public/main.js21
-rw-r--r--public/menu/index.html0
-rw-r--r--public/menu/index.php3
-rw-r--r--view/menu.php2
-rw-r--r--view/template.php20
-rw-r--r--à faire après livraison.txt16
35 files changed, 252 insertions, 116 deletions
diff --git a/config.php b/config.php
deleted file mode 100644
index 946763a..0000000
--- a/config.php
+++ /dev/null
@@ -1,36 +0,0 @@
1<?php
2// à adapter au serveur apache pour attraper les erreurs 404
3// permet d'adapter le contenu du .htaccess
4$racineDuSite = '/var/www/melaine';
5
6// bibliothèque utilisée pour créer les miniatures
7// écrire 'gd' ou 'imagick'
8$imageLibrary = 'imagick';
9
10// format des sauvegardes à la création
11// écrire 'zip' ou 'tar' ou 'phar'
12$archiveFormat = 'zip';
13// seul zip est supporté pour l'instant
14
15// mode de stockage des données
16// écrire 'files' ou 'database'
17$storage = 'files';
18// laisser 'files'!!
19// l'utilisation d'une BDD n'est pas prévue pour l'instant
20
21
22// actuellement inutile
23// taille max des fichiers dans le php.ini (défaut = 2M)
24/*function return_bytes ($size_str)
25{
26 switch (substr ($size_str, -1))
27 {
28 case 'M': case 'm': return (int)$size_str * 1048576;
29 case 'K': case 'k': return (int)$size_str * 1024;
30 case 'G': case 'g': return (int)$size_str * 1073741824;
31 default: return $size_str;
32 }
33}
34$maxWeight = return_bytes(ini_get('upload_max_filesize'));*/
35/*ini_set('upload_max_filesize', '3M');
36echo(ini_get('upload_max_filesize')); die();*/
diff --git a/controller/Security.php b/controller/Security.php
index c53cdc6..15c44b2 100644
--- a/controller/Security.php
+++ b/controller/Security.php
@@ -1,9 +1,6 @@
1<?php 1<?php
2// controller/Security.php 2// controller/Security.php
3 3
4// sécurité faille XSS avec htmLawed
5require('lib/htmlawed/htmLawed.php');
6
7class Security 4class Security
8{ 5{
9 private static $configHtmLawed = array( 6 private static $configHtmLawed = array(
@@ -16,6 +13,9 @@ class Security
16 13
17 public static function secureString(string $chaine): string 14 public static function secureString(string $chaine): string
18 { 15 {
16 // sécurité faille XSS avec htmLawed
17 require('lib/htmlawed/htmLawed.php');
18
19 $chaine = htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed); 19 $chaine = htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed);
20 $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) 20 $chaine = trim($chaine); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur)
21 return $chaine; 21 return $chaine;
diff --git a/controller/backup.php b/controller/backup.php
index 1477c55..2cfccaa 100644
--- a/controller/backup.php
+++ b/controller/backup.php
@@ -103,55 +103,63 @@ function restaurer($from)
103{ 103{
104 $title = 'Restauration des données'; 104 $title = 'Restauration des données';
105 $message = ''; 105 $message = '';
106 global $archiveFormat;
106 107
107 // recharger la même page en écrivant les données 108 // recharger la même page en écrivant les données
108 if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0) 109 if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0)
109 { 110 {
110 // détecter le format (zip ou autre) 111 // détecter le format (zip ou autre)
112 if($archiveFormat == 'zip')
113 {
114 // une copie du zip est conservée dans data/ au cas où
115 move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']);
116 chmod('data/' . $_FILES['archive']['name'], 0666);
111 117
112 // une copie du zip est conservée dans data/ au cas où 118 $nomFichier = 'data/' . $_FILES['archive']['name'];
113 move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']);
114 chmod('data/' . $_FILES['archive']['name'], 0666);
115
116 $nomFichier = 'data/' . $_FILES['archive']['name'];
117 119
118 // extraction 120 // extraction
119 try 121 try
120 { 122 {
121 $Zip = new ZipArchive(); 123 $Zip = new ZipArchive();
122 } 124 }
123 catch (Throwable $e) // l'extension zip n'est pas activée 125 catch (Throwable $e) // l'extension zip n'est pas activée
124 {
125 echo($e);
126 die();
127 }
128 if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE)
129 {
130 $j = 0;
131 for($i = 0; $i < $Zip->numFiles; $i++)
132 { 126 {
133 $nomEntree = $Zip->getNameIndex($i); 127 echo($e);
134 if($Zip->extractTo('.', $nomEntree) === TRUE) 128 die();
129 }
130 if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE)
131 {
132 $j = 0;
133 for($i = 0; $i < $Zip->numFiles; $i++)
135 { 134 {
136 $j++; 135 $nomEntree = $Zip->getNameIndex($i);
136 if($Zip->extractTo('.', $nomEntree) === TRUE)
137 {
138 $j++;
139 }
140 else
141 {
142 $message = '<p style="color: red;" >Erreur: extraction du zip impossible.</p>';
143 }
144 chmod($nomEntree, 0666);
137 } 145 }
138 else 146
147 if($j == $Zip->numFiles)
139 { 148 {
140 $message = '<p style="color: red;" >Erreur: extraction du zip impossible.</p>'; 149 $message = '<p style="color: red;" >Restauration ussie !!</p>';
141 } 150 }
142 chmod($nomEntree, 0666); 151 $Zip->close();
143 } 152 }
144 153 else
145 if($j == $Zip->numFiles)
146 { 154 {
147 $message = '<p style="color: red;" >Restauration réussie !!</p>'; 155 // mauvais fichier
156 $message = '<p style="color: red;" >Erreur: Impossible d\'ouvrir l\'archive Zip."</p>';
148 } 157 }
149 $Zip->close();
150 } 158 }
151 else 159 else
152 { 160 {
153 // mauvais fichier 161 // pas de module zip
154 $message = '<p style="color: red;" >Erreur: Impossible d\'ouvrir l\'archive Zip."</p>'; 162 $message = '<p style="color: red" >Erreur: Veuillez activer l\'extension zip dans le php.ini pour pouvoir gérer les sauvegardes.</p>';
155 } 163 }
156 } 164 }
157 elseif(isset($_FILES['archive']) && $_FILES['archive']['error'] != 0) 165 elseif(isset($_FILES['archive']) && $_FILES['archive']['error'] != 0)
diff --git a/controller/ckeditor.php b/controller/ckeditor.php
index 4b4297a..d6ea8ad 100644
--- a/controller/ckeditor.php
+++ b/controller/ckeditor.php
@@ -47,6 +47,9 @@ function submitCKeditor()
47 if(isset($_POST['contenu'])) // optionnel pour discographie 47 if(isset($_POST['contenu'])) // optionnel pour discographie
48 { 48 {
49 $contenu = Security::secureString($_POST['contenu']); 49 $contenu = Security::secureString($_POST['contenu']);
50
51 // liens sans http:// devant
52 $contenu = fixLinks($contenu);
50 53
51 // récupérer les liens multimedia 54 // récupérer les liens multimedia
52 //require("media.php"); 55 //require("media.php");
@@ -142,14 +145,29 @@ function submitCKeditor()
142 145
143 146
144// lien sans http:// 147// lien sans http://
145// un clic sur un lien dans l'éditeur affiche une infobulle montrant l'adresse cible du lien si celle-ci a déjà été précisée 148// si une adresse est de type "domaine.fr" sans le http:// devant, le comportement des navigateurs est de rechercher un fichier comme si mon adresse commençait par file://
146// il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé 149// tomber ainsi sur une page d'erreur est parfaitement déroutant
147// toutefois si cette adresse est de type "domaine.fr" (sans http:// devant), le navigateur ne va pas rechercher un site mais un fichier comme si mon adresse était de type file:///fichier 150// une erreur 404 est détectée et le visiteur redirigé, mais ça ne règle pas le problème
148// tomber ainsi sur une page d'erreur est déroutant: 151// 2ème problème, en train d'écrire un article, l'utilisateur clique sur ce lien qu'il vient de créer et qui apparaît dans l'infobulle, un nouvelle onglet apparaît
149// "ai-je perdu le texte que j'étais en train de taper?"" 152// solution: fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>';
150// solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess 153// le .htaccess doit pour ça détecter que l'erreur 404 est particulière
151// solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; 154
152// pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... 155function fixLinks($data)
153 156{
154function cleanHTML($contenu) 157 // regex pour détecter les balises <a>, analyser les liens à l'interieur et les modifier si nécessaire
155{} 158 $pattern = '#<a href=".*">.*</a>#';
159
160 if(preg_match($pattern, $data))
161 {}
162
163 //$remplacement = 'http://$0';
164 //$data = preg_replace($pattern, $remplacement, $data);
165
166 // contrairement à ce qui dit la doc
167 // https://www.php.net/manual/fr/filter.filters.validate.php
168 // une adresse du type "domaine.fr" ne passe pas le filtre
169 // il renvoie false, ce qui nous arrange ici!
170 //var_dump(filter_var($link, FILTER_VALIDATE_URL));
171
172 return($data);
173}
diff --git a/controller/installation.php b/controller/installation.php
index e8b1af8..0bd56c2 100644
--- a/controller/installation.php
+++ b/controller/installation.php
@@ -68,10 +68,19 @@ function installation()
68 require('view/backup.php'); 68 require('view/backup.php');
69 exit(); 69 exit();
70 } 70 }
71 if(!file_exists('data/index.html')) 71
72 function createIndexPHP($path, $droitsFichiers)
73 {
74 $content = "<?php\nheader('Location: ../index.php');\nexit();";
75 $file = fopen($path, 'w');
76 fputs($file, $content);
77 fclose($file);
78 chmod($path, $droitsFichiers);
79 }
80
81 if(!file_exists('data/index.php'))
72 { 82 {
73 touch('data/index.html'); 83 createIndexPHP('data/index.php', $droitsFichiers);
74 chmod('data/index.html', $droitsFichiers);
75 } 84 }
76 85
77 $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives'); 86 $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives');
@@ -82,30 +91,27 @@ function installation()
82 mkdir('data/' . $page); 91 mkdir('data/' . $page);
83 chmod('data/' . $page, $droitsDossiers); 92 chmod('data/' . $page, $droitsDossiers);
84 } 93 }
85 if(!file_exists('data/' . $page . 'index.html')) 94 if(!file_exists('data/' . $page . '/index.php'))
86 { 95 {
87 touch('data/' . $page . '/index.html'); 96 createIndexPHP('data/' . $page . '/index.php', $droitsFichiers);
88 chmod('data/' . $page . '/index.html', $droitsFichiers);
89 } 97 }
90 if(!file_exists('data/' . $page . '/html')) 98 if(!file_exists('data/' . $page . '/html'))
91 { 99 {
92 mkdir('data/' . $page . '/html'); 100 mkdir('data/' . $page . '/html');
93 chmod('data/' . $page . '/html', $droitsDossiers); 101 chmod('data/' . $page . '/html', $droitsDossiers);
94 } 102 }
95 if(!file_exists('data/' . $page . '/html/index.html')) 103 if(!file_exists('data/' . $page . '/html/index.php'))
96 { 104 {
97 touch('data/' . $page . '/html/index.html'); 105 createIndexPHP('data/' . $page . '/html/index.php', $droitsFichiers);
98 chmod('data/' . $page . '/html/index.html', $droitsFichiers);
99 } 106 }
100 if(!file_exists('data/' . $page . '/images')) 107 if(!file_exists('data/' . $page . '/images'))
101 { 108 {
102 mkdir('data/' . $page . '/images'); 109 mkdir('data/' . $page . '/images');
103 chmod('data/' . $page . '/images', $droitsDossiers); 110 chmod('data/' . $page . '/images', $droitsDossiers);
104 } 111 }
105 if(!file_exists('data/' . $page . '/images/index.html')) 112 if(!file_exists('data/' . $page . '/images/index.php'))
106 { 113 {
107 touch('data/' . $page . '/images/index.html'); 114 createIndexPHP('data/' . $page . '/images/index.php', $droitsFichiers);
108 chmod('data/' . $page . '/images/index.html', $droitsFichiers);
109 } 115 }
110 // if(!file_exists('data/' . $page . '/multimedia')) 116 // if(!file_exists('data/' . $page . '/multimedia'))
111 // { 117 // {
@@ -119,10 +125,9 @@ function installation()
119 mkdir('data/discographie/json'); 125 mkdir('data/discographie/json');
120 chmod('data/discographie/json', $droitsDossiers); 126 chmod('data/discographie/json', $droitsDossiers);
121 } 127 }
122 if(!file_exists('data/discographie/json/index.html')) 128 if(!file_exists('data/discographie/json/index.php'))
123 { 129 {
124 touch('data/discographie/json/index.html'); 130 createIndexPHP('data/discographie/json/index.php', $droitsFichiers);
125 chmod('data/discographie/json/index.html', $droitsFichiers);
126 } 131 }
127 if(!file_exists('data/discographie/images-mini')) 132 if(!file_exists('data/discographie/images-mini'))
128 { 133 {
@@ -131,8 +136,7 @@ function installation()
131 } 136 }
132 if(!file_exists('data/discographie/images-mini/index.html')) 137 if(!file_exists('data/discographie/images-mini/index.html'))
133 { 138 {
134 touch('data/discographie/images-mini/index.html'); 139 createIndexPHP('data/discographie/images-mini/index.php', $droitsFichiers);
135 chmod('data/discographie/images-mini/index.html', $droitsFichiers);
136 } 140 }
137 // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers 141 // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers
138 142
diff --git a/dependances.php b/dependances.php
new file mode 100644
index 0000000..cd42e3f
--- /dev/null
+++ b/dependances.php
@@ -0,0 +1,67 @@
1<?php
2// dependances.php
3
4// mentions légales dans le "footer"
5// - entreprise
6// n° RCS
7// telephone
8// n°identification TVA ?
9// hébergeur
10
11
12// mode de stockage des données
13// écrire 'files' ou 'database'
14$storage = 'files';
15// laisser 'files'!!
16// l'utilisation d'une BDD n'est pas prévue pour l'instant
17
18
19// à adapter au serveur apache pour attraper les erreurs 404
20// permet d'adapter le contenu du .htaccess
21//$racineDuSite = '/var/www/melaine';
22$racineDusite = 'getcwd()';
23
24// bibliothèque utilisée pour créer les miniatures
25if(extension_loaded("imagick"))
26{
27 $imageLibrary = 'imagick';
28}
29elseif(extension_loaded('gd'))
30{
31 $imageLibrary = 'gd';
32}
33else
34{
35 echo('<script>alert(\'Erreur: Une de ces extensions de PHP est nécessaire: imagemagick ou GD. Veuillez activer une des deux dans le fichier php.ini ou installer le paquet php-imagick ou php-gd.\');</script>');
36}
37
38// format des sauvegardes à la création
39if(extension_loaded("zip"))
40{
41 $archiveFormat = 'zip';
42}
43else
44{
45 echo('<script>alert(\'Erreur: PHP doit être capable de gérer les archives. Veuillez activer zip dans le fichier php.ini.\');</script>');
46}
47
48
49// bout de code à déplacer dans controller/backup.php
50// taille max des fichiers dans le php.ini (défaut = 2M)
51$maxWeight = ini_get('upload_max_filesize');
52
53// on utilisera cette valeur dans "main.js" pour envoyer
54// les fichiers un par un quand un zip est trop grand
55
56// conversion des mégas en octets
57/*function return_bytes ($size_str)
58{
59 switch (substr ($size_str, -1))
60 {
61 case 'M': case 'm': return (int)$size_str * 1048576;
62 case 'K': case 'k': return (int)$size_str * 1024;
63 case 'G': case 'g': return (int)$size_str * 1073741824;
64 default: return $size_str;
65 }
66}*/
67/*$maxWeight = return_bytes(ini_get('upload_max_filesize'));*/
diff --git a/index.php b/index.php
index ea50afe..008e4a2 100644
--- a/index.php
+++ b/index.php
@@ -15,7 +15,7 @@ if(!empty($_SESSION['erreur']))
15} 15}
16 16
17// fichier destiné à l'utilisateur 17// fichier destiné à l'utilisateur
18require('config.php'); 18require('dependances.php');
19 19
20// au premier démarrage du site 20// au premier démarrage du site
21// l'explication des éventuels problèmes de droits en lecture/écriture est à chercher ici: 21// l'explication des éventuels problèmes de droits en lecture/écriture est à chercher ici:
diff --git a/lib/ckeditor5/build/index.html b/lib/ckeditor5/build/index.html
deleted file mode 100644
index e69de29..0000000
--- a/lib/ckeditor5/build/index.html
+++ /dev/null
diff --git a/lib/ckeditor5/build/index.php b/lib/ckeditor5/build/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/lib/ckeditor5/build/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/lib/ckeditor5/build/translations/index.html b/lib/ckeditor5/build/translations/index.html
deleted file mode 100644
index e69de29..0000000
--- a/lib/ckeditor5/build/translations/index.html
+++ /dev/null
diff --git a/lib/ckeditor5/build/translations/index.php b/lib/ckeditor5/build/translations/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/lib/ckeditor5/build/translations/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/lib/ckeditor5/index.html b/lib/ckeditor5/index.html
deleted file mode 100644
index e69de29..0000000
--- a/lib/ckeditor5/index.html
+++ /dev/null
diff --git a/lib/ckeditor5/index.php b/lib/ckeditor5/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/lib/ckeditor5/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/lib/ckeditor5/src/index.html b/lib/ckeditor5/src/index.html
deleted file mode 100644
index e69de29..0000000
--- a/lib/ckeditor5/src/index.html
+++ /dev/null
diff --git a/lib/ckeditor5/src/index.php b/lib/ckeditor5/src/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/lib/ckeditor5/src/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/lib/index.html b/lib/index.html
deleted file mode 100644
index e69de29..0000000
--- a/lib/index.html
+++ /dev/null
diff --git a/lib/index.php b/lib/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/lib/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/model/Image.php b/model/Image.php
index 4cceb0f..e8bf3f9 100644
--- a/model/Image.php
+++ b/model/Image.php
@@ -64,9 +64,6 @@ class Image
64 64
65 if($imageLibrary == 'gd') 65 if($imageLibrary == 'gd')
66 { 66 {
67 // des infos sur GD
68 //print_r(gd_info());
69
70 // cette fonction fonctionne pour tous les formats 67 // cette fonction fonctionne pour tous les formats
71 $source = imagecreatefromstring(file_get_contents($this->path . $_FILES['upload']['name'])); 68 $source = imagecreatefromstring(file_get_contents($this->path . $_FILES['upload']['name']));
72 69
diff --git a/public/accueil/index.html b/public/accueil/index.html
deleted file mode 100644
index e69de29..0000000
--- a/public/accueil/index.html
+++ /dev/null
diff --git a/public/accueil/index.php b/public/accueil/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/accueil/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/public/css/accueil.css b/public/css/accueil.css
index 0afffeb..7d75e11 100644
--- a/public/css/accueil.css
+++ b/public/css/accueil.css
@@ -249,6 +249,14 @@ form
249{ 249{
250 display: flex; 250 display: flex;
251}*/ 251}*/
252footer
253{
254 margin-top: 20px;
255 padding: 10px 30px;
256 font-size: 90%;
257 font-style: italic;
258 background-color: #9fa6cf;
259}
252 260
253 261
254/* PC, y compris vieux écrans 800x600 */ 262/* PC, y compris vieux écrans 800x600 */
@@ -297,7 +305,7 @@ form
297 height: 596px; 305 height: 596px;
298 } 306 }
299 307
300 #contenu, footer 308 #contenu
301 { 309 {
302 width: 630px; 310 width: 630px;
303 margin: auto; 311 margin: auto;
@@ -377,7 +385,7 @@ form
377 margin: auto; 385 margin: auto;
378 } 386 }
379 387
380 #contenu, footer 388 #contenu
381 { 389 {
382 width: 480px; 390 width: 480px;
383 margin: auto; 391 margin: auto;
@@ -472,7 +480,7 @@ form
472 height: 316px; 480 height: 316px;
473 } 481 }
474 482
475 #contenu, footer 483 #contenu
476 { 484 {
477 width: 320px; 485 width: 320px;
478 margin: auto; 486 margin: auto;
diff --git a/public/css/index.html b/public/css/index.html
deleted file mode 100644
index e69de29..0000000
--- a/public/css/index.html
+++ /dev/null
diff --git a/public/css/index.php b/public/css/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/css/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/public/fonts/index.html b/public/fonts/index.html
deleted file mode 100644
index e69de29..0000000
--- a/public/fonts/index.html
+++ /dev/null
diff --git a/public/fonts/index.php b/public/fonts/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/fonts/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/public/header_images/index.html b/public/header_images/index.html
deleted file mode 100644
index e69de29..0000000
--- a/public/header_images/index.html
+++ /dev/null
diff --git a/public/header_images/index.php b/public/header_images/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/header_images/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index e69de29..0000000
--- a/public/index.html
+++ /dev/null
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/public/main.js b/public/main.js
index f3fe6f0..b6021d6 100644
--- a/public/main.js
+++ b/public/main.js
@@ -86,19 +86,34 @@ function copierAdresse()
86 86
87function nouveauMotdepasse(page) 87function nouveauMotdepasse(page)
88{ 88{
89 confirm('Le mot de passe a été modifié.'); 89 alert('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} 91}
92 92
93// envoie gros fichier ZIP 93// envoie gros fichier ZIP
94// si le fichier ne passe pas la limite de l'hébergeur (php.ini) 94// si le fichier ne passe pas la limite de l'hébergeur (php.ini)
95// l'ouvrir en javascript chaque envoyer progressivement 95// l'ouvrir en javascript chaque envoyer progressivement
96function extraireZIPetEnvoyerUnParUn() 96function getFileInfo()
97{
98 // l'idi est dans le formulaire
99 var name = document.getElementById('myFile').files[0].name;
100 var size = document.getElementById('myFile').files[0].size;
101 var type = document.getElementById('myFile').files[0].type;
102 var date = document.getElementById('myFile').files[0].lastModifiedDate;
103
104 var infos = name+" "+size+" "+type+" "+date;
105 alert(infos)
106 return(infos);
107}
108
109function extraireZIPetEnvoyerUnParUn(maxPHPiniWeight, archiveFormat)
97{ 110{
98 // taille du fichier? 111 // taille du fichier?
112 var fileInfos = getFileInfo();
113 alert(fileInfos);
99 114
100 // taille limite autorisée? 115 // taille limite autorisée?
101 // obtenue avant avec phpinfo() puis insérée dans le code JS 116 // obtenue par php avec: ini_get('upload_max_filesize');
102 117
103 // si le fichier est plus gros que la limite: 118 // si le fichier est plus gros que la limite:
104 // extraire l'archive 119 // extraire l'archive
diff --git a/public/menu/index.html b/public/menu/index.html
deleted file mode 100644
index e69de29..0000000
--- a/public/menu/index.html
+++ /dev/null
diff --git a/public/menu/index.php b/public/menu/index.php
new file mode 100644
index 0000000..f67f1d7
--- /dev/null
+++ b/public/menu/index.php
@@ -0,0 +1,3 @@
1<?php
2header('Location: ../index.php');
3exit();
diff --git a/view/menu.php b/view/menu.php
index f752d09..2e07a94 100644
--- a/view/menu.php
+++ b/view/menu.php
@@ -31,7 +31,6 @@ $header = ob_get_clean();
31ob_start(); 31ob_start();
32echo "\n"; 32echo "\n";
33?> 33?>
34 <div id="contenu" >
35 <div id="colonne1" > 34 <div id="colonne1" >
36 <a href="index.php?page=liens" > 35 <a href="index.php?page=liens" >
37 <div id="canoe" ></div> 36 <div id="canoe" ></div>
@@ -69,6 +68,5 @@ echo "\n";
69 68
70 <a id="hey_ho" href="index.php?page=discographie" ></a> 69 <a id="hey_ho" href="index.php?page=discographie" ></a>
71 </div> 70 </div>
72 </div>
73<?php 71<?php
74$content = ob_get_clean(); \ No newline at end of file 72$content = ob_get_clean(); \ No newline at end of file
diff --git a/view/template.php b/view/template.php
index 0b084f6..313e35a 100644
--- a/view/template.php
+++ b/view/template.php
@@ -53,7 +53,7 @@ if($page != "accueil")
53} 53}
54 54
55// lien vers le mode admin 55// lien vers le mode admin
56if($_SESSION['admin'] == 0) 56if($_SESSION['admin'] == 0 && isset($_GET['page']))
57{ 57{
58?> 58?>
59 <div id="lienModeAdmin" > 59 <div id="lienModeAdmin" >
@@ -87,6 +87,24 @@ if($_SESSION['admin'] == 1)
87 </div> 87 </div>
88<?php 88<?php
89} 89}
90// mentions légales
91// à déplacer dans une page dédiée
92if(isset($page) && $page != 'accueil')
93{
94?>
95 <footer>
96 <p>Melaine Favennec<br/>
97 Ty Glaz, 29120 Plomeur<br/>
98 Tel: ...<br/>
99 SIRET: 318 152 071</p>
100 <p>Directeur/codirecteur de la publication: ...</p>
101 <p>Ce site a été créé par Florant ... et utilise des illustrations de François Bourgeon.</p>
102 <p>Il a été rénové et est actuellement hébergé par Paul Jusot.<br/>
103 2A, rue de l'île de Man<br/>
104 SIRET: 814 320 610</p>
105 </footer>
106<?php
107}
90?> 108?>
91 </div> 109 </div>
92 </body> 110 </body>
diff --git a/à faire après livraison.txt b/à faire après livraison.txt
index f42f6f1..b8de449 100644
--- a/à faire après livraison.txt
+++ b/à faire après livraison.txt
@@ -1,12 +1,20 @@
1rassembler les pages
2presse (fille qui tombe) dans melaine
3ateliers (cheval) dans archives (blonde)
4remplacer concerts (sirene) par "écouter"
5une page mentions légales (dans fille qui tombe ou cheval)
6
1liens sans http dans l'éditeur 7liens sans http dans l'éditeur
2 8
3dans installation.php, utiliser la racine dans config.php pour adapter le .htaccess 9dans installation.php, utiliser la racine dans config.php pour adapter le .htaccess (si c'est possible)
4 10
5réduire les droits des dossiers 11réduire les droits des dossiers
6 12
7bouton pour remonter: remplacer le lien par du JS pour ne pas recharger la page 13bouton pour remonter: remplacer le lien par du JS pour ne pas recharger la page
8 14
9captcha dans password.php 15captcha dans password.php?
16
17sauvegardes automatiques
10 18
11Zoom sur images (articles) 19Zoom sur images (articles)
12 20
@@ -39,7 +47,7 @@ pagination + AJAX
39 47
40système d'onglets avec AJAX: changement de page sans recharger 48système d'onglets avec AJAX: changement de page sans recharger
41 49
42plugin autosave 50plugin autosave de l'éditeur
43 51
44Editeur "inline" ou "balloon block" 52Editeur "inline" ou "balloon block"
45 53
@@ -85,5 +93,3 @@ Version avec base de données
85Site bilingue (nécessite la base de données) 93Site bilingue (nécessite la base de données)
86 94
87Editeur tout AJAX (pas juste les images) 95Editeur tout AJAX (pas juste les images)
88
89Utilisation de l'éditeur sans recharger la page (en