Grunddaten zu den enthaltenen Plugins

Für ein Kundenprojekt suchte ich eine Möglichkeit das Kunden zum Produkt eigene Dateien uploaden können. Wichtig war mir, dass dieser Upload nicht erst im Checkout erfolgt, sondern schon beim Produkt und bevor dieses in den Warenkorb gelegt wird. Ich denke, dass die Checkout-Variante viele Kunden verwirrt, wenn dieser Vorgang erst hier erfolgt, also erst viel später. Ohne Zweifel hat auch die Checkout-Variante ihre Vorteile und Berechtigung. Ebenfalls war für mein Projekt von Bedeutung, dass es mit RuposTel's One-Page-Checkout-Komponente zusammen funktioniert.

Diese hier beschriebene Erweiterung von www.cmsmart.net ist ein Archiv mit zwei Plugins, die jeweils einzeln installiert werden müssen.
In diesem Beitrag möchte ich kurz einige Erkenntnisse zusammenstellen.

 

Erweiterung Charakteristik Plugin-Pfad Installationsarchiv Bedeutung
VMCustom - photoupload VM 2 Custom-Plugin /plugins
/vmcustom
/photoupload
plg_vmcustom_photoupload_v2.6.zip  
VMExtended - uploadpro J! System-Plugin /plugins
/system
/uploadpro
plg_system_vm2_uploadpro_v2.0.zip  

 

Die Plugins nutzen style-themes. Diese sind zwar nicht auswählbar, aber intern werden diese verwendet. So gibt es ein Template-(View)-Thema nx.vm2-customupload welches die Base-Version durch Überschreiben modifiziert. Entspr. CSS- und JS-Scripte sind in den Unterverzeichnissen von /plugins/vmcustom/photoupload/assets/ zu finden.

Frontendseitig relevante Hauptscripte:

 

Scriptpfad und Dateiname Bedeutung Status
plugins/vmcustom/photoupload/photoupload.php Haupt-Controll-Script für das Plugin  
plugins/vmcustom/photoupload/photoupload/tmpl/form_upload.php bindet das Fomular für den Dateiupload ein Hier sind die Sprachausgaben für den Tabellenkopf original hart kodiert und dann ersetzt worden
plugins/vmcustom/photoupload/photoupload/assets/js/nx.vm2-customupload.js dieses jQuery-Script liefert per Ajax die Tabellenzeilenstrukturen für die hochzuladenden oder hochgeladenen Dateien mit Vorschaubild, Dateiname, Dateigröße, Fortschrittsbalken und Aktionsbuttons.  
plugins/vmcustom/photoupload/assets/themes/custom-theme/jquery-ui-1.9.1.custom.css    

 

 

Einschätzung der Plugins

Hier kurz eine persönliche Einschätzung dieser Erweiterung.

Im Prinzip wurden als Lösung speziell für VM drei Erweiterungen angeboten - alle sind kostenpflichtig.

  • Variante A "OpenGlobal Upload Custom Field for VirtueMart" wird ebenfalls als vmCustom-Plugin angeboten, jedoch arbeitet es nicht mit der AddToCart-Ajax-Funktion zusammen. Dieses Opfer war mir schlicht zu hoch, weshalb diese Lösunge verworfen wurde. Der Preis ist mit 20 Pfund jedoch sehr moderat.
  • Variante B "VMUpload - virtuemart upload component" wird in den Checkout-Prozess eingebunden. Aus o.g. Gründen wurde diese als Option verworfen. Es ist zwar recht teuer, wird aber auch wg. des guten Supportes gut bewertet. Es kommt mit einen VM-Patch und als Komponente. Leider ist es sehr schlecht beschrieben. Eine umfangereichere Feature-Liste konnte ich nicht finden. Der Preis liegt mit 119€ ausgesprochen hoch. Ein ausführliche Beschreibung findet man nur über die Vorgängerversion.

Zum cmsmart-Plugin hier nun einige bewertende Fakten:

  1. Es ist mit 88$ ohne Zweifel recht teuer zumal die Lizenz nur für eine Domain gilt und mit einem Download-Zeitraum von nur 6 Monaten!
  2. Auch die Police ist sehr strikt und der Grundtenor: Überlege Dir genau was Du tust, denn es gibt kein Geld zurück. Im Zus.hg. mit nachfolgender Tatsache wird einem schon etwas Bange um sein Geld.
  3. Auf http://extensions.joomla.org wurde speziell der Support schlecht bewertet, was sich zum Glück bei meiner notw. Vorabanfrage wg. der Kompatibilität zu OPC nicht bestätigte. Die Reaktion war schnell und es wurde auch eine Geld-Zurückoption angeboten im Fall der Nichtkompatibilität.
  4. Um eine Installationsanleitung zu finden, muss man auf der Seite ordenlich suchen. Nach zig Seiten blättern durch den Blog(!) konnte ich Sie dann endlich finden. Sie ist ausreichend. Warum gibt es von der Produktseite zum diesem Beitrag keine Verlinkung?
  5. Die Installation erfolgt erwartungsgemäß und problemlos über den J!Installer und die Einrichtung erfolgt so wie üblich für VM-Custom-Plugins. Wer diesbezüglich Sicherheit hat, braucht nicht unbedingt eine Anleitung.
  6. Unklar bleibt lange Zeit, wozu es überhaupt zwei Plugins im Archiv gibt. Darauf gibt auch in keiner Textzeile auch nur irgendein Hinweis. Ebenso gibt es keine Informationen zum customization der Plugins - so wie die Plugins diesbezüglich so ziemlich keine Parameter enthalten.
  7. Punkt 5. und 6. lassen einen vermuten, dass das Selbst-Handanlegen nicht unbedingt gewünscht ist - das customazing will der Entwickler auf seinen Tisch bekommen.
  8. Leider kann man das Plugin nicht so konfigurieren, dass der Pfad für die Ablage der Kundendateien außerhalb des Joomla/Web-Verzeichnis angelegt werden kann, was ich aus Sicherheitgründen ganz gerne mache. Das wäre progrmmiertechnisch eigentlich kein Problem, wenn man z.B. durch eine absolute Pfadangabe beginnend mit / dies erkennen läßt. Wer das wirklich ereichen will, müsste in die einige Script rein und anpassen.

 

.fade-Konflikt zwischen Modul und Gantry/Bootstrap-Template

Das J!Template-Framework Gantry (Bootstrap f. J! 2.5) und das Plugin nutzen eine gemeinsame Style-Class .fade. Im Bootstrap wird diese mit opacity:0 belegt wodurch entspr. Objekte zunächst als nicht sichtbar eingebunden werden. Das Plugin nutze über die jQuery-UI ebenfalls diese Classe bei der Dateiliste um bei der Anzeige zu fade(n). Konkret wird das preview-Bild und die Tabellenzeile für die jeweilge Datei mit fade ausgezeichnet. Durch die opacity-Eigenschaft des Bootstrap wird diese Zeile jedoch 100%ig transparent dargestellt, so dass deren Inhalt nicht sichbar ist.

Zur Korrektur gibt es nun drei Möglichkeiten diesen Konflikt zu lösen:

  1. Man überschreibt die Eigenschaft opacity mit 1 für die Class fade im Bootstrap-Template. Der Nachteil besteht darin, dass die dann ziemlich systemweit passiert, wäre also nicht so toll
  2. Man verhindert, dass die Templates der Plugins diese Class so verwenden in dem man diese in allen mgl. Scripten umbenennt in eine eigene. Dazu müssten aber Scripte des Templates angefasst werden und verlieren damit ihre Updatefähigkeit. Betroffen v. notw. Änderungen ist hier vor allem dieses JavaScript: /plugins/vmcustom/photoupload/assets/js/nx.vm2-customupload.js.
  3. Die eleganteste Lösung ist für diese fade-Class nur für das Plugin eine Ausnahme zu definieren, mit Bezug auf die Class o.g. nx-Theme. Dazu wird in den J!Template-eignen .less oder .css-Dateien dieser Eintrag hinzugefügt: .nx-container .fade { opacity:1; }.

 

Multilanguage-Unterstützung

Leider wird die Komponente nicht mehrsprachfähig ausgeliefert. Es gibt zwar für das photoupload-Plugin die beiden engl. Sprachdateien en-GB.plg_vmcustom_photoupload.ini und en-GB.plg_vmcustom_photoupload.sys.ini, diese werden aber nicht konsequent genutzt. In diversen relevanten Template-Dateien werden stattdessen Sprachphrasen für die Buttons und Tabellen-Header-Text hart englisch kodiert. Es empfiehl sich also, wer die Sprache nicht ausschließlich in englisch belassen will entspr. anderen Sprachdatein zu erstellen. Dann müssen aber auch in den Templates die Sprachphrasen statt der Hartkodierung genutzt werden. Hier muss man dann also selbst Hand anlegen.