Zum Inhalt springen

Powermail: dbEntry mit TS-Feldern und Multiple Upload-Erweiterung

Erstellt am 27. Mai 2009 · 6 Antworten · letzte Antwort am 25. März 2015

Tags: Datei-Upload, Powermail, Frage

marc-willmann ·

Hallo,

ich arbeite an einem Powermail-Formular, das einige Felder vorbelegen soll (zum Teil aus einer DB-Tabelle) und das Ergebnis nach dem Absenden wiederum in eine andere DB-Tabelle eintragen soll. Im Grunde funktioniert das auch schon, ... ABER ;-)

1. Eines meiner Formularfelder holt die Daten aus einer Datenbank (nicht fe_user). Aus diesem Grund habe ich das Feld als TS-Feld deklariert und eine userFunc geschrieben, die das Feld befüllt. Das funktioniert soweit. Aber wie komme ich an die Daten wieder ran, um sie mittels dbEntry in die Datenbank zu schreiben? Das Feld hat im HTML-Quelltext kein uidXX als Namen erhalten, sondern ein tx_meineext_pi1[meinfeld].

Ich mache das bisher so:

tx_meineext_cars.type = TEXT
tx_meineext_cars.type.data = TSFE:fe_user|sesData|powermail_262|uid2

Leider funktioniert folgendes NICHT:

tx_meineext_cars.type = TEXT
tx_meineext_cars.type.data = TSFE:fe_user|sesData|powermail_262|tx_meineext_pi1[meinfeld]

2. Der Benutzer hat über das Formular die Möglichkeit, bis zu 5 Bilder hochzuladen. Dafür habe ich die powermail_mul-Extension installiert, die auch klasse funktioniert. Aber auch hier die Frage: Wie komme ich an die Bilder 2-5 heran, um diese in die Datenbank zu schreiben. Mit dem 1. Bild funktioniert es wunderbar über den o.g. Code.

Hat jemand eine Idee für mich?

Vielen Dank

Marc

einpraegsam.​net ·

1. powermail verarbeitet und speichert Werte nur in der Session, wenn diese powermail konform vorliegen:

<input name="tx_powermail_pi1[uidZAHL]" ...

Wenn du also auf andere Werte zugreifen willst, musst du diese selbst zuvor in der Session (z.B.) ablegen

2. Gute Frage

marc-willmann ·

zu 1.: Vielen Dank, das hat wunderbar geklappt. Ich habe in meiner userFunc den Namen entsprechend geändert und nun funktioniert's :-)

zu 2: Hat noch jemand eine Idee?

Leinad ·

Ist zwar schon ne Weile her, aber bei meiner Google-Suche ganz vorne gewesen, daher hier mal die Lösung, ist eigentlich total einfach:

plugin.tx_powermail_pi1{
  dbEntry.tx_whatever{
    _enable = TEXT
    _enable.value = 1
    
    crdate = TEXT
    crdate.value = date:U
    tstamp < .crdate
    

    
    images = COA
    images{
      1 = TEXT
      1.data = TSFE:fe_user|sesData|powermail_6|FILE|0
      1.wrap = |,
      2 < .1
      2.data = TSFE:fe_user|sesData|powermail_6|FILE|1
      3 < .1
      3.data = TSFE:fe_user|sesData|powermail_6|FILE|2
      4 < .1
      4.data = TSFE:fe_user|sesData|powermail_6|FILE|3
      5 < .1
      5.data = TSFE:fe_user|sesData|powermail_6|FILE|4
      6 < .1
      6.data = TSFE:fe_user|sesData|powermail_6|FILE|5
      7 < .1
      7.data = TSFE:fe_user|sesData|powermail_6|FILE|5
      8 < .1
      8.data = TSFE:fe_user|sesData|powermail_6|FILE|6
      9 < .1
      9.data = TSFE:fe_user|sesData|powermail_6|FILE|7
      10 < .1
      10.data = TSFE:fe_user|sesData|powermail_6|FILE|8

    }
  }
}
IvoFrie ·

Hallo Leute,

Auch ich muss diesen Thread nochmals hervorkramen ...

Ich habe auf einem dreisprachigen T3 4.5.2 mit Powermail 1.5.7 und Powermail multiple upload 1.0.3 ein Formularfeld, bei dem man bis zu fünf Dateien hochladen kann.

<div class="tx_powermail_pi1_fieldwrap_html tx_powermail_pi1_fieldwrap_html_file tx_powermail_pi1_fieldwrap_html_25">
		<p>Sie können bis zu 5 Dateien anhängen</p>
		<label for="uid25">Anhänge</label>
		<input id="uid25"  type="file" name="tx_powermail_pi1[uid25]" class="powermail_projekterfassung powermail_multiupload powermail_uid25 style1" />
		<div id="files_list"></div>
		<script>
			<!-- Create an instance of the multiSelector class, pass it the output target and the max number of files -->
			var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 'uid25' , 5, 'Löschen', 0 );
			<!-- Pass in the file element -->
			multi_selector.addElement( document.getElementById( 'uid25' ) );
		</script>
	</div>

Diese Angaben speichere ich mit folgendem Typoscript in meine Datenbank-Tabelle (funktioniert).

table.field = COA
    table.field {
      1 = TEXT
      1.data = TSFE:fe_user|sesData|powermail_188|FILE|0
      1.wrap = |,
      2 < .1
      2.data = TSFE:fe_user|sesData|powermail_188|FILE|1
      3 < .1
      3.data = TSFE:fe_user|sesData|powermail_188|FILE|2
      4 < .1
      4.data = TSFE:fe_user|sesData|powermail_188|FILE|3
      5 < .1
      5.data = TSFE:fe_user|sesData|powermail_188|FILE|4
    }

Wie erwähnt, ist mein Projekt dreisprachig. Sowohl die Seiten als auch das Formular und die Felder sind lokalisiert, bis auf die Dateianhänge werden alle Werte sowohl in Sprache 2 als auch in Sprache 3 in die Datenbank gespeichert. Nur die Anhänge wollen nicht ... #angry#

Hier der Quelltext aus der französischen Version:

<div class="tx_powermail_pi1_fieldwrap_html tx_powermail_pi1_fieldwrap_html_file tx_powermail_pi1_fieldwrap_html_56">
		<p>You can attach up to 5 files.</p>
		<label for="uid56">Pièce jointe</label>
		<input id="uid56"  type="file" name="tx_powermail_pi1[uid56]" class="powermail_projekterfassung powermail_multiupload powermail_uid56 style1" />
		<div id="files_list"></div>
		<script>
			<!-- Create an instance of the multiSelector class, pass it the output target and the max number of files -->
			var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 'uid56' , 5, 'Delete', 0 );
			<!-- Pass in the file element -->
			multi_selector.addElement( document.getElementById( 'uid56' ) );
		</script>
	</div>

welche ich mit folgendem Typoscript in die Datenbank zu speichern versuche:

table.field = COA
    table.field {
      1 = TEXT
      1.data = TSFE:fe_user|sesData|powermail_196|FILE|0
      1.wrap = |,
      2 < .1
      2.data = TSFE:fe_user|sesData|powermail_196|FILE|1
      3 < .1
      3.data = TSFE:fe_user|sesData|powermail_196|FILE|2
      4 < .1
      4.data = TSFE:fe_user|sesData|powermail_196|FILE|3
      5 < .1
      5.data = TSFE:fe_user|sesData|powermail_196|FILE|4
    }

Die IDs der Formulare und Felder stimmen alle überein.

Ich habe bereits verschiedenes erfolglos probiert, zum Beispiel den Upload-Folder für jede Sprache separat zu definieren.

Folgende Möglichkeiten bringen leider auch nichts:

table.field = COA
    table.field {
      10 = TEXT # in Fortsetzung der bereits in Deutsch vergebenen Werte
      10.data = TSFE:fe_user|sesData|powermail_196|FILE|0
      10.wrap = |,
    }

oder

table.field = COA
    table.field {
      1 = TEXT
      1.data = TSFE:fe_user|sesData|powermail_196|uid56|0
      1.wrap = |,
    }

oder

table.field = COA
    table.field {
      1 = TEXT
      1.data = TSFE:fe_user|sesData|powermail_196|FILE|5 # in Fortsetzung der bereits in Deutsch vergebenen Werte
      1.wrap = |,
    }

Komischerweise funktioniert das auch mit der normalen "Dateiübertragung" nicht, wo liegt mein Denkfehler? Hat mir ein Experte einen Tipp?

Viele Grüsse, Ivo