Meldungsseiten in Contao (Teil 2)
Die Idee ist, dass SWM nicht mehr die Texte übergibt, sondern nur zweistellige Zahlen: eine Zahl für jeden Textbaustein. In SWM erzeugt man unter Meldungstexte bearbeiten einen Satz neuer Meldungstexte, die man z.B. Contao nennt.
Jeder Textbaustein wird durch eine zweistellige Nummern ersetzt (10, 11, 12, ...). Vor jeder Nummer habe ich als Trennzeichen eine Tilde (~) gesetzt. Wird also eine Fehlermeldung mit zwei Textbausteinen übergeben, dann steht in der URL u.a.: ERRORPAGEMESSAGE=~10~12
Die in Teil 1 schon beschriebene php-Datei wird nun so erweitert, sie a) die Zahlen extrahiert, b) überprüft, ob es überhaupt Zahlen sind und die dazugehörige Meldungen ausgibt. Wobei es natürlich keine echte Zahlen sind, sondern Strings. Hier die Datei für die Fehlermeldungen.
Code:
<?php
$Eingabe = substr(\Input::get('ERRORPAGEMESSAGE', '~00'), 0, 200);
$Korrigieren = false;
$EingabeArray = explode("~", $Eingabe);
If (!empty($EingabeArray))
{
$EingabeArray[0] = "00"; // Wenn Eingabe mit ~ beginnt, ist das leer, wenn nicht, ist der Inhalt nicht relevant
foreach ($EingabeArray as $meldung)
{
If (strlen ($meldung) >= 2)
{
$meldung = substr($meldung, 0, 2);
if (is_numeric($meldung))
{
if ($meldung == "00") { ; } //Parameter fehlt oder EingabeArray[0] oder es wurde ~00 übergeben
else if ($meldung == "10") { echo "Da ist ein Fehler in der E-Mail-Adresse.<br />"; $Korrigieren = true; }
else if ($meldung == "11") { echo "Sie müssen alle Felder ausfüllen, die ein * haben: <br />"; $Korrigieren = true; }
else if ($meldung == "12") { echo "Es ist ein Fehler aufgetreten:"; }
else if ($meldung == "13") { echo "Sie müssen der Datenschutzerklärung zustimmen.<br />"; $Korrigieren = true; }
else if ($meldung == "20") { echo "Vielen Dank für Ihre Anmeldung."; }
else if ($meldung == "21") { echo "Vielen Dank für Ihre Anmeldung. <br /><br />Ihnen wurde soeben eine E-Mail mit einem Bestätigungslink zugesendet. <br />Sie müssen auf diesen Link klicken um die Anmeldung abzuschließen."; }
else if ($meldung == "22") { echo "Die Anmeldung zu unserem Verteiler wurde erfolgreich abgeschlossen."; }
else if ($meldung == "23") { echo "Die Anmeldung an unserem Verteiler konnte nicht erfolgreich abgeschlossen werden. <br />Melden Sie sich bitte erneut mit Ihrer E-Mail-Adresse an."; }
else if ($meldung == "24") { echo "Sie haben sich bereits erfolgreich an unserem Verteiler angemeldet."; }
else if ($meldung == "25") { echo "Ihre E-Mail-Adresse befindet sich bereits in unserem Verteiler."; }
else if ($meldung == "26") { echo "Ihre E-Mail-Adresse wurde gesperrt."; }
else if ($meldung == "27") { echo "Geben Sie das angezeigte Wort korrekt ein.<br />"; $Korrigieren = true; }
else if ($meldung == "28") { echo "Bitte wählen Sie eine Gruppe.<br />"; $Korrigieren = true; }
else if ($meldung == "30") { echo "Ihre E-Mail-Adresse wurde aus dem Verteiler gelöscht."; }
else if ($meldung == "31") { echo "Ihre E-Mail-Adresse wurde zur Austragung vorgesehen. Es wurde Ihnen soeben eine E-Mail mit einem Bestätigungslink zugesendet. Klicken Sie auf diesen Bestätigungslink um die Austragung abzuschließen."; }
else if ($meldung == "32") { echo "Ihre E-Mail-Adresse wurde erfolgreich aus unserem Verteiler ausgetragen."; }
else if ($meldung == "33") { echo "Ihre E-Mail-Adresse konnte nicht aus unserem Verteiler entfernt werden. <br /><br />Entweder wurde diese bereits gelöscht oder Sie müssen sich wegen zu langer Wartezeit nochmals abmelden."; }
else if ($meldung == "34") { echo "Ihre E-Mail-Adresse befindet sich nicht in unserem Verteiler."; }
else if ($meldung == "40") { echo "Die E-Mail-Adresse fehlt.<br />"; $Korrigieren = true; }
else if ($meldung == "41") { echo "Sie müssen das gewünschte E-Mail-Format wählen.<br />"; $Korrigieren = true; }
else { echo "INTERNER HINWEIS 1: Ein Hinweistext ", $meldung, " ist nicht definiert."; }
}
}
}
unset($meldung);
if ($Korrigieren) { echo "<br />Bitte gehen Sie zur Eingabeseite zurück und versuchen Sie es noch einmal ...<br />"; }
}
?>
Die Datei für die Infomeldungen erhält man, wenn man in der php-Datei den Pararmeter ERRORPAGEMESSAGE gegen PAGEMESSAGE austauscht. Ich habe in beiden Dateien alle Textbausteine drin gelassen, weil ich nicht genau weiß, welcher Textbaustein zu welchem Parameter gehört. Bisher ist es mir nur bei der Fehlermeldung aufgefallen, dass es zwei Textbausteine pro Parameter geben kann. Deshalb gibt es die Schleifenkonstruktion.
Besonders verwirrend war für mich, dass der explode-Befehl in Array[0] einen leeren String ablegt, wenn die Eingabe mit dem Trennsymbol ~ beginnt. Aber wenn man es weiß, ist es logisch.
Vielleicht hilft das ja mal jemandem.
Grüße
Fryd
Lesezeichen