Zum Inhalt springen

Powermail Werte Manipulieren

Erstellt am 30. Oktober 2009 · 12 Antworten · letzte Antwort am 28. April 2010

Tags: Powermail, Frage

st0ne ·

hi leute, ich steh da vor einem problem...

ich will mit powermail das formular dann auch in eine datenbank schreiben lassen, das funktinoiert auch schön, nur hab ich bei manchen drop-down menüs für die datenbank dann nicht einen text stehen, sondern halt als wert dann 0, 1, 2, 3 usw.

Auf der "confirmation" seite von typo3 steht dann allerdings auch der wert da, 0, 1, 2, 3 usw... sollte aber dann der text des jeweiligen feldes stehen...

jetzt habe ich in der doku von powermail folgendes gefunden:

confirmation {
uid999 = TEXT
uid999.field = uid999
uid999.wrap = <b>|</b>
}

also kann man zumindest in der simplen form mal den wert beeinflussen... wie kann ich da aber jetzt eine if-abfrage oder ähnliches einbauen um die werte der drop-down menüs wieder auf texte zurückzumanipulieren?

bin jetzt nicht so der typoscript profi, aber vielleicht hat ja jemand eine idee dazu :-)

danke gruß st0ne

st0ne ·

hi,

danke für den tipp, so direkt hats dann nicht funktioniert, aber habs dann so gelöst :-)

mode {
    confirmation {

      uid34 = CASE
      uid34.key.data = TSFE:fe_user|sesData|powermail_51|uid34
      uid34.default = TEXT
      uid34.default.value = Nein
      uid34.1 = TEXT
      uid34.1.value = Ja

    }
    
  }
st0ne ·

so, weiteres problem, wie gehe ich bei einem feld mit mehreren checkboxen vor?

so funktionierts nicht:

  uid61_0 = CASE
      uid61_0.key.data = TSFE:fe_user|sesData|powermail_51|uid61|0
      uid61_0.1 = TEXT
      uid61_0.1.value = Text1
      uid61_1 = CASE
      uid61_1.key.data = TSFE:fe_user|sesData|powermail_51|uid61|1
      uid61_1.1 = TEXT
      uid61_1.1.value = Text2
      uid61_2 = CASE
      uid61_2.key.data = TSFE:fe_user|sesData|powermail_51|uid61|2
      uid61_2.1 = TEXT
      uid61_2.1.value = Text3
      uid61_3 = CASE
      uid61_3.key.data = TSFE:fe_user|sesData|powermail_51|uid61|3
      uid61_3.1 = TEXT
      uid61_3.1.value = Text4
      uid61_4 = CASE
      uid61_4.key.data = TSFE:fe_user|sesData|powermail_51|uid61|4
      uid61_4.1 = TEXT
      uid61_4.1.value = Text5
      uid61_5 = CASE
      uid61_5.key.data = TSFE:fe_user|sesData|powermail_51|uid61|5
      uid61_5.1 = TEXT
      uid61_5.1.value = Text6
      uid61_6 = CASE
      uid61_6.key.data = TSFE:fe_user|sesData|powermail_51|uid61|6
      uid61_6.1 = TEXT
      uid61_6.1.value = Text7
einpraegsam.​net ·

Ins Blaue:

uid61 = COA
uid61 {
 10 = CASE
 10.key.data = TSFE:fe_user|sesData|powermail_51|uid61|0
 10.1 = TEXT
 10.1.value = Erste Checkbox angehakt
 10.1.noTrimWrap = ||, |
 10.default = TEXT
 10.default.value =


 20 = CASE
 20.key.data = TSFE:fe_user|sesData|powermail_51|uid61|1
 20.1 = TEXT
 20.1.value = Zweite Checkbox angehakt
 20.1.noTrimWrap = ||, |
 20.default = TEXT
 20.default.value =
}
st0ne ·

danke!
hat auf anhieb geklappt :-)

hab jetzt nur noch das problem das ich diese multi-checkboxen nicht in die datenbank eingetragen bekomme...
weil das modul im backend erwartet dass die checkboxen zusammengezählte werte sind, also binär halt...

naja, jedenfalls scheine ich von powermail nur ein array zu bekommen, und das übernimmts mir nicht in die datenbank...

geht das nur mit einer userfunction? oder kann das typoscript irgendwie bewerkstelligen

danke
gruß st0ne

einpraegsam.​net ·
st0ne schrieb

geht das nur mit einer userfunction? oder kann das typoscript irgendwie bewerkstelligen

Ehrlich gesagt weiß ich nicht ganz was du meinst...

st0ne ·

also, wenn man in typo3 eine extension baut, und zb. so multi-checkboxen hinzufügt, dann wird wenn man zb. 5 checkboxen hat der wert der in die datenbank gespeichert wird, zusammengezählt...

checkbox1 = 1
checkbox2 = 2
checkbox3 = 4
checkbox4 = 8
checkbox5 = 16

somit steht in der datenbank wenn man checkbox 1 und 3 anhackt, 5 in der datenbank.

bei powermail allerdings, bekommt man wohl ein array aus dem formular zurück... sozusagen so:

checkbox[0] = 1
checkbox[1] = 0
checkbox[2] = 1
checkbox[3] = 0
checkbox[4] = 0

und das lässt sich leider nicht mit dem dbentry in die datenbank eintragen 🙁

hoffe es halbwegs verständlich erklärt zu haben 🙂

st0ne ·

bei textfeldern funktionierts so:

plugin.tx_powermail_pi1 {
  dbEntry {
    tx_tabellenname.spaltenname = TEXT
    tx_tabellenname.spaltenname.data = TSFE:fe_user|sesData|powermail_51|uid61
  }
}
einpraegsam.​net ·

ok, und wenn es für jede Checkbox ein Feld in der DB gibt, dann kannst du dieses füllen, sobald die Checkbox angehakt wird.
Wenn du aber einen komischen Wert in ausschließlich einem Feld eintragen willst (5 wenn 1 und 3 angehakt), dann brauchst du wirklich eine userFunc

st0ne ·

ok danke, dann werde ich mir mal überlegen ob ich es mit einer userfunc löse oder für jede checkbox eine spalte anlege...

aber ist eigentlich blöd dass powermail das nicht von selbst kann... naja, danke trotzdem für die hilfe :-)

Unbekannter Benutzer ·

Konnte das Vorhaben damit erreichen:

plugin.tx_powermail_pi1.dbEntry.user_mydb {
   _enable = TEXT
   _enable.value = 1
   myfield = TEXT
   myfield.cObject = COA
   myfield.cObject.1 = TEXT
   myfield.cObject.1.value = 0
   myfield.cObject.5 = TEXT
   myfield.cObject.5.data = TSFE:fe_user|sesData|powermail_1|uid1|0
   myfield.cObject.5.wrap = +|
   myfield.cObject.5.if.isTrue.data = TSFE:fe_user|sesData|powermail_1|uid1|0
   myfield.cObject.15 = TEXT
   myfield.cObject.15.data = TSFE:fe_user|sesData|powermail_1|uid1|1
   myfield.cObject.15.wrap = +|
   myfield.cObject.15.if.isTrue.data = TSFE:fe_user|sesData|powermail_1|uid1|1  
   myfield.cObject.25 = TEXT
   myfield.cObject.25.data = TSFE:fe_user|sesData|powermail_1|uid1|2
   myfield.cObject.25.wrap = +|
   myfield.cObject.25.if.isTrue.data = TSFE:fe_user|sesData|powermail_1|uid1|2
   myfield.prioriCalc = intval
}

Die Checkboxen so definieren:
Wert 1|1
Wert 2|2
Wert 3|4

cObject wird vor prioriCalc ausgeführt.
(Mit insertData geht's leider nicht - wird erst danach ausgeführt.)