TYPO3 - Powermail: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Powermail Extension
 
Powermail Extension
== Letzte Version für TYPO3 4.5 ==
+
== Snippets für 2.x ==
== Powermail Conditions ==
+
=== Userfunc ===
 +
https://docs.typo3.org/typo3cms/extensions/powermail/ForDevelopers/UserfuncsWithCobject/Index.html
 +
 
 +
Siehe auch [[TYPO3 - userFunc]]
 +
 
 +
[[Powermail - UserFunc]]
 +
 
 +
=== Dynamische Anrede ===
 +
 
 +
Mit folgendem TypoScript lässt sich in Powermail 2.x eine dynamische Anrede des Benutzers in E-Mails und Bestätigungsseite bewerkstelligen.
 +
 
 +
TypoScript:
 +
<syntaxhighlight lang="typoscript">
 +
lib.anrede = CASE
 +
lib.anrede {
 +
  key.field = 0
 +
 +
  default = TEXT
 +
  default.value = Sehr geehrte Damen und Herren,
 +
 +
  Herr = TEXT
 +
  # Die "7" ist die ID des Powermail-Felds {name}
 +
  Herr.data = GP:tx_powermail_pi1|field|7
 +
  Herr.noTrimWrap = |Sehr geehrter Herr |,|
 +
 +
  Frau = TEXT
 +
  Frau.data = GP:tx_powermail_pi1|field|7
 +
  Frau.noTrimWrap = |Sehr geehrte Frau |, |
 +
 +
 +
  # Englische Übersetzung:
 +
  Mr = TEXT
 +
  Mr.data = GP:tx_powermail_pi1|field|7
 +
  Mr.noTrimWrap = |Dear Mr |, |
 +
 +
  Mrs = TEXT
 +
  Mrs.data = GP:tx_powermail_pi1|field|7
 +
  Mrs.noTrimWrap = |Dear Mrs |, |
 +
 +
  Ms = TEXT
 +
  Ms.data = GP:tx_powermail_pi1|field|7
 +
  Ms.noTrimWrap = |Dear Ms |, |
 +
}
 +
</syntaxhighlight>
 +
ViewHelper für Powermail-Plugin:
 +
 
 +
{f:cObject(typoscriptObjectPath:'lib.anrede',data:'{anrede}')}
 +
Quelle: typo3.net - Forum
 +
 
 +
Ab Powermail 2.1.x werden Powermail-Felder nicht mehr über die UID, sondern den Markernamen angesprochen. Dementsprechend müssen die Zeilen im TypoScript etwas angepasst werden:
  
== Snippets ==
+
# Powermail-Feld {name}
 +
Herr.data = GP:tx_powermail_pi1|field|name
  
=== E-Mail Empfänger abhängig von Feldwerten (powermail > 2 ===
+
=== E-Mail Empfänger abhängig von Feldwerten (powermail > 2===
 
http://typo3.3.n7.nabble.com/Powermail-2-Dynamischer-Empfanger-je-nach-Betreff-td269199.html
 
http://typo3.3.n7.nabble.com/Powermail-2-Dynamischer-Empfanger-je-nach-Betreff-td269199.html
  
Zeile 13: Zeile 63:
 
1) Betreff-Auswahl mit Select-Feld so wie du  
 
1) Betreff-Auswahl mit Select-Feld so wie du  
  
2) Im Powermail-Plugin im Reiter "Empfänger" folgendes:  
+
2) Im Powermail-Plugin '''im Reiter "Empfänger"''' folgendes:  
  
Name des Empfängers:{f:cObject(typoscriptObjectPath:'lib.receiver_name')}  
+
Name des Empfängers:
 +
{f:cObject(typoscriptObjectPath:'lib.receiver_name')}  
  
 
E-Mail des Empfängers:  
 
E-Mail des Empfängers:  
 
+
{f:cObject(typoscriptObjectPath:'lib.receiver_email')}  
{f:cObject(typoscriptObjectPath:'lib.receiver_email')}  
 
  
 
Betreff der Mail an den Empfänger:  
 
Betreff der Mail an den Empfänger:  
 
+
{f:cObject(typoscriptObjectPath:'lib.subject')}  
{f:cObject(typoscriptObjectPath:'lib.subject')}  
 
  
 
3)  
 
3)  
Zeile 91: Zeile 140:
 
</pre>
 
</pre>
 
In das Empfänger-Eingabefeld:  
 
In das Empfänger-Eingabefeld:  
  {f:cObject(typoscriptObjectPath:'lib.receiver',data:'{betreff}')}  
+
  {f:cObject(typoscriptObjectPath:'lib.receiver',data:'{betreff}')}
 +
 
 +
== Letzte Version für TYPO3 4.5 ==
 +
== Powermail Conditions ==
 +
 
 +
== Snippets ==
 +
 
 
=== E-Mail Empfänger abhängig von Feldwerten ===
 
=== E-Mail Empfänger abhängig von Feldwerten ===
 
==== Quellen ====
 
==== Quellen ====

Aktuelle Version vom 30. Januar 2018, 12:32 Uhr

Powermail Extension

Snippets für 2.x[Bearbeiten]

Userfunc[Bearbeiten]

https://docs.typo3.org/typo3cms/extensions/powermail/ForDevelopers/UserfuncsWithCobject/Index.html

Siehe auch TYPO3 - userFunc

Powermail - UserFunc

Dynamische Anrede[Bearbeiten]

Mit folgendem TypoScript lässt sich in Powermail 2.x eine dynamische Anrede des Benutzers in E-Mails und Bestätigungsseite bewerkstelligen.

TypoScript:

lib.anrede = CASE
lib.anrede {
  key.field = 0
 
  default = TEXT
  default.value = Sehr geehrte Damen und Herren,
 
  Herr = TEXT
  # Die "7" ist die ID des Powermail-Felds {name}
  Herr.data = GP:tx_powermail_pi1|field|7
  Herr.noTrimWrap = |Sehr geehrter Herr |,|
 
  Frau = TEXT
  Frau.data = GP:tx_powermail_pi1|field|7
  Frau.noTrimWrap = |Sehr geehrte Frau |, |
 
 
  # Englische Übersetzung:
  Mr = TEXT
  Mr.data = GP:tx_powermail_pi1|field|7
  Mr.noTrimWrap = |Dear Mr |, |
 
  Mrs = TEXT
  Mrs.data = GP:tx_powermail_pi1|field|7
  Mrs.noTrimWrap = |Dear Mrs |, |
 
  Ms = TEXT
  Ms.data = GP:tx_powermail_pi1|field|7
  Ms.noTrimWrap = |Dear Ms |, |
}

ViewHelper für Powermail-Plugin:

{f:cObject(typoscriptObjectPath:'lib.anrede',data:'{anrede}')}

Quelle: typo3.net - Forum

Ab Powermail 2.1.x werden Powermail-Felder nicht mehr über die UID, sondern den Markernamen angesprochen. Dementsprechend müssen die Zeilen im TypoScript etwas angepasst werden:

# Powermail-Feld {name}
Herr.data = GP:tx_powermail_pi1|field|name

E-Mail Empfänger abhängig von Feldwerten (powermail > 2)[Bearbeiten]

http://typo3.3.n7.nabble.com/Powermail-2-Dynamischer-Empfanger-je-nach-Betreff-td269199.html

ich hatte das in einem Projekt so gelöst: (läuft unter Typo3 6.1 und Powermail 2.0)

1) Betreff-Auswahl mit Select-Feld so wie du

2) Im Powermail-Plugin im Reiter "Empfänger" folgendes:

Name des Empfängers:

{f:cObject(typoscriptObjectPath:'lib.receiver_name')} 

E-Mail des Empfängers:

{f:cObject(typoscriptObjectPath:'lib.receiver_email')} 

Betreff der Mail an den Empfänger:

{f:cObject(typoscriptObjectPath:'lib.subject')} 

3) Im TypoScript:

lib.receiver_email = CASE 
lib.receiver_email { 
     # content id 59: field uid 11 
     key.data = GP:tx_powermail_pi1|field|11 
     key.intval = 1 
     default = TEXT 
     default.value = [hidden email] 
     1 = TEXT 
     1.value = [hidden email] 
     2 = TEXT 
     2.value = [hidden email] 
     3 = TEXT 
     3.value = [hidden email] 
} 
lib.receiver_name = CASE 
lib.receiver_name { 
     # content id 59: field uid 11 
     key.data = GP:tx_powermail_pi1|field|11 
     key.intval = 1 
     default = TEXT 
     default.value = Firma XY 
     1 = TEXT 
     1.value = Firma XY Allgemein 
     2 = TEXT 
     2.value = Firma XY Abteilung A 
     3 = TEXT 
     3.value = Firma XY Abteilung B 
} 
lib.subject = TEXT 
lib.subject { 
     # content id 59: field uid 11 
     key.data = GP:tx_powermail_pi1|field|11 
     key.intval = 1 
     default = TEXT 
     default.value = Allgemeine Anfrage 
     1 = TEXT 
     1.value = Allgemeine Anfrage 
     2 = TEXT 
     2.value = Anfrage an Abteilung A 
     3 = TEXT 
     3.value = Anfrage an Abteilung B 
} 

Korrektur für Powermail > 2.1[Bearbeiten]

ich habe jetzt - mit Hilfe des Powermail-Bug-Trackers - eine Lösung für

> 2.1 gefunden. Und zwar werden Felder nicht mehr nach deren ID, 

sondern Feldnamen referenziert:

Im TypoScript der Seite:

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

   default = TEXT 
   default.value = [hidden email] 
   # Mitgliederverwaltung 
   member = TEXT 
   member.value = [hidden email] 
} 

In das Empfänger-Eingabefeld:

{f:cObject(typoscriptObjectPath:'lib.receiver',data:'{betreff}')}

Letzte Version für TYPO3 4.5[Bearbeiten]

Powermail Conditions[Bearbeiten]

Snippets[Bearbeiten]

E-Mail Empfänger abhängig von Feldwerten[Bearbeiten]

Quellen[Bearbeiten]

http://blog.marmalade.de/2010/06/powermail-e-mailempfanger-mit-case-unterscheidung-uber-typoscript-zuweisen/ (3/2012)

http://typo3blogger.de/powermail-empfanger-im-frontend-wahlen/ (3/2012) Verschiedene Möglichkeiten:

  • Direkt (schlecht)
  • Über dynamisches TypoScript
  • Angepasste Datenbankabfrage

Direkt[Bearbeiten]

Im Empfänger Feld kann man direkt einen Feldmarker angeben z.B.: ###UID234###, dann wird direkt der Wert des Feldes benutzt. Schlecht, weil einfach zu manipulieren (potentielle Spamschleuder)

E-Mail über dynamisches TypoScript[Bearbeiten]

TS

// Case Objekt das den Wert eines Powermail Feldes auswertet. 
emailan = CASE
emailan {
    ### Unterschiedung anhand Feld mit der UID 34 (Form hat id 25)
    key.data = TSFE:fe_user|sesData|powermail_25|uid34
    ### Standardwert
    default = TEXT
    default.value = info@indihar.de
    ### Wert bei Auswahl "empf2"
    empf2 = TEXT
    empf2.value = schlegel@geo-bit.de
}

// neuen dynamischen Powermailmarker (###POWERMAIL_TYPOSCRIPT_EMPFAENGER###)
// dieser kann im Formular im Empfängerfeld eingetragen werden.
plugin.tx_powermail_pi1.dynamicTyposcript {
    empfaenger < emailan
}

Angepasste Datenbankabfrage[Bearbeiten]

http://typo3blogger.de/powermail-empfanger-im-frontend-wahlen/

http://www.typo3.net/forum/list/list_post//76461/?howto=1&page=1

http://typo3.org/documentation/document-library/extension-manuals/powermail/1.4.15/view/1/11/#id4334579

Die Extension Powermail bietet eine komfortable Möglichkeit Formulare zusammenzuklicken – übrigens auch für Redakteure. Selbstverständlich ist Skalierbarkeit und Flexibilität ein großes Thema. So ist es auch einfach möglich, den Empfänger im Frontend auszuwählen.

Im Netz gibt es schon ein paar Erklärungen zu diesem Thema, aber ich möchte es dennoch noch einmal aufgreifen, da ich oft auf Empfängerwahl angesprochen werde.

Mail-Adressen direkt in der Select Box Technisch wäre es natürlich kein Problem eine Selectbox mit E-Mail Adressen im Frontend anzeigen zu lassen und im Flexform im Empfängerfeld dieses Feld durch einen Marker wieder aufzugreifen (z.B. ###UID234###). Der Nachteil liegt aber auf der Hand: - Mail Adressen können im Frontend aus dem Quelltext ausgelesen werden - Mail Adressen können einfach manipuliert werden (im schlimmsten Fall stellt ihr so eine Spamschleuder ins Netz) Diese Methode ist also allenfalls im Intranet nutzbar.

Umweg über Datenbank-UID Eine andere Idee ist es, Datankbankeinträge (z.B. tt_address oder fe_user) mit E-Mail Adressen vorzunehmen und in einer (z.B.) Selectbox die UID des Datensatzes wieder aufzugreifen. Beispiel Eintrag im Flexform In diesem Beispiel hat man die Wahl zwischen UID 1 und 2. Verwendeter Marker ist ###UID42###. SQL Query Beispiel Damit Powermail den Umweg über die Datenbank geht, bietet sich der Einsatz des Feldes “Alternative SQL-Query” an.

Weitere Infos Natürlich kann man auch an ganze Usergroups schicken:

SELECT email FROM fe_users WHERE find_in_set(###UID43###,usergroup) > 0 AND hidden = 0 AND deleted = 0

Beispiel mit fester Usergroup UID44:

SELECT email FROM fe_users WHERE find_in_set(44,usergroup) > 0 AND hidden = 0 AND deleted = 0

Hier ein Beispiel mit Checkboxen (mehrere Empfänger auswählen):

SELECT email FROM fe_users WHERE uid IN(###UID43###)

Eine ganz andere Möglichkeit ist der Einsatz von Dynamictyposcript im Empfängerfeld – auch hier lassen sich einige Anforderungen flexibel umsetzen. Dynamictyposcript in Powermail

Formular in Datenbank speichern[Bearbeiten]

plugin.tx_powermail_pi1{
    dbEntry {

        # Speicherung für Tabelle ermöglichen
        tt_address._enable = TEXT
        tt_address._enable.value = 1

        #  "tt_address.name" mit dem Wert des Powermail felds ausfüllen
        tt_content uid 88, field uid18 (###uid18###)
        tt_address.name = TEXT
        tt_address.name.data = TSFE:fe_user|sesData|powermail_88|uid18

    }
}

Ausführliches Beispiel[Bearbeiten]

Constants

plugin.powermail.js.alwaysInclude = 1
plugin.powermail.js.includeJquery = 0
plugin.powermail.js.includeJqueryTools = 0
plugin.powermail.js.includeJqueryToolsTabs = 0
plugin.powermail.allow.email2sender = 0
plugin.powermail.PID.dblog = 0
plugin.powermail.markerALL.hideLabel = 1
plugin.powermail.format.datetime = %d.%m.%Y% %H:%M
plugin.powermail.format.date = %d.%m.%Y
plugin.powermail.debug.output = 

Setup

// CSS Pfad ändern (oder gar nicht erst statisch einbinden ;-)  )
page.includeCSS.powermail_frontend_basic = fileadmin/templates/onlineboerse/powermail.css

Datenbank Speicherung mit verschiedenen Optionen[Bearbeiten]

Setup

// Powermail DB Storage
// Extra userfunc to convert date to unix timestamp
includeLibs.powermailTimestamp = fileadmin/templates/scripts/user_powermailTimestamp.php

plugin.tx_powermail_pi1.dbEntry{  
  tx_gbbulletin_bulletin {

    _enable = TEXT
    _enable.value = 1
     
    hidden = TEXT
    hidden.value = 1
     
    pid = TEXT
    pid.value = 102
        
    tstamp = TEXT
    tstamp.data = date:U
         
    crdate = TEXT
    crdate.data = date:U

    title = TEXT
    title.data = TSFE:fe_user|sesData|powermail_214|uid1

    author = TEXT
    author.data = TSFE:fe_user|sesData|powermail_214|uid2

    place = TEXT
    place.data = TSFE:fe_user|sesData|powermail_214|uid3
    
    description = TEXT
    description.data = TSFE:fe_user|sesData|powermail_214|uid4

    contact = TEXT
    contact.data = TSFE:fe_user|sesData|powermail_214|uid5

    qualification = TEXT
    qualification.data = TSFE:fe_user|sesData|powermail_214|uid6
    
    date = USER
    date.userFunc = user_powermailTimestamp->preflight
    date.userFunc.field = uid7
    date.userFunc.formuid = 214
    
    period = TEXT
    period.data = TSFE:fe_user|sesData|powermail_214|uid29

    end_date = USER
    end_date.userFunc = user_powermailTimestamp->preflight
    end_date.userFunc.field = uid14
    end_date.userFunc.formuid = 214
    
    url = TEXT
    url.data = TSFE:fe_user|sesData|powermail_214|uid8

    text1 = TEXT
    text1.data = TSFE:fe_user|sesData|powermail_214|uid9
    
    cluster = TEXT
    cluster.data = TSFE:fe_user|sesData|powermail_214|uid11
    
    # add mm relation to uid 2 of tx_gbbulletin_cluster (via mm table)
    _mm = COA
    _mm.10 = COA
    # 1 is always the mm table
    _mm.10.1 = TEXT
    _mm.10.1.value = tx_gbbulletin_cluster_mm
    # 2 is always the other table
    _mm.10.2 = TEXT
    _mm.10.2.value = tx_gbbulletin_cluster
    # 3 is always the uid of the other table to get a relation to this
    # (in this case uid1 of tx_gbbulletin_cluster)
    _mm.10.3 = TEXT
    _mm.10.3.value = 1
    
    tag = TEXT
    tag.data = TSFE:fe_user|sesData|powermail_214|uid12

  }

}

Userfunktion zum umwandeln von Datum in Timestamp[Bearbeiten]

Diese Funktion wird im obigen Beispiel zu Datenbankspeicherung verwendet

<?php 

    class user_powermailTimestamp { 
     
     
        // Function preflight() will be used from typoscript 
        function preflight($content='', $conf=array()) { 
            $value = $GLOBALS['TSFE']->fe_user->sesData['powermail_'.$conf['userFunc.']['formuid']][$conf['userFunc.']['field']]; 
            return $this->getDate($value); 
        } 
         
         
        // Main getDate() changes a date in any format to an unix timestamp 
        function getDate($string, $default = 'now', $timestamp = 1) { 
            $error = 0; // no error at the beginning 
            $string = str_replace(array('-', '_', ':', '+', ',', ' '), '.', $string); // change 23-12-2009 -> 23.12.2009 AND "05:00 23.01.2009" -> 05.00.23.01.2009 
            if (method_exists('t3lib_div', 'trimExplode')) $dateParts = t3lib_div::trimExplode('.', $string, 1); else $dateParts = explode('.', $string); // split at . 
         
            if (count($dateParts) === 3) { // only if there are three parts like "23.12.2009" 
                if (strlen($dateParts[0]) <= 2 && strlen($dateParts[1]) <= 2 && strlen($dateParts[2]) <= 2) { // xx.xx.xx 
                    $string = strtotime($dateParts[2].'-'.$dateParts[1].'-'.$dateParts[0]); // change to timestamp 
                } 
                elseif (strlen($dateParts[0]) == 4 && strlen($dateParts[1]) <= 2 && strlen($dateParts[2]) <= 2) { // xxxx.xx.xx 
                    $string = strtotime($dateParts[0].'-'.$dateParts[1].'-'.$dateParts[2]); // change to timestamp 
                } 
                elseif (strlen($dateParts[0]) <= 2 && strlen($dateParts[1]) <= 2 && strlen($dateParts[2]) == 4) { // xx.xx.xxxx 
                    $string = strtotime($dateParts[2].'-'.$dateParts[1].'-'.$dateParts[0]); // change to timestamp 
                } 
                else { // error 
                    $error = 1; // error 
                } 
            } elseif (count($dateParts) === 5) { // only if there are five parts like "05.00.23.01.2009" 
                $string = strtotime($dateParts[4].'-'.$dateParts[3].'-'.$dateParts[2].' '.$dateParts[0].':'.$dateParts[1].':00'); // change to timestamp 
            } else { // more than 3 parts - so error 
                $error = 1; // error 
            } 
            $string = date('Y-m-d', $string); // For default: change 1234567 -> 1.1.1979 
            if ($timestamp) $string = strtotime($string); // Change back 1.1.1979 -> 1234567 
            if ($error) $string = ($default == 'now' ? time() : $default); // show default value 
         
            return $string; 
        } 
    } 

?>

Dropdownfeld mit Werten aus der Datenbank[Bearbeiten]

Beispiel 1[Bearbeiten]

Quelle: http://www.typo3.net/forum/thematik/zeige/thema/77259/?show=1 Zugriff: 2013-10

1. Neues Powermail Feld anlegen (typoscript) im Feld Typoscript Objekt z.B. lib.objectname angeben


2. Eine Selectabfrage in TS (Hole name, uid von tt_address der Seite 5):

TS

lib.objectname {
  10 = TEXT
  10.value = <label for="uid33">Select:</label>
  20 = CONTENT
  20.wrap = <select id="uid33" name="tx_powermail_pi1[uid33]" size="1">|</select>
  20 {
    table = tt_address
    select {
      pidInList = 5
      orderBy = name
    }
    renderObj = COA
    renderObj {
      10 = COA
      10 {
        10 = TEXT
        10 {
          field = uid
          wrap = <option value="|">
        }
        20 = TEXT
        20 {
          field = name
          wrap = |</option>
        }
      }
    }
  }
}


Ergebnis:

Dynamische Selecterbox, mit dem HTML Code:

<label for="uid33">Select:</label>
<select id="uid33" name="tx_powermail_pi1[uid33]" size="1">
<option value="23">Name1</option>
<option value="24">Name2</option>
</select>

Datenspeicherung in m:n Tabellen[Bearbeiten]

Quelle: http://typo3-blog.net/tutorials/news/powermail-tt-news-mn-tabelle.html 2013-10

Powermail lässt sich nicht nur zum Versenden von Mails sondern auch zum Erstellen von Inhaltselementen nutzen. Dazu dient die TYPO3 Option dbEntry. Mit Hilfe dieser Option ist es sogar möglich MN-Tabellen zu befüllen, welches wenig bekannt ist. Anbei ein Beispiel, wie Eine tt_news Nachricht erzeugt und direkt in Kategorie Nr. 2 eingefügt werden kann:

plugin.tx_powermail_pi1.upload.folder = uploads/pics/
plugin.tx_powermail_pi1.dbEntry.tt_news {
  # Neue Nachrichten müssen durch Admin genehmigt werden
  _enable = TEXT
  _enable.value = 0
  pid = TEXT
  pid.value = 2
  tstamp = TEXT
  tstamp.data = date:U
  crdate = TEXT
  crdate.data = date:U
  
  _mn = COA
  _mn.10 = COA
  # 1 muss Namen der mn Tabelle enthalten
  _mm.10.1 = TEXT
  _mm.10.1.value = tt_news_cat_mm
  # 2 ist der Name der Fremdtabelle, hier News Kategorie
  _mm.10.2 = TEXT
  _mm.10.2.value = tt_news_cat
  # 3 die Fremd uid, hier uid der Newskategorie
  _mm.10.3 = TEXT
  _mm.10.3.value = 2
  
  # 139 ist die uid des Contenelements, welches das Powermailformular darstellt
  # 15 ist die uid des einzelnen Feldes.
  title = TEXT
  title.data = TSFE:fe_user|sesData|powermail_139|uid15
  author_email = TEXT
  author_email.data = TSFE:fe_user|sesData|powermail_139|uid21
  author = TEXT
  author.data = TSFE:fe_user|sesData|powermail_139|uid739
  # short = TEXT
  # short.data = TSFE:fe_user|sesData|powermail_139|uid742
  bodytext = TEXT
  bodytext.data = TSFE:fe_user|sesData|powermail_139|uid19
  datetime = TEXT
  datetime.data = TSFE:fe_user|sesData|powermail_139|uid17
  keywords = TEXT
  keywords.data = TSFE:fe_user|sesData|powermail_139|uid41
}

Felder vorausfüllen[Bearbeiten]

Quelle: http://typo3blogger.de/powermail-trickkiste-teil-2-%E2%80%93-felder-vorbelegen/

Über GET Parameter[Bearbeiten]

Dropdown

http://www.einpraegsam.net/kontakt.html?tx_powermail_pi1[uid24]=TYPO3%20Extension%20powermail

Input

index.php?id=1&tx_powermail_pi1[uid12]=Hallo

Checkbox

index.php?id=1&tx_powermail_pi1[uid13][0]=1

Über TypoScript[Bearbeiten]

Vorfüllen mit TypoScript: Durch eine Vorbelegung mit TypoScript gibt es kaum noch Grenzen. Statische Werte, GET und POST Parameter und userFuncs können verwendet werden. Nachfolgend ein paar Beispiele.

plugin.tx_powermail_pi1 {
  prefill {
    # Fülle Feld 1 mit statischem Wert
    uid1 = TEXT
    uid1.value = blabla
 
    # Fülle Feld 2 mit aktuellem timestamp
    uid2 = TEXT
    uid2.data = date:U
 
    # Feld 3 mit Datum
    uid3 = TEXT
    uid3.data = date:U
    uid3.strftime = Datum: %d.%m.%Y
 
    # Feld 4 mit IP Adresse
    uid4 = TEXT
    uid4.data = getIndpEnv:REMOTE_ADDR
 
    # Feld 5 und 6 mit Wert aus aktueller URL
    # index.php?id=123&wert=Ort
    uid5 = TEXT
    uid5.data = GP:wert
    uid5.htmlSpecialChars = 1
 
    # index.php?id=123&tx_ttnews[tt_news]=95
    uid5 = TEXT
    uid5.data = GP:tx_ttnews|tt_news
    uid5.wrap = Wir befinden uns auf der Newsdetailseite mit der UID|
    uid5.intval = 1
  }
}

Hinweis: 1. Im Beispiel 4 und 5 werden Benutzerdefinierte Werte (GET oder POST) verwendet. Hier ist ein Absichern gegen XSS unabdingbar. Mit intval oder htmlSpecialChars lassen sich Werte innerhalb von TypoScript leicht absichern. 2. Falls ein Wert eines Feldes in der Session liegt, hat dieser Vorrang. 3. Ein Selectfeld wird automatisch vorselektiert wenn der vorgegebene Wert auch zur Auswahl steht

User basierter Upload Ordner[Bearbeiten]

ich möchte die in einem Upload-Formular übermittelten Dateien in ein bestimmtes Verzeichnis (fileadmin/user_upload/verzeichnis/) schieben. Das funktioniert auch mit folgender Konstanten:

plugin.powermail.upload.folder = /fileadmin/user_upload/vkb-uploads/

Die Dateien landen im richtigen Ordner. Allerdings wird in der Powermail-Ansicht im Backend, dieser Pfad nicht übernommen. Ich lasse mir also die eingegangenen Powermails anzeigen und hier ist ja dann die übertragene Datei entsprechend verlinkt, aber eben nicht mit dem von mir vorgegebenem Pfad sondern mit dem Standard-Ordner (uploads/tx_powermail/files/Dateiname.abc).

Lösung anscheinend selbst gefunden.

Ich habe alle möglichen Dateien durchsuchen lassen, in denen der Pfad 'uploads/tx_powermail/files/' gesetzt ist und die Datei pageTSconfig.txt gefunden.

Hieraus konnte ich schlussfolgern, dass der folgende Schnipsel im TSConfig des Sysordners in dem die Mails auflaufen hinterlegt sein muss um mein Problem zu beheben:

tx_powermail_mod1.config {
    list {
        uploadFolder = mein/pfad/zu/den/dateianhängen/
    }
}