[Pluxml 4.3.X] EasyGallery Revisité

FrédéricFrédéric Member
mai 2010 modifié dans Modifications
easygalery.png

EasyGallery vous permet de créez des albums illimité depuis votre Gestionnaire de Médias, sélectionnable depuis une page statique.

Couplet au plugins Uploadify, vos publierez rapidement et simplement vos albums photos/images.

Démo

Réponses

  • Tip top, cette gallerie. J'ai ajouté une entrée dans le Wiki avec un lien vers myPluXml pour l'indiquer : c'est vraiment un plugin super intéressant et facile à implémenter, avec un très bon résultat.

    Juste une petite question : est-ce qu'il serait possible d'ajouter une légende aux photos ?
    Ou bien y a-t'il une autre gallerie qui permet d'afficher des légendes ... et qui serait aussi bien qu'EasyGallery !


    A+,
    L@u
  • Bon, j'ai trouvé la réponse à ma question Slimbox 2 gère les légendes : il suffit d'ajouter une propriété title au tag <a> .

    Je vais re-travailler le script pour ajouter ceci facilement.

    J'ai des petits trucs supplémentaires :
    - pour ne pas surcharger toutes les pages du site inutilement, j'ai créé un template de page supplémentaire avec le header pour EasyGallery (les autres pages conservent un header sans Slimbox 2 ni jQuery).
    - pour avoir plusieurs pages de galleries avec différents répertoires, il suffit de copier la page plx.easygallery.php (eg. plx.easygalleryLA2.php ) et de changer la valeur de $root_dir.
    - on ajoute { closeKeys: [27,88,70],nextKeys: [39, 83], loop:true} à la ligne 10 de plugins/EasyGallery/slimbox/js/slimbox2.js pour utiliser les touches françaises (S pour suivant, et F pour fermer), loop pour recommencer à la photo 1.
    - j'ai créé une nouvelle version de plx.easygallery.php pour afficher les photos qui sont contenus dans un SEUL répertoire.
    <?php
        /**
         * EasyGallery  by WingNut              www.freitagmorgen.de
         *
         * @script    plx.easygallery
         * @version   2.6
         * @pluxml    5.1
         * @author    Révision par Frédéric K. & LRO
         * @update    14/12/2010
         **/     
    
    // CONFIGURATION EDITABLE -------------------------------------------
    // Dossier Root (peut aussi être une URL, ex: http://www.monsite.com/gallery)
    //$root_dir = PLX_ROOT.'data/images/RevueDePresse'; //EasyGallery
    $root_dir = PLX_ROOT.'data/images/RevueDePresse'; //EasyGallery
    
    // Taille des miniatures en pixel
    $thumbwidth = 125;
    
    // Texte pour les photos
    $my_photo_text="Cliquer sur une photo pour l'agrandir";
    
    // FIN CONFIGURATION EDITABLE ----------------------------------------
    //##################################################################//
    // Do not change anything by now unless you know what you are doing!
    // Nombre de Colonnes pour les miniatures
    $columns = 4;
    
    // Fonction Slideshow 0=non 1=oui
    $slideshow = 1; //Non Fonctionnel pour le moment
    function printError($text)
    {
      echo "<div class=\"error\"><strong>ERREUR:</strong> $text</div>";
      exit();
    }
    
    function createthumb($name,$file,$maxsize)
    {
      $maxsize += 8;
      list($width, $height) = getimagesize("$name/$file");
      $width = min($width, $height);
      $tn = imagecreatetruecolor($maxsize, $maxsize);
      $image = imagecreatefromjpeg("$name/$file");
      imagecopyresampled($tn, $image, 0, 0, 0, 0, $maxsize, $maxsize, $width, $width);
      if(!is_dir("$name/thumbnails"))
      {
        mkdir ("$name/thumbnails", 0777);
      }
      imagejpeg($tn, "$name/thumbnails/tn_$file", 90);
      return true;
    }
    
    // --begin preprocessing
    $phpself = $_SERVER['PHP_SELF'];
    extract($_POST);
    
    // filetypes
    $filetypes = array("jpg", "jpeg");
    $k = sizeof($filetypes);
    for ($i=0; $i<$k; $i++)
    {
      $filetypes[] = strtoupper($filetypes[$i]);
    }
    
    // scanning directory for folders and check if they contain image files
    if (!is_dir($root_dir))
    {
      printError("Aucun répertoire racine. Spécifiez s'il vous plaît un répertoire d'image valide dans votre configuration.");
    }
    $root_handle = opendir($root_dir);
    $postmp = 0;
    while ($filename = readdir($root_handle)) {
    	for ($i=0;$i<sizeof($filetypes);$i++) {
    		$postmp = strpos($filename, $filetypes[$i]);
    		if ($postmp>0) {
    			$folders[] = $root_dir.'/'.$dirname;
    			break 2;
    		}
    	}
    }
    closedir($root_handle);
    
    if (!$folders)
    {
      printError("Le dossiers indiqués ne contient pas d'image! Changez s'il vous plaît \$root_dir.");
    } else {
    
    $ordner = $folders[0];
    
    // scanning directories for image files
    	if (is_dir($ordner)){
    		$dir_handle = opendir($ordner);
    		while ($filename = readdir($dir_handle)) {
    			for ($i=0; $i<sizeof($filetypes); $i++) {
    				$pos = strpos($filename, $filetypes[$i]);
    				$var1 = strcmp($filename,'.');
    				$var2 = strcmp($filename,'..');
    				$var3 = is_file($ordner.'/'.$filename);
    				if (($var1 != 0) && ($var2 != 0) && ($var3 == 1) && ($pos > 0)) {
    					$files[] = $filename;
    				}
    				if ($filename=="thumbnails") {
    					$thumbs = 1;
    				}
    			}
    		}
    		sort($files);
    		$size = sizeof($files);
    		closedir($dir_handle);
    	} else {
    			printError("Aucun Dossier trouvé. Copiez s'il vous plaît vos dossiers d'image à l'emplacement indiqué dans \$root_dir de votre configuration.");
    		}
    }
    // --end preprocessing
    ?>
    
    <?php
    // --begin form
    echo "<div id=\"plxGalerie\">\n";
    echo "<form id=\"next\" method=\"post\" action=\"#next\">\n";
    echo "<h3>".$my_photo_text."</h3>\n";
    // --end form
    
    // --begin print images
    echo "";
    $xpos=8;
    $ypos=6;
    $count = 0;
    $newthumbs = false;
    $divheight = ceil(count($files)/$columns) * ($thumbwidth+6) + 6;
    echo "<ul>\n";
    for ($y=0;$y<count($files);$y++)
    {
      $tn_src = $ordner."/thumbnails/tn_".$files[$count];
      if (file_exists($tn_src))
      {
        $image = GetImageSize($tn_src);
        $image[0] -= 8;
        $image[1] -= 8;
    	if ($image[0]==$image[1]){}
    	elseif ($image[0]<$image[1]) $xpos += intval(($image[1]-$image[0])/2);
    	else $ypos += intval(($image[0]-$image[1])/2);
        echo "<li class=\"miniature\" style=\"left:".$xpos."px; top:".$ypos."px;\">";
        if($slideshow!=1){
    	  echo "<a href=\"".$ordner."/".$files[$count]."\" rel=\"lightbox-".$text."\" title='ma descr'>";
    	}
    	else{
    	  echo "<a href=\"".$ordner."/".$files[$count]."\" rel=\"lightbox-".$text."\" title='ma description'>";
    	}
        echo "<img src=\"$tn_src\" class=\"fade_in\" alt=\"$files[$count]\" style=\"width:$image[0];height:$image[1]\" /></a></li>\n";
    	if ($image[0]==$image[1]){}
    	elseif ($image[0]<$image[1]) $xpos -= intval(($image[1]-$image[0])/2);
    	else $ypos -= intval(($image[0]-$image[1])/2);
      }
      else
      {
      	$modules = get_loaded_extensions();
    	if(!in_array("gd", $modules)){
    	  printError("Votre serveur ne supporte pas l'utilisation de la bibliothèque GD, qui est exigée pour créer des miniatures. Créez les s'il vous plaît et ajoutez vos miniatures manuellement.");
    	}
    	if(createthumb($ordner,$files[$count],$thumbwidth))
    	{
    	  echo "tn_$files[$count] Créé.<br />";
    	  $newthumbs = true;
        }
    	else
    	{
    	  printError("La création des miniatures a échoué.");
    	}
      }
      $count++;
      if($count%$columns==0)
      {
        $ypos += $thumbwidth+6;
        $xpos = 8;
      }
      else
      {
        $xpos += $thumbwidth+6;
      }
    }
    if($newthumbs)
    {
      echo "<script>location.reload()</script>";
    }
    echo "</ul>\n";
    echo "<div style=\"clear:both;\"></div>\n";
    echo "</div>\n";
    ?>
    
    Enjoy,
    L@u
Connectez-vous ou Inscrivez-vous pour répondre.