Skip to content

Commit

Permalink
Fermeture overlay media #313 + formats gpx, bmp et webp #280
Browse files Browse the repository at this point in the history
  • Loading branch information
haruka-7 committed May 8, 2019
1 parent c721f1b commit 4dbd1fc
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 23 deletions.
34 changes: 24 additions & 10 deletions core/admin/medias.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Gestion des médias
*
* @package PLX
* @author Stephane F
* @author Stephane F, Pedro "P3ter" CADETE
**/

include __DIR__ .'/prepend.php';
Expand Down Expand Up @@ -203,14 +203,15 @@
# Si on a des fichiers
if($plxMedias->aFiles) {
foreach($plxMedias->aFiles as $v) { # Pour chaque fichier
$isImage = in_array(strtolower($v['extension']), array('.png', '.gif', '.jpg', '.jpeg'));
$ordre = ++$num;
$isImage = in_array(strtolower($v['extension']), $plxMedias->img_supported);
echo '<tr>';
echo '<td><input type="checkbox" name="idFile[]" value="'.$v['name'].'" /></td>';
echo '<td class="icon">';
if(is_file($v['path']) AND $isImage) {
echo '<a onclick="overlay(\''.$v['path'].'\');return false;" title="'.plxUtils::strCheck($v['name']).'" href="'.$v['path'].'"><img alt="" src="'.$v['.thumb'].'" class="thumb" width="48" height="48"/></a>';
echo '<a class="overlay" title="'.plxUtils::strCheck($v['name']).'" href="'.$v['path'].'"><img alt="" src="'.$v['.thumb'].'" class="thumb" /></a>';
}
else
echo '<img alt="" src="'.$v['.thumb'].'" class="thumb" />';
echo '</td>';
echo '<td>';
echo '<a class="imglink" onclick="'."this.target='_blank'".'" title="'.plxUtils::strCheck($v['name']).'" href="'.$v['path'].'">'.plxUtils::strCheck($v['name']).'</a>';
Expand Down Expand Up @@ -349,6 +350,25 @@
</div>

<script>

var all = document.querySelectorAll(".overlay");
var mbox = document.getElementById("modal__box");
var mb = document.getElementById("modal");
for (var i = 0, nb = all.length; i < nb; i++) {
all[i].addEventListener('click', function(e) {
e.preventDefault();
mbox.innerHTML = '<img src="'+this.href+'" alt="" />';
mb.click();
},false);
}
window.addEventListener("keydown", function (event) {
// validate if the press key is the escape key
if (event.code=="Escape" || event.key=="Escape" || event.keyCode==27) {
mbox.innerHTML = "";
mb.click();
}
});

function toggle_divs(){
var uploader = document.getElementById('files_uploader');
var manager = document.getElementById('files_manager');
Expand All @@ -360,12 +380,6 @@ function toggle_divs(){
manager.style.display = 'block';
}
}
function overlay(content) {
e = document.getElementById("modal__box");
e.innerHTML = '<img src="'+content+'" alt="" />';
e = document.getElementById("modal");
e.click();
}
function copy(elt, data) {
try {
var div = elt.querySelector("div");
Expand Down
23 changes: 14 additions & 9 deletions core/lib/class.plx.medias.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Classe plxMedias regroupant les fonctions pour gérer la librairie des medias
*
* @package PLX
* @author Stephane F
* @author Stephane F, Pedro "P3ter" CADETE
**/
class plxMedias {

Expand All @@ -15,9 +15,10 @@ class plxMedias {
public $maxUpload = array(); # valeur upload_max_filesize
public $maxPost = array(); # valeur post_max_size

public $img_exts = '/\.(jpe?g|png|gif|bmp)$/i';
public $doc_exts = '/\.(7z|aiff|asf|avi|csv|docx?|epub|fla|flv|gz|gzip|m4a|m4v|mid|mov|mp3|mp4|mpc|mpe?g|ods|odt|odp|ogg|pdf|pptx?|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|svg|swf|sxc|sxw|tar|tgz|txt|vtt|wav|webm|wma|wmv|xcf|xlsx?|zip)$/i';

public $img_supported = array('.png', '.gif', '.jpg', '.jpeg', '.bmp', '.webp'); # images formats supported
public $img_exts = '/\.(jpe?g|png|gif|bmp|webp)$/i';
public $doc_exts = '/\.(7z|aiff|asf|avi|csv|docx?|epub|fla|flv|gpx|gz|gzip|m4a|m4v|mid|mov|mp3|mp4|mpc|mpe?g|ods|odt|odp|ogg|pdf|pptx?|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|svg|swf|sxc|sxw|tar|tgz|txt|vtt|wav|webm|wma|wmv|xcf|xlsx?|zip)$/i';

/**
* Constructeur qui initialise la variable de classe
*
Expand Down Expand Up @@ -91,14 +92,16 @@ private function _getAllDirs() {
}

/**
* Méthode qui retourne la liste des des fichiers d'un répertoire
* Méthode qui retourne la liste des fichiers d'un répertoire
*
* @param dir répertoire de lecture
* @return array tableau contenant la liste de tous les fichiers d'un dossier
* @author Stephane F
**/
private function _getDirFiles($dir) {

$matches = '';

$src = $this->path.$dir;
if(!is_dir($src)) return array();

Expand All @@ -112,7 +115,7 @@ function($item) { return !preg_match('@\.tb\.\w+$@', $item); } # On rejette les
if(is_dir($filename)) { continue; }

$thumbInfos = false;
if(preg_match('@\.(jpe?g|png|gif)$@i', $filename, $matches)) {
if(preg_match($this->img_exts, $filename, $matches)) {
$thumbName = plxUtils::thumbName($filename);
if(file_exists($thumbName)) {
$thumbInfos = array(
Expand Down Expand Up @@ -143,6 +146,8 @@ function($item) { return !preg_match('@\.tb\.\w+$@', $item); } # On rejette les
'infos' => $imgSize,
'thumb' => $thumbInfos
);
$sample = '';
$sampleOk = "";
}

ksort($files);
Expand Down Expand Up @@ -290,7 +295,7 @@ public function newDir($newdir) {
* @param file fichier à uploader
* @param resize taille du fichier à redimensionner si renseigné
* @param thumb taille de la miniature à créer si renseigné
* @return msg message contenant le résultat de l'envoi du fichier
* @return string message contenant le résultat de l'envoi du fichier
* @author Stephane F
**/
private function _uploadFile($file, $resize, $thumb) {
Expand Down Expand Up @@ -332,7 +337,7 @@ private function _uploadFile($file, $resize, $thumb) {
*
* @param usrfiles fichiers utilisateur à uploader
* @param post paramètres
* @return msg résultat de l'envoi des fichiers
* @return string résultat de l'envoi des fichiers
* @author Stephane F
**/
public function uploadFiles($usrfiles, $post) {
Expand Down Expand Up @@ -459,7 +464,7 @@ public function makeThumbs($files, $width, $height) {
if(is_file($this->path.$this->dir.$file)) {
$thumName = plxUtils::thumbName($file);
$ext = strtolower(strrchr($this->path.$this->dir.$file,'.'));
if(in_array($ext, array('.gif', '.jpg', '.jpeg', '.png'))) {
if(in_array($ext, array('.gif', '.jpg', '.jpeg', '.png', '.webp'))) {
if(plxUtils::makeThumb($this->path.$this->dir.$file, $this->path.$this->dir.$thumName, $width, $height, 80))
$count++;
}
Expand Down
23 changes: 19 additions & 4 deletions core/lib/class.plx.utils.php
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,7 @@ public static function formatFilesize($bytes) {
* @param thumb_height hauteur de la miniature
* @param quality qualité de l'image
* @return boolean vrai si image créée
* @author unknown, Pedro "P3ter" CADETE
**/
public static function makeThumb($src_image, $dest_image, $thumb_width = 48, $thumb_height = 48, $jpg_quality = 90) {

Expand Down Expand Up @@ -548,12 +549,20 @@ public static function makeThumb($src_image, $dest_image, $thumb_width = 48, $th
imagefill($canvas, 0, 0, $color);
imagesavealpha($canvas, true);
break;
case 'webp':
$image_data = imagecreatefromwebp($src_image);
break;
case 'x-ms-bmp':
//$image_data = imagecreatefrombmp($src_image); // Only PHP 7+
$image_data = false;
break;
default:
return false; // Unsupported format
break;
}

// Verify import

if($image_data == false) return false;

// Calculate measurements (square crop)
Expand Down Expand Up @@ -590,13 +599,19 @@ public static function makeThumb($src_image, $dest_image, $thumb_width = 48, $th
case 'jpg':
case 'jpeg':
return (imagejpeg($canvas, $dest_image, $jpg_quality) AND is_file($dest_image));
break;
break;
case 'png':
return (imagepng($canvas, $dest_image) AND is_file($dest_image));
break;
break;
case 'gif':
return (imagegif($canvas, $dest_image) AND is_file($dest_image));
break;
break;
case 'bmp':
return (imagebmp($canvas, $dest_image) AND is_file($dest_image));
break;
case 'webp':
return (imagewebp($canvas, $dest_image, $jpg_quality) AND is_file($dest_image));
break;
default:
return false; // Unsupported format
break;
Expand Down Expand Up @@ -1012,7 +1027,7 @@ public static function thumbName($filename) {

$matches = '';

if(preg_match('/^(.*\.)(jpe?g|png|gif)$/iD', $filename, $matches)) {
if(preg_match('/^(.*\.)(jpe?g|png|gif|bmp|webp)$/iD', $filename, $matches)) {
return $matches[1].'tb.'.$matches[2];
} else {
return $filename;
Expand Down
2 changes: 2 additions & 0 deletions readme/CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
[+] #207 Afficher/masquer le chapeau et les tags d'un article dans l'administration en CSS3 au lieu d'utiliser du JS (bazooka07, Stéphane, P3ter)
[+] #215 Mise en avant du lien de l'article en cours de modification dans l'administration (sudwebdesign, P3ter)
[+] #216 Refacto de la fonction plxUtils::printArea() (bazooka07)
[+] #280 Support des formats de fichiers .gpx, .bmp et .webp par le gestionnaire de média (P3ter)
[+] #305 Remplacement dirname(__FILE__) par __DIR__ dans l'admin et le thème par défaut (P3ter)
[+] #309 Remplacement de define() par const (bazooka07)
[+] #312 En présence d'une homepage statique, le lien "archive total" redirige vers le blog (je-evrard, bazooka07, P3ter)
[+] #312 Remplacement de la fonction str_replace() par strtr() pour les liens vers les pages archives (bazooka07, P3ter)
[+] #313 Fermer l'overlay des médias avec la touche "ESC/ECHAP" du clavier (jerrywham)
FIX #287 Capcha : ajout d'un espace insécable avant le "?" (P3ter)
FIX #302 Renvoie vers index.php si un paramètre est inconnu dans l'URI (bazooka07)
FIX #318 L_NEW_CATEGORY en doublon pour certaines langues (P3ter)
Expand Down

0 comments on commit 4dbd1fc

Please sign in to comment.