Galerie-photos (vue, modification, envoi d'image, redimensionnement \o/).
This commit is contained in:
parent
6fab117750
commit
9c235bafae
|
@ -26,7 +26,7 @@ class CMS {
|
|||
if (isset($_POST[$param])) $paramètres[$param] = self::param_post($param);
|
||||
}
|
||||
foreach ($module["file"] as $param) {
|
||||
if (isset($_FILE[$param])) $paramètres[$param] = $_FILE[$param];
|
||||
if (isset($_FILES[$param])) $paramètres[$param] = $_FILES[$param];
|
||||
}
|
||||
|
||||
$action = $paramètres["action"];
|
||||
|
|
|
@ -7,7 +7,7 @@ class GalerieÉvènement {
|
|||
} else if ($action == "nouvelle_page") {
|
||||
$np = Stockage::nouvelle_page($chemin, "Nouvelle photo", "galerie-photo");
|
||||
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
|
||||
Stockage::set_prop($np, "titre", "Nouvel évènement");
|
||||
Stockage::set_prop($np, "titre", "Nouvelle photo");
|
||||
Stockage::set_prop($np, "description", "");
|
||||
return new Page($np, '', "redirect");
|
||||
} else if ($action == "supprimer") {
|
||||
|
@ -24,7 +24,6 @@ class GalerieÉvènement {
|
|||
Stockage::renomer($chemin, $paramètres["titre"]);
|
||||
$chemin = $chemin->renomer($paramètres["titre"]);
|
||||
// TODO : transmettre le paramètre "vue"
|
||||
// TODO : ne marche pas.
|
||||
return new Page($chemin, '', "redirect");
|
||||
}
|
||||
|
||||
|
@ -70,7 +69,7 @@ class GalerieÉvènement {
|
|||
if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) {
|
||||
$ret .= '<li>';
|
||||
$ret .= '<div class="miniature">';
|
||||
$ret .= '<img alt="nouvel évènement" src="' . $chemin->get_url("?vue=image_nouvelle_photo") . '" />';
|
||||
$ret .= '<img alt="nouvelle photo" src="' . $chemin->get_url("?vue=image_nouvelle_photo") . '" />';
|
||||
$ret .= '</div>';
|
||||
$ret .= '<div class="titre">';
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ class GaleriePériode {
|
|||
if ($action == "anuler") {
|
||||
return new Page($chemin, '', "redirect");
|
||||
} else if ($action == "nouvelle_page") {
|
||||
$np = Stockage::nouvelle_page($chemin, "Nouvel évènement", "galerie-periode");
|
||||
$np = Stockage::nouvelle_page($chemin, "Nouvel évènement", "galerie-evenement");
|
||||
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
|
||||
Stockage::set_prop($np, "titre", "Nouvel évènement");
|
||||
Stockage::set_prop($np, "description", "");
|
||||
|
|
|
@ -5,25 +5,29 @@ class GaleriePhoto {
|
|||
if ($action == "anuler") {
|
||||
return new Page($chemin, '', "redirect");
|
||||
} else if ($action == "supprimer") {
|
||||
Stockage::supprimer($chemin);
|
||||
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
|
||||
return new Page($chemin->parent(), '', "redirect");
|
||||
} else {
|
||||
if (isset($paramètres["fichier_image"])) {
|
||||
// redimensionner l'image avec gd, stocker la miniature dans
|
||||
// prop_image_mini (set_prop_fichier()).
|
||||
// Pb : Où est-ce qu'on met temporairement la miniature
|
||||
// avant de la déplacer ???
|
||||
// stocker le fichier reçu dans prop_image (set_prop_fichier_reçu()).
|
||||
$fichier_image = $paramètres["fichier_image"]["tmp_name"];
|
||||
$fichier_image_mini = self::creer_miniature($fichier_image, 64, 64);
|
||||
Stockage::set_prop_fichier($chemin, "image_mini", $fichier_image_mini);
|
||||
Stockage::set_prop_fichier_reçu($chemin, "image", $fichier_image);
|
||||
}
|
||||
/* if (isset($paramètres["titre"])) {
|
||||
Stockage::renomer($chemin, $paramètres["titre"]);
|
||||
$chemin = $chemin->renomer($paramètres["titre"]);
|
||||
// TODO : peut-être new Page($chemin, '', "redirect") ?
|
||||
}*/
|
||||
|
||||
if (isset($paramètres["description"])) {
|
||||
Stockage::set_prop($chemin, "description", $paramètres["description"]);
|
||||
}
|
||||
|
||||
// titre après les autres paramètres car il peut générer un redirect.
|
||||
if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $paramètres["titre"])) {
|
||||
Stockage::set_prop($chemin, "titre", $paramètres["titre"]);
|
||||
Stockage::renomer($chemin, $paramètres["titre"]);
|
||||
$chemin = $chemin->renomer($paramètres["titre"]);
|
||||
// TODO : transmettre le paramètre "vue"
|
||||
return new Page($chemin, '', "redirect");
|
||||
}
|
||||
|
||||
if (isset($paramètres["vue"])) {
|
||||
return self::vue($chemin, $paramètres["vue"]);
|
||||
} else {
|
||||
|
@ -35,11 +39,17 @@ class GaleriePhoto {
|
|||
public static function vue($chemin, $vue = "normal") {
|
||||
if ($vue == "normal") {
|
||||
$ret = '';
|
||||
|
||||
if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) {
|
||||
$ret .= '<input type="text" name="titre" value="' . Stockage::get_prop($chemin, "titre") . '" />';
|
||||
$ret .= '<form class="galerie infos" enctype="multipart/form-data" method="post" action="' . $chemin->get_url() . '">';
|
||||
$ret .= '<h2><input type="text" name="titre" value="' . Stockage::get_prop($chemin, "titre") . '" /></h2>';
|
||||
$ret .= '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image") . '"/>';
|
||||
$ret .= '<input type="filename" .../>';
|
||||
$ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "description"), "message");
|
||||
$ret .= '<p>';
|
||||
$ret .= '<input type="file" name="fichier_image" id="fichier_image">';
|
||||
$ret .= '</p>';
|
||||
$ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "description"), "description");
|
||||
$ret .= '<p><input type="submit" value="appliquer" /></p>';
|
||||
$ret .= '</form>';
|
||||
} else {
|
||||
$ret .= '<h2>' . Stockage::get_prop($chemin, "titre") . '</h2>';
|
||||
$ret .= '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image") . '"/>';
|
||||
|
@ -57,6 +67,44 @@ class GaleriePhoto {
|
|||
}
|
||||
return new Page('',''); // TODO : devrait renvoyer une page d'erreur !
|
||||
}
|
||||
|
||||
public static function creer_miniature($chemin_fs, $largeur_max, $hauteur_max) {
|
||||
$chemin_fs_dest = tempnam(dirname($chemin_fs), "img");
|
||||
if ($chemin_fs_dest === false) return false; // TODO : return Erreur::...(...);
|
||||
|
||||
/* TODO : utiliser imagealphablending si nécessaire... http://www.php.net/manual/fr/function.imagecreatefrompng.php#85754 */
|
||||
$image = imagecreatefromjpeg($chemin_fs); // ... formpng()
|
||||
$largeur = imageSX($image);
|
||||
$hauteur = imageSY($image);
|
||||
if ($largeur < $largeur_max && $hauteur < $hauteur_max) {
|
||||
$largeur_miniature = $largeur;
|
||||
$hauteur_miniature = $hauteur;
|
||||
} else if ($largeur / $hauteur < $largeur_max / $hauteur_max) { // limité par la hauteur.
|
||||
$largeur_miniature = $largeur_max;
|
||||
$hauteur_miniature = $hauteur * $largeur_miniature/$largeur;
|
||||
} else { // limité par la largeur
|
||||
$hauteur_miniature = $hauteur_max;
|
||||
$largeur_miniature = $largeur * $hauteur_miniature/$hauteur;
|
||||
}
|
||||
$miniature = ImageCreateTrueColor($largeur_miniature, $hauteur_miniature); // miniatures de tailles différentes
|
||||
var_dump($largeur_miniature, $hauteur_miniature, $largeur, $hauteur);
|
||||
imagecopyresampled(
|
||||
$miniature, // image destination
|
||||
$image, // image source
|
||||
0, // x destination
|
||||
0, // y destination
|
||||
0, // x source
|
||||
0, // y source
|
||||
$largeur_miniature, // largeur destination
|
||||
$hauteur_miniature, // hauteur destination
|
||||
$largeur, // largeur source
|
||||
$hauteur // hauteur source
|
||||
);
|
||||
imagedestroy($image); // On libère la mémoire le plus tôt possible.
|
||||
imagejpeg($miniature, $chemin_fs_dest);
|
||||
imagedestroy($miniature);
|
||||
return $chemin_fs_dest;
|
||||
}
|
||||
}
|
||||
|
||||
Modules::enregister_module("GaleriePhoto", "galerie-photo", "vue", "description", "fichier_image");
|
||||
|
|
Loading…
Reference in New Issue
Block a user