Zum Inhalt springen

Powermail: ###POWERMAIL_ALL### ändern, wo?

Erstellt am 27. April 2008 · 16 Antworten · letzte Antwort am 6. Mai 2008

Tags: Powermail, Frage

DiePicknickerin ·

Hallo,

die Extension ist ja sowas von Klasse! Ich hätte gar nicht erwartet, auch für unerfahrene Admins eine Mail-Funktion bereitstellen zu können.

2 Probleme habe ich noch:

1. Im Template tmpl_all.html möchte ich die Tabellen-Ausgabe in eine Definition List ändern - aber nun werden die Tags komplett umschlossen von <p>-Tags ausgegeben, obwohl ich im Template alles normal von den vorgegebenen Markern umschlossen hatte:

<!-- ###POWERMAIL_ALL### begin -->
	<dl>
    <!-- ###CONTENT### --><!-- ###ITEM### -->
    	<dt>###POWERMAIL_LABEL###</dt>
        <dd>###POWERMAIL_VALUE###</dd>
    <!-- ###ITEM### --><!-- ###CONTENT### -->
    </dl>
	
<!-- ###POWERMAIL_ALL### end -->

wird zu:

<p class="bodytext"> <dl></p>
<p class="bodytext" />
<p class="bodytext"> <dt>Ihr Name:</dt></p>

und so weiter

2. Ich möchte gerne noch eine mx-Records-Abfrage beim Email-Check haben, damit so Sachen wie foo@foo.bar nicht mehr ankommen können. Die schlüpfen nämlich bei fast allen Checks durch die Email-Validierung...

Wo könnte ich das einfügen?

Danke schon mal im voraus und noch mal: Kompliment und Hochachtung!

Gruß vom Sonntags-Picknick

einpraegsam.​net ·

1. Wir sind auch nicht glücklich mit der momentanen Lösung - eventuell werden wir da nochmal nachlegen

Probier mal:

<!-- ###POWERMAIL_ALL### begin --><dl><!-- ###CONTENT### --><!-- ###ITEM### --><dt>###POWERMAIL_LABEL###</dt><dd>###POWERMAIL_VALUE###</dd><!-- ###ITEM### --><!-- ###CONTENT### --></dl><!-- ###POWERMAIL_ALL### end -->

2. Wäre ein Feature das sich einbauen ließe...

DiePicknickerin ·

zu 1.: Mhm... nein leider nicht. Die Ausgabe gibt das HTML mit aus.

Wobei das unterschiedlich ist: in der Confirmation-Ansicht wird ja auf das gleiche Template zurückgegriffen - jedenfalls ist es so eingestellt.

Dort bekomme ich ganz korrekt:

<div class="tx-powermail-pi1_confirmation">
		<p>Sind diese Angaben korrekt?</p>
		
		<p><dl><dt>Ihr Name:</dt><dd>momo</dd><dt>Ihre Email-Adresse:</dt><dd>email@gmail.com</dd><dt>Ihre Nachricht:</dt><dd>jfkd lajkfdlö</dd></dl></p>

		
		<form name="kontakt_confirmation_back" action="index.php?id=29" method="post" class="tx_powermail_pi1_formconfirmation_back">
			<input type="submit" value="Zurück" class="tx-powermail-pi1_confirmation tx-powermail-pi1_confirmation_back" />
		</form>
		<form name="kontakt_confirmation_submit" action="index.php?id=29&tx_powermail_pi1[mailID]=157&tx_powermail_pi1[sendNow]=1&cHash=6c36791770" method="post" class="tx_powermail_pi1_formconfirmation_submit">
			<input type="submit" value="Angaben abschicken" class="tx-powermail-pi1_confirmation tx-powermail-pi1_confirmation_submit" />
		</form>
	</div>

Das klappt also völlig korrekt, bis auf 2 x form für jeweils einen Button. Aber die thx-Ansicht sieht dann wieder so aus:

Vielen Dank für Ihre Nachricht. Sie haben folgende Eingaben gemacht:
<dl><dt>Ihr Name:</dt><dd>momo</dd><dt>Ihre Email-Adresse:</dt><dd>email@gmail.com</dd><dt>Ihre Nachricht:</dt><dd>dudeldaddeldu</dd></dl>

Was kann das denn sein? Das sollte sich doch anpassen lassen!? Kann es sein, dass er einfach überflüssigerweise das komplette Template nochmal parst und deshalb diese <p class="bodytext"> inklusive html-Quelltext ausgibt?

//edit: die HTML-Emails kommen übrigens auch mit HTML-Fehler an...

Danke nochmal und Gruß!

einpraegsam.​net ·
DiePicknickerin schrieb

Kann es sein, dass er einfach überflüssigerweise das komplette Template nochmal parst...

Japp, einmal für den RTE und einmal im HTML Template - das macht schon Sinn, jedoch nur bedingt...

DiePicknickerin ·

Warum kann dann das Original-Template korrekt arbeiten?

Das tut doch auch nix anderes, als eine HTML-Struktur vorzugeben... o.O

Bleibt es also dabei, dass ich vorerst das tmpl_all.html nicht abändern kann?

einpraegsam.​net ·
DiePicknickerin schrieb

Bleibt es also dabei, dass ich vorerst das tmpl_all.html nicht abändern kann?

Du kannst das Template ändern wie du willst...

DiePicknickerin ·

:o naja, das hatte ich ja auf dem üblichen Weg versucht... Gibts noch einen heißen Tipp?
#paralyzed#

Aus den BE-Feldern dann ###POWERMAIL_ALL### rausnehmen und einzelne UIDs nehmen, oder wie?

Gruß

einpraegsam.​net ·
DiePicknickerin schrieb

:o naja, das hatte ich ja auf dem üblichen Weg versucht... Gibts noch einen heißen Tipp?
#paralyzed#

Aus den BE-Feldern dann ###POWERMAIL_ALL### rausnehmen und einzelne UIDs nehmen, oder wie?

Gruß

Das geht natürlich auch

DiePicknickerin ·

OK, ich habs gelöst - die Idee mit dem RTE war natürlich schon mal richtig. Ich hatte allerdings noch nicht die Definition Lists im RTE selbst erlaubt - daher noch die unnötige Umklammerung. Nachdem ich erstmal in der Ext. selbst gewühlt hatte, kam ich doch noch drauf:

im PageTS der Root-Seite hatte ich bereits Formatierungen für den RTE eingefügt. Aber im TS-Template noch nicht:

Also schnell noch

# do not wrap with <p...>:
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = dl, dt, dd, cite, div, p, pre, hr, h1, h2, h3, h4, h5, h6,table,tr,td

und 
#allowed tags in RTE-Fields:
lib.parseFunc_RTE.allowTags = dl, dt, dd, b,i,a,img,br,div,center,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,span,h1,h2,h3,h4,h5,h6,acronym,abbr;

Und dann klappts auch mit dem Template...

Danke nochmal für die Geduld ;-)

einpraegsam.​net ·
DiePicknickerin schrieb

2. Ich möchte gerne noch eine mx-Records-Abfrage beim Email-Check haben, damit so Sachen wie foo@foo.bar nicht mehr ankommen können...

Habe ich erstellt - hier der Workarround bis zur nächsten Version:

1. Neue Funktion in die Datei lib/class.tx_powermail_functions_div.php

// Function checkMX() checks if a domain exists
	function checkMX($email,$record = 'MX') {
		list($user,$domain) = split('@',$email); // split email in user and domain
		
		if (checkdnsrr($domain,$record) == 1) return TRUE; // return true if mx record exist
		else return FALSE; // return false if not
	}

2. Funktion emailCheck() mit neuem Code ersetzen - Datei pi1/class.tx_powermail_mandatory.php

function emailCheck() {
		if($this->pibase->cObj->data['tx_powermail_sender'] && is_array($this->sessionfields)) { // If email address from sender is set in backend
			if($this->sessionfields[$this->pibase->cObj->data['tx_powermail_sender']]) { // if there is content in the email sender field
				if(!t3lib_div::validEmail($this->sessionfields[$this->pibase->cObj->data['tx_powermail_sender']])) { // Value is not an email address
					$this->sessionfields['ERROR'][str_replace('uid','',$this->pibase->cObj->data['tx_powermail_sender'])][] = $this->pi_getLL('error_validemail'); // write error message to session
				} else { // Syntax of email address is correct - check for MX Record
					if( !$this->div_functions->checkMX( $this->sessionfields[$this->pibase->cObj->data['tx_powermail_sender']] )) $this->sessionfields['ERROR'][str_replace('uid','',$this->pibase->cObj->data['tx_powermail_sender'])][] = $this->pi_getLL('error_nomx'); // write error message to session
				}
			}
		}
	}

Grüße, Alex

DiePicknickerin ·

Vielen Dank, Alex.

Die beiden Code-Abschnitte habe ich integriert und auch das funktioniert. Jetzt bleibt lediglich, noch die Fehlermeldung an zu passen.

SUPER!

DiePicknickerin ·

Ja, das hattest du ja schon so schön vorbereitet 😉

Du hattest in der class.tx_powermail_mandatory.php schon eingefügt: $this->pi_getLL('error_nomx');

Einfach neue Labels erstellen nach dem vorhandenen Muster:

<label index="locallangmarker_error_validemail">This is not a valid email address:</label>
<label index="locallangmarker_error_nomx">This email address seems to be not available:</label>

hat aber leider noch nicht geholfen. Ich bekomme nach Absenden des Formulars zwar: Bitte beachten Sie folgende Fehlermeldungen:
und eine ungeordnete Liste, aber der Listenpunkt für die Email-Fehlermeldung ist leider leer.

(innerhalb der locallang.xml für Deutsch und Englisch erstellt, Französich und niederländisch kann ich leider nicht, die haben daher die englischen gekriegt.)

Ich habe auch die
<label index="JSvalidation_label_error_nomx">This email address seems to be invalid or not available</label> eingefügt für die JS-Prüfung, aber da passiert auch nix.

Wo ist mein Fehler?

Innerhalb von TS habe ich dagegen gar keine Änderung vorgenommen. Wo würde ich das tun?

Gruß, nochmals auf Hilfe hoffend...

einpraegsam.​net ·

Sorry, hatte ich vergessen zu schreiben - das muss noch in die pi1/locallang.xml:

<label index="error_nomx">Email address don't exist</label>

Bei Interesse kann ich dir auch die Powermail 1.2.0 beta zur Verfügung stellen, dort ist das (und noch einiges mehr) schon mit drin...