Bildergalerie w3concepts.gallery.v1 :: neues Modul

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 29. Sep 2004, 16:10

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
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Schappo
Beiträge: 26
Registriert: Mo 19. Jan 2004, 08:47
Wohnort: Nordwalde NRW
Kontaktdaten:

Beitrag von Schappo » Mi 29. Sep 2004, 16:22

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

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 29. Sep 2004, 16:32

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
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Schappo
Beiträge: 26
Registriert: Mo 19. Jan 2004, 08:47
Wohnort: Nordwalde NRW
Kontaktdaten:

Beitrag von Schappo » Mi 29. Sep 2004, 16:47

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

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 29. Sep 2004, 17:19

gern geschehen! mein kunde wird dir dankbar sein, da nun auch sein errorlog von solchen meldungen befreit ist.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

rainium
Beiträge: 6
Registriert: Fr 8. Okt 2004, 18:47
Wohnort: Österreich
Kontaktdaten:

Alphabetische Ordnung

Beitrag von rainium » Fr 8. Okt 2004, 18:51

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

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Sa 9. Okt 2004, 11:51

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
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

DEDE
Beiträge: 314
Registriert: Do 19. Feb 2004, 16:15
Kontaktdaten:

w3concepts.gallery.v1 - zeigt bei Beschreibung + Zeichen

Beitrag von DEDE » Sa 9. Okt 2004, 20:18

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

DEDE
Beiträge: 314
Registriert: Do 19. Feb 2004, 16:15
Kontaktdaten:

GELÖST

Beitrag von DEDE » Sa 9. Okt 2004, 21:54

Die Änderung soll ins OUTPUT

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

dann tuts ohne +
Danke! :!:
Zuletzt geändert von DEDE am Di 19. Okt 2004, 16:09, insgesamt 1-mal geändert.

rainium
Beiträge: 6
Registriert: Fr 8. Okt 2004, 18:47
Wohnort: Österreich
Kontaktdaten:

Beitrag von rainium » Di 12. Okt 2004, 20:42

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

imuhcs
Beiträge: 27
Registriert: Do 30. Sep 2004, 07:59
Kontaktdaten:

Beitrag von imuhcs » Mi 13. Okt 2004, 09:49

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?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Was mache ich falsch?

Beitrag von Halchteranerin » Mi 13. Okt 2004, 10:35

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

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 13. Okt 2004, 10:51

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

imuhcs
Beiträge: 27
Registriert: Do 30. Sep 2004, 07:59
Kontaktdaten:

Beitrag von imuhcs » Mi 13. Okt 2004, 12:03

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

Aixtraweb
Beiträge: 100
Registriert: Do 23. Sep 2004, 10:55
Wohnort: Herzogenrath
Kontaktdaten:

Galerie funktioniert (fast)

Beitrag von Aixtraweb » Mi 13. Okt 2004, 12:03

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?
Zuletzt geändert von Aixtraweb am Mi 13. Okt 2004, 14:14, insgesamt 3-mal geändert.
Mit freundlichen Grüßen
Jörg Knörchen

Meine Hobby-Webseite:
www.mein-foto-abc.de : contenido 4.6.15 - I love it! : www.yogie.de : www.bastelstun.de

Gesperrt