Keynote: Von Scrum und Tütensuppen - Warum Scrummaster die besseren Köche sin...
TYPO3 CMS 7.0 - Die Neuerungen - pluswerk
1. TYPO3 CMS 7.0 - What’s New
Übersicht der neuen Funktionen, Änderungen
und Verbesserungen
Patrick Lobacher (GF +Pluswerk GmbH)
http://www.plus-werk.com
02/December/2014
Creative Commons BY-NC-SA 3.0
3. Einführung
TYPO3 CMS 7.0: Die Fakten
Veröffentlichungsdatum: 2. Dezember 2014
Entwicklungs- und Veröffentlichungszeitplan:
TYPO3 CMS 7.0 - What’s New
5. Einführung
TYPO3 CMS 7.0: Die Fakten
Systemvoraussetzungen
PHP v5.5.x - v5.6.x
memory_limit >= 128M
max_execution_time >= 240s
Beim Selbstkompilieren darauf achten, dass die Option –disable-ipv6
nicht verwendet wird
MySQL v5.5.x - v5.6.x (no strict mode)
Disc Space
200 MB Disk Space
Backend
zugänglich für IE > 9 und normale Browser
TYPO3 CMS 7.0 - What’s New
6. Einführung
TYPO3 CMS 7.0: Installation
Ofzieller Installationspfad für Linux/Mac OS X(Document Root ist z.B.
/var/www/site/htdocs:
$ cd /var/www/site
$ wget get.typo3.org/7.0
$ tar xzf typo3_src-7.0.x.tar.gz
$ cd htdocs
$ ln -s ../typo3_src-7.0.x typo3_src
$ ln -s typo3_src/index.php index.php
$ ln -s typo3_src/typo3 typo3
Benutzer von Windows Vista und 7 verwenden mlink, unter Windows
XP/2000 junction um die symbolischen Links zu erzeugen
TYPO3 CMS 7.0 - What’s New
7. Einführung
TYPO3 CMS 7.0: Upgrade
Ein direktes Upgrade ist nur von TYPO3 CMS 6.2 LTS möglich
Benutzer einer niedrigeren Version als TYPO3 CMS 6.2 LTS, sollten
zunächst auf TYPO3 CMS 6.2 LTS upgraden und von dort zur
gewünschten Version (TYPO3 CMS 7.x)
TYPO3 CMS 7.0 - What’s New
9. BackendUI
Allgemeines
Das Backend Userinterface wurde komplett überarbeitet
Als Basis wurde hierfür Twitter Bootstrap (3.2.x) verwendet
Sämtliche Icons wurden erneuert und graphisch im Tile Style
überarbeitet
Für Icons wird Font Awesome verwendet (4.2.x)
Die Funktionenleiste links wurde hierzu ebenfalls graphisch angepasst
Die Icons wurden im Flat-Design, monochrom, farbig und mit
abgerundeten Ecken entworfen
TYPO3 CMS 7.0 - What’s New
17. BackendUI
Suche für Seite und Liste
Oberhalb der Ansicht Liste und Seite kann per Klick auf die Lupe
eine Suche eingeblendet werden (diese befand sich früher statisch am
Ende der Seite):
TYPO3 CMS 7.0 - What’s New
18. BackendUI
Badge Anzeige für offene Dokumente
Wenn man die Extension Open Documents installiert hat, wird die
Anzahl der offenen Dokumente über die Bootstrap badge Funktion
angezeigt
TYPO3 CMS 7.0 - What’s New
19. BackendUI
Flash-Messages
Die FlashMessage-Boxen im Backend wurden überarbeitet
Dafür wurde der Kontrast von Text und Box erhöht und die Links besser
hervorgehoben
TYPO3 CMS 7.0 - What’s New
20. BackendUI
Media-Player in Info-Fenster
Sobald man die Informationen über eine Datei aufruft (i-Symbol, z.B. in
Dateiliste) werden die Meta-Daten hierzu angezeigt
Ab sofort wird bei HTML5 Audio- und Video-Dateien auch ein
Videoplayer eingeblendet, über den die Datei sofort angehört bzw.
angesehen werden kann
TYPO3 CMS 7.0 - What’s New
22. TScong TypoScript
TScong für Linkvalidator inkludieren
Die TScong Konguration wird entweder aus dem aktiven TScong des
Backends gelesen wenn der Linkvalidator verwendet wird oder auf der
Konguration, die über den Scheduler-Task mitgegeben wird
Das folgende TScong kann vom Linkchecker ausgelesen werden
mod.linkvalidator.mychecker.myvar = 1
Dort steht das TScong als $this-tsConfig zur Verfügung
TYPO3 CMS 7.0 - What’s New
23. TScong TypoScript
Links zu deaktivierten Datensätzen im Linkhandler melden
Bisher hat der Linkhandler lediglich gewarnt, wenn es Links zu
gelöschten odern nicht existierenden Datensätzen gab.
Über die folgende TScong Einstellung kann nun auch eine Warnung
eingeschaltet werden, wenn der Link auf einen deaktivierten Datensatz
zeigt
Einstellung im TScong:
mod.linkvalidator.linkhandler.reportHiddenRecords = 1
TYPO3 CMS 7.0 - What’s New
24. TScong TypoScript
Abhängigkeiten von Klassen im RTE
Um das Handling mit komplexen CSS Frameworks wie Twitter Bootstrap
zu handhaben, muss es möglich sein, mehrere Klassen an ein Element
zu vergeben
Mit diesem neuen Feature muss der Autor nur noch einen Style
auswählen um dies zu erreichen und nicht mehrere
RTE.classes.[ *classname* ] {
.requires = liste von klassennamen (die von der Klasse benoetigt
werden)
TYPO3 CMS 7.0 - What’s New
25. TScong TypoScript
Nicht-selektierbare Klassen im RTE
Man kann nun Klasses als nicht-selektierbar im Style-Selektor des
RTE kongurieren
// Ein Wert von 1 laesst die Klasse selektieren, bei 0 ist sie nicht-selektierbar
RTE.classes.[ *classname* ] {
.selectable = 1
}
TYPO3 CMS 7.0 - What’s New
26. TScong TypoScript
Mehrere CSS-Dateien im RTE
Man kann nun mehrere CSS-Dateien in den RTE laden
RTE.default.contentCSS {
file1 = fileadmin/myStylesheet1.css
file2 = fileadmin/myStylesheet2.css
}
Gibt man kein CSS an, so wird das Default-CSS unter
typo3/sysext/rtehtmlarea/res/contentcss/default.css
geladen
TYPO3 CMS 7.0 - What’s New
27. TScong TypoScript
Exception während Rendering erzeugen - Teil 1
Sobald Fehler im Rendering von einzelnen Content Objekten (z.B.
mittels USER) auftreten, wird eine Fehlermeldung erzeugt, die die
gesamte Ausgabe zerstört
Daher wurde ein Exception-Handling eingeführt, welches eine
Fehlermeldung in die Ausgabe an der Stelle integriert, in welcher das
Rendering stattgefunden hat
TYPO3 CMS 7.0 - What’s New
28. TScong TypoScript
Exception während Rendering erzeugen - Teil 2
# Default exception handler (aktiviert im Production Kontext)
config.contentObjectExceptionHandler = 1
# Angabe einer Klasse fuer einen individuellen Exception Handler
config.contentObjectExceptionHandler = TYPO3CMSFrontendContentObjectException
ProductionExceptionHandler
# Anpassen der Fehlermeldung - Einfuegen eines Zufall-Codes
config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s
# Konfiguration von Exception Codes, die nicht behandelt werden
tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813
# Deaktierung des Exception Handling fuer ein individuelles Plugin/Content Objects
tt_content.login.20.exceptionHandler = 0
# ignoreCodes und errorMessage koennen global konfiguriert werden...
config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s
config.contentObjectExceptionHandler.ignoreCodes.10 = 1414512813
# ... oder lokal fuer individuelle Content Objekte
tt_content.login.20.exceptionHandler.errorMessage = Oops an error occurred. Code: %s
tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813
TYPO3 CMS 7.0 - What’s New
30. Änderungen im System
Integration von jQuery UI 1.11.2
jQuery UI 1.11 unterstützt AMD (Asynchronous Module Denition), mit
welcher man nicht mehr die komplett jQuery UI laden muss
Daher wurde diese Version in TYPO3 integriert und ersetzt nun jQuery
UI 1.10 + Scriptaculous.
Weiterhin werden nur der Core und die Interaction Components
inkludiert, welche notwendig sind um ExtJS und Scriptaculous zu
ersetzen.
Widgets wurden nicht inkludiert, sondern über Bootstrap realisiert (wie
DatePicker, Spinner, Dialog, Buttons, Tabs, Tooltip)
jQuery UI 1.11 wurde von folgender URL geholt:
https://github.com/jquery/jquery-ui/tree/1-11-stable/ui/
TYPO3 CMS 7.0 - What’s New
31. Änderungen im System
Einführung einer Registry für die File Rendering Classes
Um verschiedene Dateiformate zu rendern, wird eine Registry benötigt,
bei der sich FileRenderer registrieren können. Dies geschieht für
Name (z.B. Video, Mpeg, Avi, Wav, ...) wie folgt:
?php
namespace ...;
class NameTagRenderer implements FileRendererInterface {
protected $possibleMimeTypes = array(’audio/mpeg’, ’audio/wav’, ...);
public function getPriority() {
return 1; // je hoeher, desto wichtiger der Renderer, 100 ist maximum
}
public function canRender(FileInterface $file) {
return in_array($file-getMimeType(), $this-possibleMimeTypes, TRUE);
}
public function render(FileInterface $file, $width, $height, array $options = array(),
$usedPathsRelativeToCurrentScript = FALSE) {
...
return ’HTML-Code’;
}
}
TYPO3 CMS 7.0 - What’s New
32. Änderungen im System
Evaluierungsfunktion email für das TCA
Es wurde für das TCA eine neue Evaluierungsfunktion email
hinzugefügt, welche serverseitig überprüft, ob ein eingegebener Wert
eine gültige Email ist. Im Fehlerfall wird eine Flash-Message
ausgegeben
’email’ = array(
’exclude’ = 1,
’label’ = ’LLL:EXT:wd_products/Resources/Private/Language/
locallang_db.xlf:tx_wdproducts_domain_model_contactpe
’config’ = array(
’type’ = ’input’,
’size’ = 30,
’eval’ = ’email,trim’
),
)
TYPO3 CMS 7.0 - What’s New
33. Änderungen im System
Einführung einer abstrakten Condition im TypoScript
Es gibt nun eine AbstractCondition, von der von eigene Conditions
ableiten kann
class TestCondition extends TYPO3CMSCoreConfigurationTypoScriptConditionMatching
AbstractCondition {
public function matchCondition(array $conditionParameters) {
if ($conditionParameters[0] === ’= 7’ $conditionParameters[1] === ’!= 6’) {
throw new TestConditionException(’All Ok’, 1411581139);
}
}
}
Die Verwendung im TypoScript sieht wie folgt aus:
[VendorPackageTestCondition]
[VendorPackageTestCondition = 7]
[VendorPackageTestCondition = 7, != 6]
Welche Operatoren in der Condition zur Verfügung stehen, wird in der
Klasse selbst festgelegt
TYPO3 CMS 7.0 - What’s New
34. Änderungen im System
Signal zur Manipulation des HTML-Tags in IconUtility
Signal für IconUtility zur HTML-Tag Manipulation
dispatch(’TYPO3CMSBackendUtilityIconUtility’, ’
buildSpriteHtmlIconTag’, array($tagAttributes, $innerHtml, $tagName)
);
Wird aufgerufen in:
TYPO3CMSBackendUtilityIconUtilitybuildSpriteHtmlIconTag
TYPO3 CMS 7.0 - What’s New
35. Änderungen im System
Signal Slots für SoftReferenceIndex
Es wurden zwei Signal Slot Dispatch Calls innerhalb von
SoftReferenceIndex in den Methoden getTypoLinkParts() und
setTypoLinkPartsElement() zugefügt:
protected function emitGetTypoLinkParts($linkHandlerFound, $finalTagParts, $linkHandlerKeyword,
$linkHandlerValue) {
return $this-getSignalSlotDispatcher()-dispatch(get_class($this), ’getTypoLinkParts’, array(
$linkHandlerFound, $finalTagParts, $linkHandlerKeyword, $linkHandlerValue));
}
protected function emitSetTypoLinkPartsElement($linkHandlerFound, $tLP, $content, $elements, $idx
, $tokenID) {
return $this-getSignalSlotDispatcher()-dispatch(get_class($this), ’setTypoLinkPartsElement’,
array($linkHandlerFound, $tLP, $content, $elements, $idx, $tokenID, $this));
}
Wird aufgerufen in
TYPO3CMSCoreDatabaseSoftReferenceIndex-findRef_typolink und
TYPO3CMSCoreDatabaseSoftReferenceIndex-getTypoLinkParts
TYPO3 CMS 7.0 - What’s New
36. Änderungen im System
Signal Slots für afterPersistObjetct
Bislang gab es nur ein Signal, wenn ein Objekt im Repository (Extbase)
aktualisiert wurde - nämlich afterUpdate. Da aber ein Aggregate
Root beispielsweise Subobjekte ebenfalls persistiert, benötigt es ein
Signal, welches erst dann emmitiert wird, wenn alle Objekte eines
Aggregate Roots persistiert wurden:
protected function emitAfterPersistObjectSignal(DomainObjectInterface
$object) {
$this-signalSlotDispatcher-dispatch(__CLASS__, ’afterPersistObject’,
array($object));
}
Wird aufgerufen in
TYPO3CMSExtbasePersistenceGenericBackend-persistObject
TYPO3 CMS 7.0 - What’s New
37. Änderungen im System
Signal Slots für loadBaseTca
Mit diesem Signal kann das gesamte TCA (anstelle von Teilen) gecacht
werden.
protected function emitTcaIsBeingBuiltSignal(array $tca) {
list($tca) = static::getSignalSlotDispatcher()-dispatch(__CLASS__, ’
tcaIsBeingBuilt’, array($tca));
$GLOBALS[’TCA’] = $tca;
}
Wird aufgerufen in
TYPO3CMSCoreUtilityExtensionManagementUtilityBackend-buildBaseTcaFromSingleFiles
TYPO3 CMS 7.0 - What’s New
38. Änderungen im System
API um gecachte TCA Änderungen zuzufügen
PHP-Dateien, die sich im Extension-Verzeichnis
extkey/Configuration/TCA/Overrides/ benden, werden
ausgeführt, direkt nachdem der TCA-Cache aufgebaut wurde. Die
Dateien dürfen nur Code enthalten, der das TCA manipuliert, wie
addTCAColumns oder addToAllTCATypes
TYPO3 CMS 7.0 - What’s New
39. Änderungen im System
MISC
Man kann nun auch SVG-Icons für eine Extension verwenden:
ext_icon.svg
File Mounts können nun auch read only sein
TYPO3 CMS 7.0 - What’s New
41. Extbase Fluid
Fallback Pfade für Fluid Standalone View und FLUIDTEMPLATE
Sowohl Fluid Standalone View wie auch das TypoScript-Objekt
FLUIDTEMPLATE können nun mit Fallback-Pfaden ausgerüstet werden.
Verwendet man die alten Optionen (z.B. partialRootPath)
zusammen mit den neuen, so wird die alte auf die erste Position (Index
= 0) in der Fallback-Liste gestellt.
page.10 = FLUIDTEMPLATE
page.10.file = EXT:sitedesign/Resources/Private/Templates/Main.html
page.10.partialRootPaths {
10 = EXT:sitedesign/Resources/Private/Partials
20 = EXT:sitemodification/Resources/Private/Partials
}
TYPO3 CMS 7.0 - What’s New
42. Extbase Fluid
Typolink ViewHelper
Es wurde ein Typolink-ViewHelper zugefügt, der beispielsweise Felder
auswerten und darstellen kann, die über einen Link-Wizard im Backend
erzeugt wurden:
f:link.typolink parameter={link} target=_blank class=ico-class title=some title
additionalAttributes={type:’button’}
link enthält beispielsweise
19 _blank - testtitle with whitespace X=y
Ergebnis ist
a href=index.php?id=19X=y title=testtitle with whitespace target=_blank class=ico-class
type=button
Lediglich parameter wird benötigt, die anderen Parameter sind
optional
TYPO3 CMS 7.0 - What’s New
43. Extbase Fluid
Data-Attribute in ViewHelpern
Alle ViewHelper, die Tags ausgeben, haben nun ein Data-Attribut
bekommen. Dafür wird per data ein Array übergeben. Die Schlüssel
der Arrays werden dann als Attribut zusammengesetzt:
data-$key=$value
f:form.textfield data={foo: ’bar’, baz: ’foos’} /
Dies wird wie folgt gerendert:
input data-foo=bar data-baz=foos ...
TYPO3 CMS 7.0 - What’s New
44. Extbase Fluid
Class tag values via Reection
Der Extbase Reection-Service kann nun Tags bzw. Annotation
zurückliefern, die zu einer Klasse zugefügt wurden
Nehmen wir an, wir haben folgende Klasse:
/**
* @SomeClassAnnotation A value
*/
class Foo {
}
Dann kann die Annotation nun wie folgt ermittelt werden:
$service = new TYPO3CMSExtbaseReflectionReflectionService();
// Returns all tags and their values the specified class is tagged with
$classValues = $service-getClassTagsValues(’Foo’);
// Returns the values of the specified class tag
$classValue = $service-getClassTagValue(’Foo’, ’SomeClassAnnotation’);
TYPO3 CMS 7.0 - What’s New
45. Veraltete und entfernte Funktionen
Kapitel 5:
Veraltete und entfernte Funktionen
TYPO3 CMS 7.0 - What’s New
46. Veraltete und entfernte Funktionen
Extensions müssen Namespaces verwenden
In TYPO3 7.0 wurde der Legacy-Layer entfernt, mit dem es möglich war,
Extensions mit dem alten Namensschema (ohne Namespaces) zu
verwenden
Der Legacy-Layer kann aber als Systemextension compatibility6
wieder nachinstalliert werden
TYPO3 CMS 7.0 - What’s New
47. Veraltete und entfernte Funktionen
Folgende Funktionen wurden als veraltet markiert
In TYPO3 4.7 wurden zahlreiche JavaScript Methoden als deprecated
(veraltet) erklärt und damit nun entfernt, beispielsweise
TYPO3CMSBackendFormFormEngine-getSingleField_typeInput
TYPO3CMSBackendFormFormEngine-getSingleField_typeText
TYPO3CMSCoreUtilityGeneralUtility-quoted_printable
TYPO3CMSCoreUtilityGeneralUtility-encodeHeader
Alle Änderungen nden sich hier https://github.com/TYPO3/TYPO3.CMS/
commit/2dff81b963e1b77c7f068f91ffde73914a18b0be
TYPO3 CMS 7.0 - What’s New
48. Veraltete und entfernte Funktionen
Entfernung veralteter JavaScript-Methoden im RTE
In TYPO3 4.7 wurden zahlreiche JavaScript Methoden als deprecated
(veraltet) erklärt und damit nun entfernt, beispielsweise
HTMLArea.Editor.forceRedraw: use HTMLArea.Framework.doLayout instead
HTMLArea.Editor.convertNode: use HTMLArea.DOM.convertNode instead
HTMLArea.Editor.getBlockAncestors: use HTMLArea.DOM.getBlockAncestors
instead
...
Eine genau Auistung aller entfernten Methoden ndet sich hier
https://forge.typo3.org/projects/typo3cms-core/repository/revisions/9
ac03e383e4786e868f4b1d81893e84c4621abc8/entry/typo3/sysext/core/
Documentation/Changelog/master/Breaking-62291-
RTEDeprecatedJavaScriptMethodsRemoved.rst
TYPO3 CMS 7.0 - What’s New
49. Veraltete und entfernte Funktionen
MISC - Teil 1
Das TypoScript-Setting config.uniqueLinkVars wurde entfernt, da die dortige
Funktion nur per Default verwendet wird
Der ViewHelper TYPO3CMSDocumentationViewHelpersLinkAction wurde
entfernt. Stattdessen kann man die ViewHelper f:be.buttons.icon oder f:uri.*
verwenden
Die PageTScong-Option mod.web_list.alternateBgColors wurde entfernt
Die Funktion SU mode / change to in der Verwaltung der Backend-User wurde
entfernt
Die Funktion connectDB der Klasse TYPO3CMSFrontendUtilityEidUtility
wurde entfernt
Die Funktion int_from_ver der Klasse
TYPO3CMSCoreUtilityGeneralUtility wurde entfernt
Die Funktion isDisplayCondition der Klasse TYPO3CMSFormFormEngine
wurde entfernt
TYPO3 CMS 7.0 - What’s New
50. Veraltete und entfernte Funktionen
MISC - Teil 2
Die Funktion getUniqueFields der Klasse
TYPO3CMSCoreDataHandlingDataHandler wurde entfernt
Die Funktion isSafeModeEnabled der Klasse
TYPO3CMSCoreUtilityPhpOptionsUtility wurde entfernt
Die Funktion registerSwiftMailer der Klasse TYPO3CMSCoreBootstrap
wurde entfernt
Die Funktion loadTCA der Klasse TYPO3CMSCoreUtility wurde entfernt
Die Klasse TYPO3CMSBackendTemplateMediumDocumentTemplate wurde
entfernt
Die Funktion isLocalconfWritable der Klasse
TYPO3CMSCoreUtilityExtensionManagementUtility wurde entfernt
Die Klasse TYPO3CMSExtbaseServiceTypeHandlingService wurde entfernt
TYPO3 CMS 7.0 - What’s New
51. Veraltete und entfernte Funktionen
MISC - Teil 3
Der alte PropertyMapper (und die Option rewrittenPropertyMapper
= 0) wurde entfernt
Die TypoScript-Conditions browser, version, system und
useragent wurden entfernt
TYPO3 CMS 7.0 - What’s New
52. Quellen und Autoren
Kapitel 6:
Quellen und Autoren
TYPO3 CMS 7.0 - What’s New
53. Quellen und Autoren
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Notes:
http://wiki.typo3.org/TYPO3_7.0
http://typo3.org/download/release-notes/typo3-7-0-release-notes/
NEWS.txt und ChangeLog
TYPO3 Git Repositories:
https://git.typo3.org/TYPO3v4/Core.git
https://git.typo3.org/TYPO3v4/CoreProjects/MVC/extbase.git
https://git.typo3.org/TYPO3v4/CoreProjects/MVC/fluid.git
TYPO3 CMS 7.0 - What’s New
54. Quellen und Autoren
Quellennachweis
TYPO3 Bug-/Issuetracker:
http://forge.typo3.org/projects/typo3v4-core/issues
Weitere Quellen:
Roadmap
https://typo3.org/typo3-cms/roadmap/
Release Strategy
http://typo3.org/news/article/embrace-and-innovate-typo3-cms-7/
TYPO3 CMS 7.0 - What’s New
55. Quellen und Autoren
TYPO3 CMS What’s New Slides:
Patrick Lobacher (Recherche, Informationsdoku und deutsche Version)
http://typo3.org/download/release-notes/whats-new
Lizensiert unter Creative Commons BY-NC-SA 3.0
TYPO3 CMS 7.0 - What’s New
56. Quellen und Autoren
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.plus-werk.com | +49 69 260 99 70 50 | facebook.com/pluswerk
TYPO3 CMS 7.0 - What’s New