Zum Inhalt springen

Probleme und Fehler mit jm_gallery0.7.0 (WebsitePhotoGallery)

Erstellt am 5. September 2006 · 10 Antworten · letzte Antwort am 20. September 2006

Tags: Bilder, PHP, Frage

flashsilver ·

ich bekomme folgende Fehlermeldungen wenn ich die Seite aufrufe, wo die Biler angezeigt werden sollen:

Warning: getimagesize(): Read error! in /web/apache/.../typo3conf/ext/jm_gallery/pi1/class.tx_jmgallery_model_Album.php on line 240

Warning: getimagesize(): Read error! in /web/apache/.../typo3conf/ext/jm_gallery/pi1/class.tx_jmgallery_model_Album.php on line 240

Warning: Cannot modify header information - headers already sent by (output started at /web/apache/.../typo3conf/ext/jm_gallery/pi1/class.tx_jmgallery_model_Album.php:240) in

Desweiteren wird das kompette Content nicht in die Seite eingefügt nur die Überschrift des CE. Weder ALBEN, SINGLE oder ADMIN funktionieren.
Hab die Doku durchgearbeitet und mir das Video angeschaut, aber beides hat nix geholfen.

Haben Sie da eine idee? Typo3 Version 4.0.1 #paralyzed#

aguen ·

Die ersten beiden Fehlermeldungen sehen ganz danach aus, als wenn die Bilder nicht gefunden werden. Kann passieren, wenn der Pfad nicht stimmt, wenn Bilder "per Hand" geloescht wurden etc. Die dritte Fehlermeldung ist einfach eine Folge der ersten beiden.

aguen ·

Hier noch ein paar Probleme und Fehler, die ich mit jm_gallery 0.7.0 hatte:

(1)
Wenn man keine unterschiedlichen Download-Versionen verwendet: d. h.
plugin.tx_jmgallery_pi1.versions =
dann wird der Platzhalter ###IMAGE_DOWNLOADS### falsch gerendert und die Originalaufloesung des Bildes gleich zweimal zum Download angeboten, z. B. 244x346|244x346

Ursache: In class.tx_jmgallery_view_Single.php wird in der Funktion display() die Schleife
while (list(, $resolution) = each($versions)) { ... }
offenbar auch bei $versions="" durchlaufen.

Workaround (rough & dirty): Ich habe um die while-Schleife noch eine zusaetzlich if-Bedingung gelegt:

if ($this->conf['versions']<>"") {
   while (list(, $resolution) = each($versions)) {
   ... 
   } 
}

(2)
Ich wollte meine Fotos in der Album-Uebersicht statt mit dem Dateinamen mit einer Id-Nummer bezeichnen, die folgendermassen aus der Albumnummer und der Bildnummer zusammengesetzt ist: ###ALBUM_UID###/###IMAGE_UID###. Das funktioniert aber nicht: ###ALBUM_UID### bleibt leer.

Ursache: In class.tx_jmgallery_view_Album.php, Zeile 106, wird der Platzhalter ###ALBUM_UID### durch einen leeren String ersetzt, da $this->_GP["albumUid"] keinen Wert liefert:

Workaround (rough & dirty): Ich habe

$marks["###ALBUM_UID###"] = $this->_GP["albumUid"];

ersetzt durch:

$marks["###ALBUM_UID###"] = $album->getUid();

Aber Achtung: Ich weiss nicht, ob das in allen Kontexten problemlos moeglich ist.

(3)
Die Angaben zum Titel und Untertitel eines Albums unterscheiden sich im Admin-Interterface je nachdem, ob man Listenansicht mit allen Alben oder ob man die Bearbeitungsansicht fuer ein Album oeffnet:

z. B. Listenansicht:

Urlaub 2005: Untertitel von Urlaub 2005 7 Bilder
Urlaub 2006: Untertilte von Urlaub 2006 9 Bilder

Bearbeitungsansicht fuer Album Urlaub 2005:

Allgemeines:
Album Titel: Mein Urlaub 2005
Album Untertitel: Neuer Untertitel von Urlaub 2005

Ursache: Titel und Untertitel werden in der DB zweimal, in zwei unterschiedlichen Tabellen gespeichert:
In tx_jmgallery_albums und in tx_jmgallery_album_properties. Aus _albums werden Titel und Untertitel bei der Admin-Listenanzeige geholt, aus _properties bei der Admin-Einzelansicht.

Loesung: Die doppelte Speicherung von Titel und Untertitel sollte man in der DB-Architektur des Plugins eliminieren. Mir leuchtet ohnehin nicht ein, warum die _properties in einer eigenen Tabelle und nicht innerhalb der _albums Tabelle gespeichert werden, da es sich hier doch wohl um eine 1:1 Relation handelt. Allzu viele Tabellen machen das Plugin fehleranfaellig - wie man sieht.

(4)
Wenn man ein neues Album im FE anlegt, erhaelt das Download-Verzeichnis fuer die Bilder den Namen des Albums. Das ist zwar uebersichtlich, kann aber leicht zu Problemen mit dem Verzeichnisnamen fuehren, z. B. dann, wenn der Albumtitel Umlaute enthaelt. Beispiel: Das Album hat den Namen "Süße Köstlichkeiten". In diesem Fall ist es sehr wahrscheinlich, dass kein einziges Bild gefunden wird.

Workaround (rough & dirty): Ich habe class.tx_jmgallery_controller_Admin.php so veraendert, dass das Downloadverzeichnis die Uid-Nummer des Albums erhaelt. Eine schnelle Moeglichkeit, dies zu erreichen besteht darin, nach $album->create(); in Zeile 398 folgendes einzufuegen:

$album->directory = rtrim ($this->conf["admin."]["basePath"], '/') . '/' .$album->uid;
$album->update();
$this->checkDirectory(rtrim ($this->conf["admin."]["basePath"], '/') . '/' .$album->uid);

Dadurch wird der Verzeichnisname auf die Album-Uid gesetzt.
Das hat auch den weiteren Vorteil, dass bei gleichem Albumname von zwei unterschiedlichen Alben die Bilder nicht in dasselbe Verzeichnis kopiert werden - wie es jetzt wohl der Fall ist!

(4a)
Umlaute in den Dateinamen von Bildern machen dieselben Probleme wie in den Titeln von Alben (= Verzeichnisnamen). Da ich das Plugin in einem Kontext einsetzten moechte, in dem unterschiedliche Redakteure Alben einrichten und Bilder hochladen koennen, kann man nicht darauf vertrauen, dass alle Nutzer nur unproblematische Dateinamen oder Albentitel verwenden.

(5)
Es gibt noch eine Reihe von Fehlermeldungen, die man besser abfangen koennte/sollte: Z. B. wenn man in der Admin-Ansicht die Eigenschaften eines Albums (z. B. Albumtitel) aendern moechte und auf "Aktualisieren" klickt, aber noch kein Cover-Foto ausgewaehlt wurde, kommt folgendes:

Fatal error: Call to a member function on a non-object in /typo3conf/ext/jm_gallery/pi1/class.tx_jmgallery_controller_Admin.php on line 256

flashsilver ·

So habe das alles was Sie mir geschriebne ausprobiert bzw verbesert, aber dennoch erscheint bei mir immer noch nciht das LAbum, Single oderAdmin der Galerie, folgendes steht dann im HTML-Code:

...<div id="artikeln"><!--TYPO3SEARCH_begin-->

	<!--  CONTENT ELEMENT, uid:231/list [begin] -->
		<a id="c231"></a>
		<!--  Plugin inserted: [begin] -->
			


	<!--

		BEGIN: Content of extension "jm_gallery", plugin "tx_jmgallery_pi1"

	-->
	<div class="tx-jmgallery-pi1">
		
	</div>
	
	<!-- END: Content of extension "jm_gallery", plugin "tx_jmgallery_pi1" -->

	
		<!--  Plugin inserted: [end] -->

			
	<!--  CONTENT ELEMENT, uid:231/list [end] -->
		<!--TYPO3SEARCH_end--></div>...

Und folgendes habich in Constants im template der Seite eingetragen wo die Liste mit Fotos angezeigt werden soll:

plugin.tx_jmgallery_pi1.list_pid = 174
plugin.tx_jmgallery_pi1.album_pid = 176
plugin.tx_jmgallery_pi1.single_pid = 175
plugin.tx_jmgallery_pi1.properties_pid = 174

single.maxHeight = 600single.maxWidth = 600single.quality = 90thumbnail.maxWidth = 200thumbnail.maxHeight = 200thumbnail.quality = 90cover.maxHeight = 400cover.maxWidth = 400cover.quality = 75

plugin.tx_jmgallery_pi1.admin = general,synchronize,upload,edit

# to set 800px and 1024px resolutionplugin.tx_jmgallery_pi1.versions = 800,1024# to disable extra resolutionsplugin.tx_jmgallery_pi1.versions = 

plugin.tx_jmgallery_pi1.cover.maxHeight = 100
plugin.tx_jmgallery_pi1.cover.maxWidth = 80

Wobei 174 die Ausgangseite der Fotos mit er Liste ist, 176 die Albumansichtseite und 175 die Einzelansichtseite, wo ich jeweils ein PlugIn mit den jeweiligen Einstellunge LIST SINGLE ALBUM ADMIN habe
ausserdem hab ich CSS Styled Content und CSS-based template(jm_gallery) eingebunden.

Was soll ich da noch groß falsch gemacht haben oder ist es unbedingt nötig ein Templatevorlage zu schreiben ähnlich wie bei der NEWS-Extension mit Markern etc? Typo3 Version 4.0.1

aguen ·

Wobei 174 die Ausgangseite der Fotos mit er Liste ist, 176 die Albumansichtseite und 175 die Einzelansichtseite, wo ich jeweils ein PlugIn mit den jeweiligen Einstellunge LIST SINGLE ALBUM ADMIN habe

LIST = 174
ALBUM = 176
SINGLE = 175
ADMIN = ???

Hmm, dumme Frage, ich weiss:
Aber du -ich bleibe mal beim Forenueblichen "Du" - hast schon bei allen drei Seiten (174,175,176) bei den Plugin Options als "Ausgangspunkt" eine Seite (bzw. einen Systemfolder) eingetragen, auf der ein WPG Album als Inhaltselement angelegt ist? Wenn du nur die Plugins einfuegst, diese aber nicht mit einem Sysfolder verbindest, auf dem ein Album definiert ist, bekommst du genau den leeren Output, den du eben bekommst.
Und bei dem WPG Album in dem besagten Sysfolder muss dann in "Default Upload Directory" ein gueltiger Pfad auf das Downloadverzeichnis stehen, in dem sich die Fotos befinden.
Und schliesslich muss du ein Inhaltselement WPG Category (am besten in besagtem Sysfolder) anlegen, bei der in "List of Albums" diese WPG Album unter "Ausgewählt:" aufgelistet wird.

flashsilver ·

ja danke für deine mühe so ein newbie in typo3 wie mich zu erklären wie das mit der gallery geht. Besten Dank. Leider werden jetzt Alben und Categorien etc angezeigt und ich kann über die adminseite auch bilder hochladen, leider werden die thumbnails der hochgeladenen bilder nicht angezeigt, weder in vorschau der categorie noch wenn ich auf das album gehe noch in der Einzelsicht, erst bei Download wird das bild angeziegt #paralyzed#

So sieht der Quelltext von der Einzelannsicht aus, der Pfad zum Bild ist da:

<div class="tx-jmgallery-pi1">
		

<div class="jm-gallery-image-metainformation-top">
		<h3 class="jm-gallery-image-header">artikel.jpg</h3>
		0 Hits
</div>
<div class="jm-gallery-image-browser">
	<span style="padding-right: 50px;">&laquo; Previous photo</span>
	<a href="index.php?id=176&tx_jmgallery_pi1[albumUid]=5">Up to thumbnails</a> or 
	<a href="index.php?id=174">Back to Gallery Index</a>

	<span style="padding-left: 110px;"><a href="index.php?id=175&tx_jmgallery_pi1[albumUid]=5&tx_jmgallery_pi1[imageUid]=6">Next photo &raquo;</a></span><br />
</div>

<div class="jm-gallery-image-single">
	<img src="fileadmin/bilder/singles/artikel.jpg" />
</div>

<div class="jm-gallery-image-browser">
	<span style="padding-right: 50px;">&laquo; Previous photo</span>
	<a href="index.php?id=176&tx_jmgallery_pi1[albumUid]=5">Up to thumbnails</a> or 
	<a href="index.php?id=174">Back to Gallery Index</a>

	<span style="padding-left: 110px;"><a href="index.php?id=175&tx_jmgallery_pi1[albumUid]=5&tx_jmgallery_pi1[imageUid]=6">Next photo &raquo;</a></span><br />
</div>
<div class="jm-gallery-image-downloads">
	Download (context menu to download)<br />
	[<a href="fileadmin/bilder/artikel.jpg">70x100</a>] 
</div>

	</div>

Aber im Ordner ist jetzt kein bild vorhanden, muss ich jetzt immer noch eigene Singles und thumbnails zu dem bild hochladen? Wohl kaum das wird denke ich mal beim synchronisieren gemacht oder kannste mir verraten in welcher php datei die erstellung der single und thumbnail gemacht werden verraten?

aguen ·

Es stimmt: Wenn du auf "synchronize" auf der Adminseite klickst, wird zu jedem Bild im Downloadverzeichnis deines Albums die Thumbs und die Single-Ansichten erstellt. Offenbar hast du deine Originalfotos (z. B. artikel.jpg) in das Verzeichnis

fileadmin/bilder/

hochgeladen. Wenn Du jetzt auf der Adminseite des Albums, das auf das Verzeichnis fileadmin/bilder verweist, auf "synchronize" klickst, solltes du eine Seite mit einer Liste aller Dateinamen von Bildern in diesem Verzeichnis sehen. Und wenn du eine kleine Weile wartest muss hinter jedem dieser Dateinamen ein Haeckchen erscheinen. Das heisst, dass das entsprechende Thumb- und Single-Bild generiert wurden.
Diese generierten Bilder sollten sich dann bei die in folgenden Verzeichnissen finden:

fileadmin/bilder/singles/
fileadmin/bilder/thumbs/

Ausserdem gibt es noch das Verzeichnis

fileadmin/bilder/covers/

Da wird ein Bild gepeichert, das in der Listenansicht aller Alben fuer dieses Album steht. Dazu musst du wahrscheinlich nochmal auf der Adminseite des Albums auf "Aktualisieren" klicken (ein Dateiname sollte in der Dropdown-Liste ausgewaehlt sein), damit auch dieses Cover-Bild generiert wird.

Erscheinen denn bei dir die Haeckchen hinter den Dateinamen, wenn du "synchronize" klickst?

Werden die Verzeichnisse
fileadmin/bilder/singles/
fileadmin/bilder/thumbs/
fileadmin/bilder/covers/
generiert?

Und befinden sich Bilder drin?

Viel Erfolg!

flashsilver ·

Es erscheinen die Häkchen und die 3 Ordner wurden auch erstellt aber ohne die entsprechenden Bilder darin, das ist ja das komische daran o.O

aguen ·

imagemagick ist installiert und funktioniert?

Wenn ja, bin ich mit meinem Latein auch erstmal am Ende. Ich wuerde dann in der Datei
class.tx_jmgallery_model_Image.php
versuchen Klarheit zu verschaffen, wo es klemmt. Die Funktion resize (Zeile 374ff.) ist fuer das Generieren der Bilder verantwortlich. Vielleicht machst du mal ein

debug($cmd);

nach Zeile 386 oder schaust dir an, ob die Parameter

debug($width." ".$height." ".$quality." ".$source." ".$target);

korrekt uebergeben werden usw.

flashsilver ·

Ja danke für dein Tipp. Ja der IM war nciht richtig konfiguriert, da fehlter der Pfad usr/bin/im - anscheind der standardpfad 🙂

Jetzt werden cover thumb und single bilder von dem originalbilder in den 3 entsprechenden Ordner erzeugt, aber beim Cover fehlt im html-code die pfadangabe,egal weclhes bild ich auswähle, ob gif oder jpg, da wird der Pfda nicht wie bei thumb oder single eingefügt #paralyzed# das kann dann nur am jm_gallery liegen.

aguen ·

Zum Problem "fehlender Pfad eim Cover" kann ich nichts sagen. Dafuer hier etwas zu einem anderen Problem/Bug:
Bei der Administration eines Fotoalbums im FE gibt es folgendes Problem bei der Aktualisierung der Meta-Informationen wie Album Titel und Album Untertitel:

Aendert man z. B. den Album Titel, so wird der neue Titel zwar korrekt in die Datenbank eingetragen - aber der FE User sieht das nicht, da weiterhin der alte Titel im aktualisierten FE-Formular erscheint. Klickt der User dann irritiert nochmal auf "Aktualisieren", so ueberschreibt er den neuen Titel wieder mit dem alten usw. Sehr verwirrend.

Problemloesung: In der Datei class.jmgallery_model_Album.php etwa bei Zeile 135 ist folgende Funktion zu aendern:

Alt:

function getSettings() {
   if ($this->settings === NULL) $this->fetchSettings();
   return $this->settings;
}

Neu:

function getSettings() {
   $this->fetchSettings();
   return $this->settings;
}

Die Bedingung ($this->settings === NULL) verhindert, dass die Einstellungen fuer das Album nach dem Update der Datenbank ebenfalls aktualisiert werden.
Nachteil: Das Entfernen der Bedingung fuehrt moeglicherweise zu einigen ueberfluessigen Datenbankabfragen.