Hallo.
Versuche ein powermail-Formular mit bereits gespeicherten Werten eines FE-Users vorzubelegen. Bei "normalen" Felder klappt das auch prima mit
prefill.uid3 = TEXT
prefill.uid3.data = TSFE:fe_user|user|name
Wie aber setze ich Werte bei Checkboxen und Selectboxen via TS?
Viele Grüße
Julian
Darf ich das als "steht jetzt auf der TODO-Liste" interpretieren?
Hätte durchaus aktives Interesse an dem Feature, d.h. würde auch selbst mit Hand anlegen, damit es am besten 2008 noch machbar wird. Um die Extension bzw. deren Logik konsistent zu halten, wäre ich aber für ein paar Vorgaben dankbar, bevor ich rumbasteln würde.
Julian.Hofmann schrieb
Darf ich das als "steht jetzt auf der TODO-Liste" interpretieren?
Hätte durchaus aktives Interesse an dem Feature, d.h. würde auch selbst mit Hand anlegen, damit es am besten 2008 noch machbar wird. Um die Extension bzw. deren Logik konsistent zu halten, wäre ich aber für ein paar Vorgaben dankbar, bevor ich rumbasteln würde.
Unterstützung ist immer Willkommen.
Derzeit werden die Felder in pi1/class.tx_powermail_html.php in Zeile 891 gefüllt. Das geht vermutlich so nur für die erste Ebene.
Gut, bin drüber. Denke morgen bzw. bis Ende der Woche meld ich mich mit Ergebnissen.
Eine Frage in die Runde:
Wie ist es logisch/sinnvoll Vorbelegungen für eine (multiple) Boxen anzugeben?
Eine kommaseparierte Liste der Indizes?
prefill.uid1_1.selectedItems = 1,4,5
Eine kommaseparierte Liste der Values?
prefill.uid1_1.selectedValues = Wert1,Wert4,Wert5
Die Options direkt ansprechen?
prefill.uid1_1 = TEXT
prefill.uid1_1.value = Wert1
prefill.uid1_4 = TEXT
prefill.uid1_4.value = Wert4
Gute Frage,
ich schwanke zwischen Variante 1 und 3
Warum?
1) Geht einfach und schnell und außerdem geht es nur um einen gesetzten Haken und nicht um Werte
3) Weil der prefill für normale Textfelder genau so funktioniert (auch wenn ein stdWrap hier kein Sinn macht)
PS: Es muss überall prefill.uid1 und nicht prefill.uid1_1 heißen, schätze ich
Ansich stimme ich Dir zu. Beim umsetzen bzw. testen in meinem Anwendungsfall kam ich dann aber auf folgende Aspekte:
zu 1)
Nicht immer ist fix, an welcher Stelle welcher Wert steht. Wird nach der Definition der prefill-Werte das Formular nochmal angepasst, und verschieben sich dadurch die Indizes, hat man falsche Vorauswahl. Daher würde ich eher zu 2) bzw. 1) und 2) tendieren.
zu 3)
Wenn die Selektion an Bedingungen geknüpft ist, dann macht IMHO der stdWrap schon Sinn. Wie soll sonst eine Abhängigkeit gebastelt werden?
Beispiel: 3 Checkboxen, in der Datenbank ist Wert 3 (=2^0+2^1) gespeichert. Um daraus jetzt die gecheckten Boxen zu rekonstruieren muss man ja einen Größenvergleich durchführen.
Hmm, hast mich überzeugt - ich plädiere für 3
Ich würde dich dem Powermail Projekt auf forge.typo3.org hinzufügen, wenn du dich schon engagierst. Leider ist das typo3.org Login bekannterweise derzeit out of order...
Wobei sich dann bei 3) immernoch die Frage stellt, ob der value dann ein true/false sein sollte oder der String, der auch als value im options-Tag steht. (Also ansich genau der Unterschied zwischen 1 und 2)
Spricht eigentlich etwas gegen die Umsetzung aller 3/4 Varianten? Oder wird das zu verwirrend?
Julian.Hofmann schrieb
Spricht eigentlich etwas gegen die Umsetzung aller 3/4 Varianten? Oder wird das zu verwirrend?
Das finde ich zu heftig
ich würde es easy umsetzen:
if ($variable) ' checked="checked"';
Somit wird auf Inhalt der Varible geschaut und diese könnte man mit stdWrap setzen (auch userFunc oder ähnliches nehmen)
Gibts zu dem Thema mittlerweile was Neues? Könnte das grad für ein Projekt brauchen.
Gruß
Peter
Ja gibt was. Siehe
#882243
wurgli, nein, das ist nichts neues zu diesem Thema. Denn hier geht/ging es um die Vorbelegung via TS. In dem von Dir verlinkten Thread wird die Vorbelegung via BE behandelt.
Einen Anfang (für select-Box) der Lösung für den TS-Weg gibt's aber inzwischen auch: http://forge.typo3.org/issues/show/3709
Viele Grüße
Julian
Hallo, ich hatte das gleiche Problem und hab es über einen Hook gelöst:
function PM_FieldWrapMarkerHookInner($uid, $xml, $type, $title, &$markers, $piVarsFromSession, $form){
if($form->fe_field AND $type=='check'){
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($form->fe_field, 'fe_users', 'uid='.$GLOBALS['TSFE']->fe_user->user['uid']);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
$value = strrev(decbin($row[$form->fe_field]));
$nr = explode('_', $markers['###LABEL_NAME###']);
$nr = end($nr);
if($value[$nr]==1)$markers['###CHECKED###'] = 'checked="checked" ';
else $markers['###CHECKED###'] = '';
}
}
Die fe_users ist durch Spalten vom Typ checkbox erweitert.
Vielleicht kann man das in die nächste Version mit einbauen... kann vielleicht noch optimiert werden, bei mir funktioniert es jedenfalls so, wie gewollt.
möchte mich da auch noch dranhängen.
da in der forge zu dem thema noch nichts zu finden war, habe ich mal eben ein fass aufgemacht:
http://forge.typo3.org/issues/show/4827
Das wurde mit der aktuellen powermail bereits implementiert:
http://forge.typo3.org/issues/show/3709
das ist ja klasse!
nur muss ich dann die ursache woanders suchen 😢
mir ist es bisher weder gelungen, eine selectbox noch checkboxen zu befüllen:
plugin.tx_powermail_pi1.prefill {
uid123_0 = RECORDS
uid123_0 {
wrap = |
source.data = GPvar:tx_cal_controller|uid
tables = tx_cal_event
conf.tx_cal_event = TEXT
conf.tx_cal_event.field = nameDesFeldes
}
uid123_1 = RECORDS
uid123_1 {
[...]
}
}
Ich verstehe es auch nicht. #angry#
Ich will eine Selectbox für die Anrede mit fe_user Daten befüllen.
Also wenn 0 dann Frau und bei 1 Herr selected="selected".
Ist das implementiert? Aus http://forge.typo3.org/issues/show/3709 werde ich nicht richtig schlau. Dort steht folgendes:
prefill.uid123.selectedIndexes TEXT /w stdWrap Fields values (CSV)
prefill.uid123.selectedValues TEXT /w stdWrap Fields labels (CSV)
prefill.uid123_12 boolean Preselects option with index 12
Habe es mit
prefill.uid123.selectedIndexes= 0,1
prefill.uid123.selectedValues= Frau,Herr
prefill.uid123_0 = TEXT
prefill.uid123_0 = Frau
prefill.uid123_1 = TEXT
prefill.uid123_1 = Herr
in allen Möglichen Kombinationen versucht. Ein einfaches Beispiel würde mir und Anderen sicher helfen.
Ich werde mir die Funktion html_select() wohl genauer anschauen, falls ich Zeit finde.
Ich gebe zu, die Implementierung ist nicht auf Anhieb verständlich, dafür sollte sie aber größtmögliche Flexibilität bei der Nutzung bieten.
@malisch01 & @typoDAU:
Falls ihr euer echtes TS gepostet habt, dann tauscht bitte noch in "uid123" die 123 gegen die Feld-UID, die powermail für euer Feld vergeben hat (zu sehen z.B. via HTML-Quelltext)
@malisch01:
Die drei Möglichkeiten haben jeweils ihre Daseinsberechtigung. Denn je nach Anwendungsfall macht es Sinn
- nach Feldwerten zu selektieren (z.B. weil diese aus einer DB ausgelesen wurden)
- nach Indizes zu selektieren (z.B. weil mittels TS/stdWrap die Selektierung erst ermittelt wird
- einen Wert direkt anzusprechen (z.B. um auch hier alle Möglichkeiten des stdWrap zu haben)
Es reicht, wenn ein Weg gewählt ist. Welcher Option die höchste Priorität hat, weiß ich gerade nicht mehr.
@typoDAU:
Die Selektierung über die einzelnen Punkte ist nur als Boolean möglich. D.h. es wird nur geprüft, ob der TS-Wert gesetzt ist (PHP-Funktion empty() !== false). Die Option hat keine stdWrap-Eigenschaften, d.h. Dein RECORDS-Objekt wird nicht ausgewertet, sondern es wird als Wert der String "RECORDS" gesetzt (dadurch ist die Option nicht leer und es sollten alle Deine Auswahlmöglichkeiten gesetzt sein)