From abd968a1c573b1862bd0728f0b7b6a88e307900a Mon Sep 17 00:00:00 2001
From: polo
Date: Mon, 28 Feb 2022 02:15:31 +0100
Subject: sauvegarde zip
---
config.php | 5 +
controller/admin.php | 3 +-
controller/backup.php | 188 ++++++++++++++++++----------
controller/visitor.php | 38 ++++--
index.php | 11 +-
model/Album.php | 33 +++--
model/Article.php | 8 +-
model/Image.php | 5 +-
public/css/accueil.css | 99 ++++++++++-----
public/css/menu.css | 54 ++++----
public/main.js | 24 +++-
view/album.php | 21 +++-
view/backup.php | 32 +++--
view/discographie.php | 3 -
view/menu.php | 6 +-
view/password.php | 6 +-
view/template-formulaires.php | 8 +-
view/template.php | 22 ++--
"\303\240 faire apr\303\250s livraison.txt" | 19 ++-
"\303\240 faire avant livraison.txt" | 10 --
20 files changed, 397 insertions(+), 198 deletions(-)
delete mode 100644 "\303\240 faire avant livraison.txt"
diff --git a/config.php b/config.php
index fad4c16..be894e9 100644
--- a/config.php
+++ b/config.php
@@ -3,6 +3,11 @@
// écrire 'gd' ou 'imagick'
$imageLibrary = 'imagick';
+// taille max des fichiers à adapter au php.ini
+$maxWeight = 2000000;
+
// mode de stockage des données
// écrire 'files' ou 'database'
$storage = 'files';
+// laisser 'files'!!
+// 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)
{
if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html'))
{
- $lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode'];
+ /*$lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode'];*/
+ $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode'];
$avecLien[$i] = true;
$linkDiscoChrono[$i] = 'linkChrono'; // css
}
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 @@
open($chemin . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) {
- exit("Impossible d'ouvrir le fichier " . $chemin . $nomFichier . " .\n");
- }
-
- // ajout des fichiers
- // chemin complet = data/"pages"/"html ou images"/"tous les fichiers"
- $zip->addGlob($chemin . '*/*/*', 0, array(''));
- $zip->close();
-
- // pour pouvoir manipuler le fichier depuis filezilla ou ssh
- chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres
-
- require('view/backup.php');
-}
-
-function restaurer($from)
-{
- $title = 'Restauration des données';
-
- $chemin = "data/";
- $nomFichier = "melaineDATA.zip";
+ createZip($cheminDestination, $nomFichier, $dossiersCibles);
require('view/backup.php');
}
-// inutile
function creerMelainePHP()
{
+ $cheminDestination = 'data/';
$nomFichier = "melainePHP.zip";
+ // tous les dossiers sauf data et .git
+ $dossiersCibles = ['model', 'view', 'controller', 'public', 'lib'];
+ $fichiersALaRacine = ['*.php', '.htaccess', '*.txt']; // robots?
+
+ createZip($cheminDestination, $nomFichier, $dossiersCibles, $fichiersALaRacine);
+}
- try
- {
- $Zip = new ZipArchive();
- }
- catch (Throwable $e) // absence de l'extension zip
- {
- echo($erreur);
- die();
- }
- if ($Zip->open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE)
- {
- exit("Impossible d'ouvrir le fichier " . $nomFichier . " .\n");
- }
+// les deux premiers paramètres concernent le fichier créé
+// le quatrième est optionnel et concerne les fichiers à la racine
+function createZip($destinationPath, $zipFileName, array $targetDirectories, array $allPattern = [])
+{
+ try
+ {
+ $Zip = new ZipArchive();
+ }
+ catch (Throwable $e) // l'extension zip n'est pas activée
+ {
+ echo($e);
+ die();
+ }
+
+ // note: j'ai utilisé l'option ZipArchive::OVERWRITE,
+ // ZipArchive::FL_OVERWRITE n'apparaît qu'avec PHP 8
+ if ($Zip->open($destinationPath . $zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE)
+ {
+ exit("Impossible de créer ou d'ouvrir ou créer le fichier data/" . $zipFileName . ".
+ Il est possible que ce fichier existe déjà et soit interdit en écriture.
+ Retour au site
");
+ }
- // fichiers à la racine
- $Zip->addGlob('*.php', 0, array(''));
- $Zip->addGlob('.htaccess', 0, array(''));
- $Zip->addGlob('*.txt', 0, array(''));
+ $compteur = 0;
- // tous les dossiers sauf data et .git
- $listeDossiers = array('model', 'view', 'controller', 'public', 'lib');
- foreach($listeDossiers as $path)
+ // recherche récursive dans les dossiers dans $directories
+ foreach($targetDirectories as $path)
{
- // les deux lignes suivantes me dépassent un peu,
- // mais ça marche et c'est comme ça qu'il faut faire
+ // les deux lignes suivantes reviennent à utiliser le paramètre "-r" dans la console
$directory = new RecursiveDirectoryIterator($path);
$iterator = new RecursiveIteratorIterator($directory);
@@ -87,13 +67,93 @@ function creerMelainePHP()
// chemins inutiles . et ..
if($info->getFilename() != "." && $info->getFilename() != "..")
{
- //var_dump($info->getPathname());
$Zip->addGlob($info->getPathname(), 0, array(''));
+ $compteur++;
}
}
}
+ // recherche à la racine avec des pattern de noms de fichiers
+ // possibilité d'un tableau vide (paramètre optionnel)
+ foreach($allPattern as $onePattern)
+ {
+ $Zip->addGlob($onePattern, 0, array(''));
+ }
+
$Zip->close();
- chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal)
-}
\ No newline at end of file
+ if($compteur > 0)
+ {
+ chmod($destinationPath . $zipFileName, 0666); // en octal
+ }
+ else
+ {
+ $_SESSION['erreur'] = "Extraction des données impossible, le site entier est vide.";
+ }
+}
+
+
+function restaurer($from)
+{
+ $title = 'Restauration des données';
+ $message = '';
+
+ // recharger la même page en écrivant les données
+ if(isset($_FILES['archive']) && $_FILES['archive']['error'] == 0)
+ {
+ // une copie du zip est conservée dans data/ au cas où
+ move_uploaded_file($_FILES['archive']['tmp_name'], 'data/' . $_FILES['archive']['name']);
+ chmod('data/' . $_FILES['archive']['name'], 0666);
+
+ $nomFichier = 'data/' . $_FILES['archive']['name'];
+
+ // extraction
+ try
+ {
+ $Zip = new ZipArchive();
+ }
+ catch (Throwable $e) // l'extension zip n'est pas activée
+ {
+ echo($e);
+ die();
+ }
+
+ //var_dump($Zip->open($nomFichier, ZipArchive::RDONLY));
+ //var_dump(ZipArchive::ER_NOENT);
+
+ if($Zip->open($nomFichier, ZipArchive::RDONLY) === TRUE)
+ {
+ $j = 0;
+ for($i = 0; $i < $Zip->numFiles; $i++)
+ {
+ $nomEntree = $Zip->getNameIndex($i);
+ if($Zip->extractTo('.', $nomEntree) === TRUE)
+ {
+ $j++;
+ }
+ else
+ {
+ $message = 'Erreur: extraction du zip impossible.
';
+ }
+ chmod($nomEntree, 0666);
+ }
+
+ if($j == $Zip->numFiles)
+ {
+ $message = 'Restauration réussie !!
';
+ }
+ $Zip->close();
+ }
+ else
+ {
+ // mauvais fichier
+ $message = 'Erreur: Impossible d\'ouvrir l\'archive Zip."
';
+ }
+ }
+ elseif(isset($_FILES['archive']) && $_FILES['archive']['error'] != 0)
+ {
+ $message = 'Erreur: Le fichier n\'a pas pu être téléchargé correctement."
';
+ }
+
+ require('view/backup.php');
+}
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()
// modèle
$Albums = new Album($page_actuelle);
- $Albums->makeFileList();
+ //var_dump($Albums->fileList); die();
// on récupère tout: JSON, HTML, noms et chemins des fichiers
$Albums->readAll();
@@ -88,19 +88,22 @@ function discoVisitor()
/*$lienAlbum = [];
$avecLien = [];
$linkDiscoChrono = [];*/
+
+ // liens vers les albums
for($i = 0; $i < $Albums->fileListCount; $i++)
{
if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html'))
{
- $lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode'];
+ /*$lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode'];*/
+ $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode'];
$avecLien[$i] = true;
- $linkDiscoChrono[$i] = 'linkChrono'; // css
+ $linkDiscoChrono[$i] = 'linkChrono'; // pour le css
}
else
{
$lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre'];
$avecLien[$i] = false;
- $linkDiscoChrono[$i] = 'noLinkChrono'; // css
+ $linkDiscoChrono[$i] = 'noLinkChrono'; // pour le css
}
$lienBoutonModif[$i] = 'page=discographie&action=edition&file_code=' . $Albums->fileList[$i]['fileCode'];
}
@@ -112,12 +115,31 @@ function discoVisitor()
}
// page d'un album
-function album($fileCode, $albumName)
+function album($fileCode)
{
- $page_actuelle = 'discographie';
- $title = $albumName;
+ $page_actuelle = 'discographie'; // ???
+
+ $Albums = new Album($page_actuelle);
+ $Albums->getAllJSON();
+ $Albums->fileCode = $fileCode;
+ $Albums->readOne();
- $album = Album::readOneHTML($fileCode); // simple, efficace
+ //var_dump($Albums); die();
+
+ $album = $Albums->oneAlbum['HTMLcontent'];
+ //$album = Album::readOneHTML($fileCode);
+
+ for($i = 0; $i < $Albums->fileListCount; $i++)
+ {
+ if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html'))
+ {
+ $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode'];
+ }
+ else
+ {
+ $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre'];
+ }
+ }
// variables $css, $header et $content
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']))
// page visiteur uniquement
elseif($_GET['page'] == 'album')
{
- album($_GET['file_code'], $_GET['album_name']);
+ album($_GET['file_code']);
}
// page connexion
elseif($_GET['page'] == 'connexion')
@@ -221,21 +221,16 @@ elseif($_SESSION['admin'] == 1 && isset($_GET['action']))
{
require_once('controller/backup.php');
- // extraction du contenu du dossier data
+ // sauvegarde du dossier 'data'
if($_GET['action'] == 'sauvegarde')
{
sauvegarder($_GET['from']);
}
- // insertion des données d'une sauvegarde
+ // restauration avec une sauvegarde
elseif($_GET['action'] == 'restauration')
{
restaurer($_GET['from']);
}
- // tout sauf le dossier data
- /*elseif($_GET['action'] == 'extrairePHP')
- {
- extrairePHP($_GET['from']);
- }*/
else
{
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
public function __construct($page)
{
+ $this->format = 'json'; // vaut 'html' dans la classe mère
+
// pour: page, fileCode, time et makeFileList()
parent::__construct($page);
- //$this->page = $page;
- //$this->fileCode = ''; // désigne un fichier json et un html
- $this->format = 'json'; // vaut 'html' dans la classe mère
- //$this->time = time();
- //$this->makeFileList();
}
// GET
+ public function getAllJSON() // pour la page album
+ {
+ // mettre le JSON dans fileList[$i]['content']
+ parent::readAll();
+
+ $this->format = 'html';
+
+ for($i = 0; $i < $this->fileListCount; $i++)
+ {
+ $content = json_decode($this->fileList[$i]['content'], true);
+ $this->fileList[$i]['titre'] = $content[0];
+ $this->fileList[$i]['annee'] = $content[1];
+ $this->fileList[$i]['pochette'] = $content[2];
+ $this->fileList[$i]['pochetteMini'] = $content[3];
+ }
+
+ // on remet comme avant
+ $this->format = 'json';
+ }
// SET
@@ -70,6 +86,7 @@ class Album extends Article
// permet de ne pas la remplacer par la nouvelle
$this->format = 'html';
+
for($i = 0; $i < $this->fileListCount; $i++)
{
// ajout du JSON
@@ -103,7 +120,7 @@ class Album extends Article
{
for($i = 0; $i < $this->fileListCount; $i++)
{
- if($_SESSION['target'] == $this->fileList[$i]['fileCode'])
+ if($this->fileCode == $this->fileList[$i]['fileCode'])
{
// json
$this->oneAlbum['fileCode'] = $this->fileList[$i]['fileCode'];
@@ -127,7 +144,7 @@ class Album extends Article
}
// page d'un album
- public static function readOneHTML($fileCode)
+ /*public static function readOneHTML($fileCode)
{
if(file_exists('data/discographie/html/' . $fileCode . '.html'))
{
@@ -137,7 +154,7 @@ class Album extends Article
{
return('');
}
- }
+ }*/
public function getVignetteJSON()
{
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 @@
// $fileList[$fileCode] => [$fileName => 'code', $content => 'contenu'], etc
+// ma struture est mauvaise, elle n'est pas très orientée objet
+// créer une classe structure de données
+// celle-ci sera instanciée dans la première (ou pas du tout)
+// et accesssible avec des GET et des SET
+
+
class Article
{
// pour tous les articles
@@ -25,8 +31,6 @@ class Article
public $format = 'html'; // vaut 'html' ou 'json'
public $fileListCount;
public $fileList; // = toutes les données
- //protected $articles; // contenu de toute la page
- //protected $nbArticles; // un fichier = un article
// pour un article (ou album) spécifique
//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 @@
class Image
{
- private const MAX_WEIGHT = 2000000; // à adapter au php.ini
private $page;
private $ajax; // vaut true avec le ckeditor
public $path;
@@ -26,10 +25,12 @@ class Image
public function upload()
{
+ global $maxWeight;
+
// traitement et enregistrement de l'image
if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok
{
- if ($_FILES['upload']['size'] <= self::MAX_WEIGHT)
+ if ($_FILES['upload']['size'] <= $maxWeight)
{
$this->pathInfos = pathinfo($_FILES['upload']['name']);
$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
.zoneVideAdmin
{
- padding-top: 20px;
+ padding-top: 10px;
}
#modeAdmin
@@ -144,8 +144,9 @@ form
bottom: 0px;
width: 700px;
z-index: 2;
- padding-top: 5px;
- text-align: center;
+ padding-top: 2px;
+ /*text-align: center;*/
+ /*font-family: Sans-serif;*/
}
#modeAdmin p
@@ -156,33 +157,26 @@ form
}
#modeAdmin>div p
{
- /*border: 1px black solid;*/
- margin: 5px;
- padding: 0px;
+ /*margin: 5px;*/
+ /*padding: 0px;*/
}
#modeAdmin>p a
{
- padding: 2px;
-}
-
-#modeAdmin div
-{
- display: flex;
- justify-content: space-around;
-
- margin: 0px;
- font-size: 85%;
+ text-decoration: none;
+ color: initial;
}
#lienModeAdmin
{
margin: 0px 20px;
- padding-bottom: 20px;
}
#lienModeAdmin p
{
text-align: right;
+ /* enlever la bande bleue en dessous du bloc_page */
+ margin-bottom: 0;
+ padding-bottom: 5px;
}
#lienModeAdmin p a
@@ -225,6 +219,28 @@ form
color: #666;
}
+.boutonBackup
+{
+ /*font-size: initial;*/ /* corrigé par normalize.css */
+ margin: 2px;
+}
+.boutonBackup a
+{
+ text-decoration: none;
+ color: initial;
+}
+
+/* options au survol */
+#options
+{
+ /*display: none;*/
+ display: flex;
+}
+/*#modeAdmin:hover #options
+{
+ display: flex;
+}*/
+
/* PC, y compris vieux écrans 800x600 */
@media screen and (min-width: 700px)
@@ -267,7 +283,7 @@ form
#bienvenue
{
- background-image: url("accueil/bienvenue.png");
+ background-image: url("../accueil/bienvenue.png");
width: 630px;
height: 596px;
}
@@ -285,8 +301,14 @@ form
.zoneVideAdmin, #modeAdmin
{
- height: 70px;
+ /*height: 30px;*/
+ height: 76px;
}
+
+ /*#modeAdmin:hover
+ {
+ height: 76px;
+ }*/
}
/* "tablettes" et vieux écrans 640x480 */
@@ -341,7 +363,7 @@ form
#bienvenue
{
- background-image: url("accueil/bienvenue_petit.png");
+ background-image: url("../accueil/bienvenue_petit.png");
width: 480px;
height: 463px;
margin: auto;
@@ -360,7 +382,7 @@ form
.zoneVideAdmin, #modeAdmin
{
- height: 75px;
+ height: 71px;
}
#modeAdmin
@@ -384,7 +406,7 @@ form
}
.zoneVideAdmin, #modeAdmin
{
- height: 70px;
+ height: 66px;
}
}
@@ -439,7 +461,7 @@ form
#bienvenue
{
- background-image: url("accueil/bienvenue_mini.png");
+ background-image: url("../accueil/bienvenue_mini.png");
width: 320px;
height: 316px;
}
@@ -462,7 +484,7 @@ form
.zoneVideAdmin, #modeAdmin
{
- height: 65px;
+ height: 61px;
}
#modeAdmin
@@ -470,9 +492,16 @@ form
max-width: 380px;
}
- #modeAdmin div
+ .boutonBackup
{
/*margin: 5px;*/
+ /*padding: 1px;*/
+
+ }
+ #modeAdmin button
+ {
+ font-size: 95%;
+ padding: 1px;
}
}
@@ -481,18 +510,19 @@ form
{
.zoneVideAdmin, #modeAdmin
{
- height: 80px;
+ height: 76px;
}
#modeAdmin
{
- font-size: 95%;
+ /*font-size: 95%;*/
padding: 0px;
}
#modeAdmin>p
{
- font-size: 90%;
- margin: 3px;
+ /*font-size: 90%;*/
+ /*margin: 1px;*/
+ text-align: left;
}
#modeAdmin div
@@ -501,6 +531,15 @@ form
}
#modeAdmin>div p
{
- margin: 0px 5px;
+ /*margin: 0px 5px;*/
}
}
+
+/* spécial */
+@media screen and (max-width: 320px)
+{
+ nav
+ {
+ margin: auto;
+ }
+}
\ 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 @@
{
width: 630px;
height: 171px;
- background-image: url("mouette.png");
+ background-image: url("../mouette.png");
}
#contenu
@@ -67,14 +67,14 @@
#pochette
{
- background-image: url("menu/pochette.png");
+ background-image: url("../menu/pochette.png");
width: 308px;
height: 271px;
}
#fille_qui_tombe
{
- background-image: url("menu/fille_qui_tombe.jpg");
+ background-image: url("../menu/fille_qui_tombe.jpg");
width: 208px;
height: 163px;
margin: 5px 0px;
@@ -82,14 +82,14 @@
#canoe
{
- background-image: url("menu/canoe.png");
+ background-image: url("../menu/canoe.png");
width: 207px;
height: 144px;
}
#cavalier
{
- background-image: url("menu/cavalier.jpg");
+ background-image: url("../menu/cavalier.jpg");
width: 159px;
height: 312px;
position: relative;
@@ -98,7 +98,7 @@
#pommes
{
- background-image: url("menu/pommes.jpg");
+ background-image: url("../menu/pommes.jpg");
width: 59px;
height: 97px;
position: relative;
@@ -107,14 +107,14 @@
#sirene
{
- background-image: url("menu/sirene.jpg");
+ background-image: url("../menu/sirene.jpg");
width: 320px;
height: 174px;
}
#mouette_ocean
{
- background-image: url("menu/mouette_ocean.jpg");
+ background-image: url("../menu/mouette_ocean.jpg");
width: 257px;
height: 171px;
margin: 5px 0px;
@@ -122,7 +122,7 @@
#blonde
{
- background-image: url("menu/blonde.jpg");
+ background-image: url("../menu/blonde.jpg");
width: 257px;
height: 233px;
}
@@ -143,7 +143,7 @@
{
width: 480px;
height: 131px;
- background-image: url("mouette_petit.png");
+ background-image: url("../mouette_petit.png");
margin: auto;
}
@@ -167,14 +167,14 @@
#pochette
{
- background-image: url("menu/pochette_petit.png");
+ background-image: url("../menu/pochette_petit.png");
width: 234px;
height: 206px;
}
#fille_qui_tombe
{
- background-image: url("menu/fille_qui_tombe_petit.jpg");
+ background-image: url("../menu/fille_qui_tombe_petit.jpg");
width: 158px;
height: 124px;
margin: 4px 0px;
@@ -182,14 +182,14 @@
#canoe
{
- background-image: url("menu/canoe_petit.png");
+ background-image: url("../menu/canoe_petit.png");
width: 157px;
height: 109px;
}
#cavalier
{
- background-image: url("menu/cavalier_petit.jpg");
+ background-image: url("../menu/cavalier_petit.jpg");
width: 121px;
height: 237px;
position: relative;
@@ -198,7 +198,7 @@
#pommes
{
- background-image: url("menu/pommes_petit.jpg");
+ background-image: url("../menu/pommes_petit.jpg");
width: 45px;
height: 74px;
position: relative;
@@ -207,14 +207,14 @@
#sirene
{
- background-image: url("menu/sirene_petit.jpg");
+ background-image: url("../menu/sirene_petit.jpg");
width: 243px;
height: 132px;
}
#mouette_ocean
{
- background-image: url("menu/mouette_ocean_petit.jpg");
+ background-image: url("../menu/mouette_ocean_petit.jpg");
width: 195px;
height: 130px;
margin: 4px 0px;
@@ -222,7 +222,7 @@
#blonde
{
- background-image: url("menu/blonde_petit.jpg");
+ background-image: url("../menu/blonde_petit.jpg");
width: 195px;
height: 177px;
}
@@ -243,7 +243,7 @@
{
width: 320px;
height: 88px;
- background-image: url("mouette_mini.png");
+ background-image: url("../mouette_mini.png");
margin: auto;
}
@@ -267,14 +267,14 @@
#pochette
{
- background-image: url("menu/pochette_mini.png");
+ background-image: url("../menu/pochette_mini.png");
width: 156px;
height: 137px;
}
#fille_qui_tombe
{
- background-image: url("menu/fille_qui_tombe_mini.jpg");
+ background-image: url("../menu/fille_qui_tombe_mini.jpg");
width: 105px;
height: 82px;
margin: 3px 0px;
@@ -282,14 +282,14 @@
#canoe
{
- background-image: url("menu/canoe_mini.png");
+ background-image: url("../menu/canoe_mini.png");
width: 105px;
height: 73px;
}
#cavalier
{
- background-image: url("menu/cavalier_mini.jpg");
+ background-image: url("../menu/cavalier_mini.jpg");
width: 80px;
height: 158px;
position: relative;
@@ -298,7 +298,7 @@
#pommes
{
- background-image: url("menu/pommes_mini.jpg");
+ background-image: url("../menu/pommes_mini.jpg");
width: 30px;
height: 49px;
position: relative;
@@ -308,14 +308,14 @@
#sirene
{
- background-image: url("menu/sirene_mini.jpg");
+ background-image: url("../menu/sirene_mini.jpg");
width: 162px;
height: 88px;
}
#mouette_ocean
{
- background-image: url("menu/mouette_ocean_mini.jpg");
+ background-image: url("../menu/mouette_ocean_mini.jpg");
width: 130px;
height: 86px;
margin: 3px 0px;
@@ -323,7 +323,7 @@
#blonde
{
- background-image: url("menu/blonde_mini.jpg");
+ background-image: url("../menu/blonde_mini.jpg");
width: 130px;
height: 118px;
}
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()
{
// ergonomique
window.setTimeout("location=('index.php?page=menu');", 10000);
- window.setTimeout(function(){location.href="index.php?page=menu"}, 3000);
+ //window.setTimeout(function(){location.href="index.php?page=menu"}, 10000);
}
function deconnexionAutomatique()
@@ -88,4 +88,24 @@ function nouveauMotdepasse(page)
{
confirm('Le mot de passe a été modifié.');
window.setTimeout(location=('index.php?page=' + page + '&message=nouveau_mdp'), 0);
-}
\ No newline at end of file
+}
+
+// envoie gros fichier ZIP
+// si le fichier ne passe pas la limite de l'hébergeur (php.ini)
+// l'ouvrir en javascript chaque envoyer progressivement
+function extraireZIPetEnvoyerUnParUn()
+{
+ // taille du fichier?
+
+ // taille limite autorisée?
+ // obtenue avant avec phpinfo() puis insérée dans le code JS
+
+ // si le fichier est plus gros que la limite:
+ // extraire l'archive
+ // envoyer les fichiers un par un par des requêtes AJAX
+ // le serveur peut aussi limiter le nombre de fichiers
+ // lors d'un envoie multiple
+ // en les envoyant un par un ça devrait être bon
+
+ // sinon ne rien faire et laisser l'envoi normal se faire
+}
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";
?>
@@ -33,6 +33,25 @@ $header = ob_get_clean();
// variable $content
ob_start();
?>
+
= $album ?>
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')
{
ob_start();
?>
- 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.
- 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.
- Ce fichier se nomme melaineDATA.zip .
+ Sauvegarde complète
+ 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.
+ 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.
+ Ce fichier se nomme = $nomFichier ?> .
- Cliquez ici pour télécharger
- Retour au site
+ Le télécharger
+ Retour au site
- Restauration des données à partir d'une sauvegarde.
- Vous devez avoir créé un fichier nommé melaineDATA.zip
- en cliquant sur Extraire les données .
+ Restauration des données à partir d'une sauvegarde.
+ Vous devez avoir créé précédemment un fichier melaineDATA.zip
+ à la page Sauvegarder les données.
-
= $title ?>
+
+
+
fileListCount; $i++)
-
-
-
+
+
+
+