Label für Elemente in der Listenansicht anpassen

In TYPO3 kann man in der TCA Konfiguration der eigenen Extension festlegen, welches Feld im Standardfall als Label für die Elemente benutzt wird. Es ist eigentlich ganz einfach: Man erstellt eine Datei mit der Klasse, die das Label erzeugt:

require_once(PATH_t3lib.'class.t3lib_befunc.php');
 
class user_TimeslotLabelClass {
 
	function getUserLabel($params, &$pObj) {
		$course = $params['row']['course'];
		$mylabel = $params['row']['time_start'];
 
		if ($course) {
			$item = t3lib_BEfunc::getRecord('tx_nptimetable_course', $course);
			$mylabel.= ', '.$item['title'];
		}
		$params['title'] = $mylabel;
	}
}

Dann muss man in der TCA-Datei die Datei mit der Klasse inkludieren und aufrufen:

$TCA['tx_nptimetable_timeslot'] = array (
	'ctrl' => array (
		'title'     => 'LLL:EXT:np_timetable/Resources/Private/Language/locallang_db.xml:tx_nptimetable_timeslot',		
		'label'     => 'time_start',
		'label_alt'	=> 'course,time_end',
		'label_userFunc' => "user_TimeslotLabelClass->getUserLabel",
...

Die Anleitung gibt es auf der Seite von Stefan Meissner.

Damit es wirklich funktioniert, muss man allerdings ein paar Kleinigkeiten beachten: Die Felder, die man der Funktion verwenden möchte, müssen zur Verfügung stehen, und das passiert erst dann, wenn sie als label oder label_alt angegeben sind. In dem Code-Schnipsel von mir habe ich das Feld course als label_alt angegeben, und das obwohl das Label danach mit einer Funktion gesetzt wird. Ansonsten steht es in $params nicht zur Verfügung.

Geschrieben in TYPO3 | Kommentare deaktiviert für Label für Elemente in der Listenansicht anpassen

Bug in tt_address

Schon wieder. Es ist nur eine kleine Klammer, aber mit großer Wirkung. Zumindest wurde bei mir nicht korrekt sortiert, wenn ich eine Eigenschaft ausgewählt habe (was anderes als name). Der Grund dafür ist die viel zu sehr verschachtelte Abfrage, um die Sortier-Reihenfolge festzulegen.
Was nicht funktioniert (class.tx_address_pi1.php Zeilen 140ff):

$this->conf['sortByColumn'] = $this->ffData['sortBy'] ?
	$this->ffData['sortBy'] :
		$this->conf['sortByColumn'] ?
			$this->conf['sortByColumn'] :
			'name';

Was aber funktioniert:

$this->conf['sortByColumn'] = $this->ffData['sortBy'] ?
	$this->ffData['sortBy'] :
		($this->conf['sortByColumn'] ?
			$this->conf['sortByColumn'] :
			'name');

Die fehlende Klammer sorgt dafür, dass die Sortierung immer auf „name“ gesetzt wird, egal was ausgewählt wurde.

Formular in TYPO3 nicht in deutsch

In der neuen TYPO3 Version werden die Formulare mit einem neuen Formularwizard erstellt. Im Vergleich zum alten Wizard kann man Felder mit Drag-and-Drop hinzufügen und diese mit Validierungsregeln überprüfen lassen, Felder in Fieldsets gruppieren und das Formular nicht nur per Mail verschicken, sondern mit eigenen Post-Prozessoren die Daten in die Datenbank speichern.
Im Frontend gefallen mir die neuen Formulare viel besser als die vom alten Wizard. Zum einen sind wir alle diese leidige Feld-Validierung mit JavaScript los, die mit einem alert etwas penetrant darauf hingewiesen hat, dass Felder nicht ausgefüllt sind. Zum zweiten kann man die Felder endlich gruppieren und dadurch das Formular evtl. individueller gestalten als vorher.
Leider ist der Wizard so neu, dass es dafür noch keine deutsche Übersetzung gibt. Zumindest habe ich keine gefunden. Und es gab noch keine Forumsbeiträge zu dem Thema. Ich hatte bei schlauen Leute nachgefragt, ob ich denn etwas übersehen hätte, aber sie hatten mir auch nur geraten, es so zu machen, wie ich es schon vorhatte: Die Übersetzung selbst im typo3conf/l10n Ordner einpflegen.
Die Übersetzungen mancher (vor allem neueren) Extensions befinden sich in Dateien, die im Order typo3conf/l10n gespeichert sind. Für jede Sprache und für jede Extension, zu der eine Übersetzung vorliegt, wird in diesem Ordner die folgende Struktur angelegt:
typo3conf/l10n/[sprache]/[extension]. So dass die Übersetzung für die Formularextension (alias der neue Form Wizard) in typo3conf/ext/de/form liegen müsste, dieser Ordner existiert aber nicht.
Und so übersetzt man selbst in freudiger Erwartung die Extension form wie folgt: Eine existierende Sprache für die Form-Extension aus dem TER laden (z.B. französisch). Dann den Ordner form aus typo3conf/ext/l10n/fr/ kopieren und in typo3ext/l10n/de einfügen. Im Ordner form navigiert man zu Resources/Private/Language und benennt die Dateien dort um, so dass sie mit de. anstatt fr. beginnen. Zum Testen kann man den Form-Wizard aufrufen und feststellen, dass alles auf französisch ist. Und dann kann man die Texte übersetzen. Die XML-Dateien sind die alte Art Extensions zu übersetzen, die XLF-Dateien die neue, die anscheinend bevorzugt wird. Daher die XML-Dateien ignorieren und nur die Labels in den XLF-Dateien anpassen.

<trans-unit id="title" xml:space="preserve" approved="yes">
    <source>Form Wizard</source>
<target state="translated">HIER DIE DEUTSCHE ÜBERSETZUNG REIN</target></trans-unit>

Ich bin nicht wirklich zufrieden mit dieser Übersetzungsmöglichkeit. Ein Update und die ganzen eingepflegten Texte sind hin, sie werden dann mit den Übersetzungen aus dem Repository überschrieben. Vielleicht gibt es ja eine Möglichkeit, die Texte per TypoScript zu setzen mit _LOCAL_LANG? Werde das mal weiter untersuchen.

UPDATE: Es gibt eine Möglichkeit, zumindest den Text, der nach dem Absenden angezeigt wird, per TypoScript zu setzen.

postProcessor {
	1 = mail
	1 {
		recipientEmail = receiver@domain.coom
		senderEmail = sender@domain.com
		subject = Contact Form
		messages.success = Das ist ein Text, der über TypoScript gesetzt wird
	}
}

Step Choreo

Block 1 (bilateral)
9 – Squat, Kick L auf 4, halber Turn Reverse auf Nordseite
7 – Box over R zurück zu Süd, Stomp R
Aufbau:

  • Repeater + 2 Basic
  • 2 Basic = 1 March + Mambo R + Stomp R
  • Repeater = Stomp + Kick auf 4 + March auf L
  • Stomp, dann Straddle + Kick auf 4 + halber Turn Reverse auf Südseite etc.

Block 2 (unilateral)
8 – Single Stomp over kreuzen, Double Stomp Tango auf dem Boden Südeseite
8 – Kneelift over zurück kreuzen, Mambo Chacha am Boden

Block 3 (bilateral)
10 – L-Step Kneelift, Tap R, 2 March Drehung zu 180° Frontwechsel, Switch
6 – Sixpoint, mit dem ersten Stomp zurück nach Süd kreuzen
Aufbau:

  • Repeater + 2 Basic
  • 2 Basic = 2 March + Sixpoint
  • Repeater = L-Step mit 3 Knee zur Seite
  • mittlerer Knee wird zu Tap
  • statt letzem Knee und 2 March = 2 March, Switch
  • zum Schluss den Frontwechsel

Block 4 (bilateral)
10 – Mambo seit, Box längs über Step, andere Seite Schritt nach außen
6 – Double Knee
Aufbau:

  • 2 Basic + Repeater
  • Repeater = 2 March + Double Knee
  • 2 Basic = Mambo + Basic
  • Mambo zur Seite, Basic als Box over mit Ausfallschritt nach außen

Block 5 (bilateral)
8 – 2 March rauf, Switch, Turn zur Nordseite ab, dabei Knie hoch
8 – Flieger over zurück, Mambo
Aufbau:

  • 2 Basic + Repeater
  • 2 Basic = 2 March rauf, Switch, March am Platz
  • Repeater = Flieger + Mambo

Geschrieben in choreos | Kommentare deaktiviert für Step Choreo

TemplaVoila Backend Layout

Um im TemplataVoila für definierte Content Bereiche ein Layout in Backend zu definieren, gibt es zwei Möglichkeit. Die erste ist, das Layout im XML im DataStructure-Datensatz zu hinterlegen. Die zweite ist eine separate HTML-Datei, die die Layout-Information fürs Backend enthält. Variante eins ist dann sinnvoll, wenn jedes Data Structure nur einmal verwendet wird, außerdem spart man sich Dateien. Variante zwei ist dann sinnvoll, wenn die gleiche Data Structure mit unterschiedlichen Template Objects verwendet werden soll. In beiden Fällen muss man beachten, dass sich nur Inhaltscontainer layouten lassen (was schade ist).
Layout innerhalb der Data Structure:

<meta type="array">
	<langDisable>1</langDisable>
	<beLayout><![CDATA[
		<table border="0" cellpadding="2" cellspacing="2" width="100%">
			<tr>
				<td valign="top" width="65%">###field_column1###</td>
				<td valign="top" width="35%">###field_column2###</td>
			</tr>
		</table>
	]]></beLayout>
</meta>

Im Tag meta wird ein Tag beLayout definiert (Schreibweise beachten) und darin mit old school HTML (also Tabellen) das Layout im Backend definiert.
Layout innerhalb einer separaten Datei:

<table border="0" cellpadding="2" cellspacing="2" width="100%">
	<tr>
		<td valign="top" width="64%">###field_column1###</td>
		<td valign="top" width="34%">###field_column2###</td>
	</tr>
</table>

Es reicht aus, wenn die Datei nur das Layout enthält – keine zusätzlichen Tags. Dann speichert man es in eine HTML-Datei und wählt diese Datei im Feld BE Layout Template File im Template Object aus.

Tags:

Geschrieben in TYPO3 | Kommentare deaktiviert für TemplaVoila Backend Layout

Image Load Event in IE

In einer kleinen Animation mit jQuery sollen bestimmte Aktionen ausgeführt werden, wenn Bilder geladen sind. Dazu habe ich ein Image Load Event verwendet:

$image1 = $('<img />').attr('src', circle1Img).attr('width', 250).attr('height', 250).
load( function() {
	$('#animation .circle-1 .image').html('');
	$('#animation .circle-1 .image').append($(this));
});

Das hat auch wunderbar funktioniert, außer im IE8 (vermutlich auch IE7), wobei sich der IE8 im Legacy Mode korrekt verhält. Wie meine Recherche ergab, wird das Load Event vorzeitig gefeuert, weil das Bild aus dem Browser-Cache geladen wird. Das ist aber nur im IE so (wen wundest es eigentlich noch). Ein Lösung fand ich im Blog von David Walsh. Damit es auch im IE funktioniert, muss das src-Attribut erst gesetzt werden, wenn das Load Event definiert ist:

$image1 = $('<img />').attr('src', circle1Img).attr('width', 250).attr('height', 250).
load( function() {
	$('#animation .circle-1 .image').html('');
	$('#animation .circle-1 .image').append($(this));
});
$image1.attr('src', circle1Static);

Das Problem tritt natürlich nicht auf, wenn man die Bilder nicht aus dem Cache lädt:

var circle1Img = 'fileadmin/templates/img/animcircle_01.gif?' + Math.floor(Math.random()*10000);

Geschrieben in javascript | Kommentare deaktiviert für Image Load Event in IE

Überschriften im RTE umbenennen

Die Überschriften in TYPO3 umzubenennen, so dass die Bezeichnungen für den Redakteur sprechender sind, ist recht einfach. Dazu braucht man folgenden Schnipsel im User oder Page-TS Config:

TCEFORM.tt_content.header_layout {
	altLabels.1 = H1: groß und blau
	altLabels.2 = H2: groß und schwarz
	altLabels.3 = H3: mittel und blau
	altLabels.4 = H4: mittel und grau
}

Natürlich wäre es schön, wenn die Überschriften im RTE auch die entsprechenden Bezeichnungen hätten, dazu einfach folgendes in die RTE Konfiguration rein und schon klappts (allerdings seit TYPO3 4.3).

RTE.default {
...
	buttons.formatblock.items {
		h1.label = H1: groß und blau
		h2.label = H2: groß und schwarz
		h3.label = H3: mittel und blau
		h4.label = H4: mittel und grau
	}
...

Tags: ,

Geschrieben in TYPO3 | Kommentare deaktiviert für Überschriften im RTE umbenennen

TYPO3 4.6 und tt_news

Wenn man eine ältere Version von tt_news installiert hat (z.B. 3.0.1) und dann auf TYPO3 Version 4.6. aktualisiert, dann werden keine News mehr angezeigt, es gibt keine Fehlermeldung, an der Stelle erscheint einfach keine Ausgabe. Zunächst habe ich selbst herausgefunden, dass das Plugin nicht mehr registriert wird in tt_content.list.20.9. Dann habe ich einen Forenthread gefunden zu dem Thema im typo3forum. Es hat geholfen, die neueste tt_news Version zu installieren.

Geschrieben in TYPO3 | Kommentare deaktiviert für TYPO3 4.6 und tt_news

Step Choreo Fortgeschritten

Aufbau nach SPLIT.

Block 1 (bilateral)
Mambo R seit, Leg Curl R, Box Step, Stomp R, Turn Reverse L
Aufbau: 2 Basic + Repeater -> Mambo + Repeater + Basic -> Repeater zu Knee mit zwei Stomp -> ein Stomp nach hinter, einer nach vorne -> Knee zu Leg Curl-> Mambo zur Seite -> nach dem Leg Curl auf dem Step absetzen und Box Step

Block 2 (unilateral)
Chacha Box over, Double Stomp Tango, Single Stomp zurück kreuzen, Kneelift
Aufbau: 2 Repeater

Block 3 (bilateral)
V-Step Ta-Da, Knie eindrehen, nach rechts ab, Squat, Squat, Knee
Aufbau: 2 Basic + Repeater -> 2 March mitte rauf, nach aussen öffnen, nach hinten ab -> zu Seite abgehen -> nach außen springen und Knie eindrehen -> Repeater wird zu 2 M rauf, Stomp down, Kneelift

Block 4 (bilateral)
Push, Switch, Double Stomp zur Seite, Double Stomp Tango auf dem Step, Basic
Aufbau: Repeater + 2 Basic -> statt Repeater Push, Switch, March -> dann Push, Switch mit Double Stomp -> dann weiteren Double Stomp dran zur Seite

Block 5 (bilateral)
Kick-Ball-Change over, Double Knee, Basic over
Aufbau: 2 Basic, Repeater -> Sixpoint + Double Knee + Basic -> statt Sixpoint Kick-Ball-Change -> dann Kick-Ball-Change over, mit Basic zurück

Block 6 ist bilateral, 16 counts, war einfach.

Geschrieben in choreos | Kommentare deaktiviert für Step Choreo Fortgeschritten

Installation TYPO3 4.6 auf Localhost

Bisher hatte ich wenig Probleme TYPO3 auf Localhost schnell zu installieren. Gerade die neue Version 4.5.6 runtergeladen, ausgepackt und Fehlermeldung im Installtool – Modul openssl in PHP fehlt. Ich habe kurz in Google geschaut, aber keine genaue Fehlerbeschreibung gefunden.
Im Verzeichnis xampp/php/ liegen mehrere Konfigurationsdateien, in der php.ini-development findet sich der auskommentierte Verweis auf das fehlende Modul. In der php.ini hingegen nicht, das hat mich am Anfang ein bisschen verwirrt. Daher in der php.ini-development nach openssl suchen, die Zeile kopieren. In der php.ini nach der Windows-Extension-Liste suchen und dort diese Zeile reinkopieren und Kommentar entfernen (Kommentar ist ; am Anfang der Zeile)

;extension=php_openssl.dll

Geschrieben in TYPO3 | Kommentare deaktiviert für Installation TYPO3 4.6 auf Localhost