noox bloggt!

Foren & Web.

Foto-Alben für unsere Mountainbike-Downhill-Seite

Als für unsere Mountainbike Downhill Webseite eine Fotogalerie für User anstand, schaute ich mir zuerst Gallery 2 und etwas auch Coppermine an. Allerdings stellte sich bald raus, dass diese eigentlich nicht das sind, was ich brauchte.

Wichtig war natürlich, dass es sich in mein vBulletin Diskussionsform einbinden lässt. Nicht optisch, aber die User sollten gekoppelt sein. Es sollte verschiedene Kategorien geben, in denen User Fotos uploaden können. Allerdings gefiel mir da weder das Layout von Coppermine noch von Gallery 2. Von Gallery 2 las ich dann, dass es extrem objektorientiert und programmtechnisch sauber programmiert ist, aber deswegen eher langsam und vorallem zum Hacken (Ändern) schwer zu durchblicken ist. Soweit ich mich erinnern kann schied auch Coppermine aus, weil ich zuviel ändern hätte müssen, damit es für mich gepasst hätte. Allerdings habe ich mir Coppermine am wenigsten genau angesehen.

Downhill-Rangers Foto-Galerie mit Photpost

Daher schaute ich mich auch bei den kommerziellen Anbietern um. Und so kam ich auf Photopost. Photopost bietet die vBulletin-Einbindung schon Out-Of-The Box mit. Außerdem können damit z.B. auch die Kommentar-Eingabefelder über vBulletin laufen. Beim Analysieren vom Code von Photopost hat man zwar manchmal den Eindruck, als hätte der Entwickler das Programmieren erst während der Entwicklung von Photopost gelernt, aber die meisten Dinge kann man relativ schnell finden und so auch sehr schnell was reinhacken. Und der Code wird durch’s Reinhacken sicher nicht schlechter ;)

Rausgekommen ist dabei die Downhill-Rangers Foto-Galerie. Ich habe absichtlich die Möglichkeit für eigene Alben entfernt, weil ich nicht wollte, dass massenweise Fotos vom selben Thema raufgeladen werden. Besser einzeln einige gute Fotos raufladen. Außerdem hat Photopost damals sowieso keine sinnvollen Möglichkeiten geboten, viele Fotos in einem Schwung raufzuladen.

Foto-Alben mit Gallery 2

Hin und wieder wäre es aber sinnvoll, doch genau diese Foto-Alben anzubieten, wenn man beispielsweise von einem Event viele Fotos hat und diese öffentlich oder einem beschränktem Besucherkreis zeigen möchte. Wichtig ist dabei allerdings, dass die Bilder schnell und einfach raufgeladen werden können. Und das ist die Stärke von Gallery 2. Es unterstützt unter anderem HTTP-Upload (Browser), eine Java-Applet, WebDAV, XP-Web-Publishing, und Gallery Remot. Gallery Remote ist eine eigene Java-Anwendung für den Desktop, die sich mit der Gallery-Installation im Web verbindet und mit der man schnell und komfortabel Fotos raufladen kann. Vor dem Raufladen könne Fotos gedreht, beschriftet, und skaliert werden.

Ich habe alle Upload-Methoden getestet. Ich habe sie auch alle zum Laufen gebracht. Es ist aber nich unbedingt immer so einfach – vorallem für Laien. Aber wenn es mal konfiguriert ist, geht’s damit umso schneller und bequemer.

Gallery 2 und vBulletin

Gallery 2 bietet mit der Embed-Klasse eine Möglichkeit an, externe Anwendungen einzubinden. Diese Idee ist prinzipiell sehr gut. Außerdem noch weitere Mechanismen, um Gallery innerhalb einer anderen Seite anzeigen zu lassen.

Umgekehrt bietet vBulletin Produkte und Plugins. An bestimmten Stellen im vBulletin-Code sind sogenannte Hooks. Ein Produkt oder Plugin kann sich in so einen Hook einklinken und Code dafür hinterlegen. vBulletin führt dann an diesen Stellen diesen Code aus. Somit können viele vBulletin-Erweiterungen ohne Code-Änderungen an vBulletin selbst auskommen und einfach exportiert, als kompakter Download als Produkt oder Plugin angeboten und in andere vBulletin-Installationen importiert werden.

Es gibt auch eine Gallery 2.1 and vBulletin 3.5.X Integration. Primär geht’s hier allerdings um die optische Intergration, die ich nicht benötige. Als Anhang dort ist noch ein Plugin angehängt, wie die User zwischen vBulletin und Gallery 2 gekoppelt werden können. Genau genommen geht’s dabei um ein Plugin, das beim Ändern von User ausgeführt wird. Genau dann wird diese Änderung an die Embed-Klasse von Gallery 2 weitergeleitet. Und zwar an die Methoden der Embed-Klasse, die User anlegen, ändern oder löschen.

Dabei gibt’s allerdings mehrer Probleme, die eine Einsatz ohne Modifikationen nicht möglich machen:

  1. Es werden nur User von vBulletin zu Gallery 2 übertragen, die sich im Forum einloggen. Gibt es das vBulletin Forum schon länger und möchte man alle User übertragen, muss man ein eigenes Programm schreiben, dass diese macht
  2. Aufpassen mit den Zeichensätzen der Datenbanken: Meine vBulletin-Datenbank verwendet ISO-8859-1. Gallery 2 wird standardmäßig mit UTF-8 installiert.
  3. Gallery 2 erlaubt zwar die Einstellung, welche Hashingmethode für das Passwort verwendet wird. Allerdings verwendet vBulletin einen eigenen Salt-Wert zum Hashen. Gallery 2 unterstützt das nicht. User können sich also in Gallery 2 nach dem Übertragen der Daten von vBulletin zu Gallery 2 nicht einloggen.
  4. Das Plugin im oben erwähnten Artikel ist fehlerhaft. Eventuell liegt es daran, dass der Artikel für Gallery 2.1 ist und ich bereits Gallery 2.2 verwende. Der Aufruf der Methode der Embed-Klasse ist schlichtweg falsch.

ad 1) Um alle User zu übertragen, hab eich einfach ein Script geschrieben, dass alle vBulletin User ausliest und jeweils die Methoden der Embed-Klasse ausführt, die den User in Gallery 2 anlegen oder updaten.

ad 2) Die unterschiedlichen Zeichensätze können mit der PHP-Funktion iconv() angepasst werden. Ob es funktioniert, kann z.B. mit Umlauten getestet werden.

Ein Problem habe ich allerdings noch. Gallery 2 erkennt beim Import mit meiner Zeichensatz-Konfiguration User, die sich nur anhand eines Umlauts unterscheiden nicht als unterschiedliche User (”Andi”, “Ändi”). Aber das war im ersten Schritt mal vernachlässigbar.

ad 3) Damit sich die User mit demselbem Passwort in Gallery 2 wie im vBulletin einloggen können, musste ich die User-Tabelle von Gallery 2 um die Spalte für den Salt-Wert erweitern und diese auch über die Embed-Funktion bis zur Datenbankabfrage durchschleusen. Hier stellte sich das als wahr heraus, was ich wie oben beschrieben schon zuvor gelesen hatte. Änderungen in Gallery 2 sind extrem aufwändig. Gallery 2 ist im vielen Schichten geteilt. Sich da durchzuarbeiten und die notwendigen Änderungen zu finden, ist wirklich mühsam und hat mich extrem viel Zeit gekostet. (Änderungen im eher diletantisch programmierten Photopost sind dagegen Kindegarten.) Natürlich musste dann auch die Passwort-Abfrage abgeändert werden, sodass diese auch den neuen Salt-Wert verwendet. Achtung: Auch das Einloggen sollte dann mit Passwörter mit Sonderzeichen, wie Umlauten getestet werden.

ad 4) Wenn man sich die Embed-Funktionien ansieht, sieht man schnell, wie der Aufruft erfolgen muss, und was somit im vBulletin-Plugin geändert werden muss.

Die kurzfristig installierte Gallerie sieht man hier: Downhill-Rangers Foto-Alben.

2 Kommentare zu “Foto-Alben für unsere Mountainbike-Downhill-Seite”

  1. hollosch schreibt:

    Hallo,
    super Bericht – ich bin auch auf der Suche nach einer Möglichkeit gallery2 ins vB einzubinden. Funktioniert die Bridge, bzw. die Integration auch mit der neuen Version vBulletin 3.7 ???

  2. noox schreibt:

    Hallo,
    mit 3.7 werde ich mich erst in zwei bis drei Monaten beschäftigen.

    Ich denke aber, dass es prinzipiell keinen großen Unterschied zwischen (von mir verwendeten) 3.5 und 3.7 geben wird. Es werden nur zwei Hooks des Users (User ändern, User löschen) verwendet. Beim Ändern wird über die Gallery-Embed-Klasse geschaut, ob es den User schon gibt. Wenn nicht, wird er angelegt. Sonst upgedatet. Da ich momentan ein eigenes Login für Gallery 2 habe, musse ich aber Gallery um den Salt-Wert für das Berechnen des Hash-Wertes des Passworts erweitertn.

    Eigentlich sollte es aber auch gehen, dass sich der User über vB normal einloggt, und man dann Gallery nur mitteilt, dass jetzt dieser oder jener User online ist. So muss sich der User nicht extra in Gallery 2 einloggen und spart sich das mit dem Salt. Allerdings habe ich mir das nicht angesehen, wie das funktioniert.

Kommentar schreiben