Seite 1 von 1

Bildergalerie w3concepts.gallery

Verfasst: Do 5. Jun 2008, 19:20
von Halchteranerin
Ich habe mit Andreas' Hilfe seine Bildergalerie unter 4.8.4 mit PHP5 zum Laufen gebracht. Es geht um das Modul Bildergalerie w3concepts.gallery.v1, zu finden unter http://forum.contenido.org/viewtopic.ph ... sc&start=0

Hier ist die Version, die mit 4.8.x läuft. Ob die abwärtskompatibel ist, weiß ich nicht, aber falls nicht, kann ja die andere Version benutzt werden.

INPUT

Code: Alles auswählen

?><?php

/**
 * @abstract Input-Bereich Bildergalerie mit Beschreibung
 * @version $Id: input.php 970 2008-05-15 11:44:35Z atelierq $
 * @author Andreas Kummer, atelierQ Kummer
 */

class pfad { 

   function pfad($pfad) { 
      $this->pfad = $pfad; 
      $this->pathlen = strlen($this->pfad); 
   } 

   function getPath($root,$level = 0) { 
      
      $returnvalue = array();
      
      $content = $this->readDir($root); 

      foreach ($content as $file) { 
         if (is_dir($root.$file)) { 
            $verzeichnis = substr($root,$this->pathlen); 
            $returnvalue["{$verzeichnis}{$file}/"] = str_repeat("&nbsp;",$level * 5).$file; 
            $returnvalue = array_merge($returnvalue,$this->getPath($root.$file."/",$level+1)); 
         } 
      } 

      return $returnvalue; 
   } 

   function readDir($path) { 
      $handle = opendir($path); 

      while ($file = readdir ($handle)) { 
         if ($file != "." && $file != "..") $returnvalue[] = $file; 
      } 
      closedir($handle); 

      return $returnvalue; 
   } 

   function makeSelect($preselection) { 
      $pfad = $this->getPath($this->pfad); 

      foreach ($pfad as $key => $value) { 
         if ($preselection == $key) { 
            echo "<option value=\"$key\" selected=\"selected\">$value</option>"; 
         } else { 
            echo "<option value=\"$key\">$value</option>"; 
         } 
      } 
   } 
} 

$pfad = new pfad($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload']); 

echo "\n\n" . '<!--';
echo $cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'];
echo '-->' . "\n\n";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">"; 

echo "<tr><td>Bilderpfad:</td>"; 
echo "<td><select size=\"1\" name=\"CMS_VAR[0]\" />"; 
$pfad->makeSelect("CMS_VALUE[0]"); 
echo "</td>"; 

echo "<tr><td>Thumbnailpfad:</td>"; 
echo "<td><select size=\"1\" name=\"CMS_VAR[1]\" />"; 
$pfad->makeSelect("CMS_VALUE[1]"); 
echo "</td>"; 

echo "<tr><td>Thumbnailbreite (Max.):</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"5\" /></td>"; 

echo "<tr><td>Thumbnailhöhe (Max.):</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"5\" /></td>"; 

echo "<tr><td>Anzahl Spalten:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"5\" /></td>"; 

echo "<tr><td>Anzahl Zeilen:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"5\" /></td>"; 

echo "<tr><td>Text für Previous-Link:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[6]\" value=\"CMS_VALUE[6]\" size=\"15\" /></td>"; 

echo "<tr><td>Text für Next-Link:</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\" size=\"15\" /></td>"; 

echo "</table>";

?><?php
OUTPUT

Code: Alles auswählen

<?php
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :       w3concepts.gallery.v1 
* Author      :     Andreas Kummer 
* Copyright   :     mumprecht & kummer w3concepts 
* Created     :     30-08-2004 
* Modified    :     30-08-2004 
************************************************/ 

class gallery { 

   function gallery() { 
      // initialwerte setzen 
      $this->setInitValues(); 

      // aussteigen, falls initialwerte nicht sinnvoll 
      if (!$this->checkInitValues()) return false; 

      // quellverzeichnis auslesen 
      $this->readDir(); 

      // zeiger für showNextPicture setzen 
      if (empty($_REQUEST['pos'])) { 
         $this->showNextPictureSeq = -1; 
      } else { 
         $this->showNextPictureSeq = $_REQUEST['pos'] - 1; 
      } 

      // datenbankzugriff initialisieren 
      $this->db = new DB_Contenido; 

      // galerie ausgeben 
      $this->showGallery(); 

      // gegebenenfalls navigation ausgeben 
      $this->showNavigation(); 

   } 

   function setInitValues() { 
      // konfigurationswerte aus dem input-script 
      // übernehmen 
      $this->path['pictures'] = "CMS_VALUE[0]"; 
      $this->path['thumbs'] = "CMS_VALUE[1]"; 
      $this->path['upload'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload']; 
      $this->path['html'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['htmlpath']; 
      $this->abspath['pictures'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['frontend'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$this->path['pictures']; 
      $this->abspath['thumbs'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['frontend'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$this->path['thumbs']; 
      $this->htmlpath = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['htmlpath'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload']; 
      $this->thumbnailSize['width'] = "CMS_VALUE[2]"; 
      $this->thumbnailSize['height'] = "CMS_VALUE[3]"; 
      $this->tableSize['cols'] = "CMS_VALUE[4]"; 
      $this->tableSize['rows'] = "CMS_VALUE[5]"; 
      $this->link['previous'] = "CMS_VALUE[6]"; 
      $this->link['next'] = "CMS_VALUE[7]"; 
   } 

   function checkInitValues() { 
      // prüfen, ob es sich bei den übergebenen pfaden 
      // um tatsächlich vorhandene pfade im dateisystem 
      // handelt. gegebenenfalls wird eine ausgabe 
      // an den browser vorgenommen und false zurückgegeben. 
      if (!chdir($this->abspath['pictures'])) { 
         echo "<p>Das Verzeichnis '{$this->abspath['pictures']}' existiert im Dateisystem 
            des Servers nicht. Entweder müssen Sie es noch anlegen oder die 
            Konfiguration Ihres Modules anpassen.</p>"; 
         return false; 
      } 
      if (!chdir($this->abspath['thumbs'])) { 
         echo "<p>Das Verzeichnis '{$this->abspath['thumbs']}' existiert im Dateisystem 
            des Servers nicht. Entweder müssen Sie es noch anlegen oder die 
            Konfiguration Ihres Modules anpassen.</p>"; 
         return false;          
      } 

      if ($this->thumbnailSize['width'] == '') $this->thumbnailSize['width'] = 100; 
      if ($this->thumbnailSize['height'] == '') $this->thumbnailSize['height'] = 100; 

      if ($this->tableSize['cols'] == '') $this->tableSize['cols'] = 3; 
      if ($this->tableSize['rows'] == '') $this->tableSize['rows'] = 3; 

      if ($this->link['previous'] == '') $this->link['previous'] = '[:: rückwärts ]'; 
      if ($this->link['next'] == '') $this->link['next'] = '[ vorwärts ::]'; 


      // rückgabe im erfolgsfall 
      return true; 
   } 

   function readDir() { 
      $dir = opendir($this->abspath['pictures']); 
      while ($file = readdir($dir)) { 
         $bildinfo = @getimagesize($this->abspath['pictures'].$file); 
         if (!empty($bildinfo)) { 
            $picture[]= array();
            $picture[] = $file; 
         } 
      } 
      sort($picture); 
      closedir($dir); 

      foreach ($picture as $picture2) { 
         if (!empty($picture2)) $this->picture[] = $picture2; 
      } 
   } 

   function showNextPicture() { 
      // zeiger um eins erhöhen 
      $this->showNextPictureSeq++; 

      // wenn keine bild mehr vorhanden ist, false zurück geben 
      if ($this->showNextPictureSeq >= count($this->picture)) return ''; 

      // thumbnail generieren falls erforderlich 
      $size = $this->generateThumb($this->picture["{$this->showNextPictureSeq}"]); 

      // originalgrösse des bildes ermitteln 
      $originalsize = getimagesize($this->abspath['pictures'].$this->picture["{$this->showNextPictureSeq}"]); 

      // referenz zurück geben 
      //return "<a href=\"#\" onClick=\"window.open('{$this->path['html']}popupviewer.php?uri={$this->path['upload']}{$this->path['pictures']}{$this->picture[$this->showNextPictureSeq]}','bild','width={$originalsize[0]},height={$originalsize[1]},top=10,left=10,scrollbars=no,topmargin=0,leftmargin=0');bild.document.body.style.margin=0;\"><img src=\"{$this->htmlpath}{$size['filename']}\" width=\"{$size['width']}\" height=\"{$size['height']}\" /></a>"; 
      return "<a href=\"javascript:window.open('{$this->path['html']}popupviewer.php?uri={$this->path['upload']}{$this->path['pictures']}{$this->picture[$this->showNextPictureSeq]}','bild','width={$originalsize[0]},height={$originalsize[1]},top=10,left=10,scrollbars=no,topmargin=0,leftmargin=0');bild.document.body.style.margin=0;\"><img src=\"{$this->htmlpath}{$size['filename']}\" width=\"{$size['width']}\" height=\"{$size['height']}\" /></a>"; 
   } 

   function generateThumb($filename) { 

      $src_image_size = getimagesize($this->abspath['pictures'].$filename); 

      // prüfen, ob thumbnail bereits vorhanden ist 
      if (!file_exists("{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg")) { 

         // ermitteln ob das bild auf bestimmte höhe oder bestimmte breite zu reduzieren ist 
         // sowie ermitteln, um welchen faktor das bild zu verkleinern ist 
         if ($src_image_size[0]/$src_image_size[1] > $this->thumbnailSize['width']/$this->thumbnailSize['height']) { 
            $verkleinerungsfaktor = $this->thumbnailSize['width']/$src_image_size[0]; 
         } else { 
            $verkleinerungsfaktor = $this->thumbnailSize['height']/$src_image_size[1]; 
         } 

         // berechnen der thumbnailgrösse 
         $bildhoehe = round($src_image_size[1] * $verkleinerungsfaktor); 
         $bildbreite = round($src_image_size[0] * $verkleinerungsfaktor); 

         // thumbnail erstellen 
         $dst_im = imagecreatetruecolor($bildbreite,$bildhoehe); 
         if ($src_image_size[2] == 1) { 
            $src_im = imagecreatefromGIF("{$this->abspath['pictures']}$filename"); 
         } elseif ($src_image_size[2] == 2) { 
            $src_im = @ImageCreateFromJPEG("{$this->abspath['pictures']}$filename"); 
         } else { 
            $src_im = @imagecreatefromgd("{$this->abspath['pictures']}$filename"); 
         } 
         imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]); 
         imagejpeg ($dst_im,"{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg",100); 
          
         $size['width'] = $bildbreite; 
         $size['height'] = $bildhoehe; 
      } else { 
         $thumbnailsize = getimagesize("{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg"); 
         $size['width'] = $thumbnailsize[0]; 
         $size['height'] = $thumbnailsize[1]; 
      } 

      $size['filename'] = "{$this->path['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg"; 
    
      return $size; 
   } 

   function getDescription() { 
       
      $sql = "SELECT description FROM {$GLOBALS['cfg']['tab']['upl']} 
         WHERE 
            filename = '{$this->picture[$this->showNextPictureSeq]}' 
            AND dirname = '{$this->path['pictures']}' 
         "; 

      $this->db->query($sql); 
      $this->db->next_record(); 

      return urldecode($this->db->f("description")); 
   } 

   function showGallery() { 

      $cellwidth = floor(100/$this->tableSize['cols']); 
      echo "<table width=\"100%\">\n"; 
      for ($i = 0;$i < $this->tableSize['rows'];$i++) { 
         $beschreibung = null; 

         echo "<tr>\n";          
         for ($j = 0;$j < $this->tableSize['cols'];$j++) { 
            echo "<td align=\"left\" valign=\"top\" width=\"$cellwidth%\" class=\"text\">\n".$this->showNextPicture()."\n</td>\n"; 
            $beschreibung[] = $this->getDescription(); 
         } 
         echo "</tr>\n"; 

         echo "<tr>\n"; 
         for ($j = 0;$j < $this->tableSize['cols'];$j++) { 
            echo "<td align=\"left\" valign=\"top\" width=\"$cellwidth%\" style=\"padding-bottom:10px; font-style: italic;\" class=\"text\">\n{$beschreibung[$j]}\n</td>\n"; 
         } 
         echo "</tr>\n"; 
      } 
      echo "</table>\n"; 
   } 

   function showNavigation() { 

      if ($this->tableSize['cols'] * $this->tableSize['rows'] < count($this->picture)) { 
         echo "<table width=\"100%\">\n<tr>\n"; 

         if (!empty($_REQUEST['pos'])) { 
            $pos = ($this->showNextPictureSeq <= $this->tableSize['cols'] * $this->tableSize['rows']) ? (0) : ($this->showNextPictureSeq - (2 * $this->tableSize['cols'] * $this->tableSize['rows']) + 1); 
            $pos = ($pos < 0) ? (0) : ($pos); 
            $link = $GLOBALS['sess']->url("front_content.php?client={$GLOBALS['client']}&lang={$GLOBALS['lang']}&idcat={$GLOBALS['idcat']}&idart={$GLOBALS['idart']}&pos=$pos"); 
            echo "<td style=\"text-align:left; width:33%\"><a href=\"$link\">{$this->link['previous']}</a></td>"; 
         } else { 
            echo "<td style=\"text-align:left; width:33%\">&nbsp;</td>"; 
         } 

         echo "<td align=\"center\" width=\"33%\">&nbsp;</td>"; 

         if ($this->showNextPictureSeq + 1 < count($this->picture)) { 
            $pos = $this->showNextPictureSeq + 1; 
            $link = $GLOBALS['sess']->url("front_content.php?client={$GLOBALS['client']}&lang={$GLOBALS['lang']}&idcat={$GLOBALS['idcat']}&idart={$GLOBALS['idart']}&pos=$pos"); 
            echo "<td style=\"text-align:right; width:33%\"><a href=\"$link\">{$this->link['next']}</a></td>"; 
         } else { 
            echo "<td style=\"text-align:right; width:33%\">&nbsp;</td>"; 
         } 

         echo "</tr>\n</table>\n"; 
      } 
   } 

} 

$gallery = new gallery(); 
?>

bekomme im Front_Content folgenden Fehler...

Verfasst: Di 18. Nov 2008, 16:02
von musicmaker3112
Warning: sort() expects parameter 1 to be array, null given in /var/www/web4/html/cms/front_content.php(941) : eval()'d code on line 211

Warning: Invalid argument supplied for foreach() in /var/www/web4/html/cms/front_content.php(941) : eval()'d code on line 214

Bin nicht nicht wirklich der "Held" in Contenido. Kann mir aus diesem Grund jemand unter die Arme greifen ?

Re: bekomme im Front_Content folgenden Fehler...

Verfasst: Di 6. Jan 2009, 13:02
von jwulfes
Hallo zusammen!

Ich habe die Bildgalerie bei mir auf der Seite ausprobiert und werde Sie auch einbauen.

Hat jemand von Euch schon einmal ausprobiert Kommentare zu den einzelnen Bilder zu setzten oder die Reihenfolge beeinflussbar zu machen?

Das wären zwei Features, die für mich wichtig wären.

ich wünsche Euch allen noch einen schönen Tag!

Re: Bildergalerie w3concepts.gallery

Verfasst: So 21. Jun 2009, 12:15
von Tshirts-4u
Hallo Zusammen,

ich habe diese w3c Gallery schon früher in Contenido verwendet und bisher auch sehr erfolgreich.

Das aktuelle Problem mit der hier veröffentlichten Version ist jedoch folgendes. Wenn ich das Modul in ein Template einbinde werden alle nachfolgenden Module, die sich in einem Template befinden "deaktiviert". Da ich die neue Contenido Version 4.8.12 verwende macht mich dieses Problem rasend!

Hier mal der Link zu meinem Problem:
http://neu.biv-rheinland.de/cms/front_c ... p?idart=75

Man sieht hier deutlich, dass die Meta Navigation und die Footnotes die aus den angegebnen Templates generiert werden sollen eben nicht generiert werden.

Wer kann mir helfen? Es ist wirklich dringend !!!!!!
Danke.

Re: Bildergalerie w3concepts.gallery

Verfasst: So 21. Jun 2009, 12:55
von Halchteranerin
hä? Ich sehe keinen Unterschied zwischen der Seite mit der Galerie und anderen Seiten. :roll:

Kannst du mal das Problem GENAU beschreiben??

Re: Bildergalerie w3concepts.gallery

Verfasst: So 21. Jun 2009, 14:05
von idea-tec
also ich seh ebenfalls nicht, footer is da, nichts ungewöhnliches

Re: Bildergalerie w3concepts.gallery

Verfasst: Di 7. Jul 2009, 14:53
von Uwe
Danke!

Update ging schnell, alle Einstellungen übernommen, läuft perfekt :-)

Grüße vom Bodensee, Uwe

Re: Bildergalerie w3concepts.gallery

Verfasst: Di 20. Sep 2011, 01:49
von Kickbanignore
Tshirts-4u hat geschrieben: Das aktuelle Problem mit der hier veröffentlichten Version ist jedoch folgendes. Wenn ich das Modul in ein Template einbinde werden alle nachfolgenden Module, die sich in einem Template befinden "deaktiviert". Da ich die neue Contenido Version 4.8.12 verwende macht mich dieses Problem rasend!

[...]

Man sieht hier deutlich, dass die Meta Navigation und die Footnotes die aus den angegebnen Templates generiert werden sollen eben nicht generiert werden.
Also ich hab dieses Problem auch gerade festgestellt. Hast du das inzwischen in den Griff bekommen?

Edit, habs rausgefunden:

Code: Alles auswählen

// aussteigen, falls initialwerte nicht sinnvoll
if (!$this->checkInitValues()) return false;
Das muss auskommentiert werden, dann gehts mit den Templates.

Re: Bildergalerie w3concepts.gallery

Verfasst: Fr 23. Sep 2011, 04:20
von Kickbanignore
Hab trotzdem noch ne Frage.. wäre es möglich das Modul so anzupassen, dass nicht nur die Bilder des ausgewählten Verzeichnisses angezeigt werden, sondern auch alle Bilder der Unterverzeichnisse, die sich darin befinden?

Re: Bildergalerie w3concepts.gallery

Verfasst: So 25. Sep 2011, 19:10
von Halchteranerin
Hallo,

versuch's evtl. mit diesem Modul, Murat hat es frisch überarbeitet und daher ist er "drin", falls es nicht direkt mit dem Modul geht, vielleicht ist es nicht so schwierig, es anzupassen: http://forum.contenido.org/viewtopic.php?f=60&t=31582

Gruß
Christa

Re: Bildergalerie w3concepts.gallery

Verfasst: Fr 10. Feb 2012, 13:34
von ZuMe
Huhu...

würd mich über Hilfe freuen...vielleicht bin ich einfach zu blöd...

Ich habe die Galerie auf eine Demo-Seite eingebaut, hier http://marie-und-peters.s-e-i-t-e-n.de/ ... p?idcat=95

Es ist das popupviewer script von kummers posting drin und das Modul von hier.

Wie man sehen kann, funktioniert das Auslesen der Galerie-Bilder nicht richtig - wenn man auf 'nächste Seite' drückt, werden dieselben bilder wieder ausgelesen. Erst wenn man ein paar mal hin- und her geklickt hat, erscheinen die weiteren Bilder in dem Verzeichnis. Es sind insgesamt nur 15 oder so, also es müssten eigentlich nur 2 Seiten mit Thumbnails sein.
Wenn man auf die Thumbnails drückt, kommt zwar ein Popup, aber eins, das 100 px groß ist.
Ich hatte testweise im Modul die Grösse für Thumbnails auf 800 geändert, ob sich dann die Popup-grösse ändert, aber da ist nichts passiert. Woher der die Grösse mit 100px hat - keine Ahnung.
Einen Kommentar kann ich auch nirgends erfassen oder angeben.

Bin für jeden Tipp dankbar.

Verwendetes System :
Contenido 4.8.15, recht frisch installiert. Ist der dritte angelegte Mandant in dem System.
Die aktuell laufende MySQL Version ist: 5.1.49-3~bpo50+1-log
PHPInfo hier einsehbar: http://marie-und-peters.s-e-i-t-e-n.de/phpinfo.php

lg,
Suse

Re: Bildergalerie w3concepts.gallery

Verfasst: Fr 10. Feb 2012, 14:29
von ZuMe
ah.. hat sich erledigt. Es hing an dem fehlenden Thumbnail-Verzeichnis, so daß die Galerie die erstellten Thumbnails immer wieder mit ausgelesen hat. (und diese sind ja nur 100px groß).

Danke :)

Re: Bildergalerie w3concepts.gallery

Verfasst: Mo 13. Feb 2012, 13:54
von ZuMe
Hmm.. ich habe in demselben Contenido einen weitern Mandanten (Hat die Nr. 8 vom System bekommen) angelegt und dem ebenfalls eine Bildergalerie gegeben.
http://maryann-und-jans.s-e-i-t-e-n.de/ ... ontent.php

Hab dasselbe gemacht wie bei dem davor, importiert und popupscript hochgeladen, dann Template konfiguriert.
Geht auch - sieht prima aus :) Auch die eigene Konfiguration (Thumbnailgrösse 150x150, beim vorherigen Mandanten 100x100) wird angenommen.
Die Kommentare zu den Bildern allerdings sind immer dieselben - sie entspringen dem Mandant Nr. 6, den ich weiter oben beschrieben habe ( http://marie-und-peters.s-e-i-t-e-n.de/ ). Sprich, ändert Mandant Nr. 6 einen Kommentar zu einem Bild, wird dies so auch bei Mandant Nr. 8 angezeigt. Die Kommentare, die Mandant Nr. 8 eingegeben hat, werden nie angezeigt.

Es kann sein, daß es nur daran liegt daß es auf diesem Testsystem dieselben Bilder sind und exakt gleich heissen - das wird in einem 'echten' System wohl so nicht vorkommen. Trotzdem - ist es möglich das Auslesen der Kommentare an den Mandanten zu koppeln? Was muss ich wie wo ändern?

Thx & lg,
Suse

Re: Bildergalerie w3concepts.gallery

Verfasst: Di 14. Feb 2012, 00:52
von Halchteranerin
Hallo Suse,

versuch's doch mal mit dieser Version, die von Murat überarbeitet wurde: http://forum.contenido.org/viewtopic.php?f=60&t=31582

Gruß
Christa