powermail 2.x - Dynamischer Text auf Antwortseite

  • einpraegsam.net einpraegs...
    MacGyver
    4 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    28. 08. 2012, 21:44

    [b]Anforderung:[/b]
    In einem Powermail Formular befindet sich ein Dropdown/Radiobutton mit Herr/Frau als Auswahl.
    Auf der Antwortseite (kann natürlich auch eine E-Mail sein) soll dann je nach Auswahl ein "Sehr geehrte Frau {nachname}" bzw. "Sehr geehrter Herr {nachname}" stehen.

    [b]Idee:[/b]
    Eine userfunc zu nutzen wäre vermutlich mit Kanonen auf Spatzen geschossen - aber warum nicht ausschließlich mit TypoScript?
    Eine CASE Anweisung soll je nach Eintrag ein TypoScript Objekt dynamisch mit dem jeweils benötigten Text befüllen (Alternativ könnte man auch mit if in TypoScript arbeiten).

    [b]Umsetzung:[/b]
    Zu erst ein Powermail Formular anlegen mit einer Selectorbox (Dropdown) oder einem Radiobutton mit Auswahl Herr/Frau und den Marker (automatisch erzeugt oder manuell vergeben) dieses Feldes merken (z.B. {salutation}).
    Das Nachnamefeld kann man sich auch gleich merken (z.B. {nachname}).

    Auf der Antwortseite kann man mit Hilfe eines cObject ViewHelpers auf TypoScript zugreifen:

    1. {f:cObject(typoscriptObjectPath:'lib.salutation',data:'{salutation}')} {nachname}
    2.  
    3. Hier Ihre Eingaben:
    4.  
    5. {powermail_all}
    6.  
    7.  
    8. Viele Grüße, in2code.de

    Das dazugehörige TypoScript (z.B. in einem Extension Template auf der Seite des Formulares):

    1. lib.salutation = CASE
    2. lib.salutation {
    3. # Übergebener Wert
    4. key.field = 0
    5.  
    6. # Wert kann alternativ auch direkt von GET- oder POST-Parameter geholt werden
    7. #key.data = GP:tx_powermail_pi1|field|13
    8.  
    9. Herr = TEXT
    10. Herr.value = Sehr geehrter Herr
    11. Herr.noTrimWrap = || |
    12.  
    13. Frau = TEXT
    14. Frau.value = Sehr geehrte Frau
    15. Frau.noTrimWrap = || |
    16. }

    [b]Screenshots der Einstellungen:[/b]
    [img]http://easycaptures.com/fs/uploaded/641/0738653064.png[/img]
    [img]http://easycaptures.com/fs/uploaded/641/1058937270.png[/img]
    [img]http://easycaptures.com/fs/uploaded/641/9549748915.png[/img]
    [img]http://easycaptures.com/fs/uploaded/641/8053365657.png[/img]

    [b]Improvements:[/b]
    Das Ganze muss nicht auf der Antwortseite stattfinden, dass kann auch in einer oder beiden E-Mails benutzt werden.

    [b]Powermail 1.x[/b]
    Wie man auf der Antwortseite einen Text an Hand der Eingabe in Version 1.x in powermail unterscheiden kann, findet sich übrigens hier:
    http://www.typo3.net/forum/beitraege/thema/78897/?howto=1

    Cheers, Alex

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/


  • danton danton
    Jedi-Meister
    0 x
    298 Beiträge
    4 Hilfreiche Beiträge
    29. 08. 2012, 10:31

    Nettes Tut Alex ;-)

    "Das Universum ist vollkommen. Es kann nicht verbessert werden. Wer es verändern will, verdirbt es. Wer es besitzen will, verliert es." - Laozi

  • Kurt51 Kurt51
    R2-D2
    0 x
    119 Beiträge
    1 Hilfreiche Beiträge
    29. 08. 2012, 12:38

    Hallo Alex,

    Danke für die Umsetzung! :D

    Ich habe es noch um die Auswahl "Firma" erweitert und das Feld {name} über die ID eingelesen:

    lib.anrede = CASE
    lib.anrede {
    # Übergebener Wert
    key.field = 0

    # Wert kann alternativ auch direkt von GET- oder POST-Parameter geholt werden
    #key.data = GP:tx_powermail_pi1|field|13
    default = TEXT
    default.value = Sehr geehrte Damen und Herren,

    Herr = TEXT
    # Die "4" ist die ID des Powermail-Felds "{name}" z.B.
    Herr.data = GP:tx_powermail_pi1|field|4
    Herr.noTrimWrap = |Sehr geehrter Herr |,|

    Frau = TEXT
    Frau.data = GP:tx_powermail_pi1|field|4
    Frau.noTrimWrap = |Sehr geehrte Frau |, |
    }

    Gruß aus Jülich
    Kurt Kunig
    http://www.kupix.de
    ( ... und - immer schön fröhlich bleiben!)

  • perse perse
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    12. 10. 2012, 16:46

    Hi Alex,

    ich versuche gerade in einem Formular, abhängig von gewähltem Selectboxeintrag, die Empfänger-Adresse zu setzen. Ich habe folgende Einstellungen

    1. lib.empfaenger_mail = CASE
    2. lib.empfaenger_mail {
    3.  
    4. #key.data = GP:tx_powermail_pi1|field|1629
    5. key.field = 1629
    6.  
    7. default = TEXT
    8. default.value = abc@test.de
    9.  
    10. 1 = TEXT
    11. 1.value = def@test.de
    12.  
    13. 2 = TEXT
    14. 2.value = ghi@test.de
    15.  
    16. }

    [img]http://great-community.de/1.png[/img]
    [img]http://great-community.de/2.png[/img]

    Dann im Plugin auf der Kontaktseite folgendes als Empfänger eingetragen:
    [img]http://great-community.de/3.png[/img]

    Offenbar habe ich irgendwo einen Fehler. Kannst du mir sagen was ich falsch mache?

    Vielen Dank und viele Grüße
    Marc

  • perse perse
    Padawan
    0 x
    62 Beiträge
    0 Hilfreiche Beiträge
    15. 10. 2012, 10:54

    Oh man, der Klassiker: Wer lesen kann, ist klar im Vorteil. #paralyzed#

    Die Antwort auf meine Frage gibt es hier:

    [url=]http://typo3.org/extension-manuals/powermail/2.0.0/view/1/49/[/url]

    #angry#

  • 0 x
    28 Beiträge
    0 Hilfreiche Beiträge
    04. 03. 2013, 16:55

    Super Sache, der ViewHelper!
    Was ich leider nicht hinbekomme ist die Übergabe eines Feldwertes an ein lib Ojekt.
    Ich habe im RTE-Feld angegeben:
    {f:cObject(typoscriptObjectPath:'lib.weiterempfehlen',data:'{text}')}

    im TS hab ich (erstmal vereinfacht, soll später in ein Weiterempfehlen-Formular FORM integriert werden):
    lib.weiterempfehlen = COA
    lib.weiterempfehlen {
    10 = TEXT
    10.value.current = 1
    10.value.wrap = <p>Test-Text: |</p>
    }

    Es kommt leider nichts raus. Was mach ich falsch?

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    05. 03. 2013, 09:39

    Beispielverwendung

    1. # {f:cObject(typoscriptObjectPath:'lib.weiterempfehlen',data:'{text}')}
    2. lib.weiterempfehlen = TEXT
    3. lib.weiterempfehlen.field = 0
    4. # Debut Output
    5. # lib.weiterempfehlen.data = debug:data

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • sugi sugi
    R2-D2
    0 x
    72 Beiträge
    0 Hilfreiche Beiträge
    16. 12. 2013, 08:40

    Guten Morgen liebe Forummitglieder,

    ich habe verschiedene Möglichkeiten probiert und komme nicht weiter. Hoffe, ihr könnt mir helfen.

    [b]Problemdarstellung:[/b] Nach dem Update von Powermail auf 2.x habe ich das Formular neu erstellt. Das Formular wird an verschiedene Empfänger verschickt. Dieses Formular wird für Veranstaltungsanmeldung verwendet, d.h. es ist mit einer anderen Extension verbunden und diese basiert nicht auf Extbase.
    Der Redakteur gibt im BE die Veranstaltungen mit verschiedenen Empfängern ein, die dann im DB gespeichert sind ([b]Tabelle[/b] tx_eventbrowser_event [b]Feld[/b] contact_email). Der Anmelder wählt keinen Empfänger, was die Umsetzung für mich schwer macht.

    Bisher wurde das mit folgender TS-Code realisiert:

    1. plugin.tx_powermail_pi1 {
    2. prefill {
    3. uid88 < lib.event_title.100
    4. uid70 < lib.event_termin.100
    5. uid97 < lib.contact_email.100
    6. #uid98 < lib.event_end.100
    7. }
    8. dynamicTyposcript {
    9. receiver_email = RECORDS
    10. receiver_email {
    11. source.data = TSFE:fe_user|sesData|powermail_12687|uid91
    12. source.intval = 1
    13. tables = tx_eventbrowser_event
    14. conf.tx_eventbrowser_event = TEXT
    15. conf.tx_eventbrowser_event.field = contact_email
    16. }
    17. senders_data = COA
    18. senders_data {
    19. 10 < lib.event_title.100
    20. 10.source.data = TSFE:fe_user|sesData|powermail_12687|uid91
    21. 10.wrap = <span style="color:#7199AC; font-weight:bold; margin:0 20px;"> | </span>
    22.  
    23. 20 < lib.event_termin.100
    24. 20.source.data = TSFE:fe_user|sesData|powermail_12687|uid91
    25. 20.wrap = <span style="color:#7199AC; font-weight:bold; margin:0 20px;"> | </span>
    26.  
    27. 30 < lib.event_end.100
    28. 30.source.data = TSFE:fe_user|sesData|powermail_12687|uid91
    29. 30.wrap = <span style="color:#7199AC; font-weight:bold; margin:0 20px;"> | </span>
    30. }
    31. receiver_data < .senders_data
    32.  
    33. }
    34. ###POWERMAIL_TYPOSCRIPT_RECEIVER_EMAIL###
    35. }
    36.  
    37. # powermail zwischenspeichern
    38. temp.powermail < plugin.tx_powermail_pi1
    39.  
    40. plugin.tx_powermail_pi1.email.recipient_mail.sender.name.value = Seminaranmeldung

    Den Marker ###POWERMAIL_TYPOSCRIPT_RECEIVER_EMAIL### habe ich entfernt und in "E-Mail Adresse des Empfänger" folgendes eingegeben:

    1. {f:cObject(typoscriptObjectPath:'lib.contact_email')}

    was nicht funktioniert. Leider! :'( Sitze schon seit einer Woche und komme nicht weiter. Vielleicht zeigt sich ja ein Licht in der Dunkelheit...

    Viele Grüße und einen schönen Wochenanfang!

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    17. 12. 2013, 11:10

    So schwer sollte das eigentlich nicht sein.
    Du kannst entweder bereits im Formular drei Hiddenfields füllen mit Werten aus der Tabelle (Titel, Termin, E-Mail) oder du schleifst die UID des Datensatz mit durch und machst im Anschluss deine Abfrage.

    [b]Erstere Möglichkeit[/b]
    Drei Hiddenfields erstellen (auch die entsprechenden Marker merken) und über TypoScript mit den Werten aus der Tabelle befüllen. Hier wird das Powermail Formular aufgerufen mit index.php?id=123&eventUid=1234 - Bsp:

    1. plugin.tx_powermail.settings.setup.prefill {
    2. markerName1 = RECORDS
    3. markerName1 {
    4. source.data = GP:eventUid
    5. source.intVal = 1
    6. tables = tx_eventbrowser_event
    7. conf.tx_eventbrowser_event = TEXT
    8. conf.tx_eventbrowser_event.field = contact_email
    9. }
    10. markerName2 ...
    11. }

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • sugi sugi
    R2-D2
    0 x
    72 Beiträge
    0 Hilfreiche Beiträge
    17. 12. 2013, 13:33

    Vielen Dank! Du hast mir den entsprechenden Hint gegeben. :D

    Hab im "E-Mail Adresse des Empfänger" die Variablenname gesetzt.