26. Oktober 2011

Ein Blick in TYPO3 4.6

In diesem Jahr scheint der Oktober ein TYPO3-Release-Monat zu sein. Diesen Monat soll die heiß ersehnte neue Version der offiziellen TYPO3 Webseite online gehen. Am 20. Oktober erschien der erste Stable Release von FLOW3 und gestern wurde TYPO3 4.6.0 veröffentlicht.

Im Folgenden möchte ich einen kurzen Überblick über die Änderungen in der neuen TYPO3 Version geben.

TYPO3 4.6 - Codename "TYPO3 4.6 --rebase" - hat neben einigen neuen Features auch das Ziel verfolgt, die Code-Basis zu bereinigen. So wurden zudem viele Code-Teile nachträglich kommentiert womit das Verhältnis von Kommentaren zum Code um 6% erhöht wurde. Außerdem gelang es dem Core Development Team die Code Komplexität deutlich zu verringern (-10% cyclomatic complexity).

Systemanforderungen

Im Rahmen der Anpassungen gibt es ab TYPO3 4.6 ein paar neue Systemanforderungen:

  • PHP 5.3 (dabei wird der safe mode nicht mehr unterstützt, weil diese Funktion in PHP 5.3 deprecated ist)
  • Magic Quotes sind deprecated (diese Funktion wird voraussichtlich ab PHP 5.4 entfernt werden)
  • Das memory_limit sollte auf mindestens 64MB gesetzt werden
  • ImageMagick 6 (die Versionen 4 und 5 sind bereits seit dem LTS Release TYPO3 4.5 deprecated)
  • Der IE6 wird für das Backend nicht mehr unterstützt
    • Im Rahmen von TYPO3 4.5 LTS wird es bis April 2014 eine TYPO3 Version mit IE6-kompatiblem Backend geben.
    • Dies bedeutet natürlich nicht, dass das Frontend von Webseiten sowie Frontend-Extensions nicht mehr für den IE6 optimiert werden können.

XLIFF Support

Eines der interessantesten Features von TYPO3 4.6 ist der startende XLIFF Support. Hierbei handelt es sich um ein standardisiertes Übersetzungs-Format, welches beispielsweise von vielen Tools für Übersetzungs-Büros verwendet wird.
Mit der alten Lokalisierung in TYPO3 war es üblich, zum Beispiel innerhalb einer Extension, eine Sprach-Datei anzulegen, welche sämtliche unterstützte Sprachen enthalten hat. Mit XLIFF wird dies aufgeteilt und jede Sprache erhält eine eigene Datei.

Ein wichtiges Feature welches mit der Umstellung auf XLIFF ermöglicht wird ist zudem die flexible Definition von Sprach-Abhängigkeiten mit Fallback-Lösungen. Verfügt eine Webseite zum Beispiel über verschiedene deutsch-sprachige Bereiche für Österreich, die Schweiz und Deutschland, so kann nun definiert werden, welche Fallback-Listen im Falle eines fehlenden Labels verwendet werden:

$TYPO3_CONF_VARS['SYS']['localization']['locales']['dependencies'] = array(
   'de_CH' => array('de_AU', 'de'),
);

In diesem Fall wird ein fehlendes Label auf der schweizerisch-deutschen Seite zunächst innerhalb der österreichisch-deutschen Übersetzung gesucht, anschließend in der deutschen und erst dann wird auf das Fallback englisch zurück gegriffen.
Die Default-Sprache sowie diese Fallback-Listen sind frei konfigurierbar.

Im Rahmen des startenden XLIFF-Supports wurde zudem der TYPO3 Translation Server gestartet. Über dieses Projekt ist es jedem möglich über seinen TYPO3 User Account an der Übersetzung mit zu arbeiten. Das Projekt basiert wiederum auf Pootle, einer weit verbreiteten Localization Engine.

Form Project

Ein weiteres großes Feature von 4.6 ist das sogenannte Form Project, welches in Form einer neuen System Extension mitgeliefert wird. Bereits seit einiger Zeit wurde an dieser neuen Version des Standard-Inhaltselements für E-Mail-Formulare gearbeitet. Hiermit ist es nun auch Redakteuren einfach möglich mittels dem Form-Wizard flexible E-Mail-Formulare aufzubauen. Einen Hinweis gibt es hierbei allerdings für diejenigen, die das alte Formular-Inhaltselement verwendet haben. Dieses wird ab der Aktivierung der neuen Version deaktiviert und Formulare müssen händisch umgebaut werden. Eine automatisierte Umwandlung gibt es nicht.

Backend Live Search

Die neue TYPO3 Backend Suche hatte seit der letzten TYPO3 Version noch einige Kinderkrankheiten. Diese resultierten aus dem Irrglauben, TYPO3 könne eigenständig ermitteln innerhalb welcher Bereiche gesucht werden soll. Dies wurde nun überarbeitet und Tabellen müssen gezielt als durchsuchbar markiert werden sowie eine Liste der zu durchsuchenden Felder zur Verfügung stellen. Das TCA hat die folgende neue Option erhalten, um die durchsuchbaren Felder zu kennzeichnen:

'searchFields' => 'username,email,realName'

Extbase

Der Property Mapper wurde in FLOW3 komplett neu geschrieben und diese Änderungen wurden nun in Extbase zurück portiert. Er ist gut konfigurierbar und flexibel erweiterbar. Hierbei handelt es sich allerdings auch um einen breaking change, will man das alte Verhalten weiterhin nutzen, kann dies über die folgende TypoScript Konfiguration eingestellt werden:

config.tx_extbase.features.rewrittenPropertyMapper = 0

Die Validation API wurde verändert, wobei es sich allerdings nur dann um einen breaking change handelt, wenn man das ValidatorInterface eigenständig implementiert hat. In diesen Fällen muss der eigene Validator an die neue API angepasst werden.

Dependency Injection ist nun auch für wiederhergestellte Domain Objects verfügbar.

Das Signal / Slot Feature wurde von FLOW3 für Extbase zurück portiert und ermöglicht so eine zukunftssichere Alternative zu Hooks.

Fluid

Fluid Templates werden ab sofort in PHP Dateien kompiliert. Dies führt zu großem Performance-Gewinn, denn der Rendering Prozess wurde um Faktor 2-5 verschnellert und auch der Speicher-Verbrauch konnte verringert werden.

Auch in Fluid gibt es einen breaking change: AbstractViewHelper::$arguments wurden von einem Objekt in ein Array umgewandelt. Wer innerhalb seiner individuellen ViewHelper $this->arguments->hasArgument() verwendet hat muss dies nun durch $this->hasArgument() ersetzen.

Es gibt nun eine Möglichkeit einfach auf alle verfügbaren Variablen zuzugreifen, was zum Beispiel die Verwendung von Variablen in Partials vereinfacht:

<f:render partial="..." arguments="{_all}" />

Der root-Pfad zu den Widgets und Templates kann ab sofort verändert werden. Hierzu dient die folgende TypoScript-Konfiguration:

plugin.tx_extension.view {
    widget.<WidgetViewHelperClassName>.templateRootPath = ...
}

Backend

Die Lokalisierung von TYPO3 wird nun innerhalb typo3temp/Cache/Data/t3lib_l10n gecached. Dies verbessert in erster Linie die Ladegeschwindigkeit von TYPO3 kann allerdings auch seltsames Verhalten zur Folge haben wenn neue Sprach-Labels erstellt wurden. In diesem Fall hilft der folgende Eintrag in der localconf.php:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['lang']['cache']['clear_menu'] = TRUE;

Mit dem xtype:modulepanel wurde ein neuer ExtJS Panel Typ erstellt, welcher die flexible Erstellung eigener ExtJS Module im TYPO3 Look-And-Feel ermöglicht.

TypoScript / Frontend

Es gibt ein paar neue TypoScript-Features:

  • neue stdWrap Eigenschaften
    • .round: Rundung von floats
    • .hash: Hash Inhalte mit md5/sha1/...
    • .capitalize: Den ersten Buchstaben aller Wörter uppercase machen
    • .replacement: Inhalts-Bereich ersetzen
    • .expandList: erweitern einer komma-separierten Liste von Integern
    • listNum = rand: wählt ein zufälliges Element aus der Liste
  • select.where: unterstützt nun stdWrap
  • IMAGE und IMG_RESOURCE unterstützen den stdWrap nun auch auf der Eigenschaft file.params

Diverses

Der alte Extension-Manager gilt ab sofort als veraltet und wurde durch den neuen ExtJS-basierten Extension-Manager ersetzt. Wer die alte Version dennoch nach wie vor nutzen möchte, kann dies explizit konfigurieren, sollte allerdings bedenken, dass dieser nicht mehr unterstützt wird. Es kann also passieren, dass er ohne weitere Information nicht mehr einwandfrei funktioniert oder entfernt wird.

$GLOBALS['TYPO3_CONF_VARS']['EXT']['showOldModules'] = TRUE;

Das neue Caching Framework (eingeführt ab TYPO3 4.3) wurde überarbeitet und optimiert. Ab TYPO3 4.6 wird es vom Core genutzt und ist demnach auch standard-mäßig aktiviert. Dadurch entfällt auch die localconf.php-Konfiguration:

$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = TRUE|FALSE

Ab sofort wird mit dem TYPO3 Core ein JS/CSS Kompressor mitgeliefert, welcher die Nutzung von Extensions für diesen Zweck überflüssig macht und über folgende Konfiguration aktiviert werden kann:

config.compressJs = 1
config.compressCss = 1

Das Feature bringt zudem noch die Möglichkeit mit, Dateien zu verbinden:

config.concatenateJs = 1
config.concatenateCss = 1

Gezielt können einzelne Dateien von der Kompression und/oder Verbindung ausgeschlossen werden, hier ein Beispiel für JavaScript, was für CSS in gleicher Weise möglich ist:

page.includeJSlibs { 
    jquery = code.jquery.com/jquery-1.6.1.min.js
    jquery.external = 1
    jquery.disableCompression = 1
    jquery.excludeFromConcatenation = 1
}

Die beiden Extensions saltedpasswords und rsaauth sind ab sofort automatisch aktiviert und werden genutzt sofern der Server den nötigen Anforderungen entspricht.
Ist rsaauth aktiviert wird zudem die Passwort-Übermittlung beim Speichern der Benutzer-Eigenschaften verschlüsselt.

Außerdem wurden die Veröffentlichungs-Optionen von TYPO3 erweitert. Bislang war es möglich, zum Beispiel für Inhalte, Veröffentlichungsdaten in Form eines Datum anzugeben. Ab TYPO3 4.6 ist eine minuten-genaue Angabe möglich.

Die Datei ENABLE_INSTALL_TOOL musste bislang händisch oder über einen Buttonklick in den Benutzereigenschaften angelegt werden. Ab sofort wird die Datei automatisiert erstellt, sobald ein eingeloggter Benutzer mit Administrator-Rechten das Install Tool aufruft.

Weitere neue Features

  • Neue Scheduler Tasks um alte Daten/Dateien zu entfernen (Table garbage collection, Fileadmin recycler garbage collection)
  • Cookies für Frontend und Backend können nun unabhängig voneinander konfiguriert werden
  • Neue Bibliothek: Internationalized Domain Names (IDN)
  • Einfachere Nutzung verschachtelter Subparts in Marker-Basierten Templates
  • Slider für das TCA

Fazit

Als TYPO3 Agentur werden wir für neu anstehende Projekte auf diese neuste TYPO3 Version setzen. Für Bestands-Kunden empfehlen wir allerdings an TYPO3 4.5 festzuhalten, weil diese Version mit Longterm Support länger unterstützt werden wird als TYPO3 4.6.

Weiterführende Links:
TYPO3 4.6 Release Notes | TYPO3 4.6 Release Notes in TYPO3 Wiki

26. Oktober 2011
Berit Hlubek

Berit Hlubek