Die aktuelle Powermail-Version 1.5.7 funktioniert nicht zusammen mit jquery. Aber es gibt einen patch dafür: http://forge.typo3.org/issues/show/4762 – der funktioniert allerdings auch nicht auf Anhieb.

Mit einigen Mühen habe ich das jetzt aber doch zum laufen bekommen, sogar mit der uralt jQuery-Version 1.2.6.

Schritt 1: Patch einspielen

Es gibt ja mehrere Patches, ich habe den aktuellsten verwendet (Artem Matevosyan, 2010-08-22): http://forge.typo3.org/attachments/3699/powermail_jquery_4762.patch

Wie macht man sowas überhaupt, wenn man kein Unix-Shell-Benutzer ist? Bei mir läuft Tortoise SVN am Rechner, dort Rechtsklick auf den Ordner typo3conf/ext. Ja den ext-Ordner und nicht powermail!
Also: Rechtsklick auf typo3conf/ext -> TortoiseSVN -> Apply Patch -> Patch Datei auswählen.

Dann haben die Dateien nicht zusammengepasst, vermutlich Versionsunterschiede. Man kann aber mit Doppelklick auf den Patch sehen welche Dateien wo verändert gehören. Die Datei pi1/class.tx_powermail_form.php musste ich von Hand angleichen, zum Glück war es nur eine Funktion, der Rest waren Leerzeilen.
Gleiches für locallang.xml, die habe ich ignoriert, das ist nur die Sprachdatei mit den Fehlermeldungen.

Schritt 2: TypoScript anpassen

Im Template unter Constants folgendes eintragen:

plugin.powermail.libraryToUse = jquery

Wer Glück hat, ist hier schon fertig und es läuft. Wenn nicht:

Fehler: Felder verschwunden?

Bei mir wurde nur noch das erste Fieldset angezeigt. Grund dafür ist ein Stück Code in tx_powermail.js versucht, Tabs aus den Fieldsets zu machen. Warum auch immer…?

Dafür muss die erste Funktion aus tx_powermail.js gelöscht werden:

/*$(function () {
var tabContainers = $('fieldset');
tabContainers.hide().filter(':first').show();
$('ul#tabs.powermail_multiplejs_tabs li.powermail_multiplejs_tabs_item a').click(function () {
tabContainers.hide();
tabContainers.filter(this.hash).show();
$('ul#tabs.powermail_multiplejs_tabs li.powermail_multiplejs_tabs_item a').removeClass('selected');
$(this).addClass('selected');
return false;
}).filter(':first').click();
});
*/

Alternativ kann man Tabs auch per TypoScript deaktivieren, habe das aber nicht ausprobiert. Meiner Meinung nach wird die obige Funktion sowieso immer ausgeführt, ohne TypoScript zu beachten.

Fehler: jQuery-Versionen

Powermail bindet automatisch die jQuery-Bibliothek ein. Die meisten werden das aber sowieso schon im Header irgendwo includiert haben, und in meinem Fall passten dann auch noch die Versionen nicht zusammen.

Das includieren passiert in ext_typoscript_setup.txt – dort nach jquery suchen und den entsprechenden Eintrag löschen. In den meisten Fällen läuft es damit.

Fehler: Powermail js Reihenfolge

Jetzt landet das Powermail js vor meinem jQuery include, und ich war kurz davor mein ganzes Template umzuschreiben. Argh. Grund: der Patch verwendet includeJS, und das wird wohl vor headerData eingebunden.

Also habe ich includeJS in headerData umgeschrieben. Download als Patch