FriendsOfREDAXO / multinewsletter

Newsletter Addon für Redaxo 5
MIT License
16 stars 6 forks source link

Eintragung via YForm #20

Closed cukabeka closed 5 years ago

cukabeka commented 6 years ago

Eine Action für YForm ähnlich wie action|tpl2email|emailtemplate|emaillabel|[email@domain.de]|[email_name]|[Fehlermeldung wenn Versand fehgeschlagen ist/html] wäre super nützlich auf Multidomain-Installationen, um die Eintragungsformulare unabhängig vom Modul zu erstellen. Gibt es dazu was? Habe in den Snippets was gesehen, aber nicht verstanden, ob das dazu dient.

TobiasKrais commented 6 years ago

Für MultiNewsletter gibt es das nicht speziell. Aber es müsste gehen, dass du 2 Actions definierst: eine zum Speichern in der DB und eine zum Versand der Mail. Da muss ich nichts spezielles programmieren.

cukabeka commented 6 years ago

Also, ich habe noch keine eigene Action gebaut, dazu ist mir das YFORM Action-Prinzip in Kombi mit dem FILTER-Stuff in dem MNL-Modul zu heiß 😅

Aber dafür habe ich im YFORM Formbuilder eine funktionierende Definition gefunden, evtl magst Du die ja in die Doku aufnehmen? Damit ist es möglich, auch unterschiedliche YREWRITE-Domains mit dem Newsletter-Addon zu bedienen. (Schick wäre hier noch, wenn ich pro Gruppe einen eigenen SMTP-Mailserver angeben könnte.. ;) )

Zudem ist das Styling und der Text der Subscribe-Box einfach selbst zu stylen.

objparams|form_skin|bootstrap
objparams|form_class|hide-label form-register

datestamp|activationkey|activationkey|NsB||0
hidden|status|0
hidden|clang_id|1
hidden|group_ids|2
datestamp|createdate|createdate|mysql
ip|createip
action|copy_value|createdate|updatedate
action|copy_value|createip|updateip
hidden|subscriptiontype|web

html||<div class="container"><div class="row"><div class="col-md-6"><h2>Hol Dir jetzt den Newsletter!</h2><p>Du bekommst eine Mail pro Woche mit den besten Sachen drin.</p></div><div class="col-md-6">

text|email|#placeholder:E-Mail|Deine E-Mail-Adresse
checkbox|privacy_policy_accepted|FORM_PRIVACY_NEWSLETTER|0,1|0|
submit|name|Ja, ich will!|submit|no_db|submit|btn btn-lg

html||</div></div>

validate|email|email|Bitte geben Sie die E-Mail ein.
validate|unique|email|Diese E-Mail existiert schon|rex_375_user
validate|empty|privacy_policy_accepted|Bitte bestätigen Sie, dass Sie die Datenschutzerklärung gelesen haben.

action|db|rex_375_user
action|tpl2email|bla_multinewsletter_request_de|email||Absender Newsletter|Anmeldung fehlgeschlagen - bitte eine Mail an newsletter@bla.de

Leider ist das activation-key-DB-Feld zu kurz, sonst wäre generate_key|activationkey eine elegante Möglichkeit gewesen.

Es braucht ein mail-template bla_multinewsletter_request_de, in dem der request definiert ist, bei mir wie folgt (HTML):

<?php 

$url = rex_getUrl(112,'',[ 'activationkey' => REX_YFORM_DATA[field="activationkey"], 'email' => REX_YFORM_DATA[field="email"] ], '&'); 

markitup::parseOutput ('textile', '
Hallo,

danke für Dein Interesse! Du hast Dich mit folgender Mailadresse angemeldet:
E-Mail: REX_YFORM_DATA[field="email"]

Bitte bestätige Deine Anmeldung mit einem Klick auf folgenden Link:
"'.$url.'":'.$url.'

');

?>

Wobei in Artikel 112 nochmal das normale MNL-Modul für die Anmeldung nur mit E-Mail liegt.

//Update: in der tpl2mail war noch ein bug, ist jetzt gefixt

TobiasKrais commented 6 years ago

Vielen Dank. Da könnte man doch gleich ein Modul daraus bauen, das man zur Installation anbieten kann. Zuerst aber noch eine Frage: wie groß müsste das Feld für generate_key|activationkey sein? Das könnte man doch leicht mit dem nächsten Update anpassen.

cukabeka commented 6 years ago

Ah, das wäre natürlich cool. Hier ist ein Beispiel: bb04ea8bcf4e5cd58e87feda557f264c Es müssen also auch Kleinbuchstaben erlaubt sein. Und 32 Zeichen.

TobiasKrais commented 6 years ago

OK. Ist geändert. Nächste Frage: braucht es unbedingt ein eigenes Template oder könnte man das direkt im Modul lösen (siehe hier: https://github.com/TobiasKrais/d2u_helper/blob/4fb1d4009a28395e204baa3d64094ccdb8580c6f/modules/11/1/output.php#L67)?

cukabeka commented 6 years ago

Müsste eigentlich gehen. Es gibt doch die Möglichkeit, die ganzen Pipe Angaben oben in eine Variable zu setzen und dann zu parsen. Bei XFORM war das so:


$xform = new rex_xform();
//$xform->setDebug(true);
$xform->setRedaxoVars();

$form_data = '';

// hier nur als ausschnitt
$form_data .= '
objparams|form_skin|bootstrap
objparams|form_class|hide-label form-register

datestamp|activationkey|activationkey|NsB||0
hidden|status|0
hidden|clang_id|1
hidden|group_ids|2
datestamp|createdate|createdate|mysql
';

    $xform->setFormData($form_data);
    $xform->setObjectparams('form_class', 'form-horizontal');
    $xform->setObjectparams('error_class', 'error');
    echo $xform->getForm();
cukabeka commented 5 years ago

Ich verstehe noch nicht ganz, was du hier machst: https://github.com/TobiasKrais/d2u_helper/blob/4fb1d4009a28395e204baa3d64094ccdb8580c6f/modules/11/1/output.php#L67-L75a Nimmst Du ein Modul und befüllst es einfach mit Werten aus dem Yform Formular?

TobiasKrais commented 5 years ago

Hier wird der Mailinhalt zusammengebaut. Zum einen werden Sprachersetzungen aus SProg ausgelesen, zum anderen Platzhalter für YForm verwenden (z.B. ###name###). Hilft dir das weiter?

TobiasKrais commented 5 years ago

Im Repository gibt es jetzt die Module 80-4 und 80-5, die jeweils eine YForm An- und Abmeldung beinhalten. Wenn du willst, kannst du sie gerne testen. Du brauchst YForm 3.

TobiasKrais commented 5 years ago

3.2.3 ist veröffentlicht und beinhaltet die Module.