Seite 4 von 18

Verfasst: Mi 29. Sep 2004, 16:10
von kummer
habe noch einen weiteren kleinen fehler entdeckt und publiziere deshalb gleich mal den ganzen output-code nochmals:

Code: Alles auswählen

<?
/***********************************************
* 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[] = $file;
			}
		}
		rsort($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 $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%\">\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;\">\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();
?>
gruss,
andreas

Verfasst: Mi 29. Sep 2004, 16:22
von Schappo
Hallo Kummer,

danke für die schnelle Hilfe, aber im errorlog steht immer noch
[29-Sep-2004 17:19:51] PHP Warning: sort() expects parameter 1 to be array, null given in /www0935/www.schabos-metall.de/cms/front_content.php(563) : eval()'d code on line 632
Außerdem sieht die Bildbeschreibung jetzt anders formatiert aus, schau mal:
http://www.schabos-metall.de/cms/front_ ... p?idcat=33

Schappo

Verfasst: Mi 29. Sep 2004, 16:32
von kummer
hallo schappo

du hast noch nicht alle änderungen umgesetzt. in der methode 'showGallery' ist noch ein prozentzeichen hinter dem variablenaufruf $cellwidth zu setzen (siehe korrigierte version oben). dann sollte die ausgabe wieder gut sein.

den zweiten fehler kann ich bei mir leider nicht reproduzieren. tritt der fehler bei jedem aufruf auf oder vielleicht nur dann, wenn man an das ende der galerie gelangt? könntest du das mal prüfen?

gruss,
andreas

Verfasst: Mi 29. Sep 2004, 16:47
von Schappo
kummer hat geschrieben:
du hast noch nicht alle änderungen umgesetzt.
nein, den neuen output hatte ich noch nicht gesehen, als ich Dir geschrieben hatte. Jetzt ist alles wieder ok, komischerweise tritt nun überhaupt keine Fehlermeldung mehr auf (mehrmals kontrolliert).

Herzlichen Dank!!!

Schappo

Verfasst: Mi 29. Sep 2004, 17:19
von kummer
gern geschehen! mein kunde wird dir dankbar sein, da nun auch sein errorlog von solchen meldungen befreit ist.

Alphabetische Ordnung

Verfasst: Fr 8. Okt 2004, 18:51
von rainium
Das Modul ist super - vor allem mit dem Beschreibungstext. Ich verwernde es unter
http://www.heiligkreuz.at/astro/cms/fro ... 1&client=1

Eine Frage habe ich noch.
Ist es möglich die Bilder alphabetisch zu ordnen bzw. kann man das im Modul irgendwo einstellen/abändern?

Grüße
Rainer

Verfasst: Sa 9. Okt 2004, 11:51
von kummer
die liegen bereits sortiert vor. derzeit - irrtum vorbehalten - glaube ich in umgekehrter alphabetischer reihenfolge. suche mal im code nach ksort() oder sort(). dann einfach entsprechend anpassen.

falls du es nicht hinkriegen solltest, einfach nochmals melden. ich kann mich dann irgendwann nächste woche darum kümmern.

gruss,
andreas

w3concepts.gallery.v1 - zeigt bei Beschreibung + Zeichen

Verfasst: Sa 9. Okt 2004, 20:18
von DEDE
Guten Abend allerseits,

w3concepts.gallery.v1 zeigt mehr mehreren Worten in der Beschreibung
Plus-Zeichen an.
Wo bauch ich den da "urldecode" ein?

Gruss und frohen Abend

Dede

GELÖST

Verfasst: Sa 9. Okt 2004, 21:54
von DEDE
Die Änderung soll ins OUTPUT

$beschreibung[] = urldecode($this->getDescription());

dann tuts ohne +
Danke! :!:

Verfasst: Di 12. Okt 2004, 20:42
von rainium
Also ganz so gut kenn ich mich nicht aus. Ich hab folgendes gefunden

sort($picture[]);

Was muss ich ändern um die Sortierung alphabetisch oder eventuell nach Uploaddatum zu ordnen? Eigenlich ist alphabetisch schon voll ausreichend.
Schöne Grüße aus Tirol
Raier

Verfasst: Mi 13. Okt 2004, 09:49
von imuhcs
ich habe ein ganz ähnliches Problem wie Schappo:

folgende Fehler stehen bei mir im Error Log. Habe schon den neuen output ins modul eignetragen!!


[13-Oct-2004 10:45:20] PHP Warning: rsort() expects parameter 1 to be array, null given in C:\webdeveloper\apache\Apache2\htdocs\cmstest\contenido-4.4.4\cms\front_content.php(563) : eval()'d code on line 465
[13-Oct-2004 10:45:20] PHP Warning: Invalid argument supplied for foreach() in C:\webdeveloper\apache\Apache2\htdocs\cmstest\contenido-4.4.4\cms\front_content.php(563) : eval()'d code on line 468

woran liegts?

Was mache ich falsch?

Verfasst: Mi 13. Okt 2004, 10:35
von Halchteranerin
Hallo,

ich wollte auch mal diese Galerie einbauen, aber es gelingt mir nicht.

Ich huete mich davor, zu behaupten, dass ich keinen Fehler gemacht habe :wink:, aber ich weiss nicht, wo ich suchen soll. Das Problem, was ich habe, ist, dass die Bildbeschreibung, die ich bei den Thumbnails angegeben habe, in der Galerie nicht angezeigt wird.

Die Datei popupviewer.php benutze ich von der anderen Galerie von Andreas, aber daran soll's nicht liegen, denn die Popups funktionieren ja.

Muessen bei allen Thumbnails Beschreibungen vorhanden sein (das ist bei mir naemlich nicht der Fall), oder ist es so, dass Beschreibungen einfach nur dann angezeigt werden, wenn sie vorhanden sind?

Andreas, hast du irgendeine Idee?

Gruss
Christa

Verfasst: Mi 13. Okt 2004, 10:51
von Halchteranerin
Hi Susanne,
Susanne hat geschrieben:Thema Fehler mit IE6

Heisst der Fehler 'bild' is not defined?
Falls ja, dann ist es evtl. dasselbe wie bei der alten Bildergallerie.
Abhilfe schafft das Update des IE. Bei den anderen Browsern z.B. Firefox wird der Fehler auch angezeigt in der JS-Konsole, aber nicht mit Dialogbox.
ich habe den Fehler auch (mein IE spricht aber deutsch, deswegen heisst es 'bild' ist undefiniert :P), aber ich habe schon alles aktualisiert, was man nur haette aktualisieren koennen, und der Fehler tritt trotzdem auf, sowohl unter win98se als auch unter winxp. :cry:

Gruss
Christa

Verfasst: Mi 13. Okt 2004, 12:03
von imuhcs
Was kann denn bitte bei folgenden Fehlermeldungen im error Log
falsch eingestellt sein?


[13-Oct-2004 10:45:20] PHP Warning: rsort() expects parameter 1 to be array, null given in C:\webdeveloper\apache\Apache2\htdocs\cmstest\contenido-4.4.4\cms\front_content.php(563) : eval()'d code on line 465
[13-Oct-2004 10:45:20] PHP Warning: Invalid argument supplied for foreach() in C:\webdeveloper\apache\Apache2\htdocs\cmstest\contenido-4.4.4\cms\front_content.php(563) : eval()'d code on line 468

Galerie funktioniert (fast)

Verfasst: Mi 13. Okt 2004, 12:03
von Aixtraweb
Hallo,

bei mir funktioniert (fast) alles, doch das Modul produziert keine Thumbnails bei mir - woran kann das liegen?

Die Popup-Bilder sind vorhanden, muss ich die Thumbs selber erzeugen?