Zum Inhalt springen

sr_feuser_register > neues Feld > TCA_INPUT Rendering

Erstellt am 26. November 2009 · 1 Antwort · letzte Antwort am 27. November 2009

Tags: Frage

Unbekannter Benutzer ·

Hallo,

ich möchte zu sr_feuser_register ein neuen Feld hinzufügen wobei mehere Optionen per Checkbox ausgewählt werden können.

Hier mein Konfiguration für das neue Feld (zur Übersicht sind alle Codeschnipsel etwas gekürzt und vereinfacht dargestellt):

$tempColumns = Array (
   "tx_myext_myfield" => Array (		
      "exclude" => 0,		
      "label" => "Das Label",		
      "config" => Array (
         "type" => "check",
	 "cols" => 2,
	 "items" => Array (
             Array("Option 1", ""),
	     Array("Option 2", ""),
	     Array("Option 3", ""),
	     Array("Option 4", ""),
	     Array("Option 5", ""),	
         ),
      )
   )
);

Die Einbindung in die CREATE-View von sr_feuser_register klappt auch wunderbar.

Es scheitert allerdings an der Ausgabe in der CREATE_PREVIEW Ansicht.

<!-- ###SUB_INCLUDED_FIELD_tx_myext_myfield### -->
<dt>###LABEL_TX_MYEXT_MYFIELD###:</dt>
<dd>###TCA_INPUT_tx_myext_myfield###</dd>
<!-- ###SUB_INCLUDED_FIELD_tx_myext_myfield### -->

Nehmen wir an ich wähle von den fünf Checkboxen Nummer eins, drei und fünf aus.

Dann sieht so das HTML aus, das den Marker ###TCA_INPUT_tx_myext_myfield### bei CREATE_PREVIEW ersetzt:

<ul>
   <li>Option 1</li>
   <li></li>
   <li>Option 2</li>
   <li></li>
   <li>Option 5</li>
</ul>

Es wird also für jede Checkbox ein Listenelemente angelegt und bei nicht angewählter Checkbox ist der Inhalt des LI-Elements leer. Das wäre ja auch kein Problem wenn es denn Internet Explorer 6 und 7 nicht gäbe.

IE6 und IE7 stellt das dann nämlich etwa so da:
- Option 1
-
- Option 3
-
- Option 5

Die leeren LI-Elemente sind also quasi Leere Zeilen. Alle anderen getestetn Browser übergehen die leeren LI-Elemente anscheinend und stellen die drei ausgewählten Punkte direkt untereinander dar.

Kann ich verhindern, dass die leeren LI-Elemente überhaupt ausgegeben werden? Kennt jemand einen CSS-Kniff um die Darstellung zu korrigieren?

Bei der Direct Mail Kategorie-Auswahl klappt das doch auch. Ich habe schon versucht meine TCA-Konfiguration daran anzupassen (sprich type=>select und renderMode=>checkbox). Dann habe ich aber quais das gleiche Problem.

Danke und viele Grüße
Alex

Unbekannter Benutzer · · Beste Antwort

Hallo,

so ich habe eine (dreckige) Lösung gefunden. Musste dazu in den Quellen von sr_feuser_register rumfuschen.

Datei: typo3conf/ext/sr_feuser_register/lib/class.tx_srfeuserregister_tca.php
Zeile: ca. 265 (bei Version 2.5.9)

Hier ein Auszug:

$count = 0;
foreach ($colConfig['items'] as $key => $value) {
   $count++;						
   $label = htmlspecialchars($this->langObj->getLLFromString($colConfig['items'][$key][0]),ENT_QUOTES,$charset);
   
   $checked = ($mrow[$colName] & (1 << $key));
   
   //neue  condition $checked > 0
   if ($checked > 0){
      $label = ($checked ? $label : '');
      $colContent .= ((!$bNotLast || $count < count($colConfig['items'])) ?  $this->cObj->stdWrap($label,$stdWrap) : $label);
   }
   $this->cObj->alternativeData = $colConfig['items'];
   $colContent = $this->cObj->stdWrap($colContent,$listWrap);
}

Ich überprüfe, ob $checked > 0, die jeweile Checkbox als angehakt ist. Sollte das nicht der Fall sein wird einfach nichts ausgegeben.

Viele Grüße