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...
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 schriebSpricht 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:
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)
danke julian für dein ausführliches posting 🙂
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)
hihi, nee, das war natürlich nicht original...
das was ich eigentlich vorhatte, klappt also leider nicht...
Was hast Du denn vor? So ganz klar wird's mir aus dem TS nicht (zumal ich mich nicht so mit dem cal auskenne). Eigentlich sollte mit den drei Möglichkeiten alles lösbar sein.
Julian.Hofmann schrieb@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)
Genau das habe ich vor.
Aber mit :
plugin.tx_powermail_pi1.prefill {
uid3.selectedIndexes = 0,1
}
funktioniert es nicht. Angemeldeter Fe_user ist eine Frau, es wir aber in der Selectbox Herr angezeigt. Im HTML-Code stehen Herr und Frau als Selected.
Bin für jede Hilfe dankbar.
Dein TS definiert genau, dass beide Optionen selected sein sollen - also genau das, was als HTML rauskommt. Die Daten des FE-Users beziehst Du bisher noch nicht mit ein.
Für FE-User ist das Geschlecht als 0/1-Wert in der Spalte gender gespeichert. Dieser hat aber nichts mit dem Formularfeld-Index zu tun.
Wenn ich nichts übersehen habe, dann sollte diese Zeile ausreichen:
plugin.tx_powermail_pi1.prefill.uid3.selectedIndexes.data = TSFE:fe_user|user|gender
(vorausgesetzt, Deine Auswahlfolge ist so herum, dass die Werte 1:1 mit der gender-Spalte übereinstimmen. Ansonsten wird etwas aufwändiger...)
Ok mit stdwrap Eigenschaft data liest man das entsprechende PHP-Array aus
plugin.tx_powermail_pi1.prefill.uid3.selectedIndexes.data = TSFE:fe_user|user|salutation
Hier wird es geholt
$selected = t3lib_div::intExplode(',', $this->cObj->stdWrap($this->conf['prefill.']['uid' . $this->uid . '.']['selectedIndexes'], $this->conf['prefill.']['uid' . $this->uid . '.']['selectedIndexes.']));
und in isPrefilled() auf true gesetzt.
Danke jetzt habe ich verstanden. #giggle#
Hallo zusammen,
kann mir Jemand sagen ob ein Prefill auch mit der Länderauswahl möglich ist? Sprich: eine Selectbox mit Daten aus fe_user|user|static_info_country füllen.
Zum besseren Verständnis, hier mein TypoScript:
plugin.tx_powermail_pi1 {
prefill {
uid2087.selectedIndexes.data = TSFE:fe_user|user|static_info_country
}
}
Zusätzlich zu der TypoScript-Variante habe ich es auch mit der eingebauten Powermail-Funktion versucht: "Dieses Feld mit Daten aus fe_user füllen" -> static_info_country
Beides leider vergeblich.
Bei normalen Selectboxen funktioniert der Prefill tadellos, nur bei der Länderauswahl nicht...