Browse Source

Merge pull request #66 from Clement83/master

Ajout de preview image
Idleman 1 year ago
parent
commit
c35c881c41
7 changed files with 661 additions and 572 deletions
  1. 2 1
      lang/en - English
  2. 2 1
      lang/fr - Francais
  3. 572 563
      php/action.php
  4. 6 0
      php/config.php
  5. 56 2
      php/function.php
  6. 3 0
      tpl/UnderBlack/css/styles.css
  7. 20 5
      tpl/UnderBlack/js/main.js

+ 2 - 1
lang/en - English

@@ -93,4 +93,5 @@ Le dossier de stockage des donnees "%" est inaccessible en ecriture, verifiez qu
 Le dossier de stockage des donnees "%" est accessible en ecriture[::->]The data folder "[%%]" is writtable
 Champs obligatoires non remplis[::->]Main fields are empty
  - Taille maximale par fichier : %.[::->] - Max size per file : <span class="blue">[%%]</span>.
-Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Error, file/folder's name can't contain follow characters : /,\,:,?,",<,>
+Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Error, file/folder's name can't contain follow characters : /,\,:,?,",<,>
+une erreur est arrivee : [::->]an error occured: 

+ 2 - 1
lang/fr - Francais

@@ -92,4 +92,5 @@ Le dossier de stockage des donnees "%" est inaccessible en ecriture, verifiez qu
 Le dossier de stockage des donnees "%" est accessible en ecriture[::->]Le dossier de stockage des donn&eacute;es "[%%]" est accessible en &eacute;criture
 Champs obligatoires non remplis[::->]Champs obligatoires non remplis
  - Taille maximale par fichier : %.[::->] - Taille maximale par fichier : <span class="blue">[%%]</span>.
-Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Erreur, un nom de fichier/dossier ne peux contenir les caractères suivants : /,\,:,?,",<,>
+Erreur, un nom de dossier ne peux contenir les caracteres suivants[::->]Erreur, un nom de fichier/dossier ne peux contenir les caractères suivants : /,\,:,?,",<,>
+une erreur est arrivee : [::->]une erreur est arrivee : 

File diff suppressed because it is too large
+ 572 - 563
php/action.php


+ 6 - 0
php/config.php

@@ -38,6 +38,12 @@ define('SECURE_DELIMITER_BEGIN','<?php /*'); //
 define('SECURE_DELIMITER_END','*/ ?>'); //
 define('LEFT_HASH','-1é&@shs--'); //
 define('RIGHT_HASH','$^^/!+£'); //
+
+define('PREVIEW_IMAGE_ENABLED', true);//Activer les previews image
+define('CACHE_FOLDER', 'cache/');//path vers le cache des images
+define('PREVIEW_WIDTH', 200);//Width max 
+define('PREVIEW_HEIGHT', 200);//height max 
+
 define('DC_VERSION','2'); //Version du programme
 define('DC_NAME','Stable');//Nom du programme
 define('DC_VERSION_NUMBER','2.0.0');//Nom du programme

+ 56 - 2
php/function.php

@@ -54,13 +54,17 @@ function scanFolder($folder){
 				$mtime = filemtime ($folder.$file);
 				$fileArray['mtimeDate'] = date('d/m/Y',$mtime);
 				$fileArray['mtimeHour'] = date('h\hi\m',$mtime);
+
+				if(PREVIEW_IMAGE_ENABLED === true) {
+					$source = str_replace(UPLOAD_FOLDER, '', $fileArray['url']);
+					$fileArray['previewPath'] = resizeImage($source, PREVIEW_WIDTH, PREVIEW_HEIGHT);
+				}
 				$realFiles[]=$fileArray;
+
 				unset($fileArray);
 			}
 		}else{
 			if(!in_array($folder.$file, $noFolders) && ( !DISPLAY_AVATAR_FOLDER && realpath($folder.$file)!=realpath('../'.AVATARFOLDER)) ){
-
-				
 				$fileArray['type'] = 'folder';
 				$fileArray['name'] = utf8_encode($file);
 				$fileArray['shortname'] =utf8_encode(short($file,NAME_LIMIT,get_extension($file)));
@@ -81,7 +85,57 @@ function scanFolder($folder){
 	return $realFiles;
 }
 
+/**
+* Resize an image and keep the proportions
+* @author Allison Beckwith <allison@planetargon.com>
+* @param string $filename
+* @param integer $max_width
+* @param integer $max_height
+* @return image
+*/
+function resizeImage($filename, $max_width, $max_height)
+{
+	$source = '../' . UPLOAD_FOLDER . $filename; 
+	if(@exif_imagetype($source) === IMAGETYPE_JPEG) {
+		$dest = '../' . CACHE_FOLDER . $filename;
+		if(!file_exists($dest)) {
+			$destDir = explode('/', $dest); 
+			array_pop($destDir);
+			$destDir = implode('/', $destDir);
+			if(!file_exists($destDir)) {
+				mkdir($destDir , 0775, true);
+			}
+
+			list($orig_width, $orig_height) = getimagesize($source);
 
+			$width = $orig_width;
+			$height = $orig_height;
+
+			# taller
+			if ($height > $max_height) {
+				$width = ($max_height / $height) * $width;
+				$height = $max_height;
+			}
+
+			# wider
+			if ($width > $max_width) {
+				$height = ($max_width / $width) * $height;
+				$width = $max_width;
+			}
+
+			$image_p = imagecreatetruecolor($width, $height);
+
+			$image = imagecreatefromjpeg($source);
+
+			imagecopyresampled($image_p, $image, 0, 0, 0, 0, 
+											$width, $height, $orig_width, $orig_height);
+
+			imagejpeg($image_p, $dest);
+		}
+		return $dest;
+	}
+	return false;
+}
 
 
 /**

+ 3 - 0
tpl/UnderBlack/css/styles.css

@@ -593,6 +593,8 @@ footer{
 
 #dropbox .imageHolder:hover  img{
 	margin-left:5px;
+	max-width: 130px;
+	max-height: 130px;
 }
 
 
@@ -680,6 +682,7 @@ footer{
 #dropbox .imageHolder:hover,#dropbox .folderHolder:hover{
 	background-color:#151516;
 	box-shadow: 0 0 2px #000000;
+	z-index: 99;
 }
 
 

+ 20 - 5
tpl/UnderBlack/js/main.js

@@ -168,11 +168,14 @@ $('.tooltips').poshytip({
 		extension = extension[extension.length-1];
 		}
 		fileName.html(file.name);
-			if(imageExtension[extension]!=null){
+			if(file.previewPath) {
+				ext = file.previewPath;
+			} else if(imageExtension[extension]!=null){
 				ext = imageExtensionRoot+imageExtension[extension] ;
 			}else{
 				ext = imageExtensionRoot+'unknown.png';
 			}
+			console.log(ext);
 			image.attr('src',ext);
 		preview.appendTo($("#dropbox"));	
 		$.data(file,preview);
@@ -272,7 +275,13 @@ function generateBreadCrumb(folder){
 
 
    	}
-  }
+  },
+   error : function(data) {
+		response = $.parseJSON(data.responseText);
+		console.error(response);
+		alert(response.status);
+	   //console.log(data);
+   }
 });
 	}else{
 		alert('Des fichiers sont encore en téléchargement, veuillez patienter');
@@ -282,8 +291,14 @@ function generateBreadCrumb(folder){
 	
 
 	function addFile(file){
-			if(imageExtension[file.extension]!=null){
-				ext = imageExtensionRoot+imageExtension[file.extension] ;
+		var imgWidth = "48px;";
+		var imgHeight = "48px;";
+			if(file.previewPath) {
+				ext = file.previewPath;
+				imgWidth = "auto;";
+				imgHeight = "auto;";		
+			} else if(imageExtension[file.extension]!=null){
+				ext = imageExtensionRoot+imageExtension[file.extension];		
 			}else{
 				ext = imageExtensionRoot+'unknown.png';
 			}
@@ -304,7 +319,7 @@ function generateBreadCrumb(folder){
 							
 							'<div onclick="focusFile(this)"  ondblclick="openFile(this)">'+
 
-							'<img width="48px" height="48px"  src="'+ext+'"/>'+
+							'<img width="' + imgWidth + '" height="' + imgHeight + '"  src="'+ext+'"/>'+
 							'<ul>'+
 								'<li>'+file.size+'</li>'+
 								'<li>'+file.mtimeDate+' '+file.mtimeHour+'</li>'+