TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Patrick Lobacher (Vorstand pluswerk AG)
http://www.pluswerk.ag
10/November/2015
Creative Commons BY-NC-SA 3.0
Introduction
TYPO3 CMS 7 LTS - What’s New
Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von
der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface
TypoScript
In-DepthChanges
Extbase/Fluid
Deprecated/Removed
Sys.Administration
Redakteure X
Integratoren X X X
Entwickler X X X
SysAdmins X
Download aller What’s New Slides unter typo3.org
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Backend User Interface
Die größte und aufälligste Änderung ist sicher das überarbeitete Backend
User Interface. Es basiert nun komplett auf Twitter Bootstrap, verfügt über
ein modernes und responsives Design und stellt sicher, das Redakteure ihre
Aufgaben effizient und einfach erledigen können.
Die neuen Icons sehen nun auf hochauflösenden Screens phantastisch aus,
da diese per SVG realisiert wurden. Bilder können nun mit Bordmitteln beim
Hochladen ins Backend direkt beschnitten werden.
Agenturen können zudem die Login-Seite individualisieren und Redakteure
werden zahlreiche weitere tolle Features vorfinden, die ihre tägliche Arbeit
erleichtert.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Allgemeines
Das Backend User Interface wurde komplett überarbeitet
Als Basis dient Twitter Bootstrap Version 3.2.x
Sämtliche Icons wurden erneuert und grafisch im "Tile Style"
überarbeitet
Für Icons wird Font Awesome Version 4.2.x verwendet
Linke Funktionenleiste wurde grafisch angepasst
Icons wurden im Flat-Design, monochrom, farbig und mit
abgerundeten Ecken entworfen
Breite der Funktionenleiste kann soweit reduziert werden, dass nur
noch Icos sichtbar sind
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Backend Benutzeranmeldung
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Top Bar (Module Menu)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Listen Modul und Zwischenablage
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Tabellen
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Suche für Seite/Liste
Klick auf die Lupe blendet eine Suche für die aktuelle Seite/Liste ein
(diese befand sich früher statisch am Ende der Seite)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Anzahl offene Dokumente
Anzahl offene Dokumente wird über ein Bootstrap "Badge" angezeigt
(setzt die installierte Extension "Open Documents" voraus)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Flash Messages
FlashMessage-Boxen im Backend wurden überarbeitet
Dafür wurde der Kontrast von Text und Box erhöht und Links werden
besser hervorgehoben
TYPO3 CMS < 7.0 TYPO3 CMS >= 7.0
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Video Player in Info Window
Ein Videoplayer ermöglicht es, HTML5 Audio- und Video-Dateien im
"Info"-Fenster abzuspielen
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel: Date/Time Picker
Date/Time Picker im Backend wurde auf Twitter Bootstrap umgestellt
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel: Funktionen-Modul
Die Funktionen "Seiten sortieren" und "mehrere Seiten erzeugen" sind jetzt
unter WEB => Funktionen zu finden
(in TYPO3 CMS < 7.1 waren diese unter "WEB => Funktionen => Wizards" zu finden)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel: Access-Modul
Im Modul WEB => Access kann man Benutzer und/oder Gruppen
unverändert lassen, wenn man nur die Berechtigungen ändern möchte
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Look & Feel: Icons im List-Modul
Icons ("Action Buttons") im List-Modul sind nun in zwei Gruppen angeordnet
(primäre Aktionen (lesen, speichern, löschen) zuerst, anschließend die sekundären Icons)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Anpassbares Anmeldeformular
In der Systemextension backend kann sowohl ein Hintergrundbild, ein Logo
und die Signalfarbe für die Anmeldeformular eingestellt werden:
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Bild-Manipulation (Cropping)
Für Bilder kann im Backend bei der Verwendung einer Referenz (z.B. in
Inhalts-Elementen) ein Ausschnitt ausgewählt werden. Diese Funktion muss
allerdings für den Redakteur explizit erlaubt werden ("Exclude Fields"):
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Benutzergruppen
Die Backend Benutzergruppen können im Modul "Backend Users" verwaltet
werden:
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Automatische Installationen unterbinden
In den Einstellungen des Extension-Managers kann die automatische
Installation von Extensions nach dem Download deaktiviert werden:
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Verbleibende Anzahl von Zeichen
Unterhalb von Textfeldern wird die verbleibende Anzahl der maximal
zulässigen Zeichen angezeigt:
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Ungespeicherte Änderungen
Redakteure erhalten eine Warnung, wenn in einem Editier-Formular der
"Schließen"-Button geklickt wird, ohne vorher gespeichert zu haben:
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Systeminformationen
Eine Kurzübersicht der Systeminformationen kann per Klick neben dem
Benutzer-Icon abgerufen werden. Die Informationen in diesem Dialog sind
erweitern (siehe Kapitel "Änderungen im System"):
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Passwortänderung
Zur Änderung des Passwortes müssen Backendbenutzer zuerst ihr aktuelles,
altes Passwort eingeben:
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Icon für "Show Content from Page"
Im Seitenbaum zeigt ein neues Icon an, ob eine Seite Inhalte von einer
anderen Seite enthält ("Show Content from Page"):
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Extension Update
Beim Update einer Extension wird gefragt, auf welche Version aktualisieren
werden soll:
(es wird nicht mehr generell auf die letzte, verfügbare Version aktualisiert)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Recycler Task
Die Systemextension recycler bringt nun einen Scheduler Task mit, mit
dem gelöschte Datensätze aus Content-Tabellen vollständig entfernt werden
können (inkl. referenzierte Dateien, sofern vorhanden).
(max. Alter, ab wann Content gelöscht werden kann, ist konfigurierbar)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Seitentitel im Page- und List-Modul
Im Page- und List-Modul kann man den Seitentitel entweder per
Doppelklick oder mit Klick auf das Bearbeitungssymbol ändern.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Prozessierte FAL Dateien im Install Tool löschen
Das Install Tool enthält nun ein neues Tool (unterhalb von "Clean up"), um
prozessierte FAL Dateien (wie z.B. Thumbnails) zu löschen. Das ist
insbesondere hilfreich, wenn man grafik-relevante Settings ändern oder
wenn man GraphicsMagick/ImageMagick aktualisiert hat und alle Dateien
neu generieren will.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Copyright in FAL Meta-Daten
In den zusätzlichen FAL Meta-Daten (Extension: filemetadata) gibt es
nun ein Feld "Copyright".
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Avatare für Backend Benutzer
Backend Benutzer können nun Avatare festlegen. Diese werden in den
Benutzereinstellungen gepflegt und beispielsweise oben neben dem
Anmeldenamen oder in den Benutzerlisten angezeigt.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Dateien ersetzen
Es ist nun möglich, Dateien in der FAL Dateiliste zu ersetzen. Hierzu muss
die "Erweiterte Ansicht" aktiviert sein. Je nach Bedarf kann der bisherige
Dateinamen beibehalten oder der neue verwendet werden.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Onlinestatus anzeigen
Im Modul "Backend Benutzer" wird nun angezeigt, ob ein Benutzer
momentan online ist.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Zweite Optionspalette entfernt
Die Checkbox "Show secondary options (palettes)" sowie die TSconfig
options.enableShowPalettes und die zugehörigen TCA-Einstellungen
wurden entfernt. Die "Paletten" sind nun immer sichtbar und können nicht
mehr ausgeblendet werden.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Beschreibung für Backend Benutzer
Backend Benutzer können nun auch eine Beschreibung erhalten.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Beschreibung im Backend anzeigen
Über die TCA-Einstellung [’TCA’][’ctrl’][’descriptionColumn’]
kann eine Spalte ausgewählt werden (meist description), die eine
Beschreibung enthält. Ist diese vorhanden, wird der Inhalt beispielsweise
im Listenmodul angezeigt.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Beschreibung für Filemounts
Filemounts können ebenfalls eine Beschreibung erhalten.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Überschreiben Dialog beim Upload
Sofern bei einem Upload Dateien bereits auf dem Server existieren, werden
in einem Dialog mehrere Optionen zur Auswahl angeboten.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Editieren von Inhaltselementen für Nicht-Admins einschränken
Inhaltselemente können jetzt für die Bearbeitung durch Nicht-Admins
eingeschränkt werden (ähnliche Funktion die es bereits bei Seiten gibt).
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Statische TSconfig Dateien (1)
In den Seiteneigenschaften können nun statische TSconfig Dateien
eingebunden werden.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Statische TSconfig Dateien (2)
Die TSconfig Dateien werden wie folgt registriert:
TYPO3CMSCoreUtilityExtensionManagementUtility::registerPageTSConfigFile(
’extension_name’,
’Configuration/PageTS/myPageTSconfigFile.txt’,
’My special configuration’
);
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Echte Sprachkopien
Es ist nun möglich, "richtige" Kopien von Inhaltselementen in
Sprachversionen anzulegen (und nicht nur Referenzen).
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Sprachauswahl im Modul "View"
Das Modul WEB->View bietet nun eine komfortable Sprachauswahl.
(kann durch mod.SHARED.view.disableLanguageSelector = 1 deaktiviert werden)
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Inhaltselement textmedia
Ein neues Inhaltselement "Text & Media", fasst die bisher bekannten
Elemente text, image und textpic zusammen.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
YouTube- und Vimeo-Dateien
Über das erwähnte Inhaltselement "Text & Media" können auch externe
YouTube- und Vimeo-Dateien, sowie lokale Dateien eingefügt werden.
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Suche im Filelist Modul
Im Modul "Filelist" gibt es eine Suche, die rekursiv durch alle Ordner sucht
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Benachrichtigungseinstellungen bei Workspaces (1)
Die Benachrichtigungseinstellungen (engl. Notification Settings) innerhalb
der Workspaces wurden überarbeitet
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Benachrichtigungseinstellungen bei Workspaces (2)
Man kann nun sogar für den Stage publish-execute Einstellungen
vornehmen
TYPO3 CMS 7 LTS - What’s New
Backend User Interface
Suche im Dateibrowser
Im Popup des Dateibrowser ist nun eine einfache Suche integriert, die
rekursiv agiert
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellen und Autoren
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Infos:
https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x
INSTALL.md and ChangeLog
typo3/sysext/core/Documentation/Changelog/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
TYPO3 Git Repositories:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk
TYPO3 CMS 7 LTS - What’s New
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Patrick Lobacher (Vorstand pluswerk AG)
http://www.pluswerk.ag
10/November/2015
Creative Commons BY-NC-SA 3.0
Introduction
TYPO3 CMS 7 LTS - What’s New
Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von
der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface
TypoScript
In-DepthChanges
Extbase/Fluid
Deprecated/Removed
Sys.Administration
Redakteure X
Integratoren X X X
Entwickler X X X
SysAdmins X
Download aller What’s New Slides unter typo3.org
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
TSconfig & TypoScript
TypoScript wird verwendet, um hierarchische Informationen in einer Struktur
zu verwalten um damit die TYPO3 CMS Instanz zu konfigurieren. In TYPO3
CMS 7 LTS wurden viele Eigenschaften und Optionen zugefügt, geändert bzw.
auch als veraltet markiert oder entfernt.
Open Graph Attribute werden nun out-of-the-box unterstützt und die
Integrität von extern gehosteten JavaScript-Dateien kann nun via SRI-Hash
überprüft werden, um nur zwei der neuen Features zu nennen.
Entfernte TypoScript-Optionen sind in den Slides Deprecated/Removed zu
finden.
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
TSconfig für Linkvalidator inkludieren
TSconfig Konfiguration für den Linkvalidator wird gelesen...
entweder aus dem aktiven TSconfig des Backends,
oder aus der Konfiguration des Scheduler-Tasks
Das folgende TSconfig kann vom Linkchecker ausgelesen werden
mod.linkvalidator.mychecker.myvar = 1
Dort steht das TSconfig dann als $this->tsConfig zur Verfügung
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Links zu deaktivierten Datensätzen im Linkhandler melden
Bisher hat der Linkhandler lediglich gewarnt, wenn es Links zu
gelöschten oder nicht existierenden Datensätzen gab
Über die folgende TSconfig Einstellung kann nun auch eine Warnung
aktiviert werden, wenn der Link auf einen deaktivierten Datensatz zeigt:
mod.linkvalidator.linkhandler.reportHiddenRecords = 1
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
RTE: mehrere CSS Klassen
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 = list of CSS classes
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
RTE: nicht-selektierbare Klassen
Man kann nun Klassen als "nicht-selektierbar" im Style-Selektor des
RTE konfigurieren
// der Wert "1" bedeutet, class ist auswaehlbar
// der Wert "0" bedeutet, class ist nicht auswaehlbar
RTE.classes.[ *classname* ] {
.selectable = 1
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
RTE: mehrere CSS-Dateien einbinden
Man kann nun mehrere CSS-Dateien in den RTE laden
RTE.default.contentCSS {
file1 = fileadmin/rte_stylesheet1.css
file2 = fileadmin/rte_stylesheet2.css
}
Gibt man keine CSS Datei an, so wird die Default-Datei geladen:
typo3/sysext/rtehtmlarea/res/contentcss/default.css
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Exception während Rendering erzeugen - Teil 1
Sobald Fehler im Rendering von einzelnen Inhaltselementen (Content
Objects) (z.B. mittels USER) auftreten, wird eine Fehlermeldung
erzeugt, die in TYPO3 CMS < 7.0 die gesamte Ausgabe zerstört
In TYPO3 CMS 7.0 wurde ein Exception-Handling eingeführt, welches
eine Fehlermeldung in die Ausgabe an der Stelle integriert, an der das
Rendering stattgefunden hat
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Exception während Rendering erzeugen - Teil 2
# default exception handler (activated in context "production")
config.contentObjectExceptionHandler = 1
# configuration of a class for the exception handling
config.contentObjectExceptionHandler =
TYPO3CMSFrontendContentObjectExceptionProductionExceptionHandler
# customised error message (show random error code)
config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s
# configuration of exception codes, which are not dealt with
tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813
# deactivation of exception handling for a specific plugins or content objects
tt_content.login.20.exceptionHandler = 0
# ignoreCodes and errorMessage can be configured globally...
config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s
config.contentObjectExceptionHandler.ignoreCodes.10 = 1414512813
# ...or locally for individual content objects
tt_content.login.20.exceptionHandler.errorMessage = Oops an error occurred. Code: %s
tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
StdWrap für page.headTag
TypoScript Option page.headTag hat nun stdWrap-Funktionalität
page = PAGE
page.headTag = <head>
page.headTag.override = <head class="special">
page.headTag.override.if {
isInList.field = uid
value = 24
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
JavaScript-Dateien asynchron laden
JavaScript-Dateien könen nun asynchron geladen werden
page {
includeJS {
jsFile = /path/to/file.js
jsFile.async = 1
}
}
Das gilt für:
includeJSlibs / includeJSLibs
includeJSFooterlibs
includeJS
includeJSFooter
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
HMENU Eigenschaft mit additionalWhere
TypoScript cObject HMENU erhält eine neue Eigenschaft
additionalWhere
Jenes erlaubt eine spezifischere DB Abfrage (z.B. Filterung)
Beispiel:
lib.authormenu = HMENU
lib.authormenu.1 = TMENU
lib.authormenu.1.additionalWhere = AND author!=""
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Zusätzliche Eigenschaften für HMENU Browse-Menü
Zwei neue Eigenschaften für das cObject HMENU (Option
"special=browse"), um detaillierter definieren zu können, welche
Seiten im Menü erscheinen sollen:
excludeNoSearchPages
includeNotInMenu
Beispiel:
lib.browsemenu = HMENU
lib.browsemenu.special = browse
lib.browsemenu.special.excludeNoSearchPages = 1
lib.browsemenu.includeNotInMenu = 1
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Mehrere HTTP-Header
HTTP Header können nun mittels config.additionalHeaders
als Array gesetzt werden
Das ermöglicht es, mehreren Header-Zeilen auf einmal zu konfigurieren
config.additionalHeaders {
10 {
# header string
header = WWW-Authenticate: Negotiate
# (optional) replace previous headers with the same name (default: 1)
replace = 0
# (optional) force HTTP response code
httpResponseCode = 401
}
# set second additional HTTP header
20.header = Cache-control: Private
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Option "auto" für config.absRefPrefix
TypoScript Konfiguration config.absRefPrefix kann verwendet
werden, um der URL einen Prefix bei relativen Pfaden zu geben. Als
Alternative zu config.baseURL (um eine bestimmte Domain zu
spezifizieren), erkennt absRefPrefix die Site-Root automatisch:
config.absRefPrefix = auto
# anstelle von:
[ApplicationContext = Production]
config.absRefPrefix = /
[ApplicationContext = Testing]
config.absRefPrefix = /my_site_root/
Hinweis: diese Option ist "Multi-Domain"-sicher und mehrfaches Caching der selben
Daten wird verhindern.
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Zwei-Zeichen ISO Code für sys_language (1)
Die Behandlung von Sprachen wird durch Einträge in DB Tabelle
sys_language vorgenommen, die durch sys_language_uid
referenziert werden
In TYPO3 CMS 7.1 wurden ISO 639-1 Zwei-Zeichen Codes implementiert:
Neues DB Feld: sys_language.language_isocode
Neue TypoScript-Option: sys_language_isocode
Hinweis: bei ISO 639 handelt es sich um eine Sammlung von Standards der
"International Organization for Standardization". Eine List der ISO 639-1
Codes ist hier abrufbar:
http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Zwei-Zeichen ISO Code für sys_language (2)
Beispiel:
# Danish by default
config.sys_language_uid = 0
config.sys_language_isocode_default = da
[globalVar = GP:L = 1]
# ISO code stored in table sys_language (uid 1)
config.sys_language_uid = 1
# overwrite ISO code as required
config.sys_language_isocode = fr
[GLOBAL]
page.10 = TEXT
page.10.data = TSFE:sys_language_isocode
page.10.wrap = <div class="main" data-language="|">
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Eigene Conditions im Backend
Eigene Conditions für das Frontend wurden bereits mit TYPO3 CMS 7.0
eingeführt
Seit TYPO3 CMS 7.1 ist es nun auch möglich, eigene Conditions für das
Backend zu implementieren
Die Condition muss von AbstractCondition ableiten und die
Methode matchCondition bereitstellen
Anwendungsbeispiel in TypoScript:
[BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition]
[BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = 7]
[BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = 7, != 6]
[BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = {$mysite.myconstant}]
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Zufügen von Icons in TCEFORM via PageTSconfig
Eigene Werte und Labels von Select-Feldern können bereits mit der
PageTSconfig Option addItems vergeben werden
Nun können auch Icons für diese Felder definiert werden
Option 1: mittels addItems und der Eigenschaft .icon
Option 2: mittels altIcons (generell für alle Felder)
Beispiel:
TCEFORM.pages.doktype.addItems {
10 = My Label
10.icon = EXT:t3skin/icons/gfx/i/pages.gif
}
TCEFORM.pages.doktype.altIcons {
10 = EXT:myext/icon.gif
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Element Browser: Mountpoints hinzufügen
Neue UserTSconfig Option .append erlaubt es Administratoren
Mountpoints hinzuzufügen, anstatt die Liste der konfigurierten DB
Mountpoints eines Benutzers neu zu schreiben
Beispiel:
options.pageTree.altElementBrowserMountPoints = 20,31
options.pageTree.altElementBrowserMountPoints.append = 1
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Überschreiben der Labels von Radio-Buttons und Checkboxen
Labels von Radio-Buttons und Checkboxen können nun überschrieben
werden
Beispiel:
// field with a single checkbox (use ".default")
TCEFORM.pages.hidden.altLabels.default = new label
TCEFORM.pages.hidden.altLabels.default = LLL:path/to/languagefile.xlf:individualLabel
// field with multiple checkboxes (0, 1, 2, 3...)
TCEFORM.pages.l18n_cfg.altLabels.0 = new label of first checkbox
TCEFORM.pages.l18n_cfg.altLabels.1 = new label of second checkbox
TCEFORM.pages.l18n_cfg.altLabels.2 = new label of third checkbox
...
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Diverses (1)
Breite und Höhe des Element-Browsers können nun per UserTSconfig
festgelegt werden
options.popupWindowSize = 400x900
options.RTE.popupWindowSize = 200x200
PageTSconfig: mit einer neue RTE-Konfiguration kann das
Standard-Ziel von Links beeinflusst werden
buttons.link.[type].properties.target.default
Wobei [type] zum Beispiel page, file, url, mail or spec sein kann
(Extensions können weitere Typen zur Verfügung stellen)
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Diverses (2)
Standardmäßig sind Section-Headlines der Indexed-Search Resultate
verlinkt. Das kann nun mittels TypoScript deaktiviert werden
plugin.tx_indexedsearch.linkSectionTitles = 0
getData kann jetzt auch field-Daten abfragen (nicht nur Arrays, wie
beispielsweise GPVar und TSFE)
10 = TEXT
10.data = field:fieldname|level1|level2
TypoScript Konfiguration config.pageTitle hat jetzt
stdWrap-Funktionalität
# make value of <title> upper case
page = PAGE
page.config.pageTitle.case = upper
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Konfigurierbarer Vorschau-Link (1)
Es ist nun möglich, die URL zur Vorschau einer Seite zu definieren, die
durch den Button "Speichern & Vorschau" aufgerufen wird.
Damit kann man unterschiedliche Links für Blog- oder
News-Datensätze, aber auch für Inhaltselemente generieren lassen.
TCEMAIN.preview {
<table name> {
previewPageId = 123
useDefaultLanguageRecord = 0
fieldToParameterMap {
uid = tx_myext_pi1[showUid]
}
additionalGetParameters {
tx_myext_pi1[special] = HELLO
}
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Konfigurierbarer Vorschau-Link (2)
previewPageId:
UID der Seite, die für den Preview verwendet werden soll
(ohne Angabe wird die aktuelle Seite verwendet)
useDefaultLanguageRecord:
definiert, ob übersetzte Datensätze die UID des Default-Datensatzes verwenden
(standardmäßig ist jenes aktiviert, default: 1)
fieldToParameterMap:
Mapping (Key = Value) von Feldern des Datensatzes, die als GET-Parameter an den Link
angehängt werden
additionalGetParameters:
wie fieldToParameterMap, aber für beliebige Paramater
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
RTE Konfiguration: Default-Target
Das Default-Target in der RTE Konfiguration ist nun im PageTSconfig
abhängig vom Typ einstellbar
buttons.link.[ type ].properties.target.default = ...
Als "type" sind folgende Werte zulässig:
(weitere können via Extensions eingebracht werden)
page
file
url
mail
spec
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Leere HTML-Tags im HTMLparser löschen
Es ist nun möglich, leere HTML-Tags im HTMLparser zu löschen
stdWrap {
// Hier werden alle leeren HTML-Tags entfernt
HTMLparser.stripEmptyTags = 1
// Hier werden nur leere h2 und h3 Tags entfernt
HTMLparser.stripEmptyTags.tags = h2, h3
}
RTE.default.proc.entryHTMLparser_db {
stripEmptyTags = 1
stripEmptyTags.tags = p
stripEmptyTags.treatNonBreakingSpaceAsEmpty = 1
}
Da der HtmlParser unbekannte Tags grundsätzlich entfernt, ist es
ratsam, diese zunächst zu behalten:
HTMLparser.keepNonMatchedTags = 1
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Diverses
Der Button für "Abkürzung" (engl. abbreviation) im RTE kann nun in der
PageTSconfig ausgeblendet werden (da nicht mehr HTML5 konform):
# moegliche Wert sind:
# acronym, definedAcronym, abbreviation, definedAbbreviation
buttons.abbreviation.removeFieldsets = acronym,definedAcronym
Die Eigenschaft inlineLanguageLabel des Objekts PAGE kann nun
auch mit LLL:-Referenzen umgehen
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
stdWrap Funktion strtotime
Es gibt nun eine stdWrap Funktion strtotime, welche es ermöglicht,
formatierte Datum-Angaben in einen Timestamp umzuwandeln
date_as_timestamp = TEXT
date_as_timestamp {
value = 2015-04-15
strtotime = 1
}
next_weekday = TEXT
next_weekday {
data = GP:selected_date
strtotime = + 2 weekdays
strftime = %Y-%m-%d
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
GPmerged in Conditions
Prüft man in Conditions nur mittels GP so wird beim gleichzeitigen
Vorhandensein von POST- und GET-Variablen (z.B.
tx_demo_demo[...]=...), lediglich die POST-Variable
zurückgegeben
Mit der neuen Option GPmerged werden beide Variablen
zusammengeführt und dann zurückgegeben
[globalVar = GPmerged:tx_demo|foo = 1]
page.90 = TEXT
page.90.value = DEMO
[global]
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Weitere Werte für die Funktion stdWrap.case
Die stdWrap Funktion case ist um die beiden Werte uppercamelcase
und lowercamelcase ergänzt worden
Beispiel:
tt_content = CASE
tt_content {
key.field = CType
my_custom_ctype =< lib.userContent
my_custom_ctype {
file = EXT:site_base/Resources/Private/Templates/SomeOtherTemplate.html
settings.extraParam = 1
}
default =< lib.userContent
default {
file = TEXT
file.field = CType
file.stdWrap.case = uppercamelcase
file.wrap = EXT:site_base/Resources/Private/Templates/|.html
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Eigenschaft integrity für JavaScript-Dateien (1)
Es wurde die Eigenschaft integrity zugefügt, um einen SRI Hash zum
JavaScript-Markup hinzuzufügen, mit dem die Quelle verifiziert werden
kann (SRI: Sub-Resource Integrity)
Dies betrifft die Eigenschaften page.includeJSLibs,
page.includeJSFooterlibs, includeJS und includeJSFooter
Beispiel:
page {
includeJS {
jQuery = https://code.jquery.com/jquery-1.11.3.min.js
jquery.external = 1
jQuery.disableCompression = 1
jQuery.excludeFromConcatenation = 1
jQuery.integrity = sha256-7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2/ujj7g=
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Eigenschaft integrity für JavaScript-Dateien (2)
SRI ist eine Spezifikation des W3C, die es ermöglicht zu verifizieren, ob
extern gehostete Dateien manipuliert worden sind
Erstellen von Integrity Hashes:
Option 1: https://srihash.org
Option 2: durch folgende Kommandos
cat FILENAME.js | openssl dgst -sha256 -binary | openssl enc -base64 -A
Weitere Informationen:
http://www.w3.org/TR/SRI/
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Data-Provider für Backend Layouts (1)
Backend-Layouts können jetzt per PageTSconfig definiert und damit
auch in Dateien ausgelagert werden. Zum Beispiel:
mod {
web_layout {
BackendLayouts {
exampleKey {
title = Example
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = LLL:EXT:frontend/ ... /locallang_ttc.xlf:colPos.I.3
colPos = 3
colspan = 1
}
}
}
[...]
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Data-Provider für Backend Layouts (2)
(Fortsetzung)
[...]
2 {
columns {
1 {
name = Main
colPos = 0
colspan = 1
}
}
}
}
}
}
icon = EXT:example_extension/Resources/Public/Images/BackendLayouts/default.gif
}
}
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Erweiterung der Option page.meta
Die Option page.meta unterstützt nun auch Open Graph Attributnamen
page {
meta {
X-UA-Compatible = IE=edge,chrome=1
X-UA-Compatible.attribute = http-equiv
keywords = TYPO3
# <meta property="og:site_name" content="TYPO3" />
og:site_name = TYPO3
og:site_name.attribute = property
description = Inspiring people to share
og:description = Inspiring people to share
og:description.attribute = property
og:locale = en_GB
og:locale.attribute = property
og:locale:alternate {
attribute = property
value.1 = fr_FR
value.2 = de_DE
}
refresh = 5; url=http://example.com/
refresh.attribute = http-equiv
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
languageField wird automatisch gesetzt
In der TypoScript-Option select (die beispielsweise beim cObject
CONTENT verwendet wird) musste man bisher das languageField
explizit setzen
Jenes wird nun automatisch gesetzt und kann daher weglassen werden
config.sys_language_uid = 2
page.10 = CONTENT
page.10 {
table = tt_content
select.where = colPos=0
# Die nachfolgende Zeile ist nicht notwendig:
#select.languageField = sys_language_uid
renderObj = TEXT
renderObj.field = header
renderObj.htmlSpecialChars = 1
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Individuelles Content Caching
Es gibt nun ein individuelles Content Caching, welches im Gegensatz zu
stdWrap.cache auch mit COA-Objekten funktioniert (ähnlich dem
"Magento Block Caching")
page = PAGE
page.10 = COA
page.10 {
cache.key = coaout
cache.lifetime = 60
#stdWrap.cache.key = coastdWrap
#stdWrap.cache.lifetime = 60
10 = TEXT
10 {
cache.key = mycurrenttimestamp
cache.lifetime = 60
data = date : U
strftime = %H:%M:%S
noTrimWrap = |10: | |
}
[...]
[...]
20 = TEXT
20 {
data = date : U
strftime = %H:%M:%S
noTrimWrap = |20: | |
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Zähler für listNum
Es gibt eine neue Eigenschaft returnCount für die stdWrap
Eigenschaft split
Damit kann die Anzahl der Elemente in einer kommaseparierten Liste
ermittelt werden
Das folgende Beispiel gibt 9 zurück:
1 = TEXT
1 {
value = x,y,z,1,2,3,a,b,c
split.token = ,
split.returnCount = 1
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Sortierung von Tabellen im Backend
Über die TSconfig Option mod.web_list.tableDisplayOrder kann
eingestellt werden, wie die Tabellen im List-Modul sortiert werden
Dafür werden die Schlüsselworte before und after verwendet
Anwendung:
mod.web_list.tableDisplayOrder {
<tableName> {
before = <tableA>, <tableB>, ...
after = <tableA>, <tableB>, ...
}
}
Zum Beispiel:
mod.web_list.tableDisplayOrder {
be_users.after = be_groups
sys_filemounts.after = be_users
pages_language_overlay.before = pages
fe_users.after = fe_groups
fe_users.before = pages
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Content Language im HTTP Header
Es wird nun standardmäßig Content-language: XX im HTTP
Response Header an den Client gesendet, wobei "XX" dem ISO-Code
entspricht, der via sys_language_content konfiguriert wurde
Dabei kann sys_language_content unterschiedlich zu
sys_language_uid sein, wenn der Inhalt von der Fallback-Sprache
ermittelt wird
(jenes hängt von der Einstellung sys_language_mode ab)
Über die Einstellung config.disableLanguageHeader = 1 kann
der Header bei Bedarf auch deaktiviert werden
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Rekursive Option für ordner-basierte File Collections
Ordner-basierte File Collections haben nun eine Option um rekursiv alle
Dateien für einen gegebenen Ordner zu ermitteln
Die Option ist ebenfalls für das TypoScript Objekt FILES verfügbar
filecollection = FILES
filecollection {
folders = 1:images/
folders.recursive = 1
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
}
}
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Extension .ts für Static Templates
Bislang waren für statische TypoScript Templates nur die folgenden
Dateinamen zugelassen:
constants.txt
setup.txt
include_static.txt
include_static_files.txt
Als Extension kann nun auch .ts verwendet werden
Dabei hat .ts Vorrang vor .txt
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
save & view Button
Der "save & view" Button ist nun via TSconfig konfigurierbar
Der folgende Schlüssel nimmt eine kommaseparierte Liste an
"doktypes" auf: TCEMAIN.preview.disableButtonForDokType
Der Standardwert ist "254, 255, 199" (Storage Folder, Recycler und
Menu Seperator)
In Foldern und Recycler-Seiten ist der "save & view" Button daher
standardmäßig nicht mehr sichtbar
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
stdWrap für treatIdAsReference
Für das Objekt getImgResource existiert die Option
treatIdAsReference, die ggf. definiert, dass die angegebenen UIDs
als UIDs von sys_file_reference, anstatt von sys_file gelten
Die Option treatIdAsReference besitzt nun stdWrap Funktionalität
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Conditions für TypoScript-Include
Der INCLUDE_TYPOSCRIPT Tag besitzt nun das optionale Attribut
"condition", welches es ermöglicht, die Datei (oder das Verzeichnis) nur
dann zu inkludieren, wenn die Condition erfüllt ist:
// TypoScript nur laden, wenn Benutzer eingeloggt ist:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/feuser.ts"
condition="[loginUser = *]">
// TypoScript nur laden, wenn ApplicationContext gesetzt ist:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/staging.ts"
condition="applicationContext = /^Production/Staging/Serverd+$/">
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
TCA-Option, um Datum Feldweise auszublenden
Es gibt nun eine TCA-Option disableAgeDisplay, um die Anzeige des
Datums auszublenden
Voraussetzung hierfür ist, dass der Typ des Feldes input ist, und eval
auf date gesetzt ist
$GLOBALS[’TCA’][’tt_content’][’columns’][’date’][’config’][’disableAgeDisplay’] = true;
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Inline Sprachlabels mit TypoScript (1)
Man kann nun Sprachdateien mittels TypoScript auslesen und als
Inline-Array in den Quelltext schreiben, um z.B. per JavaScript darauf
zuzugreifen
Folgende Optionen sind möglich:
selectionPrefix:
nur Schlüssel, die mit diesem Prefix anfangen, werden ermittelt
stripFromSelectionName:
String, der von jedem Schlüssel entfernt wird
errorMode:
Mode, wenn die Sprachdatei nicht gefunden wird
(0: Eintrag im Syslog vornehmen, 1: ignorieren, 3: Exception generieren)
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Inline Sprachlabels mit TypoScript (2)
Beispiel:
page = PAGE
page.inlineLanguageLabelFiles {
someLabels = EXT:myExt/Resources/Private/Language/locallang.xlf
someLabels.selectionPrefix = idPrefix
someLabels.stripFromSelectionName = strip_me
someLabels.errorMode = 2
}
Ausgabe:
<script type="text/javascript">
/*<![CDATA[*/
var TYPO3 = TYPO3 || {};
TYPO3.lang = {"firstLabel":[{"source":"first Label","target":"erstes Label"}],
"secondLabel":[{"source":"second Label","target":"zweites Label"}]};
/*]]>*/
</script>
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Workspace Preview per TSconfig
Standardmäßig erzeugt TYPO3 lediglich Vorschau-Links für die Tabellen
tt_content, pages und pages_language_overlay
Dies kann nun per PageTSconfig angepasst werden:
# Verwendung der Seite 123 fuer Workspace Preview (fuer alle Tabellen)
options.workspaces.previewPageId = 123
# Verwendung des Feldes pid (fuer alle Tabellen)
options.workspaces.previewPageId = field:pid
# Verwendung der Seite 123 fuer Workspace Preview (fuer die Tabelle tx_myext_table)
options.workspaces.previewPageId.tx_myext_table = 123
# Verwendung des Feldes pid fuer Workspace Preview (fuer die Tabelle tx_myext_table)
options.workspaces.previewPageId.tx_myext_table = field:pid
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Bildqualität kann per SourceCollection gesetzt werden
Die Bildqualität jeder sourceCollection kann nun konfiguriert werden
Dies überschreibt die Einstellungen, die im Install Tool gemacht wurden
und in der Datei LocalConfiguration.php gespeichert sind
# fuer kleine Retina Bilder
tt_content.image.20.1.sourceCollection.smallRetina.quality = 80
# fuer groessere Retina Bilder
tt_content.image.20.1.sourceCollection.largeRetina.quality = 65
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Count für Split hinzugefügt
Es wurde eine neue Eigenschaft returnCount zur stdWrap-Funktion
split hinzugefügt, die die Anzahl der Elemente nach dem Split enthält
1 = TEXT
1 {
value = x,y,z,1,2,3,a,b,c
split.token = ,
split.returnCount = 1
}
# result: 9
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Handling von Backend-Layouts vereinfacht (1)
Das Handling, um Backend-Layouts mit Templates für die
Frontend-Ausgabe zu versehen, wurde vereinfacht, indem die Option
pagelayout eingeführt wurde
Beispiel:
page.10 = FLUIDTEMPLATE
page.10 {
file.stdWrap.cObject = CASE
file.stdWrap.cObject {
key.data = pagelayout
default = TEXT
default.value = EXT:sitepackage/Resources/Private/Templates/Home.html
3 = TEXT
3.value = EXT:sitepackage/Resources/Private/Templates/1-col.html
4 = TEXT
4.value = EXT:sitepackage/Resources/Private/Templates/2-col.html
}
}
(Fortsetzung auf nächster Seite)
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Handling von Backend-Layouts vereinfacht (2)
pagelayout ersetzt dabei den folgenden Code:
field = backend_layout
ifEmpty.data = levelfield:-2,backend_layout_next_level,slide
ifEmpty.ifEmpty = default
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Diverse
Für die mit TYPO3 CMS 7.4 eingeführte stdWrap-Funktion bytes kann
nun die Basis (z.B. 1000 oder 1024) gesetzt werden:
bytes.base = 1000
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Parameter für indexed_search
Einige Parameter für indexed_search, die bisher hart-kodiert waren,
können nun konfiguriert werden
titleCropAfter = 50
titleCropSignifier = ...
summaryCropAfter = 180
summaryCropSignifier =
hrefInSummaryCropAfter = 60
hrefInSummaryCropSignifier = ...
markupSW_summaryMax = 300
markupSW_postPreLgd = 60
markupSW_postPreLgd_offset = 5
markupSW_divider = ...
Dabei können folgende Schlüssel angesprochen werden:
plugin.tx_indexedsearch.results.
plugin.tx_indexedsearch.settings.results.
Alle Optionen besitzen außerdem stdWrap-Funktionalität
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
Konfiguration des Path-Seperators bei indexed_search
Es wurde eine neue TypoScript-Option breadcrumbWrap hinzugefügt,
mit dem Path-Seperators bei indexed_search konfiguriert werden
kann
Darüber wird der Pfad für die Breadcrumb bei Suchergebnissen
angezeigt
Die Option verfügt über Option-Split und ist standardmäßig auf "/"
konfiguriert
plugin.tx_indexedsearch.settings.breadcrumbWrap = / || /
TYPO3 CMS 7 LTS - What’s New
TSconfig & TypoScript
no_cache Parameter-Konfiguration für indexed_search
Es wurde eine neuen TypoScript-Option hinzugefügt:
forwardSearchWordsInResultLink.no_cache
Damit kann eingestellt werden, ob der no_cache Paramater an die
Seiten-Links innerhalb von indexed_search hinzugefügt wird
// Fuer Extbase-Plugins
plugin.tx_indexedsearch.settings.forwardSearchWordsInResultLink.no_cache = 1
// Fuer eingefuegte Plugins
plugin.tx_indexedsearch.forwardSearchWordsInResultLink.no_cache = 1
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellen und Autoren
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Infos:
https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x
INSTALL.md and ChangeLog
typo3/sysext/core/Documentation/Changelog/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
TYPO3 Git Repositories:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk
TYPO3 CMS 7 LTS - What’s New
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Patrick Lobacher (Vorstand pluswerk AG)
http://www.pluswerk.ag
10/November/2015
Creative Commons BY-NC-SA 3.0
Introduction
TYPO3 CMS 7 LTS - What’s New
Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von
der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface
TypoScript
In-DepthChanges
Extbase/Fluid
Deprecated/Removed
Sys.Administration
Redakteure X
Integratoren X X X
Entwickler X X X
SysAdmins X
Download aller What’s New Slides unter typo3.org
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Extbase & Fluid
Extbase und Fluid sind der de facto Standard wenn es um moderne
Technologien im TYPO3 Universum geht. Auch wenn Extbase einige wenige
neue Features spendiert bekommen hat, wurden in TYPO3 CMS 7 LTS die
meisten Änderungen im Bereich Fluid vorgenommen.
Einige ViewHelpers wurden aktualisiert, verbessert oder gar neue
eingeführt. So gibt es zum Beispiel nun einen MediaViewHelper, der dafür
verwendet werden kann, um Video, Audio oder andere Media-Dateien im
Frontend zu rendern.
Zusätzlich wurde die System Extension form auf Extbase & Fluid portiert.
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Template Path Fallback
Sowohl Fluid Standalone View wie auch das TypoScript-Objekt
FLUIDTEMPLATE unterstützen nun Fallback Pfade
page.10 = FLUIDTEMPLATE
page.10.file = EXT:myextension/Resources/Private/Templates/Main.html
page.10.partialRootPaths {
10 = EXT:myextension/Resources/Private/Partials
20 = EXT:fallback/Resources/Private/Partials
}
Verwendet man die alten Optionen (z.B. partialRootPath)
zusammen mit den neuen, so wird die alte auf die erste Position in der
Fallback-Liste gestellt (Index = 0)
TYPO3 CMS 7 LTS - What’s New
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:
42 _blank - "This is the link title" &foo=bar
Ausgabe:
<a href="index.php?id=42&foo=bar" title="This is the title" target="_blank" class="ico-class"
type="button">
Lediglich parameter wird benötigt, der Rest ist optional
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Allgemeine data-* Attribut
Alle ViewHelper, die HTML Tags ausgeben, unterstützen nun das HTML5
data-* Attribut
Array, welches als data übergeben wird, wird ausgewertet und dessen
Schlüssel-/Werte-Paar ergeben das Attribut: data-key="value"
Beispiel:
<f:form.textfield data="{foo: ’bar’, baz: ’foos’}" />
Ausgabe:
<input data-foo="bar" data-baz="foos" ... />
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Class Tag Values via Reflection
Extbase Reflection-Service kann nun Tags bzw. Annotations
zurückliefern, die zu einer Klasse zugefügt wurden
Beispiel:
/**
* @SomeClassAnnotation A value
*/
class MyClass {
}
Die Annotation kann dann wie folgt ermittelt werden:
$service = new TYPO3CMSExtbaseReflectionReflectionService();
// Returns all tags and their values the specified class is tagged with
$classValues = $service->getClassTagsValues(’MyClass’);
// Returns the values of the specified class tag
$classValue = $service->getClassTagValue(’MyClass’, ’SomeClassAnnotation’);
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
PaginateViewHelper
Der Paginate-ViewHelper unterstützt nun folgende Input-Werte:
QueryResultInterface
ObjectStorage
ArrayAccess
array
Beispiel:
<f:widget.paginate objects="{blogs}" as="paginatedBlogs">
<f:for each="{paginatedBlogs}" as="blog">
<h4>{blog.title}</h4>
</f:for>
</f:widget.paginate>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
ContainerViewHelper lädt RequireJS Module
Der ContainerViewHelper kann RequireJS-Module via
includeRequireJsModules Attribut laden
Beispiel:
<f:be.container pageTitle="Extension Module" loadJQuery="true"
includeRequireJsModules="{
0:’TYPO3/CMS/Extension/Module1’,
1:’TYPO3/CMS/Extension/Module2’,
2:’TYPO3/CMS/Extension/Module3’,
3:’TYPO3/CMS/Extension/Module4’
}" >
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Methode has() im ObjectAccess
Für die Benutzung in Fluid, object.property und
object.isProperty unterstützten bereits die folgenden Methoden:
isProperty()
getProperty()
Neu in TYPO3 CMS 7.1: hasProperty()
Hier wird die Method $object->hasProperty() aufgerufen, wenn
object.hasProperty in Fluid benutzt wird
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Hochladen mehrerer Dateien im FormUpload-ViewHelper
Der FormUpload-Viewhelper unterstützt das neue Attribut multiple,
welches es ermöglicht, mehrere Dateien auf einmal zu übertragen
<f:form.upload property="files" multiple="multiple" />
Hinweis: es ist darauf zu achten, dass für das Property-Mapping ein
eigener TypeConverter erstellt werden muss!
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Callouts anstelle von FlashMessages
An einigen Stellen im Backend werden nun Callouts anstelle von
FlashMessages verwendet
Dafür wurde ein neuer Fluid ViewHelper be.infobox eingeführt:
<f:be.infobox title="Message title">
Inhalt der Nachricht
</f:be.infobox>
<f:be.infobox
title="Message title"
message="your box content"
state="-2"
iconName="check"
disableIcon="TRUE" />
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
format.case ViewHelper
Es gibt nun einen format.case ViewHelper, der die Schreibweise von
Strings verändert:
upper: Führt zu "UPPERCASE" (Großbuchstaben)
lower: Führt zu "lowercase" (Kleinbuchstaben)
capital: Führt zu einem großen Anfangsbuchstaben
uncapital: Führt zu einem kleinen Anfangsbuchstaben
// Fuehrt zu "SOME TEXT WITH MIXED CASE"
<f:format.case>Some TeXt WiTh miXed cAse</f:format.case>
// Fuehrt zu "SomeString"
<f:format.case mode="capital">someString</f:format.case>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Diverses
Parameter cHash wird nicht mehr an URLs angehängt, die auf eine
Action leiten, welche nicht gecached wird oder wenn der Request nicht
gecached wird.
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
ActionMenuItemGroupViewHelper (1)
Mit diesem neuen ViewHelper können im Backend Optionen-Gruppen
für Select-Felder verwendet werden
Beispiel:
<f:be.menus.actionMenu>
<f:be.menus.actionMenuItem label="Default: Welcome" controller="Default" action="index" />
<f:be.menus.actionMenuItem label="Community: get in touch" controller="Community"
action="index" />
<f:be.menus.actionMenuItemGroup label="Information">
<f:be.menus.actionMenuItem label="PHP Information" controller="Information"
action="listPhpInfo" />
<f:be.menus.actionMenuItem label="Documentation" controller="Information"
action="documentation" />
<f:be.menus.actionMenuItem label="Hooks" controller="Information" action="hooks" />
<f:be.menus.actionMenuItem label="Signals" controller="Information" action="signals" />
<f:be.menus.actionMenuItem label="XClasses" controller="Information" action="xclass" />
</f:be.menus.actionMenuItemGroup>
</f:be.menus.actionMenu>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
ActionMenuItemGroupViewHelper (2)
Beispiel auf der vorherigen Slide resultiert in folgender Ausgabe:
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Template-Support für FlashMessagesViewHelper
Der FlashMessagesViewHelper hat nun Template Unterstützung
Mit dem neuen Attribut as kann man eine Variable festlegen, über der
der Zugriff auf die Messages möglich ist
Beispiel:
<f:flashMessages as="flashMessages">
<ul class="myFlashMessages">
<f:for each="{flashMessages}" as="flashMessage">
<li class="alert {flashMessage.class}">
<h4>{flashMessage.title}</h4>
<span class="fancy-icon">{flashMessage.message}</span>
</li>
</f:for>
</ul>
</f:flashMessages>
Die Option renderMode ist ab sofort "deprecated"!
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Neue Eigenschaften im cObject FLUIDTEMPLATE (1)
Das cObject FLUIDTEMPLATE wurde um die Eigenschaften
templateRootPaths und templateName ergänzt
Man kann nun einen Template-Namen setzen, der zusammen mit dem
Format im angegebenen Template-Pfad gesucht wird
templateRootPaths hat die selbe Fallback-Logik wie
layoutRootPath und partialRootPath
templateName (string/stdWrap)
templateRootPaths (Array mit Datei-Pfaden und "EXT:" Unterstützung)
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Neue Eigenschaften im cObject FLUIDTEMPLATE (2)
TypoScript Beispiel:
lib.stdContent = FLUIDTEMPLATE
lib.stdContent {
templateName = TEXT
templateName.stdWrap {
cObject = TEXT
cObject {
data = levelfield:-2,backend_layout_next_level,slide
override.field = backend_layout
split {
token = frontend__
1.current = 1
1.wrap = |
}
}
ifEmpty = Default
}
templateRootPaths {
10 = EXT:frontend/Resources/Private/Templates
20 = EXT:sitemodification/Resources/Private/Templates
}
}
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Entfernung von xmlns-Attributes und des HTML-Tags (1)
Durch die Einführung von xmlns:*-Attributen in Tags ist es einer IDE
möglich Fluid direkt zu unterstützen (z.B. Syntax-Highlighting,
Autovervollständigung, usw.).
Diese Attribute werden allerdings auch ausgegeben.
Der Workaround, den eigentlichen Inhalt in Sections auszulagern, ist in
Layouts nicht möglich und zudem nicht intuitiv
Daher wird ein Namespace, sofern dieser den Aufbau
http://typo3.org/ns/<phpNamespace> hat, automatisch entfernt
(alle anderen Namespaces bleiben erhalten)
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Entfernung von xmlns-Attributes und des HTML-Tags (2)
Verwendet man im HTML-Tag das Attribut
data-namespace-typo3-fluid="true", wird das gesamte
HTML-Tag (öffnendes und schließendes) nicht gerendert
<html data-namespace-typo3-fluid="true"
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">
<f:if condition="{newsItem.title}">
<f:then>
<n:titleTag>{newsItem.title}</n:titleTag>
</f:then>
<f:else>
<n:titleTag>News-Detail</n:titleTag>
</f:else>
</f:if>
</html>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Neue Methoden im Fluid-StandaloneView
Der StandaloneView wird mit den Methoden
setTemplateRootPaths($templatePaths) und
setTemplate($templateName, $throwException = TRUE)
erweitert
Selbe Funktionalität wie im cObject FLUIDTEMPLATE
Beispiel (Rendern eines Email-Templates):
$view = GeneralUtility::makeInstance(StandaloneView::class);
$view->setLayoutRootPaths(array(GeneralUtility::getFileAbsFileName(
’EXT:my_extension/Resources/Private/Layouts’)));
$view->setPartialRootPaths(array(GeneralUtility::getFileAbsFileName(
’EXT:my_extension/Resources/Private/Partials’)));
$view->setTemplateRootPaths(array(GeneralUtility::getFileAbsFileName(
’EXT:my_extension/Resources/Private/Templates’)));
$view->setTemplate(’Email/Notification’);
$emailBody = $view->render();
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Data Processing für FLUIDTEMPLATE cObject (1)
Das cObject FLUIDTEMPLATE wird mit der Option dataProcessing
(enthält ein Array aus FQCN) ausgerüstet, mit dessen Hilfe man das
$data Array manipulieren kann, welches das aktuell zu rendernde
Objekt (wie page oder tt_content) enthält
Der Prozessor muss das Interface
FluidTemplateDataProcessorInterface implementieren und
folgende Methode enthalten:
function process(array &$data, array $processorConfiguration,
array $configuration, StandaloneView $view) {
[...]
}
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Data Processing für FLUIDTEMPLATE cObject (2)
Beispiel:
my_custom_ctype = FLUIDTEMPLATE
my_custom_ctype {
templateRootPaths {
10 = EXT:your_extension_key/Resources/Private/Templates
}
templateName = CustomName
settings {
extraParam = 1
}
dataProcessing {
1 = VendorYourExtensionKeyDataProcessingMyFirstCustomProcessor
2 = AnotherVendorAnotherExtensionKeyDataProcessingMySecondCustomProcessor
2 {
options {
myOption = SomeValue
}
}
}
}
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Section-Anker für Pagination Widget
Es ist nun möglich einen Section-Anker im Pagination Widget zu
verwenden
Dazu gibt es den Schlüssel section im Attribut configuration
Im folgenden Beispiel wird der Anker #archive an jeden Widget-Link
angehängt:
<f:widget.paginate objects="{plantpestWarnings}" as="paginatedWarnings"
configuration="{section: ’archive’, itemsPerPage: 10, insertAbove: 0, insertBelow: 1,
maximumNumberOfLinks: 10}">
[...]
</f:widget.paginate>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Attribut base für Date-ViewHelper
Der Date-ViewHelper wurde um das optionale Attribut base ergänzt
Damit kann man relative Berechnungen durchführen
Wird das Datum als DateTime angegeben, wird base ignoriert
Erlaubte Werte: siehe PHP Dokumentation
Das folgende Beispiel gibt "2016" zurück, wenn das Objekt "dateObject"
ein beliebiges Datum in 2017 enthält:
<f:format.date format="Y" base="{dateObject}">-1 year</f:format.date>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
dataProcessing bei FLUIDTEMPLATE
Mit TYPO3 CMS 7.3 wurde die Option dataProcessing beim
Content-Objekt FLUIDTEMPLATE eingeführt
Hierfür ändert sich das zu implementierende Interface von
FluidTemplateDataProcessorInterface in
DataProcessorInterface und damit auch die Methode process()
public function process(
ContentObjectRenderer $cObj,
array $contentObjectConfiguration,
array $processorConfiguration,
array $processedData
);
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Severity-Filter für FlashMessages
Bislang konnten nur alle FlashMessages auf einmal ermittelt und/oder
gelöscht werden
Nun kann man diese entsprechend der Severity (Gewichtung) filtern
FlashMessageQueue::getAllMessages($severity);
FlashMessageQueue::getAllMessagesAndFlush($severity);
FlashMessageQueue::removeAllFlashMessagesFromSession($severity);
FlashMessageQueue::clear($severity);
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Query-Support für between hinzugefügt
Es wurde between zum Extbase Query Objekt hinzugefügt, welches
prüft, ob sich ein Wert innerhalb einer oberen und unteren Grenze
(einschließlich) befindet
Dies wird zu (min <= expr AND expr <= max) übersetzt.
Dadurch hat dies keine Performance-Auswirkungen und funktioniert
auf jedem DBMS
$query->matching(
$query->between(’uid’, 3, 5)
);
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Mehrere Message-Queues
Es können nun mehrere Message-Queues in Extbase realisiert werden:
$queueIdentifier = ’myQueue’;
$this->controllerContext->getFlashMessageQueue($queueIdentifier);
In Fluid kann wie folgt darauf zugegriffen werden:
<f:flashMessages queueIdentifier="myQueue" />
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Media-ViewHelper (1)
Um Medien komfortabel im Frontend rendern zu können (z.B. Video,
Audio, registrierte Renderer), wurde ein MediaViewHelper zugefügt
Zuerst versucht der ViewHelper den Renderer aufzurufen; schlägt dies
fehl, wird ein Image-Tag gerendert
Beispiel:
<code title="Image Object">
<f:media file="{file}" width="400" height="375" />
</code>
<output>
<img alt="alt set in image record" src="fileadmin/_processed_/323223424.png"
width="396" height="375" />
</output>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Media-ViewHelper (2)
Beispiel (Fortsetzung):
<code title="MP4 Video Object">
<f:media file="{file}" width="400" height="375" />
</code>
<output>
<video width="400" height="375" controls>
<source src="fileadmin/user_upload/my-video.mp4" type="video/mp4">
</video>
</output>
<code title="MP4 Video Object with loop and autoplay option set">
<f:media file="{file}" width="400" height="375"
additionalConfig="{loop: ’1’, autoplay: ’1’}" />
</code>
<output>
<video width="400" height="375" controls loop>
<source src="fileadmin/user_upload/my-video.mp4" type="video/mp4">
</video>
</output>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
System-Extension form (1)
Die System-Extension form (inkl. Daten-Model, Controller-Logig,
Property Validation, Views und Templating) wurde so adaptiert, dass
der Extbase/Fluid MVC Stack unterstützt wird
Die Ausgabe basiert nun komplett auf Fluid und kann somit
entsprechend angepasst werden. Pro Form-Element gibt es ein
eigenes Partial, welches nun auch individuell über die
TypoScript-Option partialPath = ... angepasst werden kann
Es wurden drei neue ViewHelper implementiert:
AggregateSelectOptionsViewHelper (für optgroup Tags)
SelectViewHelper (für von optgroup Tags)
PlainMailViewHelper (zum Rendern von Plaintext Mails)
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
System-Extension form (2)
Außerdem gibt drei Views:
show (das Formular selbst)
confirmation (die Bestätigungsseite)
postProcessor/mail (die Email)
Die Template-Pfade und Sichtbarkeiten der Felder können für jeden
View individuell angepasst werden
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Annotation @cli
Eine neue Annotation @cli wurde eingeführt:
wird diese beim CommandController verwendet, so kann dieser nur auf
der Kommandozeile, aber nicht im Scheduler verwendet werden
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
Relationen zu gleichen Tabellen
Es nun möglich ein Domain Model zu verwenden, in der ein Objekt eine
Relation zu einem anderen Objekt der selben Klasse hat
namespace VendorExtensionDomainModel;
class A {
/**
* @var VendorExtensionDomainModelA
*/
protected $parent;
}
namespace VendorExtensionDomainModel;
class A {
/**
* @var VendorExtensionDomainModelB
*/
protected $x;
/**
* @var VendorExtensionDomainModelB
*/
protected $y;
}
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
absolute Option für Image-ViewHelper
Der ImageViewhelper und Uri/ImageViewHelper haben nun eine Option
absolute, mit der eine absolute URL ausgegeben werden kann.
Beispiel 1 (ImageViewhelper):
<f:image image="{file}" width="400" height="375" absolute="1" ></f:image>
// Ausgabe
<img alt="alt set in image record"
src="http://www.mydomain.com/fileadmin/_processed_/323223424.png"
width="400" height="375" />
Beispiel 2 (Uri/ImageViewHelper):
<f:uri.image image="{file}" width="400" height="375" absolute="1" ></f:uri>
// Ausgabe
http://www.mydomain.com/fileadmin/_processed_/323223424.png
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
ViewHelper um Whitespaces in HTML zu entfernen
Es wurde ein ViewHelper spaceless eingeführt, um überflüssige
Leerzeichen zwischen HTML-Tages zu entfernen. Beispiel:
<f:spaceless>
<div>
<div>
<div>text
text</div>
</div>
</div>
Ausgabe:
<div><div><div>text
text</div></div></div>
TYPO3 CMS 7 LTS - What’s New
Extbase & Fluid
RootLevel Konfiguration
Der RootLevel einer Tabelle kann nun im TCA konfiguriert werden
(damit wird festgelegt, wo die zugehörigen Datensätze gesucht werden)
0: Nur im Seitenbaum
1: Nur auf der Root-Seite (PID 0)
-1: In beiden
Zudem muss das TCA konfiguriert werden:
$GLOBALS[’TCA’][’tx_myext_domain_model_record’][’ctrl’][’rootLevel’] = -1;
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellen und Autoren
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Infos:
https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x
INSTALL.md and ChangeLog
typo3/sysext/core/Documentation/Changelog/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
TYPO3 Git Repositories:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk
TYPO3 CMS 7 LTS - What’s New
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Patrick Lobacher (Vorstand pluswerk AG)
http://www.pluswerk.ag
10/November/2015
Creative Commons BY-NC-SA 3.0
Introduction
TYPO3 CMS 7 LTS - What’s New
Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von
der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface
TypoScript
In-DepthChanges
Extbase/Fluid
Deprecated/Removed
Sys.Administration
Redakteure X
Integratoren X X X
Entwickler X X X
SysAdmins X
Download aller What’s New Slides unter typo3.org
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Änderungen im System
Durch die Überarbeitung aller Komponenten und der Entfernung veralteter
Technologien, ist das Backend von TYPO3 CMS 7 LTS nun deutlich schneller
geworden im Vergleich zu älteren Versionen.
Der Performance-Boost ist aber nicht die einizige Änderung im Backend -
viele weitere Änderungen wurden im Core durchgeführt. PHP Code wurde
aufgeräumt, einige Komponenten in Extbase neu geschrieben und viele
neue Features wurden mit Hilfe von aktuallen Technologien und
Programmier-Paradigmen implementiert.
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Integration von jQuery UI 1.11.2
jQuery UI 1.11 unterstützt AMD (Asynchronous Module Definition), mit
welcher JavaScript Dateien erst geladen werden, wenn sie benötigt
werden (Geschwindigkeitsvorteil)
jQuery UI 1.11 ersetzt jQuery UI 1.10 + Scriptaculous in TYPO3 CMS 7.0
Es werden nur der Core und Interaction Components inkludiert, die
notwendig sind, um ExtJS und Scriptaculous zu ersetzen.
Widgets werden nicht inkludiert, sondern über Bootstrap realisiert
(z.B. DatePicker, Spinner, Dialog, Buttons, Tabs, Tooltip)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
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; // priority: the higher, the more important (max: 100)
}
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 LTS - What’s New
Änderungen im System
Evaluierungsfunktion "email" für das TCA
Für das TCA wurde 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
Example:
’emailaddress’ => array(
’exclude’ => 1,
’label’ => ’LLL:EXT:myextension/Resources/Private/Language/locallang_db
.xlf:tx_myextension
’config’ => array(
’type’ => ’input’,
’size’ => 30,
’eval’ => ’email,trim’
),
)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Einführung einer abstrakten Condition in TypoScript
Es gibt nun eine AbstractCondition, von der eigene Conditions ableiten
können
class TestCondition
extends TYPO3CMSCoreConfigurationTypoScriptConditionMatchingAbstractCondition {
public function matchCondition(array $conditionParameters) {
if ($conditionParameters[0] === ’= 7’ && $conditionParameters[1] === ’!= 6’) {
throw new TestConditionException(’All Ok’, 1411581139);
}
}
}
Die Verwendung in 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 LTS - What’s New
Ä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 LTS - What’s New
Änderungen im System
Signal Slots für SoftReferenceIndex
Zwei neue Signal Slot Dispatch Calls innerhalb von SoftReferenceIndex:
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 augerufen in:
TYPO3CMSCoreDatabaseSoftReferenceIndex->findRef_typolink
TYPO3CMSCoreDatabaseSoftReferenceIndex->getTypoLinkParts
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Signal Slots für afterPersistObjects
Bislang gab es nur ein Signal, wenn ein Objekt im Repository (Extbase)
aktualisiert wurde: 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 LTS - What’s New
Ä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 audgerufen in:
TYPO3CMSCoreUtilityExtensionManagementUtilityBackend->
buildBaseTcaFromSingleFiles
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
API um gecachte TCA Änderungen zuzufügen
PHP Dateien in extkey/Configuration/TCA/Overrides/ werden
ausgeführt, direkt nachdem der TCA-Cache aufgebaut wurde
Die Dateien dürfen nur Code enthalten, der das TCA manipuliert,
wie beispielsweise: addTCAColumns oder addToAllTCATypes
Sobald Extensions dieses Features verwenden, ist mit einem deutlichen
Geschwindigkeitsschub von Backend Requests zu rechnen
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Nur-lesender Zugriff auf File Mounts
File Mounts können (wieder) mit nur-lesenden Zugriff konfiguriert
werden ("read-only")
Jenes war bereits in TYPO3 CMS 4.x möglich, wurde aber in
TYPO3 CMS 6.x entfernt
Zum Beispiel: Ordner "test" vom storage UID 3 als Mount mit nur
lesenden Zugriff in der Dateiliste und dem Element Browser:
options.folderTree.altElementBrowserMountPoints = 3:/test
Falls kein Storage angegeben wird, geht man davon aus, dass sich der
Ordner im Default Storage befindet.
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Sonstiges
jQuery wurde von Version 1.11.0 auf Version 1.11.1 aktualisiert
Datatables wurde von Version 1.9.4 zu Version 1.10.2 aktualisiert
Einige alte, nicht mehr benutzte Variablen wurden von EM_CONF
entfernt
Extension Icons können nun auch im SVG Bildformat vorliegen
(ext_icon.svg)
Das Senden eines unbekannten eID Identifikators im Request resultiert
nun in eine Exception
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
TCA: Maximum chars in text element
TCA-Typ text unterstützt nun das HTML5-Attribut maxlength, um die
maximale Anzahl der einzugebenden Zeichen zu beschränken (Hinweis:
Zeilenumbrüche zählen hierbei als zwei Zeichen)
’teaser’ => array(
’label’ => ’Teaser’,
’config’ => array(
’type’ => ’text’,
’cols’ => 60,
’rows’ => 2,
’max’ => ’30’ // <-- maxlength
)
),
Es ist zu beachten, dass nicht alle Browser dieses Attribut unterstützen.
Siehe: Browserübersicht
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
New SplFileInfo implementation
Neue Klasse: TYPO3CMSCoreTypeFileFileInfo
Diese erweitert SplFileInfo, die wiederrum Meta-Informationen von
Dateien ermittelt
$fileIdentifier = ’/tmp/foo.html’;
$fileInfo = GeneralUtility::makeInstance(
TYPO3CMSCoreTypeFileFileInfo::class,
$fileIdentifier
);
echo $fileInfo->getMimeType(); // output: text/html
Entwickler können über folgenden Hook auf die Funktionalität
zugreifen:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’]
[TYPO3CMSCoreTypeFileFileInfo::class][’mimeTypeGuessers’]
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
UserFunc in TCA Display Condition
userFunc displayCondition ermöglicht es auf jeden erdenklichen
Status und jede Condition zu prüfen
Sollte irgendeine Situation nicht mit den existierenden Checks
abgefangen werden können, ist es auch möglich, eigene Funktionen zu
schreiben (diese müssen lediglich TRUE/FALSE zurückgeben, um das
entsprechende TCA Field sichtbar zu machen oder zu verbergen)
$GLOBALS[’TCA’][’tt_content’][’columns’][’bodytext’][’displayCond’] =
’USER:VendorExampleUserElementConditionMatcher->
checkHeaderGiven:any:more:information’;
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
API für Twitter Bootstrap Modals (1)
Zwei neue API Methoden um Modal Popups zu erzeugen/entfernen:
TYPO3.Modal.confirm(title, content, severity, buttons)
TYPO3.Modal.dismiss()
Optionen title und content sind mindestens erforderlich
Optionen buttons.text und buttons.trigger sind erforderlich,
wenn buttons verwendet wird
Beispiel 1:
TYPO3.Modal.confirm(
’The title of the modal’, // title
’This the the body of the modal’, // content
TYPO3.Severity.warning // severity
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
API für Twitter Bootstrap Modals (2)
Beispiel 2:
TYPO3.Modal.confirm(’Warning’, ’You may break the internet!’,
TYPO3.Severity.warning,
[
{
text: ’Break it’,
active: true,
trigger: function() { ... }
},
{
text: ’Abort!’,
trigger: function() {
TYPO3.Modal.dismiss();
}
}
]
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
JavaScript Storage API (1)
Mittels JavaScript kann auf die BE User Konfiguration zugegriffen
werden ($BE_USER->uc, einfache Key-Value Paare)
Zusätzlich kann nun auch der HTML5 Standard localStorage verwendet
werden, um Daten (Client-seitig) im Browser des Benutzers zu
speichern und auszulesen
Zwei neue global TYPO3 Objekte:
top.TYPO3.Storage.Client
top.TYPO3.Storage.Persistent
Jedes Objekt hat folgende API Methoden:
get(key): Daten holen
set(key,value): Daten schreiben
isset(key): Prüfen, ob key genutzt wird
clear(): Löschen des Speichers
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
JavaScript Storage API (2)
Beispiel:
// get value of key ’startModule’
var value = top.TYPO3.Storage.Persistent.get(’startModule’);
// write value ’web_info’ as key ’start_module’
top.TYPO3.Storage.Persistent.set(’startModule’, ’web_info’);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Inline Rendering von Checkboxes
Die Konfiguration inline sorgt bei "cols" dafür, dass Checkboxen
nebeneinander dargestellt werden, um Platz im Backend User Interface
zu sparen
’weekdays’ => array(
’label’ => ’Weekdays’,
’config’ => array(
’type’ => ’check’,
’items’ => array(
array(’Mo’, ’’),
array(’Tu’, ’’),
array(’We’, ’’),
array(’Th’, ’’),
array(’Fr’, ’’),
array(’Sa’, ’’),
array(’Su’, ’’)
),
’cols’ => ’inline’
)
),
...
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Content Object Registration
Es wurde eine neue globale Option eingeführt, um cObjects wie TEXT
zu registrieren bzw. zu erweitern
Eine Liste aller verfügbaren cObjects ist verfügbar als:
$GLOBALS[’TYPO3_CONF_VARS’][’FE’][’ContentObjects’]
Beispiel: ein neues cObject EXAMPLE registrieren
$GLOBALS[’TYPO3_CONF_VARS’][’FE’][’ContentObjects’][’EXAMPLE’] =
VendorMyExtensionContentObjectExampleContentObject::class;
Die registrierte Klasse muss von der folgenden Klasse ableiten:
TYPO3CMSFrontendContentObjectAbstractContentObject
Idealerweise speichert man seine Datei im Verzeichnis
typo3conf/myextension/Classes/ContentObject/
um für zukünftige Autoload-Funktionen vorbereitet zu sein
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (1)
Neuer Hook wurde am Ende von PageRepository->init()
hinzugefügt, mit dem die Sichtbarkeit von Seiten beeinflusst werden
kann
Der Hook kann wie folgt registriert werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’]
[TYPO3CMSFrontendPagePageRepository::class][’init’]
Die Hook-Klasse muss das folgende Interface implementieren:
TYPO3CMSFrontendPagePageRepositoryInitHookInterface
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (2)
Neuer Hook wurde zu PageLayoutView hinzugefügt, um das Rendering
des Footers von Inhaltselementen im Backend manipulieren zu können
Beispiel:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’]
[’cms/layout/class.tx_cms_layout.php’][’tt_content_drawFooter’];
Die Hook-Klasse muss das folgende Interface implementieren:
TYPO3CMSBackendViewPageLayoutViewDrawFooterHookInterface
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (3)
Es wurde ein Hook als Post-Prozessor zu
BackendUtility::countVersionsOfRecordsOnPage hinzugefügt
Dieser wird z.B. verwendet, um Workspace-Zustände im Seitenbaum zu
visualisieren
Der Hook kann wie folgt registriert werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’]
[’t3lib/class.t3lib_befunc.php’][’countVersionsOfRecordsOnPage’][] =
’MyPackageHookClass->hookMethod’;
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (4)
Neues Signal wurde am Ende der Methode
DataPreprocessor::fetchRecord() hinzugefügt
Jenes kann dazu verwendet werden, um das Array
regTableItems_data zu manipulieren, damit die manipulierten
Daten in TCEForms angezeigt werden können
$this->getSignalSlotDispatcher()->dispatch(
TYPO3CMSBackendFormDataPreprocessor::class,
’fetchRecordPostProcessing’,
array($this)
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (5)
Neues Signal wurde eingeführt, um zusätzlichen Code bei der
Registrierung des Mailer-Objekts auszuführen (z.B. Swift Mailer Plugins)
$signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(
TYPO3CMSExtbaseSignalSlotDispatcher::class
);
$signalSlotDispatcher->connect(
TYPO3CMSCoreMailMailer::class,
’postInitializeMailer’,
VendorPackageSlotsMailerSlot::class,
’registerPlugin’
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Multiple UID in PageRepository::getMenu()
Methode PageRepository::getMenu() kann nun auch ein Array
aufnehmen, um meherer Root-Seiten zu definieren
$pageRepository = new TYPO3CMSFrontendPagePageRepository();
$pageRepository->init(FALSE);
$rows = $pageRepository->getMenu(array(2, 3));
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
SVG Support im Core
Der Core unterstützt nun SVG-Bilder ("Scalable Vector Graphics")
Wenn ein SVG-Bild skaliert wird, wird kein prozessiertes Bild abgelegt,
dafür aber die neuen Größenangaben in einem Datensatz
sys_file_processedfile gespeichert
(außer, das Bild wird - z.B. durch Cropping - weiterverarbeitet).
Zudem wurde ein zusätzlicher Fallback eingebaut, falls
ImageMagick/GraphicsMagick nicht in der Lage sein sollte, die
Dimensionen zu berechnen: in diesem Fall wird das XML ausgelesen.
SVG wurde außerdem zur Liste der zulässigen Bildtypen hinzugefügt:
$GLOBALS[’TYPO3_CONF_VARS’][’GFX’][’imagefile_ext’]
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Erweiterung der FAL-Treiber
Um die Performance der Dateiliste bei (Remote-)Storages innerhalb
von FAL zu erhöhen, ist es notwendig, die Sortierung und das Ermitteln
der Anzahl direkt im Treiber zu erledigen. Dafür wurden zwei neue
Parameter sort und sortRev eingebracht:
public function getFilesInFolder($folderIdentifier, $start = 0, $numberOfItems = 0,
$recursive = FALSE, array $filenameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE);
public function getFoldersInFolder($folderIdentifier, $start = 0, $numberOfItems = 0,
$recursive = FALSE, array $folderNameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE);
Außerdem wurden zwei neue Methoden eingeführt:
public function getFilesInFolderCount($folderIdentifier, $recursive = FALSE,
array $filenameFilterCallbacks = array());
public function getFoldersInFolderCount($folderIdentifier, $recursive = FALSE,
array $folderNameFilterCallbacks = array());
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Routing API (1)
Der Core enthält nun eine Backend Routing API, welche die Entry Points
ins Backend verwaltet
Die Routing API wurde vom Symfony Routing Framework inspiriert und
ist weitgehend kompatibel mit dieser
(auch wenn für TYPO3 zur Zeit nur ca. 20% genutzt werden)
Grundsätzlich existieren hierfür drei Klassen:
class Route: enthält Angaben zum Pfad und Optionen
class Router: API, um die Route zu matchen
class UrlGenerator: generiert die URL
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Routing API (2)
Routen werden dabei in folgender Datei in der entsprechenden
Extension definiert: Configuration/Backend/Routes.php
(siehe Systemextension backend als Beispiel)
Weitere Informationen zur Backend Routing API:
http://wiki.typo3.org/Blueprints/BackendRouting
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Systemextension für Media Inhaltselemente
Neue Systemextension "mediace" enthält folgende cObjects:
MULTIMEDIA
MEDIA
SWFOBJECT
FLOWPLAYER
QTOBJECT
Die Inhaltselemente media und multimedia wurden ebenfalls in die
Systemextension verschoben, ebenso der "Media Wizard Provider"
Die Extension ist standardmäßig nicht installiert!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Fremd-Bibliotheken an neuer Stelle
Sämtliche Fremd-Bibliotheken werden nicht mehr in
Packages/Libraries, sondern in typo3/contrib/vendor
abgelegt
Grundsätzlich ist dafür die Installation der Bibliotheken mittels
composer install notwendig
Probleme gibt es beim Upgrade einer Installation, wenn dort phpunit
verwendet wurde! Dies kann wie folgt behoben werden:
# cd htdocs/
# rm -rf typo3/contrib/vendor/ bin/ Packages/Libraries/ composer.lock
# composer install
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
API für JavaScript Notifikationen
Neue API, um JavaScript Notifikationen zu erzeugen:
// Bisheriger (veralteter) Weg:
top.TYPO3.Flashmessages.display(TYPO3.Severity.notice)
// Neuer Weg:
top.TYPO3.Notification.notice(title, message)
Es existieren folgende API-Funktionen:
(Parameter duration ist optional und standardmäßig auf 5s eingestellt)
top.TYPO3.Notification.notice(title, message, duration)
top.TYPO3.Notification.info(title, message, duration)
top.TYPO3.Notification.success(title, message, duration)
top.TYPO3.Notification.warning(title, message, duration)
top.TYPO3.Notification.error(title, message, duration)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Systeminformationen (1)
Das Dropdown mit Systeminformationen kann über folgenden Slot
erweitert werden:
$signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(
TYPO3CMSExtbaseSignalSlotDispatcher::class);
$signalSlotDispatcher->connect(
TYPO3CMSBackendBackendToolbarItemsSystemInformationToolbarItem::class,
’getSystemInformation’,
VendorExtensionSystemInformationItem::class,
’getItem’
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Systeminformationen (2)
Zur Ansprache benötigt man die Klasse Item und dazugehörig die
Methode getItem() innerhalb einer Extension
EXT:extensionClassesSystemInformationItem.php:
class Item {
public function getItem() {
return array(array(
’title’ => ’The title shown on hover’,
’value’ => ’Description shown in the list’,
’status’ => SystemInformationHookInterface::STATUS_OK,
’count’ => 4,
’icon’ => TYPO3CMSBackendUtilityIconUtility::getSpriteIcon(
’extensions-example-information-icon’)
));
}
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Systeminformationen (3)
Das Icon extensions-example-information-icon wird in der
Datei ext_localconf.php registriert:
TYPO3CMSBackendSpriteSpriteManager::addSingleIcons(
array(
’information-icon’ => TYPO3CMSCoreUtilityExtensionManagementUtility::extRelPath(
$_EXTKEY) . ’Resources/Public/Images/Icons/information-icon.png’
),
$_EXTKEY
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Systeminformationen (4)
Nachrichten werden am unteren Ende des Dropdowns angezeigt
Über den folgenden Slot können eigene Nachrichten eingebracht
werden:
$signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(
TYPO3CMSExtbaseSignalSlotDispatcher::class);
$signalSlotDispatcher->connect(
TYPO3CMSBackendBackendToolbarItemsSystemInformationToolbarItem::class,
’loadMessages’,
VendorExtensionSystemInformationMessage::class,
’getMessage’
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Systeminformationen (5)
Zur Ansprache benötigt man die Klasse Message und dazugehörig die
Methode getMessage() innerhalb einer Extension
EXT:extensionClassesSystemInformationMessage.php:
class Message {
public function getMessage() {
return array(array(
’status’ => SystemInformationHookInterface::STATUS_OK,
’text’ => ’Something went wrong. Take a look at the reports module.’
));
}
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Einstellungen für Bild-Manipulation (1)
Folgende Einstellungen können über TypoScript getätigt werden:
# Cropping fuer alle Bilder deaktivieren
tt_content.image.20.1.file.crop =
# Ueberschreiben/Setzen der Cropping Eigenschaften
# offsetX,offsetY,width,height
tt_content.image.20.1.file.crop = 50,50,100,100
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Einstellungen für Bild-Manipulation (2)
Das Cropping kann auch in Fluid verwendet werden:
# Cropping fuer alle Bilder deaktivieren
<f:image image="{imageObject}" crop="" ></f:image>
# Ueberschreiben/Setzen der Cropping Eigenschaften
# offsetX,offsetY,width,height
<f:image image="{imageObject}" crop="50,50,100,100" ></f:image>
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Einstellungen für Bild-Manipulation (3)
Im TCA wird das Image-Cropping wie folgt zur Verfügung gestellt:
Column Type: image_manipulation
Config file_field: string (default: uid_local)
Config enableZoom: boolean (default: FALSE)
Config allowedExtensions: string
(default: $GLOBALS[’TYPO3_CONF_VARS’][’GFX’][’imagefile_ext’])
Config ratios: array, default:
array(
’1.7777777777777777’ => ’16:9’,
’1.3333333333333333’ => ’4:3’,
’1’ => ’1:1’,
’NaN’ => ’Free’
)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Zusätzliche Parameter für HTMLparser userFunc
Die userFunc im HTMLparser kann nun zusätzliche Parameter
aufnehmen:
myobj = TEXT
myobj.value = <a href="/" class="myclass">MyText</a>
myobj.HTMLparser.tags.a.fixAttrib.class {
userFunc = TxMyExtMyclass->htmlUserFunc
userFunc.myparam = test
}
Diese können in einer Extension wie folgt abgerufen werden:
function htmlUserFunc(array $params, HtmlParser $htmlParser) {
// $params[’attributeValue’] enthaelt den Wert der
// verarbeiteten Eigenschaft - hier also "myclass"
// $params[’myparam’] enthaelt den Wert "test"
...
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Locking API (1)
Es wurde eine neue Locking-API eingeführt, welche verschiedene
Locking-Methoden (SimpleFile, Semaphore, ...) zur Verfügung stellt
Eine Locking-Methode muss dabei das LockingStrategyInterface
implementieren
$lockFactory = GeneralUtility::makeInstance(LockFactory::class);
$locker = $lockFactory->createLocker(’someId’);
$locker->acquire() || die(’Could not acquire lock.’);
...
$locker->release();
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Locking API (2)
Man kann außerdem "non-blocking" Locks realisieren:
$lockFactory = GeneralUtility::makeInstance(LockFactory::class);
$locker = $lockFactory->createLocker(
’someId’,
LockingStrategyInterface::LOCK_CAPABILITY_SHARED |
LockingStrategyInterface::LOCK_CAPABILITY_NOBLOCK
);
try {
$result = $locker->acquire(LockingStrategyInterface::LOCK_CAPABILITY_SHARED |
LockingStrategyInterface::LOCK_CAPABILITY_NOBLOCK);
catch (RuntimeException $e) {
if ($e->getCode() === 1428700748) {
// einige Prozesse haben noch ein Lock
// daher sollte etwas in der Zwischenzeit gemacht werden
...
}
}
if ($result) {
$locker->release();
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Signal nach Installation von Extensions
In der Methode
TYPO3CMSExtensionmanagerUtilityInstallUtility::install()
wurde ein Signal eingebaut, welches emmitiert wird, sobald eine
Extension fertig installiert ist und alle Imports/Updates durchgelaufen
sind
// Aufruf
$this->emitAfterExtensionInstallSignal($extensionKey);
// Methode
protected function emitAfterExtensionInstallSignal($extensionKey) {
$this->signalSlotDispatcher->dispatch(
__CLASS__,
’afterExtensionInstall’,
array($extensionKey, $this)
);
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Registry für Text-Extraktoren
Der Core enthält nun eine Registry um Text-Extraktoren anzumelden
Dabei prüft canExtractText() ob eine Extrahierung möglich ist und
extractText() führt diese durch
Die Registrierung erfolgt in ext_localconf.php:
$textExtractorRegistry = TYPO3CMSCoreResourceTextExtractionTextExtractorRegistry::
getInstance();
$textExtractorRegistry->registerTextExtractor(
TYPO3CMSCoreResourceTextExtractionPlainTextExtractor::class
);
Die Verwendung erfolgt folgendermaßen:
$textExtractorRegistry = TYPO3CMSCoreResourceTextExtractionTextExtractorRegistry::
getInstance();
$extractor = $textExtractorRegistry->getTextExtractor($file);
if($extractor !== NULL) {
$content = $extractor->extractText($file);
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Diverses
Alle Web-Bibliotheken (wie z.B. Twitter Bootstrap, jQuery, Font
Awesome usw.) verwenden nun "Bower" (http://bower.io) zur
Installation, und sind nicht mehr im TYPO3 Core Git enthalten
bower install führt eine Installation durch
bower update führt ein Update durch
(die zugehörige Datei bower.json befindet sich im Verzeichnis Build)
Ein laufender Scheduler Task kann nun in der Kommandozeile mit der
Option -s wieder gestoppt werden
Der "Processing" Ordner eines Storages kann nun auch außerhalb von
diesem liegen (z.B. bei read-only Storages)
Man kann nun auf die ID der ursprünglich angefragten Seite über das
TSFE zugreifen: $TSFE->getRequestedId()
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Symfony/Console im CommandController (1)
Der CommandController verwendet nun intern Symfony/Console und stellt
damit verschiedene Methoden zur Verfügung:
TableHelper
outputTable($rows, $headers = NULL)
DialogHelper
select($question, $choices, $default = NULL, $multiSelect = false,
$attempts = FALSE)
ask($question, $default = NULL, array $autocomplete = array())
askConfirmation($question, $default = TRUE)
askHiddenResponse($question, $fallback = TRUE)
askAndValidate($question, $validator, $attempts = FALSE, $default =
NULL, array $autocomplete = NULL)
askHiddenResponseAndValidate($question, $validator, $attempts =
FALSE, $fallback = TRUE)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Symfony/Console im CommandController (2)
ProgressHelper
progressStart($max = NULL)
progressSet($current)
progressAdvance($step = 1)
progressFinish()
(siehe Code-Beispiel auf den folgenden Slides)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Symfony/Console im CommandController (3)
<?php
namespace AcmeDemoCommand;
use TYPO3CMSExtbaseMvcControllerCommandController;
class MyCommandController extends CommandController {
public function myCommand() {
// Table rendern
$this->output->outputTable(array(
array(’Bob’, 34, ’m’),
array(’Sally’, 21, ’f’),
array(’Blake’, 56, ’m’)
),
array(’Name’, ’Age’, ’Gender’));
// Selektieren
$colors = array(’red’, ’blue’, ’yellow’);
$selectedColorIndex = $this->output->select(’Please select one color’, $colors, ’red’);
$this->outputLine(’You choose the color %s.’, array($colors[$selectedColorIndex]));
[...]
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Symfony/Console im CommandController (4)
[...]
// Abfrage
$name = $this->output->ask(’What is your name?’ . PHP_EOL, ’Bob’, array(’Bob’, ’Sally’, ’Blake’));
$this->outputLine(’Hello %s.’, array($name));
// Prompt
$likesDogs = $this->output->askConfirmation(’Do you like dogs?’);
if ($likesDogs) {
$this->outputLine(’You do like dogs!’);
}
// Progress
$this->output->progressStart(600);
for ($i = 0; $i < 300; $i ++) {
$this->output->progressAdvance();
usleep(5000);
}
$this->output->progressFinish();
}
}
?>
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Login API (1)
Das Backend-Login wurde nun komplett als API realisiert und lässt sich
damit selbst per Programmierung ansprechen
Grundsätzlich muss man dazu einen sogenannten Login-Provider in der
Datei ext_localconf.php registrieren:
$GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’backend’][’loginProviders’][1433416020] = [
’provider’ => TYPO3CMSBackendLoginProviderUsernamePasswordLoginProvider::class,
’sorting’ => 50,
’icon-class’ => ’fa-key’,
’label’ => ’LLL:EXT:backend/Resources/Private/Language/locallang.xlf:login.link’
];
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Login API (2)
Die Optionen sind wie folgt definiert:
provider:
Name der Login-Provider Klasse, die das Interface
TYPO3CMSBackendLoginProviderLoginProviderInterface
implementiert
sorting:
Sortierung, der die Reihenfolge der Links zum Login-Provider festlegt
icon-class:
Font-Awesome Icon-Name für den Link auf dem Login-Screen
label:
Label für den Link auf dem Login-Screen
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Login API (3)
Das LoginProviderInterface enthält lediglich die Methode
public function render(StandaloneView $view, PageRenderer
$pageRenderer, LoginController $loginController);
Die Parameter sind wie folgt definiert:
$view:
Der Fluid-StandaloneView, welcher den Login-Screen rendert. Hier muss
das Template-File gesetzt und die Variablen übergeben werden, die man
benötigt.
$pageRenderer:
PageRenderer-Instanz, welche z.B. JavaScript-Ressourcen einbringen
kann.
$loginController:
Instanz des Login-Controllers.
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Login API (4)
Das Template muss <f:layout name="Login"> und
<f:section name="loginFormFields"> (für die Formular-Felder)
enthalten:
<f:layout name="Login" />
<f:section name="loginFormFields">
<div class="form-group t3js-login-openid-section" id="t3-login-openid_url-section">
<div class="input-group">
<input type="text" id="openid_url"
name="openid_url"
value="{presetOpenId}"
autofocus="autofocus"
placeholder="{f:translate(key: ’openId’, extensionName: ’openid’)}"
class="form-control input-login t3js-clearable t3js-login-openid-field" />
<div class="input-group-addon">
<span class="fa fa-openid"></span>
</div>
</div>
</div>
</f:section>
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
CategoryRegistry mit neue Optionen
Die Methode CategoryRegistry->addTcaColumn hat Optionen
erhalten, um sowohl l10n_mode als auch l10n_display zu setzen:
TYPO3CMSCoreUtilityExtensionManagementUtility::makeCategorizable(
$extensionKey,
$tableName,
’categories’,
array(
’l10n_mode’ => ’string (keyword)’,
’l10n_display’ => ’list of keywords’
)
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Sprites in Backend Modulen
Backend Module (z.B. Hauptmodule wie "Web" sowie Untermodule wie
"Filelist") können nun Sprites als Icons verwenden
(nur Sprites, die TYPO3 bekannt sind!)
Beispiel:
TYPO3CMSCoreUtilityExtensionManagementUtility::addModule(
’web’,
’layout’,
’top’,
TYPO3CMSCoreUtilityExtensionManagementUtility::extPath($_EXTKEY) . ’Modules/Layout/’,
array(
’script’ => ’_DISPATCH’,
’access’ => ’user,group’,
’name’ => ’web_layout’,
’configuration’ => array(’icon’ => ’module-web’),
’labels’ => array(
’ll_ref’ => ’LLL:EXT:cms/layout/locallang_mod.xlf’,
),
)
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
FormEngine NodeFactory API (1)
Es ist nun möglich, neue Nodes zu registrieren und bestehende zu
überschreiben
$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’formEngine’][’nodeRegistry’][1433196792] = array(
’nodeName’ => ’input’,
’priority’ => 40,
’class’ => MyVendorMyExtensionFormElementT3editorElement::class
);
Dies registriert eine neue Klasse, die den TCA-Type input rendert und
das NodeInterface implementieren muss
Als Array-Key wird der Unix-Timestamp des Zeitpunkts verwendet,
wenn man das Element zufügt
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
FormEngine NodeFactory API (2)
Wenn mehrere Registry-Elemente für den selben Typ registriert werden,
gewinnt das, mit der höchsten Priorität (0-100)
Ein neuer TCA-Type wird wie folgt registriert:
TCA
’columns’ => array(
’bodytext’ => array(
’config’ => array(
’type’ => ’text’,
’renderType’ => ’3dCloud’,
),
),
)
ext_localconf.php
$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’formEngine’][’nodeRegistry’][1433197759] = array(
’nodeName’ => ’3dCloud’,
’priority’ => 40,
’class’ => MyVendorMyExtensionFormElementShowTextAs3dCloudElement::class
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Signal postProcessMirrorUrl wurde verschoben
Die Klasse für das Signal postProcessMirrorUrl wurde geändert
BREAKING CHANGE!
Mit folgendem Code kann man die Klasse je nach TYPO3-Version
ansprechen:
$signalSlotDispatcher->connect(
version_compare(TYPO3_version, ’7.0’, ’<’)
? ’TYPO3CMSLangServiceUpdateTranslationService’
: ’TYPO3CMSLangServiceTranslationService’,
’postProcessMirrorUrl’,
’VendorExtensionSlotsCustomMirror’,
’postProcessMirrorUrl’
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Driver Interface
Zum DriverInterface wurden die folgenden Methoden hinzugefügt:
getFolderInFolder
getFileInFolder
Jeder eigene FAL-Driver muss daher diese beiden Methoden
nachimplementieren:
public function getFoldersInFolder(
$folderIdentifier,
$start = 0,
$numberOfItems = 0,
$recursive = FALSE,
array $folderNameFilterCallbacks = array(),
$sort = ’’,
$sortRev = FALSE
);
public function getFileInFolder(
$fileName,
$folderIdentifier
);
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Unterstützung von IEC/SI-Keywords für Größen
Die Formatierung von Größen unterstützt nun zwei Keywords, um die
Einheiten festzulegen:
iec (default)
(Basis: 2, Labels: | Ki| Mi| Gi| Ti| Pi| Ei| Zi| Yi)
si
(Basis: 10, Labels: | k| M| G| T| P| E| Z| Y)
Gesetzt werden kann die Formatierung z.B. via TypoScript:
bytes.labels = iec
echo GeneralUtility::formatSize(85123);
// => Vorher "83.1 K"
// => Nachher "83.13 Ki"
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Dependency Ordering Service (1)
Oftmals ist es notwendig eine sortierte Liste an Items zur Verfügung zu
stellen, deren Einträge einerseits Abhängigkeiten haben und
andererseits dazu verwendet werden, um Aktionen in eben dieser
Reihenfolge auszuführen.
Im Core findet jenes beispielsweise Verwendung bei:
Reihenfolge der Hook-Ausführung,
Ladereihenfolge von Extensions,
Reihefolge der Anzeige von Menü-Einträgen,
usw.
Eine Überarbeitung des bisherigen DependencyResolver stellt nun
den DependencyOrderingService zur Verfügung
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Dependency Ordering Service (2)
Anwendung:
$GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’someExt’][’someHook’][<some id>] = [
’handler’ => someClass::class,
’runBefore’ => [ <some other ID> ],
’runAfter’ => [ ... ],
...
];
Zum Beispiel:
$hooks = $GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’someExt’][’someHook’];
$sorted = GeneralUtility:makeInstance(DependencyOrderingService::class)->orderByDependencies(
$hooks, ’runBefore’, ’runAfter’
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (1)
Ein neuer Hook wurde am Ende von
InlineRecordContainer::checkAccess hinzugefügt, mit dem der
Zugriff von Inline-Records geprüft werden kann
Der Hook kann wie folgt registriert werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_tceforms_inline.php’]
[’checkAccess’][] = ’MyPackageHookClass->hookMethod’;
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (2)
Ein neuer Hook wurde am Ende von
AbstractUserAuthentication::checkAuthentication
hinzugefügt, mit dem man fehlgeschlagene Anmeldeversuche
verarbeiten kann
Standardmäßig wartet der Prozess 5 Sekunden nachdem eine
Anmeldung fehlgeschlagen ist
Über den Hook kann ein anderes Verhalten implementiert werden
(z.B. zur Abwehr von Brute Force Angriffen)
Der Hook kann wie folgt registriert werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_userauth.php’]
[’postLoginFailureProcessing’][] = ’MyPackageHookClass->hookMethod’;
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (3)
Das neue Signal recordMarkedAsMissing wird ausgesendet, wenn
der FAL Indexer auf einen sys_file Eintrag stößt, dessen Datei im
Dateisystem aber nicht auffindbar ist. Dabei wird die sys_file UID
übermittelt.
Jenes kann in Extensions verwendet werden, die Dienste rund um das
Datei-Management anbieten (wie beispielsweise Versionierung,
Synchronisation, Recovery, usw.)
Das Signal afterMappingSingleRow wird ausgesendet, wann immer
der DataMapper ein Objekt erstellt
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
HTML in TypoLink-Titeln
Anführungszeichen in TypoLink-Titeln werden nun automatisch
"escaped"
Ein eventuell bereits existierendes Escaping wird daher nun falsch
dargestellt:
Aus ’Some &quot;special&quot; title’
wird ’Some &amp;quot;special&amp;quot; title’
Es wird empfohlen, hier auf Escaping komplett zu verzichten, da sich
TYPO3 nun darum kümmert
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Diverse Änderungen (1)
Mit Files->replace gibt eine neue Berechtigung für Backend
Benutzer, um Dateien im Modul Dateiliste zu ersetzen
Der Dateinamen des Logfiles, welches der FileWriter schreibt, ändert
sich wie folgt:
bisher: typo3temp/logs/typo3.log
neu: typo3temp/logs/typo3_<hash>.log
(der Wert <hash> berechnet sich aus dem Encryptionkey)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Diverse Änderungen (2)
Die in Hooks verwendeten Klassen müssen ab sofort dem
Autoloading-Mechanismus folgen
Daher kann die Hook-Definition auch verkürzt werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’tce’][’formevals’]
[TYPO3CMSSaltedpasswordsEvaluationFrontendEvaluator::class] = ’’;
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Fluid-basierte Inhaltselemente (1)
Es wurde eine Alternative zur Extension CSS Styled Content geschaffen:
"Fluid-based Content Elements"
Hier werden anstelle von TypoScript Fluid-Templates für das Rendering
von Inhalten verwendet
Dazu müssen die folgenden beiden static-Templates eingebunden
werden:
Content Elements (fluid_styled_content)
Content Elements CSS (optional) (fluid_styled_content)
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Fluid-basierte Inhaltselemente (2)
Zusätzlich muss das PageTSconfig Template Fluid-based Content
Elements fluid_styled_content in den Seiteneigenschaften
eingebunden werden, damit der New-Content-Element Wizard
entsprechend angepasst wird
Eigene Fluid-Templates können wie folgt festgelegt werden:
lib.fluidContent.templateRootPaths.50 = EXT:site_example/Resources/Private/Templates/
lib.fluidContent.partialRootPaths.50 = EXT:site_example/Resources/Private/Partials/
lib.fluidContent.layoutRootPaths.50 = EXT:site_example/Resources/Private/Layouts/
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Fluid-basierte Inhaltselemente (3)
Um eine Installation auf die neue Struktur zu migrieren, kann man wie
folgt vorgehen:
Deinstallieren der Extension css_styled_content
Installieren der Extension fluid_styled_content
Nun ist ein "Upgrade Wizard" im Install Tool verfügbar, der die Migration
der Inhaltselemente text, image und textpic in textmedia,
durchführt
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
SELECTmmQuery Methode für Datenbank-Zugang
Bislang enthielt die Datenbank-Klasse die Methode
exec_SELECT_mm_query, die die Datenbank-Abfrage direkt ausführte
Nun wurde die Generierung des Queries (Query-Building) und
Ausführung getrennt, indem die Methode SELECT_mm_query
hinzugefügt wurde
$query = SELECT_mm_query(’*’, ’table1’, ’table1_table2_mm’, ’table2’, ’AND table1.uid = 1’,
’’, ’table1.title DESC’);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Scheduler Task zur Datenbank-Optimierung
Es wurde ein Scheduler Task implementiert, der die Datenbank via
MySQL-Kommando OPTIMIZE TABLE optimiert
Optimiert werden können lediglich Tabellen vom Typ
MyISAM, InnoDB und ARCHIVE
DBAL wird nicht unterstützt
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Online Medien Unterstützung (1)
Der Core wurde um eine externe Medien-Unterstützung erweitert
(exemplarisch für YouTube- und Vimeo-Videos)
Diese kann (z.B. im Inhaltselement "Text & Media") als URL eingeben
werden. Anschließend wird die Resource wie eine interne Datei
integriert.
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Online Medien Unterstützung (2)
Folgende YouTube/Vimeo URLs sind möglich:
youtu.be/<code>
www.youtube.com/watch?v=<code>
www.youtube.com/v/<code>
www.youtube-nocookie.com/v/<code>
www.youtube.com/embed/<code>
vimeo.com/<code>
player.vimeo.com/video/<code>
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Online Medien Unterstützung (3)
Der Zugriff per Fluid kann z.B. wie folgt durchgeführt werden:
<!-- enable js api and set no-cookie support for YouTube videos -->
<f:media file="{file}" additionalConfig="{enablejsapi:1, ’no-cookie’: true}" ></f:media>
<!-- show title and uploader for YouTube and Vimeo before video starts playing -->
<f:media file="{file}" additionalConfig="{showinfo:1}" ></f:media>
Für YouTube existieren folgende Optionen:
autoplay, controls, loop, enablejsapi, showinfo, no-cookie
Für Vimeo existieren folgende Optionen:
autoplay, loop, showinfo
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Online Medien Unterstützung (4)
Für einen eigenen Media-Service benötigt man eine
OnlineMediaHelper Klasse, welche das
OnlineMediaHelperInterface implementiert, sowie eine
FileRenderer Klasse, die das FileRendererInterface implementiert
// Registrierung eines eigenen Online-Video-Services
$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’OnlineMediaHelpers’][’myvideo’] =
MyCompanyMyextensionHelpersMyVideoHelper::class;
$rendererRegistry = TYPO3CMSCoreResourceRenderingRendererRegistry::getInstance();
$rendererRegistry->registerRendererClass(
MyCompanyMyextensionRenderingMyVideoRenderer::class
);
// Registrierung eines eigenen Mime-Types
$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’FileInfo’][’fileExtensionToMimeType’][’myvideo’] =
’video/myvideo’;
// Registrierung einer eigenen Datei-Extension
$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’mediafile_ext’] .= ’,myvideo’;
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Backend Routing
Es wurde eine neue Routing Komponente zum TYPO3-Backend
hinzugefügt, welche verschiedene Aufrufe handhaben kann
(z.B. http://www.example.com/typo3/document/edit)
Die Routen werden in folgender Datei definiert:
Configuration/Backend/Routes.php
return [
’myRouteIdentifier’ => [
’path’ => ’/document/edit’,
’controller’ => AcmeMyExtensionControllerMyExampleController::class . ’::methodToCall’
]
];
Die Methode erhält das Response- und Request-Objekt:
public function methodToCall(ServerRequestInterface $request, ResponseInterface $response) {
...
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Autoload Definition in ext_emconf.php
Zusätzlich zur Datei composer.json können nun
Autoload-Definitionen in der Datei ext_emconf.php hinterlegt
werden
Das hat den Vorteil, dass nicht die gesamte Extension nach Klassen
gescannt wird
$EM_CONF[$_EXTKEY] = array (
’title’ => ’Extension Skeleton for TYPO3 CMS 7’,
...
’autoload’ =>
array(
’psr-4’ => array(
’HelhumExtScaffold’ => ’Classes’
)
)
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Icon-Factory (1)
Die Logik, um mit Icons, Größen und Overlays zu arbeiten, wurde in die
neue IconFactory ausgelagert
Es gibt drei "IconProvider": BitmapIconProvider,
FontawesomeIconProvider und SvgIconProvider
Die Registrierung eines Icons erfolgt folgendermaßen:
IconRegistry::registerIcon($identifier, $iconProviderClassName, array $options = array());
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Icon-Factory (2)
Anwendung:
$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
$iconFactory->getIcon(
$identifier,
Icon::SIZE_SMALL,
$overlay,
IconState::cast(IconState::STATE_DEFAULT)
)->render();
Zulässige Werte für Icon::SIZE_... sind:
SIZE_SMALL, SIZE_DEFAULT und SIZE_LARGE
Zulässige Werte für Icon::STATE_... sind:
STATE_DEFAULT und STATE_DISABLED
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Icon-Factory (3)
Der Core stellt einen eigenen ViewHelper zur Verfügung, um Icons
anzuzeigen:
{namespace core = TYPO3CMSCoreViewHelpers}
<core:icon identifier="my-icon-identifier"></core:icon>
<!-- use the "small" size if none given ->
<core:icon identifier="my-icon-identifier"></core:icon>
<core:icon identifier="my-icon-identifier" size="large"></core:icon>
<core:icon identifier="my-icon-identifier" overlay="overlay-identifier"></core:icon>
<core:icon identifier="my-icon-identifier" size="default" overlay="overlay-identifier">
</core:icon>
<core:icon identifier="my-icon-identifier" size="large" overlay="overlay-identifier">
</core:icon>
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (1)
Es wurde ein Signal im LinkValidator zugefügt, welches die zusätzliche
Verarbeitung eines Eintrages möglich macht
(z.B. um Daten aus der Plugin-Konfiguration zu ermitteln o.ä.).
Der Hook kann wie folgt in der Datei ext_localconf.php registriert
werden:
$signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance(
TYPO3CMSExtbaseSignalSlotDispatcher::class
);
$signalSlotDispatcher->connect(
TYPO3CMSLinkvalidatorLinkAnalyzer::class,
’beforeAnalyzeRecord’,
VendorPackageSlotsRecordAnalyzerSlot::class,
’beforeAnalyzeRecord’
);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
JumpUrl als System-Extension (1)
Die Erzeugung und das Handling von JumpURLs wurde aus der
Frontend-Extension entfernt und zur neuen System-Extension
jumpurl verschoben
Hook zur Manipulation von URLs in der Datei ext_localconf.php:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’urlProcessing’][’urlHandlers’]
[’myext_myidentifier’][’handler’] = CompanyMyExtMyUrlHandler::class;
// Die Klasse muss das UrlHandlerInterface implementieren
class MyUrlHandler implements TYPO3CMSFrontendHttpUrlHandlerInterface {
...
}
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
JumpUrl als System-Extension (2)
Handling von Links in der Datei ext_localconf.php:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’urlProcessing’][’urlProcessors’]
[’myext_myidentifier’][’processor’] = CompanyMyExtMyUrlProcessor::class;
// Die Klasse muss das UrlProcessorInterface implementieren
class MyUrlProcessor implements TYPO3CMSFrontendHttpUrlProcessorInterface {
...
}
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Kommandozeilenaufruf (CLI)
Sollte es beim Aufruf von typo3/cli_dispatch.phpsh zu Fehlern
kommen, so werden diese farbig dargestellt
CommandController können nun auch in Unterordnern liegen
Beispiel:
Controller in Datei:
my_ext/Classes/Command/Hello/WorldCommandController.php
...kann im CLI wie folgt aufgerufen werden:
typo3/cli_dispatch.sh extbase my_ext:hello:world <arguments>
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Diverse Änderungen (1)
Die Verschieben-Buttons beim TCA-Type group können nun mit der
TCA-Option hideMoveIcons = TRUE deaktiviert werden
Die Funktion makeCategorizable() kann nun überschrieben werden,
sofern diese vorher bereits aufgerufen wurde (z.B. für tt_content).
Beispiel:
TYPO3CMSCoreUtilityExtensionManagementUtility::makeCategorizable(
’css_styled_content’, ’tt_content’, ’categories’, array(), TRUE
);
Der letzte Parameter steuert das Überschreiben (hier: TRUE).
Standardmäßig ist der Wert FALSE.
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Diverse Änderungen (2)
Es gibt nun eine Funktion, um eine Unique-ID zu erzeugen
$uniqueId = TYPO3CMSCoreUtilityStringUtility::getUniqueId(’Prefix’);
Als Plaintext Dateiendung wurde typoscript hinzugefügt
Es gibt nun eine neue Konfigurations-Option, die regelt, welche
Dateiendungen als Media-Dateien interpretiert werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’mediafile_ext’] =
’gif,jpg,jpeg,bmp,png,pdf,svg,ai,mov,avi’;
BREAKING CHANGE!
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Bootstrap für Install Tool(1)
Das Install Tool basiert nun komplett auf Bootstrap: Sowohl für die
Installation...
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Bootstrap für Install Tool(2)
Das Install Tool basiert nun komplett auf Bootstrap: ...wie auch für die
Konfiguration
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
CSRF Schutz für eigene Plugins
Frontend Plugins müssen nun selbst für einen CSRF-Schutz sorgen:
$formToken = TYPO3CMSCoreFormProtectionFormProtectionFactory::get()->getFormProtection()->
generateToken(’news’, ’edit’, $uid);
if (
$dataHasBeenSubmitted
&& TYPO3CMSCoreFormProtectionFormProtectionFactory::get()->validateToken(
TYPO3CMSCoreUtilityGeneralUtility::_POST(’formToken’), ’User setup’, ’edit’)) {
// alles in Ordnung
}
else {
// ungueltiger Token!
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Tabs für LinkBrowser (1)
Mit diesem Feature kann der LinkBrowser um neue Tabs erweitert
werden
Jeder Tab wird über einem sogenannten "LinkHandler" gesteuert,
welcher das folgende Interface implementieren muss:
TYPO3CMSRecordlistLinkHandlerLinkHandlerInterface
Die LinkHandler werden über PageTSconfig registriert:
file {
handler = TYPO3CMSRecordlistLinkHandlerFileLinkHandler
label = LLL:EXT:lang/locallang_browse_links.xlf:file
displayAfter = page
scanAfter = page
configuration {
customConfig = passed to the handler
}
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Tabs für LinkBrowser (2)
Die Optionen displayBefore und displayAfter geben die
Anzeigeposition der Tabs an
Die Optionen scanBefore und scanAfter regeln die Reihenfolge der
Ausführung
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’LinkBrowser’][’hooks’][1444048118] = [
’handler’ => VendorExtMyClass::class,
’before’ => [], // optional
’after’ => [] // optional
];
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Module Template API (1)
Es wurde eine Module Template API integriert, um die Erstellung der
DocHeader zu vereinheitlichen
Beispiel 1: Button hinzufügen
$openInNewWindowButton = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar()
->makeLinkButton()
->setHref(’#’)
->setTitle($this->getLanguageService()->sL(
’LLL:EXT:lang/locallang_core.xlf:labels.openInNewWindow’, TRUE
))
->setIcon($this->iconFactory->getIcon(’actions-window-open’, Icon::SIZE_SMALL))
->setOnClick($aOnClick);
$this->moduleTemplate->getDocHeaderComponent()->getButtonBar()
->addButton($openInNewWindowButton, ButtonBar::BUTTON_POSITION_RIGHT);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Neue Module Template API (2)
Beispiel 2: Menü hinzufügen
$languageMenu = $this->moduleTemplate->getDocHeaderComponent()
->getModuleMenuRegistry()->makeMenu()
->setIdentifier(’_langSelector’)
->setLabel($this->getLanguageService()->sL(
’LLL:EXT:lang/locallang_general.xlf:LGL.language’, TRUE
));
$menuItem = $languageMenu->makeMenuItem()
->setTitle($lang[’title’] . $newTranslation)
->setHref($href);
if((int)$lang[’uid’] === $currentLanguage) {
$menuItem->setActive(TRUE);
}
$languageMenu->addMenuItem($menuItem);
$this->moduleTemplate->getDocHeaderComponent()->getModuleMenuRegistry()->addMenu($languageMenu);
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
PSR-7 Routing für Backend AJAX Requests
Um eine Route für einen AJAX-Request zuzufügen, erstellt man eine
Datei Configuration/Backend/AjaxRoutes.php mit folgendem
Inhalt in der eigenen Extension:
return [
// do something
’unique_route_name’ => [
’path’ => ’/toolcollection/some-action’,
’target’ => VendorControllerSomeController::class . ’::myAction’,
]
];
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
OpenID Hook getUserRecord
Es wurden zwei Hooks zur Verarbeitung von OpenID hinzugefügt (1/2)
Hook 1:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’openid’][’getUserRecord’]
Modifiziert den Benutzer-Datensatz, nachdem dieser ermittelt wurde,
oder:
Legt einen neuen Datensatz an, wenn keine gefunden wurde
Es werden die Parameter record, response und authInfo an den
Hook übermittelt
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
OpenID Hook authRequest
Es wurden zwei Hooks zur Verarbeitung von OpenID hinzugefügt (2/2)
Hook 2:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’openid’][’authRequest’]
Modifiziert den Authentifizierungs-Request bevor dieser abgesendet wird
Damit können z.B. zusätzliche Attribute, wie der Nickname vom
OpenID-Server angefordert werden
Es werden die Parameter authRequest und authInfo an den Hook
übermittelt
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (1)
Es ist nun möglich, das Verzeichnis, welches von
BackendUserAuthentication::getDefaultUploadFolder()
zurückgegeben wird, via Hook zu verändern
Dazu muss folgende Konfiguration in die Datei ext_localconf.php
eingetragen werden:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_userauthgroup.php’]
[’getDefaultUploadFolder’][] =
VendorMyExtensionHooksDefaultUploadFolder::class . ’->getDefaultUploadFolder’;
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (2)
Beispiel:
<?php
namespace VendorMyExtensionHooks;
use TYPO3CMSCoreAuthenticationBackendUserAuthentication;
use TYPO3CMSCoreResourceFolder;
/**
* Class DefaultUploadFolder
*/
class DefaultUploadFolder {
/**
* Get default upload folder
* If there is a folder present with the same name as the last part of the table name use that folder.
* @param array $params
* @param BackendUserAuthentication $backendUserAuthentication
* @return Folder
*/
public function getDefaultUploadFolder($params, BackendUserAuthentication $backendUserAuthentication)
{
[...]
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Hooks und Signals (3)
Beispiel (Fortsetzung):
[...]
/** @var Folder $uploadFolder */
$uploadFolder = $params[’uploadFolder’];
$pid = $params[’pid’];
$table = $params[’table’];
$field = $params[’field’];
$matches = [];
if (!empty($uploadFolder) && preg_match(’/_([a-z]+)$/’, $table, $matches)) {
$folderName = $matches[1];
if ($uploadFolder->hasFolder($folderName)) {
$uploadFolder = $uploadFolder->getSubfolder($folderName);
}
}
return $uploadFolder;
}
}
TYPO3 CMS 7 LTS - What’s New
Änderungen im System
Diverse Änderungen
Der TCA-Typ select muss nun mit einer Option renderType versehen
werden
Folgende Werte sind hierbei zulässig:
’renderType’ => ’selectMultipleSideBySide’,
’renderType’ => ’selectCheckBox’,
’renderType’ => ’selectSingle’,
’renderType’ => ’selectSingleBox’,
’renderType’ => ’selectTree’,
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellen und Autoren
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Infos:
https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x
INSTALL.md and ChangeLog
typo3/sysext/core/Documentation/Changelog/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
TYPO3 Git Repositories:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk
TYPO3 CMS 7 LTS - What’s New
TYPO3 CMS 7 LTS - What’s New
System Administration
Patrick Lobacher (Vorstand pluswerk AG)
http://www.pluswerk.ag
10/November/2015
Creative Commons BY-NC-SA 3.0
Introduction
TYPO3 CMS 7 LTS - What’s New
Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von
der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface
TypoScript
In-DepthChanges
Extbase/Fluid
Deprecated/Removed
Sys.Administration
Redakteure X
Integratoren X X X
Entwickler X X X
SysAdmins X
Download aller What’s New Slides unter typo3.org
TYPO3 CMS 7 LTS - What’s New
System Administration
System Administration
TYPO3 CMS 7 LTS benötigt eine aktuelle Hosting-Umgebung. Die Schritte zur
Installation von TYPO3 CMS 7 LTS sind gerundsätzlich die selben, wie bei der
letzten LTS-Version, allerdings sollten System-Administratoren sicher
stellen, dass die neuen Systemanforderungen eingehalten werden.
Zusätzlich können Administratoren nun Composer verwenden um die TYPO3
CMS Sourcen, alle Abhängigkeiten und Extensions zu installieren und zu
deployen.
TYPO3 CMS 7 LTS - What’s New
System Administration
System Requirements
PHP*: v5.5.0 - v5.6.x
MySQL: v5.5.x - v5.6.x (no strict mode)
Speicherplatz: min 200 MB
PHP Einstellungen:
memory_limit >= 128M
max_execution_time >= 240s
max_input_vars >= 1500
die Compile-Option --disable-ipv6 darf nicht verwendet werden
Das Backend benötigt IE >= 9 oder einen anderen modernen Browser
*) Weitere Details: PHP - minimale Requirements für TYPO3 CMS 7
TYPO3 CMS 7 LTS - What’s New
System Administration
Installation (Klassisch)
Offizielle Installations-Prodezur unter Linux/Mac OS X
(DocumentRoot z.B. /var/www/site/htdocs):
$ cd /var/www/site
$ wget --content-disposition get.typo3.org/7.6
$ tar xzf typo3_src-7.6.0.tar.gz
$ cd htdocs
$ ln -s ../typo3_src-7.6.0 typo3_src
$ ln -s typo3_src/index.php
$ ln -s typo3_src/typo3
$ touch FIRST_INSTALL
Symbolische Links unter Microsoft Windows:
Verwendung von junction unter Windows XP/2000
Verwendung von mklink unter Windows Vista und Windows 7
TYPO3 CMS 7 LTS - What’s New
System Administration
Installation (mittels Composer)
Offizielle Installations-Prodezur mittels Composer
(DocumentRoot z.B. /var/www/site/htdocs/web):
$ cd /var/www/site
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar create-project typo3/cms-base-distribution 
htdocs
$ touch htdocs/web/FIRST_INSTALL
dev-master anhängen, für den aktuellen Entwicklungszweig:
$ php composer.phar create-project typo3/cms-base-distribution 
htdocs dev-master
Weitere Details:
https://composer.typo3.org
https://wiki.typo3.org/Composer
TYPO3 CMS 7 LTS - What’s New
System Administration
Upgrade auf TYPO3 CMS 7 LTS
Upgrade ist nur von TYPO3 CMS 6.2 LTS oder einem der 7.x Sprint
Releases möglich
TYPO3 CMS < 6.2 sollte zunächst auf TYPO3 CMS 6.2 LTS aktualisiert
werden
Upgrade Instruktionen:
https://wiki.typo3.org/Upgrade#Upgrading_to_7
Offizieller TYPO3 Guide "TYPO3 Installation and Upgrading":
http://docs.typo3.org/typo3cms/InstallationGuide
Generelles Vorgehen:
Check der minimalen System Requirements (PHP, MySQL, etc.)
Untersuchung deprecation_*.log in der alten TYPO3 Instanz
Aktualisierung aller Extensions auf die neueste Version
Deployment der neuen Sources + Install Tool -> Upgrade Wizard
Untersuchung des Startup Moduls für Backend Users (optional)
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellen und Autoren
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Infos:
https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x
INSTALL.md and ChangeLog
typo3/sysext/core/Documentation/Changelog/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
TYPO3 Git Repositories:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk
TYPO3 CMS 7 LTS - What’s New
TYPO3 CMS 7 LTS - What’s New
Deprecated/Removed Functions
Patrick Lobacher (Vorstand pluswerk AG)
http://www.pluswerk.ag
10/November/2015
Creative Commons BY-NC-SA 3.0
Introduction
TYPO3 CMS 7 LTS - What’s New
Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von
der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface
TypoScript
In-DepthChanges
Extbase/Fluid
Deprecated/Removed
Sys.Administration
Redakteure X
Integratoren X X X
Entwickler X X X
SysAdmins X
Download aller What’s New Slides unter typo3.org
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Veraltete/Entfernte Funktionen
Sehr viele TYPO3 CMS Komponenten wurden überprüft und im Einklang mit
den entsprechenden Richtlinien entweder als veraltet klassifiziert oder
gleich entfernt.
Dies stellt sicher, dass TYPO3 CMS 7 LTS nicht auf veralteten Features bzw.
Code basiert, sondern von den modernen und schnellen state-of-the-art
Technologien profitiert.
Einige wenige kaum verwendete Content-Elemente und Funktionen wurden
aus dem Kern erntfernt und in System Extensions ausgelagert.
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Kompatibilitäts-Schicht
In TYPO3 CMS 6.2 stellt eine Kompatibilitäts-Schicht sicher, dass auch
alte Extensions mit der neuen Codebase funktionieren
Nachteil: Geschwindigkeitseinbuße (das volle Potential des Systems kann
nicht ausgeschöpft werden)
Diese Kompatibilitäts-Schicht wurde in TYPO3 CMS 7.0 entfernt
Auswirkung: alte Extensions sind möglicherweise nicht mehr lauffähig
(z.B. Extensions ohne Namespaces)
Kompatibilität kann aber wieder hergestellt werden, indem die System
Extension EXT:compatibility6 installiert wird
Diese Extension wird zukünftig im TER verfügbar sein
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Backend Benutzerverwaltung
Funktion "zum Benutzer wechseln" (change-to mode) wurde entfernt
TYPO3 CMS 6.2
TYPO3 CMS 7.0
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Veraltete JavaScript Funktionen entfernt
In Einklang mit der Deprecation Strategy wurden in TYPO3 CMS 4.7
zahlreiche JavaScript Methoden als deprecated markiert und nun
entfernt, beispielsweise:
TYPO3CMSBackendFormFormEngine->getSingleField_typeInput
TYPO3CMSBackendFormFormEngine->getSingleField_typeText
TYPO3CMSCoreUtilityGeneralUtility->quoted_printable
TYPO3CMSCoreUtilityGeneralUtility->encodeHeader
HTMLArea.Editor.forceRedraw
(use HTMLArea.Framework.doLayout instead)
HTMLArea.Editor.convertNode
(use HTMLArea.DOM.convertNode instead)
HTMLArea.Editor.getBlockAncestors
(use HTMLArea.DOM.getBlockAncestors instead)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Entfernte Funktionen (1)
TypoScript Option config.uniqueLinkVars wurde entfernt
(das ist nun das Standardverhalten in TYPO3 CMS)
ViewHelper TYPO3CMSDocumentationViewHelpersLinkAction
wurde entfernt (benutze f:be.buttons.icon or f:uri.* stattdessen)
PageTSconfig Option mod.web_list.alternateBgColors
wurde entfernt
PropertyMapper wurde entfernt
(ebenso die Option rewrittenPropertyMapper = 0)
Folgende TypoScript Conditions wurden entfernt:
browser
version
system
useragent
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Entfernte Methoden (1)
Die folgenden Methoden wurden entfernt:
connectDB
in der Klasse TYPO3CMSFrontendUtilityEidUtility
isDisplayCondition
in der Klasse TYPO3CMSFormFormEngine
int_from_ver
in der Klasse TYPO3CMSCoreUtilityGeneralUtility
getUniqueFields
in der Klasse TYPO3CMSCoreDataHandlingDataHandler
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Entfernte Methoden (2)
Die folgenden Methoden wurden entfernt:
isSafeModeEnabled
in der Klasse TYPO3CMSCoreUtilityPhpOptionsUtility
registerSwiftMailer
in der Klasse TYPO3CMSCoreBootstrap
loadTCA
in der Klasse TYPO3CMSCoreUtilityGeneralUtility
isLocalconfWritable
in der Klasse
TYPO3CMSCoreUtilityExtensionManagementUtility
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Entfernte Klassen
Die folgenden Klassen wurden entfernt:
TYPO3CMSBackendTemplateMediumDocumentTemplate
TYPO3CMSExtbaseServiceTypeHandlingService
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
$TYPO3_CONF_VARS[SYS][compat_version]
Die Option $TYPO3_CONF_VARS[SYS][compat_version] (gesetzt
beim Update im Install Tool wizard) wurde entfernt
Alle Prüfungen gegen GeneralUtility::compat_version werden
nun gegen die Konstante TYPO3_branch gemacht
Hinweis: TypoScript Conditions, die auf compat_version prüfen,
haben nun keine Wirkung mehr!
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Inline styles of <blockquote> tag
CSS Styled Content rendert <blockquote> über die TypoScript Option
lib.parseFunc_RTE
Diese Zeilen wurden ersatzlos entfernt:
lib.parseFunc_RTE.externalBlocks.blockquote.callRecursive.tagStdWrap.HTMLparser = 1
lib.parseFunc_RTE.externalBlocks.blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.
overrideAttribs = style="margin-bottom:0;margin-top:0;"
Das bedeutet, die Inline-Styles "margin-bottom:0;margin-top:0;"
werden dem <blockquote>-Tag nicht mehr hinzugefügt
Hinweis: nach einem Update auf TYPO3 CMS 7.1 könnte sich das Styling
von <blockquote> geändert haben
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Workspaces: Feld disable_autocreate
Das Feld disable_autocreate wurde von EXT:workspaces entfernt
Sollten TYPO3 Extensions dieses Feld verwenden, wird ein SQL Fehler
erzeugt
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Funktion: include_once
Die Funktionalität, um PHP-Dateien mittels include_once innerhalb
von Modul-Funktionen (wie z.B. dem Info-Modul) zu inkludieren, wurde
entfernt
Das gilt für folgende Module:
Web => Page
Web => Page - New Content Element Wizard
Web => Functions
Web => Info
Web => Template
Web => Recycler
User => Task Center
System => Scheduler
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
TypoScript Option: config.meaningfulTempFilePrefix
Früher war es möglich, per TypoScript Teile des Original-Dateinamens
zum Dateinamen hinzuzufügen, der vom GIFBUILDER generiert wird
Jenes war mit folgender TypoScript Option möglich:
config.meaningfulTempFilePrefix
(standardmäßig verwendete der GIFBUILDER lediglich ein Hash-Wert als
Dateinamen)
Diese Option wurde entfernt
(Dateinamen im Verzeichnis typo3temp/GB/ enthalten nun den
Original-Dateinamen automatisch)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Removed files
Die folgenden Dateien wurden entfernt:
typo3/file_edit.php
typo3/file_newfolder.php
typo3/file_rename.php
typo3/file_upload.php
typo3/show_rechis.php
typo3/listframe_loader.php
Deren Funktionalität wurde in Backend Module integriert, z.B.
typo3/file_edit.php in
BackendUtility::getModuleUrl(’file_edit’);
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
ExtJS DateTimePicker
Die ExtJS Komponente Ext.ux.DateTimePicker wurde entfernt und
gegen die Twitter Bootstrap Alternative ersetzt (siehe Kapitel "Backend
User Interface")
Das betrifft zum Beispiel die System Extensions EXT:belog und
EXT:scheduler
Hinweis: Extensions, die die (als "deprecated" markierte) Komponente
Ext.ux.DateTimePicker benötigen, werden mit hoher
Wahrscheinlichkeit nicht mehr funktionieren.
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Änderungen beim Access List Render Mode
Die folgende Variable wurde entfernt:
$GLOBALS[TYPO3_CONF_VARS][BE][accessListRenderMode]
Die entsprechenden Felder in den TCA Tabellen be_users und
be_groups besitzen nun die Standardwert "checkbox"
Jenes kann in der Datei typo3conf/extTables.php bei Bedarf
angepasst werden:
$GLOBALS[’TCA’][’be_users’][’columns’][’file_permissions’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_users’][’columns’][’userMods’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_groups’][’columns’][’file_permissions’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_groups’][’columns’][’pagetypes_select’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_groups’][’columns’][’tables_select’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_groups’][’columns’][’tables_modify’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_groups’][’columns’][’non_exclude_fields’][’config’][’renderMode’] = ’singlebox’;
$GLOBALS[’TCA’][’be_groups’][’columns’][’userMods’][’config’][’renderMode’] = ’singlebox’;
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Content Element "Mailform"
Die Mailform Funktionalität, die das cObject FORM bereitstellt, wurde
vom TYPO3 Core entfernt
(diese ist jedoch weiterhin in EXT:compatibility6 vorhanden)
Die folgenden Optionen wurden als "deprecated" markiert:
$TYPO3_CONF_VARS][FE][secureFormmail]
$TYPO3_CONF_VARS][FE][strictFormmail]
$TYPO3_CONF_VARS][FE][formmailMaxAttachmentSize]
Die folgenden Methoden im TypoScriptFrontendController wurden
entfernt:
protected checkDataSubmission()
protected sendFormmail()
public extractRecipientCopy()
public codeString()
protected roundTripCryptString()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Funktionalität überarbeitet (1)
Die EXT:indexed_search wird automatisch aktiviert, sobald sie
installiert wird. Das bedeutet auch, dass die TypoScript Optionen
config.index_enable und config.index_externals ebenfalls
automatisch aktiviert werden
TSconfig web_func.menu.wiz ändert sich zu
web_func.menu.functions
Extensions, die sich in die Toolbar oben rechts einklinken, müssen das
folgende neue Interface implementieren:
TYPO3CMSBackendToolbarToolbarItemInterface
und müssen unter folgendem Schlüssel registriert werden:
$GLOBALS[’TYPO3_CONF_VARS’][’BE’][’toolbarItems’]
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Funktionalität überarbeitet (2)
Die Datei typo3/js/tree.js wurde ersetzt gegen
EXT:backend/Resources/Public/JavaScript/LegacyTree.js
(basierend auf jQuery)
Die Variable $GLOBALS[’WEBMOUNTS’] wurde ersetzt gegen
$GLOBALS[’BE_USER’]->returnWebmounts()
Die Unterstützung von .t3-table und .t3-button wurde entfernt
(Twitter Bootstrap CSS Klassen implementieren die Styles jetzt)
Länderflaggen (PNG-Bilder) wurden von typo3/gfx/flags/ und
typo3/sysext/t3skin/images/flags/ nach
typo3/sysext/core/Resources/Public/Icons/flags/ verschoben
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Funktionalität überarbeitet (3)
CSS Styled Content TypoScript Templates der TYPO3 CMS Versionen
4.5 bis 6.1 wurden entfernt
Die folgenden TypoScript cObjects wurden in die Legacy-Extension
EXT:compatibility6 verschoben:
SEARCHRESULTS COLUMNS OTABLE CLEARGIF
IMGTEXT CTABLE HRULER
Das Inhaltselement search wurde in die Legacy-Extension
EXT:compatibility6 verschoben
Die folgenden TCA-Wizard-Optionen wurden entfernt:
_PADDING _VALIGN _DISTANCE
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
TypoScript-Option andWhere
Die TypoScript-Option andWhere wurde als "deprecated" markiert
Integratoren sollten die Eigenschaften where und markers
verwenden:
page.30 = CONTENT
page.30 {
table = tt_content
select {
pidInList = this
orderBy = sorting
where {
dataWrap = sorting>{field:sorting}
}
}
}
page.60 = CONTENT
page.60 {
table = tt_content
select {
pidInList = 73
where = header != ###whatever###
orderBy = ###sortfield###
markers {
whatever.data = GP:first
sortfield.value = sor
sortfield.wrap = |ting
}
}
}
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Entry-Points
Die folgenden Entry-Points wurden als "deprecated" markiert:
typo3/tce_file.php
typo3/move_el.php
typo3/tce_db.php
typo3/login_frameset.php
typo3/sysext/cms/layout/db_new_content_el.php
typo3/sysext/cms/layout/db_layout.php
Stattdessen kann nun folgendes verwendet werden:
TYPO3CMSBackendUtilityBackendUtility::getModuleUrl(’<parameter>’)
Wobei <parameter> eines der folgenden Elemente sein kann:
tce_file, move_element, tce_db, login_frameset,
new_content_element, web_layout
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (1)
Die TypoScript-Option config.xhtmlDoctype = xhtml_2
wurde als "deprecated" markiert
Die folgenden Methoden wurden als "deprecated" markiert:
TYPO3CMSBackendUtilityBackendUtility::implodeTSParams()
TYPO3CMSBackendController::makeLoginBoxImage()
Die folgende Methode wurde als "deprecated" markiert:
LocalImageProcessor::getTemporaryImageWithText()
...und ersetzt gegen:
TYPO3CMSCoreImagingGraphicalFunctions::getTemporaryImageWithText()
Die stdWrap Eigenschaften textStyle und tableStyle
wurde als "deprecated" markiert
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (2)
Die TypoScript-Option page.includeJSlibs wurde umbenannt zu
page.includeJSLibs (Großbuchstabe "L") und die alte Option als
"deprecated" markiert
Die Condition device wurde als "deprecated" markiert
Die Methode DocumentTable::table() wurde als "deprecated"
markiert (Entwickler sollten dafür Fluid verwenden)
Die folgende Methode wurde als "deprecated" markiert:
TYPO3CMSFrontendController
TypoScriptFrontendController::doXHTML_cleaning()
...ebenso die dazugehörige TypoScript-Option config.xhtml_cleaning
Der folgende Hook wurde als "deprecated" markiert:
$GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’GLOBAL’][’softRefParser_GL’]
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (3)
Die folgenden Methoden wurden als "deprecated" markiert:
TypoScriptTemplateObjectBrowserModuleFunctionController::
verify_TSobjects()
ExtendedTemplateService::ext_getKeyImage()
ConfigurationForm::ext_getKeyImage()
Die Ausführung von contentObject->COBJECT() wurde als
"deprecated" markiert
(benutze stattdessen $cObj->cObjGetSingle(’...’, $conf);)
Der direkte Zugriff auf FormEngine::$renderReadonly wurde als
"deprecated" markiert
(benutze stattdessen AbstractFormElement::setRenderReadonly(TRUE);)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (4)
Die folgenden FormEngine-Methoden wurden als "deprecated"
markiert:
FormEngine::insertDefStyle
FormEngine::getAvailableLanguages()
FormEngine::sL()
FormEngine::renderVDEFDiff()
FormEngine::getLL()
FormEngine::getTSCpid()
FormEngine::getSingleField_typeFlex_langMenu()
FormEngine::getSingleField_typeFlex_sheetMenu()
FormEngine::getSpecConfFromString()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Refactoring der FormEngine (1)
Die FormEngine Klassen wurden einem Refactoring unterzogen,
welches Auswirkungen auf Eigenschaften und Methoden der Klassen
hat
Viele interne Eigenschaften, wie FormEngine->$defaultInputWidth
oder FormEngine->$RTEenabled werden ab sofort ignoriert
Die Eigenschaften FormEngine->$allowOverrideMatrix und
SuggestElement->class sind ab TYPO3 CMS 7.2 protected
Wenn im TCA type=none gewählt wird, wird nun nicht mehr ein
FormEngine Objekt, sondern ein NoneElement Objekt zurückgegeben
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Refactoring der FormEngine (2)
Under anderem sind die folgenden Methoden als deprecated markiert:
FormEngine->renderWizards()
FormEngine->dbFileIcons()
FormEngine->getClipboardElements()
FormEngine->getSingleField_typeNone_render()
FormEngine->formMaxWidth()
FormEngine->addItems()
SuggestElement->init()
...
Tipp: Wenn man auf diese Methoden aufgebaut hat, sollte man das
DeprecationLog analysieren, um herauszufinden, wohin diese Methoden
portiert wurden
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Refactoring der FormEngine (3)
Die folgenden Methoden wurden umbenannt:
ALT: TYPO3CMSBackendFormElementSuggestElement
NEU: TYPO3CMSBackendFormWizardSuggestWizard
ALT: TYPO3CMSBackendFormElementSuggestDefaultReceiver
NEU: TYPO3CMSBackendFormWizardSuggestWizardDefaultReceiver
ALT: TYPO3CMSBackendFormElementVaueSlider
NEU: TYPO3CMSBackendFormWizardValueSliderWizard
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Entry Points im Backend
Die folgenden Entry Points im Backend wurden verändert:
typo3/logout.php (logout)
typo3/alt_file_navframe.php (file_navframe)
typo3/dummy.php (dummy)
typo3/browser.php (browser)
typo3/db_new.php (db_new)
typo3/show_item.php (show_item)
Die URLs können wie folgt ermittelt werden:
TYPO3CMSBackendUtilityBackendUtility::getModuleUrl(...)
Zum Beispiel:
TYPO3CMSBackendUtilityBackendUtility::getModuleUrl(’logout’)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (1)
URLs zu Backend-Modulen, welche durch mod.php dispatched wurden,
werden nun nicht mehr im Array $GLOBALS[’MCONF’][’_’]
gespeichert, sondern durch BackendUtility::getModuleUrl()
erzeugt
Die Möglichkeit, den lokalen Pfad einer FAL-Datei via TypoScript zu
ermitteln, wurde entfernt
(a.value.data = file:current:localPath)
Die folgenden tt_content TCA-Felder wurden in die Extension
EXT:compatibility6 verschoben:
altText
imagecaption
imagecaption_position
image_link
longdescURL
titleText
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (2)
Die Backend-Benutzeranmeldung wurde einem Refactoring unterzogen
und das Signal LoginController::SIGNAL_RenderLoginForm entfernt
Außerdem wurden die folgenden Methoden des LoginControllers
entfernt:
LoginController::makeLoginBoxImage
LoginController::wrapLoginForm
LoginController::makeLoginNews
LoginController::makeLoginForm
LoginController::makeLogoutForm
Die Fremd-Bibliothek websvg wurden aus dem TYPO3 CMS Core
entfernt. Dazu gehören auch TypoScript Optionen
(page.javascriptLibs.SVG.*), und Methoden des PageRenderers,
wie z.B. $pageRenderer->loadSvg()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (3)
Folgende Schlüssel unter mod.web_info.menu.function wurden
umbenannt (dies hat vor allem Auswirkungen auf PageTSconfig):
tx_cms_webinfo_page -> TYPO3CMSFrontendControllerPageInformationController
tx_cms_webinfo_lang -> TYPO3CMSFrontendControllerTranslationStatusController
tx_belog_webinfo -> TYPO3CMSBelogModuleBackendLogModuleBootstrap
tx_infopagetsconfig_webinfo -> TYPO3CMSInfoPagetsconfigController
InfoPageTyposcriptConfigController
tx_linkvalidator_ModFuncReport -> TYPO3CMSLinkvalidatorReportLinkValidatorReport
Der Parameter $returnHTML der Methode
TYPO3CMSCoreUtilityDebugUtility::debugRows() wird nicht
mehr verwendet und ist daher als deprecated markiert
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (4)
Die Funktion config.prefixLocalAnchors ist deprecated, ebenso wie
die dazugehörigen Methoden im TypoScriptFrontendContoller:
prefixLocalAnchorsWithScript() und doLocalAnchorFix()
Die Methode $TSFE->checkFileInclude() im globalen
FrontendController ist deprecated. Man sollte stattdessen den
Autoloader oder $TSFE->tmpl->getFileName() verwenden.
Die beiden cObjects COBJ_ARRAY (alias für COA) und CASEFUNC (alias für
CASE) wurden in die Extension EXT:compatibility6 verschoben
(und als deprecated markiert) und stehen somit standardmäßig nicht
mehr zur Verfügung).
Die DataHandler Eigenschaft stripslashes_values wurde als
deprecated markiert.
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (5)
Der "ThumbnailView", sowie thumbs.php und
BackendUtility::getThumbNail() sind ab sofort deprecated und
werden mit TYPO3 CMS Version 8 entfernt
(siehe BackendUtility::thumbCode() zur Inspiration).
Im LinkValidator Scheduler Task ändert sich der Namespace
mod.tx_linkvalidator zu mod.linkvalidator.
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
FormEngine Refactoring
TCA:
Optionen _PADDING, _VALIGN und DISTANCE wurden aus
TCA[’aTable’][’columns’][’aField’][’config’][’wizards’]
entfernt
Schlüssel TCA[’aTable’][’ctrl’][’mainPalette’] wurde entfernt
TSconfig:
Schlüssel mod.web_layout.tt_content.fieldOrder und
TCEFORM.aTable.aField.linkTitleToSelf wurden entfernt
Hooks:
Hooks verwenden nun den Schlüssel type anstatt form_type
Hook getSingleFieldClass wurde entfernt
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
IdentityMap wurde aus der Extbase Persistenz entfernt
Die Klasse IdentityMap wurde aus der Extbase Persistenz entfernt
(bei Verwendung wird eine ReflectionException erzeugt)
Damit ist der Zugriff der IdentityMap innerhalb von DataMapper
und Repository nicht mehr möglich
Anstelle der IdentityMap kann nun die Persistenz "Sessions"
verwendet werden:
$session = GeneralUtility::makeInstance(ObjectManager::class)->get(
TYPO3CMSExtbasePersistenceGenericSession::class
);
$session->registerObject($object, $identifier);
if($session->hasIdentifier($identifier)) {
$object = $session->getObjectByIdentifier($identifier, $className);
}
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (1)
Datei typo3conf/extTables.php ist "deprecated". Stattdessen
sollte die folgende Datei verwendet werden:
typo3conf/ext/<your_extension>/Configuration/TCA/Overrides/pages.php
Konfiguration $TYPO3_CONF_VARS[GFX][png_to_gif] wurde
entfernt
Installationen, die die Extension rsaauth nicht installiert haben,
übertragen das Login-Passwort nun im Klartext
(Abhilfe: Extension rsaauth installieren oder BE mittels https sichern)
Methode exec_SELECTgetRows() wertet nun den Parameter
$uidIndexField aus. Dadurch kann es zu Fehlern kommen, wenn das
spezifizierte Feld in der Datenbank nicht vorhanden ist.
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverses (2)
DBAL-Option config.classFile wurde entfernt
Optionen iconOnly und styleAttributes des CshViewHelper
sind "deprecated"
TypoScript Option page.bgImg ist ab sofort "deprecated"
Methode isEnabled() der Klasse T3editor ist ab sofort
"deprecated"
Der alte TYPO3 ClassLoader wurde zugunsten eines Composer
ClassLoaders entfernt
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Systemextension cms entfernt (1)
Die Systemextension cms wurde entfernt
Entwickler von Extensions sollten prüfen, ob Abhängigkeit zu cms in
der Datei ext_emconf.php vorhanden sind und diese ggf. korrigieren
[...]
’constraints’ => array(
’depends’ => array(
// ’cms’ => ’ ... ’, <= FALSCH!
’typo3’ => ’7.0.0-7.99.99’,
),
),
[...]
Die meiste Funktionalität wurde zur Systemextension frontend
migriert (daher müssen ggf. Referenzen zu Sprachdateien angepasst
werden, siehe folgende Slide)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Systemextension cms entfernt (2)
Notwendige Anpassungen der Referenzen zu Sprachdateien:
ALT: typo3/sysext/cms/web_info/locallang.xlf
NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_webinfo.xlf
ALT: typo3/sysext/cms/locallang_ttc.xlf
NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf
ALT: typo3/sysext/cms/locallang_tca.xlf
NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_tca.xlf
ALT: typo3/sysext/cms/layout/locallang_db_new_content_el.xlf
NEU: typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf
ALT: typo3/sysext/cms/layout/locallang.xlf
NEU: typo3/sysext/backend/Resources/Private/Language/locallang_layout.xlf
ALT: typo3/sysext/cms/layout/locallang_mod.xlf
NEU: typo3/sysext/backend/Resources/Private/Language/locallang_mod.xlf
ALT: typo3/sysext/cms/locallang_csh_webinfo.xlf
NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_csh_webinfo.xlf
ALT: typo3/sysext/cms/locallang_csh_weblayout.xlf
NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_csh_weblayout.xlf
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
PageRenderer ist veraltet
Die folgenden PageRenderer-Methoden wurden als veraltet deklariert:
TYPO3CMSBackendControllerBackendController::getPageRenderer()
TYPO3CMSBackendTemplateDocumentTemplate::getPageRenderer()
TYPO3CMSBackendTemplateFrontendDocumentTemplate::getPageRenderer()
TYPO3CMSFrontendControllerTypoScriptFrontendController::getPageRenderer()
Stattdessen ist nun folgender Code zu verwenden, um eine Instanz des
PageRenderers zu erhalten:
TYPO3CMSCoreUtilityGeneralUtility::makeInstance(TYPO3CMSCorePagePageRenderer::class)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Veraltete GeneralUtility-Methoden
Die folgenden GeneralUtility-Methoden wurden als veraltet
deklariert und werden in TYPO3 CMS version 8 entfernt:
GeneralUtility::modifyHTMLColor()
GeneralUtility::modifyHTMLColorAll()
GeneralUtility::isBrokenEmailEnvironment()
GeneralUtility::normalizeMailAddress()
GeneralUtility::formatForTextarea()
GeneralUtility::getThisUrl()
GeneralUtility::cleanOutputBuffers()
GeneralUtility::readLLfile()
Methode readLLfile() kann durch folgenden Code ersetzt werden:
/** @var $languageFactory TYPO3CMSCoreLocalizationLocalizationFactory */
$languageFactory = GeneralUtility::makeInstance(
TYPO3CMSCoreLocalizationLocalizationFactory::class
);
$languageFactory->getParsedData($fileToParse, $language, $renderCharset, $errorMode);
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
JavaScript Bibliotheken entfernt
Die JavaScript-Bibliotheken prototype.js und scriptaculous
wurden entfernt. Somit haben die folgenden TypoScript-Eigenschaften
keine Funktion mehr:
page.javascriptLibs.Prototype
page.javascriptLibs.Scriptaculous.*
Im ViewHelper be.container liefern die entsprechenden Attribute
Fehler:
<f:be.container loadPrototype="false" loadScriptaculous="false"
scriptaculousModule="someModule,someOtherModule">
Stattdessen wird empfohlen jQuery und RequireJS zu verwenden
(die im Backend bereits standarmäßig geladen werden)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
init.php, mod.php und ajax.php sind veraltet
Da alle nicht benötigten Dateien aus typo3 aufgeräumt werden sollen,
wurden die Dateien init.php, mod.php und ajax.php als veraltet
markiert
Will man eigene Init Entry Points verwenden, so geht dies über den
folgenden Code:
call_user_func(function() {
$classLoader = require __DIR__ . ’/vendor/autoload.php’;
(new TYPO3CMSBackendHttpApplication($classLoader))->run();
});
Anstelle des Zugriffs auf mod.php verwendet man nun:
BackendUtility::getModuleUrl()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
TCA: Zusätzliche Palette entfernt
Der showitem String des TCA-Schlüssels types sah die Möglichkeit
vor, eine zusätzliche Palette zu definieren. Diese wurde nach dem
Hauptfeld gerendert
Jenes wurde nun entfernt und in die normale Paletten-Definition
migriert
Bisher:
’types’ => array(
’aType’ => array(
’showitem’ => ’aField;aLabel;anAdditionalPaletteName’,
),
),
Neu:
’types’ => array(
’aType’ => array(
’showitem’ => ’aField;aLabel, --palette--;;anAdditionalPaletteName’,
),
),
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverse Änderungen (1)
Die Content-Objekte "Text" und "Text mit Bild" hatten bisher eine
Checkbox "RTE enabled". Diese wurde, zusammen mit der
dazugehörigen TCA-Option flag, entfernt.
Die folgenden TypoScript-Optionen zum Einbinden von PHP-Dateien
wurden entfernt:
config.includeLibrary
config.includeLibs
Das Verzeichnis typo3/ext wurden entfernt
(nicht aber die Möglichkeit, globale Extensions zu verwenden: das Verzeichnis
kann manuell angelegt werden)
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverse Änderungen (2)
ExtCore (ein schlanker ExtJS Adapter) wurde entfernt und damit die
folgenden TypoScript-Optionen:
page.javascriptLibs.ExtCore.*
page.javascriptLibs.ExtJs.*
Außerdem die entsprechende Option im
<f:be.container>-ViewHelper
Die sogenannten "BigButtons" ("Edit Page Properties", "Move Page",...)
wurden entfernt und mit ihnen die TSconfig-Einstellung
mod.we_layout.disableBigButtons
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Diverse Änderungen (3)
Die Konfiguration für das Error- und Exception-Handling kann nun
nicht mehr in der Datei ext_localconf.php der Extension
überschrieben werden, sondern muss in einer der Dateien
LocalConfiguration.php oder AdditionalConfiguration.php
gesetzt werden.
Das Feld "General Record Storage Page" welches die Storage-PID für
die Seite aufgenommen hat, wurde entfernt. Stattdessen muss man die
Storage-PID nun per TypoScript (oder FlexForm) setzen.
Die Funktion IconUtility::getIcon() wurde als veraltet
gekennzeichnet - stattdessen verwendet man
IconUtility::getSpriteIconForRecord()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Slash-Methoden in GeneralUtility
Innerhalb der Klasse GeneralUtility wurden folgende Methoden als
deprecated deklariert:
GeneralUtility::addSlashesOnArray()
GeneralUtility::stripSlashesOnArray()
GeneralUtility::slashArray()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
CLI Konstanten und Methoden
Die Logik hinsichtlich Optionen bei CLI-basierten Skripts wurde an den
CliRequestHandler übergeben
Daher gilt folgende Methode als deprecated:
BackendUserAuthentication->checkCLIuser()
Folgende Konstanten und globale Parameter sind nun ebenfalls
deprecated:
const TYPO3_cliKey
const TYPO3_cliInclude
$GLOBALS[’MCONF’][’name’]
$GLOBALS[’temp_cliScriptPath’]
$GLOBALS[’temp_cliKey’]
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
IconUtility
Die Klasse IconUtility gilt ab sofort als deprecated.
Einige der Methoden wurden zur IconFactory verschoben:
IconUtility::skinImg()
IconUtility::getIcon()
IconUtility::getSpriteIcon()
IconUtility::getSpriteIconForFile()
IconUtility::getSpriteIconForRecord()
IconUtility::getSpriteIconForResource()
IconUtility::getSpriteIconClasses()
Ebenso wurde folgender PageTSconfig-Schlüssel als deprecated
markiert:
mod.wizards.newContentElement.wizardItems.*.elements.*.icon
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Veraltete HtmlParser-Methoden
Die Marker-Ersetzungsfunktionalität wurde verschoben von
core/Classes/Html/HtmlParser.php
zur eigenen Klasse
core/Classes/Service/MarkerBasedTemplateService.php
Daher sind folgende Methoden deprecated und werden in TYPO3 CMS
Version 8 entfernt:
HtmlParser::getSubpart()
HtmlParser::substituteSubpart()
HtmlParser::substituteSubpartArray()
HtmlParser::substituteMarker()
HtmlParser::substituteMarkerArray()
HtmlParser::substituteMarkerAndSubpartArrayRecursive()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Änderung in Form Extension
Die System-Extension form basiert nun auf Extbase/Fluid
Daher ist folgender TypoScript-Code veraltet, da man die Eigenschaft
layout nicht mehr verwenden sollte:
10 = FORM
10 {
layout {
containerWrap = <div><elements /></div>
elementWrap = <div><element /></div>
}
}
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Veraltete ViewHelper und Methoden
Folgende ViewHelper wurden als deprecated markiert und sollten
daher nicht mehr verwendet werden:
TYPO3CMSFluidViewHelpersBeButtonsIconViewHelper
TYPO3CMSBackendViewHelpersSpriteManagerIconViewHelper
Die folgenden Methoden wurden als deprecated markiert und sollten
daher nicht mehr verwendet werden:
BackendUtility::getExcludeFields()
BackendUtility::getExplicitAuthFieldValues()
BackendUtility::getSystemLanguages()
BackendUtility::getRegisteredFlexForms()
BackendUtility::exec_foreign_table_where_query()
BackendUtility::replaceMarkersInWhereClause()
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Ajax Routen statt Handler
Ajax Handler, die im Core über
ExtensionManagementUtility::registerAjaxHandler()
registriert wurden, werden nun durch Ajax Routen ersetzt, die in
Configuration/Backend/AjaxRoutes.php registriert sind
Eine ausführliche Liste (alt-neu) ist hier zu finden:
Breaking-69916-RegisteredAJAXHandlersReplacedByRoutes.rst
TYPO3 CMS 7 LTS - What’s New
Veraltete/Entfernte Funktionen
Verschiedenes
Die Extension mediace wurde entfernt und ist nun im TER zu finden
Die TCA-Option dynamicConfigFile innerhalb des ctrl Abschnitts
ist deprecated. Das zugehörige TCA wird nun an die Stelle
Configuration/TCA/<table_name>.php platziert.
Die jumpurl Funktion wurde aus dem Core komplett entfernt und ist
nun als Extension im TER zu finden
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellen und Autoren
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
Quellennachweis
TYPO3 News:
http://typo3.org/news
Release Infos:
https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x
INSTALL.md and ChangeLog
typo3/sysext/core/Documentation/Changelog/*
TYPO3 Bug-/Issuetracker:
https://forge.typo3.org/projects/typo3cms-core
TYPO3 Git Repositories:
https://git.typo3.org/Packages/TYPO3.CMS.git
https://git.typo3.org/Packages/TYPO3.Fluid.git
TYPO3 CMS 7 LTS - What’s New
Sources and Authors
pluswerk
pluswerk ist eine Full Service Agentur für leidenschaftliche digitale
Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern
www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk
TYPO3 CMS 7 LTS - What’s New

TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk

  • 1.
    TYPO3 CMS 7LTS - What’s New Backend User Interface Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  • 2.
    Introduction TYPO3 CMS 7LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  • 3.
    Backend User Interface BackendUser Interface Die größte und aufälligste Änderung ist sicher das überarbeitete Backend User Interface. Es basiert nun komplett auf Twitter Bootstrap, verfügt über ein modernes und responsives Design und stellt sicher, das Redakteure ihre Aufgaben effizient und einfach erledigen können. Die neuen Icons sehen nun auf hochauflösenden Screens phantastisch aus, da diese per SVG realisiert wurden. Bilder können nun mit Bordmitteln beim Hochladen ins Backend direkt beschnitten werden. Agenturen können zudem die Login-Seite individualisieren und Redakteure werden zahlreiche weitere tolle Features vorfinden, die ihre tägliche Arbeit erleichtert. TYPO3 CMS 7 LTS - What’s New
  • 4.
    Backend User Interface Allgemeines DasBackend User Interface wurde komplett überarbeitet Als Basis dient Twitter Bootstrap Version 3.2.x Sämtliche Icons wurden erneuert und grafisch im "Tile Style" überarbeitet Für Icons wird Font Awesome Version 4.2.x verwendet Linke Funktionenleiste wurde grafisch angepasst Icons wurden im Flat-Design, monochrom, farbig und mit abgerundeten Ecken entworfen Breite der Funktionenleiste kann soweit reduziert werden, dass nur noch Icos sichtbar sind TYPO3 CMS 7 LTS - What’s New
  • 5.
    Backend User Interface Look& Feel TYPO3 CMS 7 LTS - What’s New
  • 6.
    Backend User Interface Look& Feel TYPO3 CMS 7 LTS - What’s New
  • 7.
    Backend User Interface Look& Feel TYPO3 CMS 7 LTS - What’s New
  • 8.
    Backend User Interface BackendBenutzeranmeldung TYPO3 CMS 7 LTS - What’s New
  • 9.
    Backend User Interface TopBar (Module Menu) TYPO3 CMS 7 LTS - What’s New
  • 10.
    Backend User Interface ListenModul und Zwischenablage TYPO3 CMS 7 LTS - What’s New
  • 11.
    Backend User Interface Tabellen TYPO3CMS 7 LTS - What’s New
  • 12.
    Backend User Interface Suchefür Seite/Liste Klick auf die Lupe blendet eine Suche für die aktuelle Seite/Liste ein (diese befand sich früher statisch am Ende der Seite) TYPO3 CMS 7 LTS - What’s New
  • 13.
    Backend User Interface Anzahloffene Dokumente Anzahl offene Dokumente wird über ein Bootstrap "Badge" angezeigt (setzt die installierte Extension "Open Documents" voraus) TYPO3 CMS 7 LTS - What’s New
  • 14.
    Backend User Interface FlashMessages FlashMessage-Boxen im Backend wurden überarbeitet Dafür wurde der Kontrast von Text und Box erhöht und Links werden besser hervorgehoben TYPO3 CMS < 7.0 TYPO3 CMS >= 7.0 TYPO3 CMS 7 LTS - What’s New
  • 15.
    Backend User Interface VideoPlayer in Info Window Ein Videoplayer ermöglicht es, HTML5 Audio- und Video-Dateien im "Info"-Fenster abzuspielen TYPO3 CMS 7 LTS - What’s New
  • 16.
    Backend User Interface Look& Feel: Date/Time Picker Date/Time Picker im Backend wurde auf Twitter Bootstrap umgestellt TYPO3 CMS 7 LTS - What’s New
  • 17.
    Backend User Interface Look& Feel: Funktionen-Modul Die Funktionen "Seiten sortieren" und "mehrere Seiten erzeugen" sind jetzt unter WEB => Funktionen zu finden (in TYPO3 CMS < 7.1 waren diese unter "WEB => Funktionen => Wizards" zu finden) TYPO3 CMS 7 LTS - What’s New
  • 18.
    Backend User Interface Look& Feel: Access-Modul Im Modul WEB => Access kann man Benutzer und/oder Gruppen unverändert lassen, wenn man nur die Berechtigungen ändern möchte TYPO3 CMS 7 LTS - What’s New
  • 19.
    Backend User Interface Look& Feel: Icons im List-Modul Icons ("Action Buttons") im List-Modul sind nun in zwei Gruppen angeordnet (primäre Aktionen (lesen, speichern, löschen) zuerst, anschließend die sekundären Icons) TYPO3 CMS 7 LTS - What’s New
  • 20.
    Backend User Interface AnpassbaresAnmeldeformular In der Systemextension backend kann sowohl ein Hintergrundbild, ein Logo und die Signalfarbe für die Anmeldeformular eingestellt werden: TYPO3 CMS 7 LTS - What’s New
  • 21.
    Backend User Interface Bild-Manipulation(Cropping) Für Bilder kann im Backend bei der Verwendung einer Referenz (z.B. in Inhalts-Elementen) ein Ausschnitt ausgewählt werden. Diese Funktion muss allerdings für den Redakteur explizit erlaubt werden ("Exclude Fields"): TYPO3 CMS 7 LTS - What’s New
  • 22.
    Backend User Interface Benutzergruppen DieBackend Benutzergruppen können im Modul "Backend Users" verwaltet werden: TYPO3 CMS 7 LTS - What’s New
  • 23.
    Backend User Interface AutomatischeInstallationen unterbinden In den Einstellungen des Extension-Managers kann die automatische Installation von Extensions nach dem Download deaktiviert werden: TYPO3 CMS 7 LTS - What’s New
  • 24.
    Backend User Interface VerbleibendeAnzahl von Zeichen Unterhalb von Textfeldern wird die verbleibende Anzahl der maximal zulässigen Zeichen angezeigt: TYPO3 CMS 7 LTS - What’s New
  • 25.
    Backend User Interface UngespeicherteÄnderungen Redakteure erhalten eine Warnung, wenn in einem Editier-Formular der "Schließen"-Button geklickt wird, ohne vorher gespeichert zu haben: TYPO3 CMS 7 LTS - What’s New
  • 26.
    Backend User Interface Systeminformationen EineKurzübersicht der Systeminformationen kann per Klick neben dem Benutzer-Icon abgerufen werden. Die Informationen in diesem Dialog sind erweitern (siehe Kapitel "Änderungen im System"): TYPO3 CMS 7 LTS - What’s New
  • 27.
    Backend User Interface Passwortänderung ZurÄnderung des Passwortes müssen Backendbenutzer zuerst ihr aktuelles, altes Passwort eingeben: TYPO3 CMS 7 LTS - What’s New
  • 28.
    Backend User Interface Iconfür "Show Content from Page" Im Seitenbaum zeigt ein neues Icon an, ob eine Seite Inhalte von einer anderen Seite enthält ("Show Content from Page"): TYPO3 CMS 7 LTS - What’s New
  • 29.
    Backend User Interface ExtensionUpdate Beim Update einer Extension wird gefragt, auf welche Version aktualisieren werden soll: (es wird nicht mehr generell auf die letzte, verfügbare Version aktualisiert) TYPO3 CMS 7 LTS - What’s New
  • 30.
    Backend User Interface RecyclerTask Die Systemextension recycler bringt nun einen Scheduler Task mit, mit dem gelöschte Datensätze aus Content-Tabellen vollständig entfernt werden können (inkl. referenzierte Dateien, sofern vorhanden). (max. Alter, ab wann Content gelöscht werden kann, ist konfigurierbar) TYPO3 CMS 7 LTS - What’s New
  • 31.
    Backend User Interface Seitentitelim Page- und List-Modul Im Page- und List-Modul kann man den Seitentitel entweder per Doppelklick oder mit Klick auf das Bearbeitungssymbol ändern. TYPO3 CMS 7 LTS - What’s New
  • 32.
    Backend User Interface ProzessierteFAL Dateien im Install Tool löschen Das Install Tool enthält nun ein neues Tool (unterhalb von "Clean up"), um prozessierte FAL Dateien (wie z.B. Thumbnails) zu löschen. Das ist insbesondere hilfreich, wenn man grafik-relevante Settings ändern oder wenn man GraphicsMagick/ImageMagick aktualisiert hat und alle Dateien neu generieren will. TYPO3 CMS 7 LTS - What’s New
  • 33.
    Backend User Interface Copyrightin FAL Meta-Daten In den zusätzlichen FAL Meta-Daten (Extension: filemetadata) gibt es nun ein Feld "Copyright". TYPO3 CMS 7 LTS - What’s New
  • 34.
    Backend User Interface Avatarefür Backend Benutzer Backend Benutzer können nun Avatare festlegen. Diese werden in den Benutzereinstellungen gepflegt und beispielsweise oben neben dem Anmeldenamen oder in den Benutzerlisten angezeigt. TYPO3 CMS 7 LTS - What’s New
  • 35.
    Backend User Interface Dateienersetzen Es ist nun möglich, Dateien in der FAL Dateiliste zu ersetzen. Hierzu muss die "Erweiterte Ansicht" aktiviert sein. Je nach Bedarf kann der bisherige Dateinamen beibehalten oder der neue verwendet werden. TYPO3 CMS 7 LTS - What’s New
  • 36.
    Backend User Interface Onlinestatusanzeigen Im Modul "Backend Benutzer" wird nun angezeigt, ob ein Benutzer momentan online ist. TYPO3 CMS 7 LTS - What’s New
  • 37.
    Backend User Interface ZweiteOptionspalette entfernt Die Checkbox "Show secondary options (palettes)" sowie die TSconfig options.enableShowPalettes und die zugehörigen TCA-Einstellungen wurden entfernt. Die "Paletten" sind nun immer sichtbar und können nicht mehr ausgeblendet werden. TYPO3 CMS 7 LTS - What’s New
  • 38.
    Backend User Interface Beschreibungfür Backend Benutzer Backend Benutzer können nun auch eine Beschreibung erhalten. TYPO3 CMS 7 LTS - What’s New
  • 39.
    Backend User Interface Beschreibungim Backend anzeigen Über die TCA-Einstellung [’TCA’][’ctrl’][’descriptionColumn’] kann eine Spalte ausgewählt werden (meist description), die eine Beschreibung enthält. Ist diese vorhanden, wird der Inhalt beispielsweise im Listenmodul angezeigt. TYPO3 CMS 7 LTS - What’s New
  • 40.
    Backend User Interface Beschreibungfür Filemounts Filemounts können ebenfalls eine Beschreibung erhalten. TYPO3 CMS 7 LTS - What’s New
  • 41.
    Backend User Interface ÜberschreibenDialog beim Upload Sofern bei einem Upload Dateien bereits auf dem Server existieren, werden in einem Dialog mehrere Optionen zur Auswahl angeboten. TYPO3 CMS 7 LTS - What’s New
  • 42.
    Backend User Interface Editierenvon Inhaltselementen für Nicht-Admins einschränken Inhaltselemente können jetzt für die Bearbeitung durch Nicht-Admins eingeschränkt werden (ähnliche Funktion die es bereits bei Seiten gibt). TYPO3 CMS 7 LTS - What’s New
  • 43.
    Backend User Interface StatischeTSconfig Dateien (1) In den Seiteneigenschaften können nun statische TSconfig Dateien eingebunden werden. TYPO3 CMS 7 LTS - What’s New
  • 44.
    Backend User Interface StatischeTSconfig Dateien (2) Die TSconfig Dateien werden wie folgt registriert: TYPO3CMSCoreUtilityExtensionManagementUtility::registerPageTSConfigFile( ’extension_name’, ’Configuration/PageTS/myPageTSconfigFile.txt’, ’My special configuration’ ); TYPO3 CMS 7 LTS - What’s New
  • 45.
    Backend User Interface EchteSprachkopien Es ist nun möglich, "richtige" Kopien von Inhaltselementen in Sprachversionen anzulegen (und nicht nur Referenzen). TYPO3 CMS 7 LTS - What’s New
  • 46.
    Backend User Interface Sprachauswahlim Modul "View" Das Modul WEB->View bietet nun eine komfortable Sprachauswahl. (kann durch mod.SHARED.view.disableLanguageSelector = 1 deaktiviert werden) TYPO3 CMS 7 LTS - What’s New
  • 47.
    Backend User Interface Inhaltselementtextmedia Ein neues Inhaltselement "Text & Media", fasst die bisher bekannten Elemente text, image und textpic zusammen. TYPO3 CMS 7 LTS - What’s New
  • 48.
    Backend User Interface YouTube-und Vimeo-Dateien Über das erwähnte Inhaltselement "Text & Media" können auch externe YouTube- und Vimeo-Dateien, sowie lokale Dateien eingefügt werden. TYPO3 CMS 7 LTS - What’s New
  • 49.
    Backend User Interface Sucheim Filelist Modul Im Modul "Filelist" gibt es eine Suche, die rekursiv durch alle Ordner sucht TYPO3 CMS 7 LTS - What’s New
  • 50.
    Backend User Interface Benachrichtigungseinstellungenbei Workspaces (1) Die Benachrichtigungseinstellungen (engl. Notification Settings) innerhalb der Workspaces wurden überarbeitet TYPO3 CMS 7 LTS - What’s New
  • 51.
    Backend User Interface Benachrichtigungseinstellungenbei Workspaces (2) Man kann nun sogar für den Stage publish-execute Einstellungen vornehmen TYPO3 CMS 7 LTS - What’s New
  • 52.
    Backend User Interface Sucheim Dateibrowser Im Popup des Dateibrowser ist nun eine einfache Suche integriert, die rekursiv agiert TYPO3 CMS 7 LTS - What’s New
  • 53.
    Sources and Authors Quellenund Autoren TYPO3 CMS 7 LTS - What’s New
  • 54.
    Sources and Authors Quellennachweis TYPO3News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  • 55.
    Sources and Authors pluswerk pluswerkist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  • 56.
    TYPO3 CMS 7LTS - What’s New TSconfig & TypoScript Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  • 57.
    Introduction TYPO3 CMS 7LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  • 58.
    TSconfig & TypoScript TSconfig& TypoScript TypoScript wird verwendet, um hierarchische Informationen in einer Struktur zu verwalten um damit die TYPO3 CMS Instanz zu konfigurieren. In TYPO3 CMS 7 LTS wurden viele Eigenschaften und Optionen zugefügt, geändert bzw. auch als veraltet markiert oder entfernt. Open Graph Attribute werden nun out-of-the-box unterstützt und die Integrität von extern gehosteten JavaScript-Dateien kann nun via SRI-Hash überprüft werden, um nur zwei der neuen Features zu nennen. Entfernte TypoScript-Optionen sind in den Slides Deprecated/Removed zu finden. TYPO3 CMS 7 LTS - What’s New
  • 59.
    TSconfig & TypoScript TSconfigfür Linkvalidator inkludieren TSconfig Konfiguration für den Linkvalidator wird gelesen... entweder aus dem aktiven TSconfig des Backends, oder aus der Konfiguration des Scheduler-Tasks Das folgende TSconfig kann vom Linkchecker ausgelesen werden mod.linkvalidator.mychecker.myvar = 1 Dort steht das TSconfig dann als $this->tsConfig zur Verfügung TYPO3 CMS 7 LTS - What’s New
  • 60.
    TSconfig & TypoScript Linkszu deaktivierten Datensätzen im Linkhandler melden Bisher hat der Linkhandler lediglich gewarnt, wenn es Links zu gelöschten oder nicht existierenden Datensätzen gab Über die folgende TSconfig Einstellung kann nun auch eine Warnung aktiviert werden, wenn der Link auf einen deaktivierten Datensatz zeigt: mod.linkvalidator.linkhandler.reportHiddenRecords = 1 TYPO3 CMS 7 LTS - What’s New
  • 61.
    TSconfig & TypoScript RTE:mehrere CSS Klassen 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 = list of CSS classes } TYPO3 CMS 7 LTS - What’s New
  • 62.
    TSconfig & TypoScript RTE:nicht-selektierbare Klassen Man kann nun Klassen als "nicht-selektierbar" im Style-Selektor des RTE konfigurieren // der Wert "1" bedeutet, class ist auswaehlbar // der Wert "0" bedeutet, class ist nicht auswaehlbar RTE.classes.[ *classname* ] { .selectable = 1 } TYPO3 CMS 7 LTS - What’s New
  • 63.
    TSconfig & TypoScript RTE:mehrere CSS-Dateien einbinden Man kann nun mehrere CSS-Dateien in den RTE laden RTE.default.contentCSS { file1 = fileadmin/rte_stylesheet1.css file2 = fileadmin/rte_stylesheet2.css } Gibt man keine CSS Datei an, so wird die Default-Datei geladen: typo3/sysext/rtehtmlarea/res/contentcss/default.css TYPO3 CMS 7 LTS - What’s New
  • 64.
    TSconfig & TypoScript Exceptionwährend Rendering erzeugen - Teil 1 Sobald Fehler im Rendering von einzelnen Inhaltselementen (Content Objects) (z.B. mittels USER) auftreten, wird eine Fehlermeldung erzeugt, die in TYPO3 CMS < 7.0 die gesamte Ausgabe zerstört In TYPO3 CMS 7.0 wurde ein Exception-Handling eingeführt, welches eine Fehlermeldung in die Ausgabe an der Stelle integriert, an der das Rendering stattgefunden hat TYPO3 CMS 7 LTS - What’s New
  • 65.
    TSconfig & TypoScript Exceptionwährend Rendering erzeugen - Teil 2 # default exception handler (activated in context "production") config.contentObjectExceptionHandler = 1 # configuration of a class for the exception handling config.contentObjectExceptionHandler = TYPO3CMSFrontendContentObjectExceptionProductionExceptionHandler # customised error message (show random error code) config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s # configuration of exception codes, which are not dealt with tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813 # deactivation of exception handling for a specific plugins or content objects tt_content.login.20.exceptionHandler = 0 # ignoreCodes and errorMessage can be configured globally... config.contentObjectExceptionHandler.errorMessage = Oops an error occurred. Code: %s config.contentObjectExceptionHandler.ignoreCodes.10 = 1414512813 # ...or locally for individual content objects tt_content.login.20.exceptionHandler.errorMessage = Oops an error occurred. Code: %s tt_content.login.20.exceptionHandler.ignoreCodes.10 = 1414512813 TYPO3 CMS 7 LTS - What’s New
  • 66.
    TSconfig & TypoScript StdWrapfür page.headTag TypoScript Option page.headTag hat nun stdWrap-Funktionalität page = PAGE page.headTag = <head> page.headTag.override = <head class="special"> page.headTag.override.if { isInList.field = uid value = 24 } TYPO3 CMS 7 LTS - What’s New
  • 67.
    TSconfig & TypoScript JavaScript-Dateienasynchron laden JavaScript-Dateien könen nun asynchron geladen werden page { includeJS { jsFile = /path/to/file.js jsFile.async = 1 } } Das gilt für: includeJSlibs / includeJSLibs includeJSFooterlibs includeJS includeJSFooter TYPO3 CMS 7 LTS - What’s New
  • 68.
    TSconfig & TypoScript HMENUEigenschaft mit additionalWhere TypoScript cObject HMENU erhält eine neue Eigenschaft additionalWhere Jenes erlaubt eine spezifischere DB Abfrage (z.B. Filterung) Beispiel: lib.authormenu = HMENU lib.authormenu.1 = TMENU lib.authormenu.1.additionalWhere = AND author!="" TYPO3 CMS 7 LTS - What’s New
  • 69.
    TSconfig & TypoScript ZusätzlicheEigenschaften für HMENU Browse-Menü Zwei neue Eigenschaften für das cObject HMENU (Option "special=browse"), um detaillierter definieren zu können, welche Seiten im Menü erscheinen sollen: excludeNoSearchPages includeNotInMenu Beispiel: lib.browsemenu = HMENU lib.browsemenu.special = browse lib.browsemenu.special.excludeNoSearchPages = 1 lib.browsemenu.includeNotInMenu = 1 TYPO3 CMS 7 LTS - What’s New
  • 70.
    TSconfig & TypoScript MehrereHTTP-Header HTTP Header können nun mittels config.additionalHeaders als Array gesetzt werden Das ermöglicht es, mehreren Header-Zeilen auf einmal zu konfigurieren config.additionalHeaders { 10 { # header string header = WWW-Authenticate: Negotiate # (optional) replace previous headers with the same name (default: 1) replace = 0 # (optional) force HTTP response code httpResponseCode = 401 } # set second additional HTTP header 20.header = Cache-control: Private } TYPO3 CMS 7 LTS - What’s New
  • 71.
    TSconfig & TypoScript Option"auto" für config.absRefPrefix TypoScript Konfiguration config.absRefPrefix kann verwendet werden, um der URL einen Prefix bei relativen Pfaden zu geben. Als Alternative zu config.baseURL (um eine bestimmte Domain zu spezifizieren), erkennt absRefPrefix die Site-Root automatisch: config.absRefPrefix = auto # anstelle von: [ApplicationContext = Production] config.absRefPrefix = / [ApplicationContext = Testing] config.absRefPrefix = /my_site_root/ Hinweis: diese Option ist "Multi-Domain"-sicher und mehrfaches Caching der selben Daten wird verhindern. TYPO3 CMS 7 LTS - What’s New
  • 72.
    TSconfig & TypoScript Zwei-ZeichenISO Code für sys_language (1) Die Behandlung von Sprachen wird durch Einträge in DB Tabelle sys_language vorgenommen, die durch sys_language_uid referenziert werden In TYPO3 CMS 7.1 wurden ISO 639-1 Zwei-Zeichen Codes implementiert: Neues DB Feld: sys_language.language_isocode Neue TypoScript-Option: sys_language_isocode Hinweis: bei ISO 639 handelt es sich um eine Sammlung von Standards der "International Organization for Standardization". Eine List der ISO 639-1 Codes ist hier abrufbar: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes TYPO3 CMS 7 LTS - What’s New
  • 73.
    TSconfig & TypoScript Zwei-ZeichenISO Code für sys_language (2) Beispiel: # Danish by default config.sys_language_uid = 0 config.sys_language_isocode_default = da [globalVar = GP:L = 1] # ISO code stored in table sys_language (uid 1) config.sys_language_uid = 1 # overwrite ISO code as required config.sys_language_isocode = fr [GLOBAL] page.10 = TEXT page.10.data = TSFE:sys_language_isocode page.10.wrap = <div class="main" data-language="|"> TYPO3 CMS 7 LTS - What’s New
  • 74.
    TSconfig & TypoScript EigeneConditions im Backend Eigene Conditions für das Frontend wurden bereits mit TYPO3 CMS 7.0 eingeführt Seit TYPO3 CMS 7.1 ist es nun auch möglich, eigene Conditions für das Backend zu implementieren Die Condition muss von AbstractCondition ableiten und die Methode matchCondition bereitstellen Anwendungsbeispiel in TypoScript: [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition] [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = 7] [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = 7, != 6] [BigCompanyNameTypoScriptLovePackageMyCustomTypoScriptCondition = {$mysite.myconstant}] TYPO3 CMS 7 LTS - What’s New
  • 75.
    TSconfig & TypoScript Zufügenvon Icons in TCEFORM via PageTSconfig Eigene Werte und Labels von Select-Feldern können bereits mit der PageTSconfig Option addItems vergeben werden Nun können auch Icons für diese Felder definiert werden Option 1: mittels addItems und der Eigenschaft .icon Option 2: mittels altIcons (generell für alle Felder) Beispiel: TCEFORM.pages.doktype.addItems { 10 = My Label 10.icon = EXT:t3skin/icons/gfx/i/pages.gif } TCEFORM.pages.doktype.altIcons { 10 = EXT:myext/icon.gif } TYPO3 CMS 7 LTS - What’s New
  • 76.
    TSconfig & TypoScript ElementBrowser: Mountpoints hinzufügen Neue UserTSconfig Option .append erlaubt es Administratoren Mountpoints hinzuzufügen, anstatt die Liste der konfigurierten DB Mountpoints eines Benutzers neu zu schreiben Beispiel: options.pageTree.altElementBrowserMountPoints = 20,31 options.pageTree.altElementBrowserMountPoints.append = 1 TYPO3 CMS 7 LTS - What’s New
  • 77.
    TSconfig & TypoScript Überschreibender Labels von Radio-Buttons und Checkboxen Labels von Radio-Buttons und Checkboxen können nun überschrieben werden Beispiel: // field with a single checkbox (use ".default") TCEFORM.pages.hidden.altLabels.default = new label TCEFORM.pages.hidden.altLabels.default = LLL:path/to/languagefile.xlf:individualLabel // field with multiple checkboxes (0, 1, 2, 3...) TCEFORM.pages.l18n_cfg.altLabels.0 = new label of first checkbox TCEFORM.pages.l18n_cfg.altLabels.1 = new label of second checkbox TCEFORM.pages.l18n_cfg.altLabels.2 = new label of third checkbox ... TYPO3 CMS 7 LTS - What’s New
  • 78.
    TSconfig & TypoScript Diverses(1) Breite und Höhe des Element-Browsers können nun per UserTSconfig festgelegt werden options.popupWindowSize = 400x900 options.RTE.popupWindowSize = 200x200 PageTSconfig: mit einer neue RTE-Konfiguration kann das Standard-Ziel von Links beeinflusst werden buttons.link.[type].properties.target.default Wobei [type] zum Beispiel page, file, url, mail or spec sein kann (Extensions können weitere Typen zur Verfügung stellen) TYPO3 CMS 7 LTS - What’s New
  • 79.
    TSconfig & TypoScript Diverses(2) Standardmäßig sind Section-Headlines der Indexed-Search Resultate verlinkt. Das kann nun mittels TypoScript deaktiviert werden plugin.tx_indexedsearch.linkSectionTitles = 0 getData kann jetzt auch field-Daten abfragen (nicht nur Arrays, wie beispielsweise GPVar und TSFE) 10 = TEXT 10.data = field:fieldname|level1|level2 TypoScript Konfiguration config.pageTitle hat jetzt stdWrap-Funktionalität # make value of <title> upper case page = PAGE page.config.pageTitle.case = upper TYPO3 CMS 7 LTS - What’s New
  • 80.
    TSconfig & TypoScript KonfigurierbarerVorschau-Link (1) Es ist nun möglich, die URL zur Vorschau einer Seite zu definieren, die durch den Button "Speichern & Vorschau" aufgerufen wird. Damit kann man unterschiedliche Links für Blog- oder News-Datensätze, aber auch für Inhaltselemente generieren lassen. TCEMAIN.preview { <table name> { previewPageId = 123 useDefaultLanguageRecord = 0 fieldToParameterMap { uid = tx_myext_pi1[showUid] } additionalGetParameters { tx_myext_pi1[special] = HELLO } } } TYPO3 CMS 7 LTS - What’s New
  • 81.
    TSconfig & TypoScript KonfigurierbarerVorschau-Link (2) previewPageId: UID der Seite, die für den Preview verwendet werden soll (ohne Angabe wird die aktuelle Seite verwendet) useDefaultLanguageRecord: definiert, ob übersetzte Datensätze die UID des Default-Datensatzes verwenden (standardmäßig ist jenes aktiviert, default: 1) fieldToParameterMap: Mapping (Key = Value) von Feldern des Datensatzes, die als GET-Parameter an den Link angehängt werden additionalGetParameters: wie fieldToParameterMap, aber für beliebige Paramater TYPO3 CMS 7 LTS - What’s New
  • 82.
    TSconfig & TypoScript RTEKonfiguration: Default-Target Das Default-Target in der RTE Konfiguration ist nun im PageTSconfig abhängig vom Typ einstellbar buttons.link.[ type ].properties.target.default = ... Als "type" sind folgende Werte zulässig: (weitere können via Extensions eingebracht werden) page file url mail spec TYPO3 CMS 7 LTS - What’s New
  • 83.
    TSconfig & TypoScript LeereHTML-Tags im HTMLparser löschen Es ist nun möglich, leere HTML-Tags im HTMLparser zu löschen stdWrap { // Hier werden alle leeren HTML-Tags entfernt HTMLparser.stripEmptyTags = 1 // Hier werden nur leere h2 und h3 Tags entfernt HTMLparser.stripEmptyTags.tags = h2, h3 } RTE.default.proc.entryHTMLparser_db { stripEmptyTags = 1 stripEmptyTags.tags = p stripEmptyTags.treatNonBreakingSpaceAsEmpty = 1 } Da der HtmlParser unbekannte Tags grundsätzlich entfernt, ist es ratsam, diese zunächst zu behalten: HTMLparser.keepNonMatchedTags = 1 TYPO3 CMS 7 LTS - What’s New
  • 84.
    TSconfig & TypoScript Diverses DerButton für "Abkürzung" (engl. abbreviation) im RTE kann nun in der PageTSconfig ausgeblendet werden (da nicht mehr HTML5 konform): # moegliche Wert sind: # acronym, definedAcronym, abbreviation, definedAbbreviation buttons.abbreviation.removeFieldsets = acronym,definedAcronym Die Eigenschaft inlineLanguageLabel des Objekts PAGE kann nun auch mit LLL:-Referenzen umgehen TYPO3 CMS 7 LTS - What’s New
  • 85.
    TSconfig & TypoScript stdWrapFunktion strtotime Es gibt nun eine stdWrap Funktion strtotime, welche es ermöglicht, formatierte Datum-Angaben in einen Timestamp umzuwandeln date_as_timestamp = TEXT date_as_timestamp { value = 2015-04-15 strtotime = 1 } next_weekday = TEXT next_weekday { data = GP:selected_date strtotime = + 2 weekdays strftime = %Y-%m-%d } TYPO3 CMS 7 LTS - What’s New
  • 86.
    TSconfig & TypoScript GPmergedin Conditions Prüft man in Conditions nur mittels GP so wird beim gleichzeitigen Vorhandensein von POST- und GET-Variablen (z.B. tx_demo_demo[...]=...), lediglich die POST-Variable zurückgegeben Mit der neuen Option GPmerged werden beide Variablen zusammengeführt und dann zurückgegeben [globalVar = GPmerged:tx_demo|foo = 1] page.90 = TEXT page.90.value = DEMO [global] TYPO3 CMS 7 LTS - What’s New
  • 87.
    TSconfig & TypoScript WeitereWerte für die Funktion stdWrap.case Die stdWrap Funktion case ist um die beiden Werte uppercamelcase und lowercamelcase ergänzt worden Beispiel: tt_content = CASE tt_content { key.field = CType my_custom_ctype =< lib.userContent my_custom_ctype { file = EXT:site_base/Resources/Private/Templates/SomeOtherTemplate.html settings.extraParam = 1 } default =< lib.userContent default { file = TEXT file.field = CType file.stdWrap.case = uppercamelcase file.wrap = EXT:site_base/Resources/Private/Templates/|.html } } TYPO3 CMS 7 LTS - What’s New
  • 88.
    TSconfig & TypoScript Eigenschaftintegrity für JavaScript-Dateien (1) Es wurde die Eigenschaft integrity zugefügt, um einen SRI Hash zum JavaScript-Markup hinzuzufügen, mit dem die Quelle verifiziert werden kann (SRI: Sub-Resource Integrity) Dies betrifft die Eigenschaften page.includeJSLibs, page.includeJSFooterlibs, includeJS und includeJSFooter Beispiel: page { includeJS { jQuery = https://code.jquery.com/jquery-1.11.3.min.js jquery.external = 1 jQuery.disableCompression = 1 jQuery.excludeFromConcatenation = 1 jQuery.integrity = sha256-7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2/ujj7g= } } TYPO3 CMS 7 LTS - What’s New
  • 89.
    TSconfig & TypoScript Eigenschaftintegrity für JavaScript-Dateien (2) SRI ist eine Spezifikation des W3C, die es ermöglicht zu verifizieren, ob extern gehostete Dateien manipuliert worden sind Erstellen von Integrity Hashes: Option 1: https://srihash.org Option 2: durch folgende Kommandos cat FILENAME.js | openssl dgst -sha256 -binary | openssl enc -base64 -A Weitere Informationen: http://www.w3.org/TR/SRI/ TYPO3 CMS 7 LTS - What’s New
  • 90.
    TSconfig & TypoScript Data-Providerfür Backend Layouts (1) Backend-Layouts können jetzt per PageTSconfig definiert und damit auch in Dateien ausgelagert werden. Zum Beispiel: mod { web_layout { BackendLayouts { exampleKey { title = Example config { backend_layout { colCount = 1 rowCount = 2 rows { 1 { columns { 1 { name = LLL:EXT:frontend/ ... /locallang_ttc.xlf:colPos.I.3 colPos = 3 colspan = 1 } } } [...] TYPO3 CMS 7 LTS - What’s New
  • 91.
    TSconfig & TypoScript Data-Providerfür Backend Layouts (2) (Fortsetzung) [...] 2 { columns { 1 { name = Main colPos = 0 colspan = 1 } } } } } } icon = EXT:example_extension/Resources/Public/Images/BackendLayouts/default.gif } } } } TYPO3 CMS 7 LTS - What’s New
  • 92.
    TSconfig & TypoScript Erweiterungder Option page.meta Die Option page.meta unterstützt nun auch Open Graph Attributnamen page { meta { X-UA-Compatible = IE=edge,chrome=1 X-UA-Compatible.attribute = http-equiv keywords = TYPO3 # <meta property="og:site_name" content="TYPO3" /> og:site_name = TYPO3 og:site_name.attribute = property description = Inspiring people to share og:description = Inspiring people to share og:description.attribute = property og:locale = en_GB og:locale.attribute = property og:locale:alternate { attribute = property value.1 = fr_FR value.2 = de_DE } refresh = 5; url=http://example.com/ refresh.attribute = http-equiv } } TYPO3 CMS 7 LTS - What’s New
  • 93.
    TSconfig & TypoScript languageFieldwird automatisch gesetzt In der TypoScript-Option select (die beispielsweise beim cObject CONTENT verwendet wird) musste man bisher das languageField explizit setzen Jenes wird nun automatisch gesetzt und kann daher weglassen werden config.sys_language_uid = 2 page.10 = CONTENT page.10 { table = tt_content select.where = colPos=0 # Die nachfolgende Zeile ist nicht notwendig: #select.languageField = sys_language_uid renderObj = TEXT renderObj.field = header renderObj.htmlSpecialChars = 1 } TYPO3 CMS 7 LTS - What’s New
  • 94.
    TSconfig & TypoScript IndividuellesContent Caching Es gibt nun ein individuelles Content Caching, welches im Gegensatz zu stdWrap.cache auch mit COA-Objekten funktioniert (ähnlich dem "Magento Block Caching") page = PAGE page.10 = COA page.10 { cache.key = coaout cache.lifetime = 60 #stdWrap.cache.key = coastdWrap #stdWrap.cache.lifetime = 60 10 = TEXT 10 { cache.key = mycurrenttimestamp cache.lifetime = 60 data = date : U strftime = %H:%M:%S noTrimWrap = |10: | | } [...] [...] 20 = TEXT 20 { data = date : U strftime = %H:%M:%S noTrimWrap = |20: | | } } TYPO3 CMS 7 LTS - What’s New
  • 95.
    TSconfig & TypoScript Zählerfür listNum Es gibt eine neue Eigenschaft returnCount für die stdWrap Eigenschaft split Damit kann die Anzahl der Elemente in einer kommaseparierten Liste ermittelt werden Das folgende Beispiel gibt 9 zurück: 1 = TEXT 1 { value = x,y,z,1,2,3,a,b,c split.token = , split.returnCount = 1 } TYPO3 CMS 7 LTS - What’s New
  • 96.
    TSconfig & TypoScript Sortierungvon Tabellen im Backend Über die TSconfig Option mod.web_list.tableDisplayOrder kann eingestellt werden, wie die Tabellen im List-Modul sortiert werden Dafür werden die Schlüsselworte before und after verwendet Anwendung: mod.web_list.tableDisplayOrder { <tableName> { before = <tableA>, <tableB>, ... after = <tableA>, <tableB>, ... } } Zum Beispiel: mod.web_list.tableDisplayOrder { be_users.after = be_groups sys_filemounts.after = be_users pages_language_overlay.before = pages fe_users.after = fe_groups fe_users.before = pages } TYPO3 CMS 7 LTS - What’s New
  • 97.
    TSconfig & TypoScript ContentLanguage im HTTP Header Es wird nun standardmäßig Content-language: XX im HTTP Response Header an den Client gesendet, wobei "XX" dem ISO-Code entspricht, der via sys_language_content konfiguriert wurde Dabei kann sys_language_content unterschiedlich zu sys_language_uid sein, wenn der Inhalt von der Fallback-Sprache ermittelt wird (jenes hängt von der Einstellung sys_language_mode ab) Über die Einstellung config.disableLanguageHeader = 1 kann der Header bei Bedarf auch deaktiviert werden TYPO3 CMS 7 LTS - What’s New
  • 98.
    TSconfig & TypoScript RekursiveOption für ordner-basierte File Collections Ordner-basierte File Collections haben nun eine Option um rekursiv alle Dateien für einen gegebenen Ordner zu ermitteln Die Option ist ebenfalls für das TypoScript Objekt FILES verfügbar filecollection = FILES filecollection { folders = 1:images/ folders.recursive = 1 renderObj = IMAGE renderObj { file.import.data = file:current:uid } } TYPO3 CMS 7 LTS - What’s New
  • 99.
    TSconfig & TypoScript Extension.ts für Static Templates Bislang waren für statische TypoScript Templates nur die folgenden Dateinamen zugelassen: constants.txt setup.txt include_static.txt include_static_files.txt Als Extension kann nun auch .ts verwendet werden Dabei hat .ts Vorrang vor .txt TYPO3 CMS 7 LTS - What’s New
  • 100.
    TSconfig & TypoScript save& view Button Der "save & view" Button ist nun via TSconfig konfigurierbar Der folgende Schlüssel nimmt eine kommaseparierte Liste an "doktypes" auf: TCEMAIN.preview.disableButtonForDokType Der Standardwert ist "254, 255, 199" (Storage Folder, Recycler und Menu Seperator) In Foldern und Recycler-Seiten ist der "save & view" Button daher standardmäßig nicht mehr sichtbar TYPO3 CMS 7 LTS - What’s New
  • 101.
    TSconfig & TypoScript stdWrapfür treatIdAsReference Für das Objekt getImgResource existiert die Option treatIdAsReference, die ggf. definiert, dass die angegebenen UIDs als UIDs von sys_file_reference, anstatt von sys_file gelten Die Option treatIdAsReference besitzt nun stdWrap Funktionalität TYPO3 CMS 7 LTS - What’s New
  • 102.
    TSconfig & TypoScript Conditionsfür TypoScript-Include Der INCLUDE_TYPOSCRIPT Tag besitzt nun das optionale Attribut "condition", welches es ermöglicht, die Datei (oder das Verzeichnis) nur dann zu inkludieren, wenn die Condition erfüllt ist: // TypoScript nur laden, wenn Benutzer eingeloggt ist: <INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/feuser.ts" condition="[loginUser = *]"> // TypoScript nur laden, wenn ApplicationContext gesetzt ist: <INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/staging.ts" condition="applicationContext = /^Production/Staging/Serverd+$/"> TYPO3 CMS 7 LTS - What’s New
  • 103.
    TSconfig & TypoScript TCA-Option,um Datum Feldweise auszublenden Es gibt nun eine TCA-Option disableAgeDisplay, um die Anzeige des Datums auszublenden Voraussetzung hierfür ist, dass der Typ des Feldes input ist, und eval auf date gesetzt ist $GLOBALS[’TCA’][’tt_content’][’columns’][’date’][’config’][’disableAgeDisplay’] = true; TYPO3 CMS 7 LTS - What’s New
  • 104.
    TSconfig & TypoScript InlineSprachlabels mit TypoScript (1) Man kann nun Sprachdateien mittels TypoScript auslesen und als Inline-Array in den Quelltext schreiben, um z.B. per JavaScript darauf zuzugreifen Folgende Optionen sind möglich: selectionPrefix: nur Schlüssel, die mit diesem Prefix anfangen, werden ermittelt stripFromSelectionName: String, der von jedem Schlüssel entfernt wird errorMode: Mode, wenn die Sprachdatei nicht gefunden wird (0: Eintrag im Syslog vornehmen, 1: ignorieren, 3: Exception generieren) TYPO3 CMS 7 LTS - What’s New
  • 105.
    TSconfig & TypoScript InlineSprachlabels mit TypoScript (2) Beispiel: page = PAGE page.inlineLanguageLabelFiles { someLabels = EXT:myExt/Resources/Private/Language/locallang.xlf someLabels.selectionPrefix = idPrefix someLabels.stripFromSelectionName = strip_me someLabels.errorMode = 2 } Ausgabe: <script type="text/javascript"> /*<![CDATA[*/ var TYPO3 = TYPO3 || {}; TYPO3.lang = {"firstLabel":[{"source":"first Label","target":"erstes Label"}], "secondLabel":[{"source":"second Label","target":"zweites Label"}]}; /*]]>*/ </script> TYPO3 CMS 7 LTS - What’s New
  • 106.
    TSconfig & TypoScript WorkspacePreview per TSconfig Standardmäßig erzeugt TYPO3 lediglich Vorschau-Links für die Tabellen tt_content, pages und pages_language_overlay Dies kann nun per PageTSconfig angepasst werden: # Verwendung der Seite 123 fuer Workspace Preview (fuer alle Tabellen) options.workspaces.previewPageId = 123 # Verwendung des Feldes pid (fuer alle Tabellen) options.workspaces.previewPageId = field:pid # Verwendung der Seite 123 fuer Workspace Preview (fuer die Tabelle tx_myext_table) options.workspaces.previewPageId.tx_myext_table = 123 # Verwendung des Feldes pid fuer Workspace Preview (fuer die Tabelle tx_myext_table) options.workspaces.previewPageId.tx_myext_table = field:pid TYPO3 CMS 7 LTS - What’s New
  • 107.
    TSconfig & TypoScript Bildqualitätkann per SourceCollection gesetzt werden Die Bildqualität jeder sourceCollection kann nun konfiguriert werden Dies überschreibt die Einstellungen, die im Install Tool gemacht wurden und in der Datei LocalConfiguration.php gespeichert sind # fuer kleine Retina Bilder tt_content.image.20.1.sourceCollection.smallRetina.quality = 80 # fuer groessere Retina Bilder tt_content.image.20.1.sourceCollection.largeRetina.quality = 65 TYPO3 CMS 7 LTS - What’s New
  • 108.
    TSconfig & TypoScript Countfür Split hinzugefügt Es wurde eine neue Eigenschaft returnCount zur stdWrap-Funktion split hinzugefügt, die die Anzahl der Elemente nach dem Split enthält 1 = TEXT 1 { value = x,y,z,1,2,3,a,b,c split.token = , split.returnCount = 1 } # result: 9 TYPO3 CMS 7 LTS - What’s New
  • 109.
    TSconfig & TypoScript Handlingvon Backend-Layouts vereinfacht (1) Das Handling, um Backend-Layouts mit Templates für die Frontend-Ausgabe zu versehen, wurde vereinfacht, indem die Option pagelayout eingeführt wurde Beispiel: page.10 = FLUIDTEMPLATE page.10 { file.stdWrap.cObject = CASE file.stdWrap.cObject { key.data = pagelayout default = TEXT default.value = EXT:sitepackage/Resources/Private/Templates/Home.html 3 = TEXT 3.value = EXT:sitepackage/Resources/Private/Templates/1-col.html 4 = TEXT 4.value = EXT:sitepackage/Resources/Private/Templates/2-col.html } } (Fortsetzung auf nächster Seite) TYPO3 CMS 7 LTS - What’s New
  • 110.
    TSconfig & TypoScript Handlingvon Backend-Layouts vereinfacht (2) pagelayout ersetzt dabei den folgenden Code: field = backend_layout ifEmpty.data = levelfield:-2,backend_layout_next_level,slide ifEmpty.ifEmpty = default TYPO3 CMS 7 LTS - What’s New
  • 111.
    TSconfig & TypoScript Diverse Fürdie mit TYPO3 CMS 7.4 eingeführte stdWrap-Funktion bytes kann nun die Basis (z.B. 1000 oder 1024) gesetzt werden: bytes.base = 1000 TYPO3 CMS 7 LTS - What’s New
  • 112.
    TSconfig & TypoScript Parameterfür indexed_search Einige Parameter für indexed_search, die bisher hart-kodiert waren, können nun konfiguriert werden titleCropAfter = 50 titleCropSignifier = ... summaryCropAfter = 180 summaryCropSignifier = hrefInSummaryCropAfter = 60 hrefInSummaryCropSignifier = ... markupSW_summaryMax = 300 markupSW_postPreLgd = 60 markupSW_postPreLgd_offset = 5 markupSW_divider = ... Dabei können folgende Schlüssel angesprochen werden: plugin.tx_indexedsearch.results. plugin.tx_indexedsearch.settings.results. Alle Optionen besitzen außerdem stdWrap-Funktionalität TYPO3 CMS 7 LTS - What’s New
  • 113.
    TSconfig & TypoScript Konfigurationdes Path-Seperators bei indexed_search Es wurde eine neue TypoScript-Option breadcrumbWrap hinzugefügt, mit dem Path-Seperators bei indexed_search konfiguriert werden kann Darüber wird der Pfad für die Breadcrumb bei Suchergebnissen angezeigt Die Option verfügt über Option-Split und ist standardmäßig auf "/" konfiguriert plugin.tx_indexedsearch.settings.breadcrumbWrap = / || / TYPO3 CMS 7 LTS - What’s New
  • 114.
    TSconfig & TypoScript no_cacheParameter-Konfiguration für indexed_search Es wurde eine neuen TypoScript-Option hinzugefügt: forwardSearchWordsInResultLink.no_cache Damit kann eingestellt werden, ob der no_cache Paramater an die Seiten-Links innerhalb von indexed_search hinzugefügt wird // Fuer Extbase-Plugins plugin.tx_indexedsearch.settings.forwardSearchWordsInResultLink.no_cache = 1 // Fuer eingefuegte Plugins plugin.tx_indexedsearch.forwardSearchWordsInResultLink.no_cache = 1 TYPO3 CMS 7 LTS - What’s New
  • 115.
    Sources and Authors Quellenund Autoren TYPO3 CMS 7 LTS - What’s New
  • 116.
    Sources and Authors Quellennachweis TYPO3News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  • 117.
    Sources and Authors pluswerk pluswerkist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  • 118.
    TYPO3 CMS 7LTS - What’s New Extbase & Fluid Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  • 119.
    Introduction TYPO3 CMS 7LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  • 120.
    Extbase & Fluid Extbase& Fluid Extbase und Fluid sind der de facto Standard wenn es um moderne Technologien im TYPO3 Universum geht. Auch wenn Extbase einige wenige neue Features spendiert bekommen hat, wurden in TYPO3 CMS 7 LTS die meisten Änderungen im Bereich Fluid vorgenommen. Einige ViewHelpers wurden aktualisiert, verbessert oder gar neue eingeführt. So gibt es zum Beispiel nun einen MediaViewHelper, der dafür verwendet werden kann, um Video, Audio oder andere Media-Dateien im Frontend zu rendern. Zusätzlich wurde die System Extension form auf Extbase & Fluid portiert. TYPO3 CMS 7 LTS - What’s New
  • 121.
    Extbase & Fluid TemplatePath Fallback Sowohl Fluid Standalone View wie auch das TypoScript-Objekt FLUIDTEMPLATE unterstützen nun Fallback Pfade page.10 = FLUIDTEMPLATE page.10.file = EXT:myextension/Resources/Private/Templates/Main.html page.10.partialRootPaths { 10 = EXT:myextension/Resources/Private/Partials 20 = EXT:fallback/Resources/Private/Partials } Verwendet man die alten Optionen (z.B. partialRootPath) zusammen mit den neuen, so wird die alte auf die erste Position in der Fallback-Liste gestellt (Index = 0) TYPO3 CMS 7 LTS - What’s New
  • 122.
    Extbase & Fluid TypolinkViewHelper 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: 42 _blank - "This is the link title" &foo=bar Ausgabe: <a href="index.php?id=42&foo=bar" title="This is the title" target="_blank" class="ico-class" type="button"> Lediglich parameter wird benötigt, der Rest ist optional TYPO3 CMS 7 LTS - What’s New
  • 123.
    Extbase & Fluid Allgemeinedata-* Attribut Alle ViewHelper, die HTML Tags ausgeben, unterstützen nun das HTML5 data-* Attribut Array, welches als data übergeben wird, wird ausgewertet und dessen Schlüssel-/Werte-Paar ergeben das Attribut: data-key="value" Beispiel: <f:form.textfield data="{foo: ’bar’, baz: ’foos’}" /> Ausgabe: <input data-foo="bar" data-baz="foos" ... /> TYPO3 CMS 7 LTS - What’s New
  • 124.
    Extbase & Fluid ClassTag Values via Reflection Extbase Reflection-Service kann nun Tags bzw. Annotations zurückliefern, die zu einer Klasse zugefügt wurden Beispiel: /** * @SomeClassAnnotation A value */ class MyClass { } Die Annotation kann dann wie folgt ermittelt werden: $service = new TYPO3CMSExtbaseReflectionReflectionService(); // Returns all tags and their values the specified class is tagged with $classValues = $service->getClassTagsValues(’MyClass’); // Returns the values of the specified class tag $classValue = $service->getClassTagValue(’MyClass’, ’SomeClassAnnotation’); TYPO3 CMS 7 LTS - What’s New
  • 125.
    Extbase & Fluid PaginateViewHelper DerPaginate-ViewHelper unterstützt nun folgende Input-Werte: QueryResultInterface ObjectStorage ArrayAccess array Beispiel: <f:widget.paginate objects="{blogs}" as="paginatedBlogs"> <f:for each="{paginatedBlogs}" as="blog"> <h4>{blog.title}</h4> </f:for> </f:widget.paginate> TYPO3 CMS 7 LTS - What’s New
  • 126.
    Extbase & Fluid ContainerViewHelperlädt RequireJS Module Der ContainerViewHelper kann RequireJS-Module via includeRequireJsModules Attribut laden Beispiel: <f:be.container pageTitle="Extension Module" loadJQuery="true" includeRequireJsModules="{ 0:’TYPO3/CMS/Extension/Module1’, 1:’TYPO3/CMS/Extension/Module2’, 2:’TYPO3/CMS/Extension/Module3’, 3:’TYPO3/CMS/Extension/Module4’ }" > TYPO3 CMS 7 LTS - What’s New
  • 127.
    Extbase & Fluid Methodehas() im ObjectAccess Für die Benutzung in Fluid, object.property und object.isProperty unterstützten bereits die folgenden Methoden: isProperty() getProperty() Neu in TYPO3 CMS 7.1: hasProperty() Hier wird die Method $object->hasProperty() aufgerufen, wenn object.hasProperty in Fluid benutzt wird TYPO3 CMS 7 LTS - What’s New
  • 128.
    Extbase & Fluid Hochladenmehrerer Dateien im FormUpload-ViewHelper Der FormUpload-Viewhelper unterstützt das neue Attribut multiple, welches es ermöglicht, mehrere Dateien auf einmal zu übertragen <f:form.upload property="files" multiple="multiple" /> Hinweis: es ist darauf zu achten, dass für das Property-Mapping ein eigener TypeConverter erstellt werden muss! TYPO3 CMS 7 LTS - What’s New
  • 129.
    Extbase & Fluid Calloutsanstelle von FlashMessages An einigen Stellen im Backend werden nun Callouts anstelle von FlashMessages verwendet Dafür wurde ein neuer Fluid ViewHelper be.infobox eingeführt: <f:be.infobox title="Message title"> Inhalt der Nachricht </f:be.infobox> <f:be.infobox title="Message title" message="your box content" state="-2" iconName="check" disableIcon="TRUE" /> TYPO3 CMS 7 LTS - What’s New
  • 130.
    Extbase & Fluid format.caseViewHelper Es gibt nun einen format.case ViewHelper, der die Schreibweise von Strings verändert: upper: Führt zu "UPPERCASE" (Großbuchstaben) lower: Führt zu "lowercase" (Kleinbuchstaben) capital: Führt zu einem großen Anfangsbuchstaben uncapital: Führt zu einem kleinen Anfangsbuchstaben // Fuehrt zu "SOME TEXT WITH MIXED CASE" <f:format.case>Some TeXt WiTh miXed cAse</f:format.case> // Fuehrt zu "SomeString" <f:format.case mode="capital">someString</f:format.case> TYPO3 CMS 7 LTS - What’s New
  • 131.
    Extbase & Fluid Diverses ParametercHash wird nicht mehr an URLs angehängt, die auf eine Action leiten, welche nicht gecached wird oder wenn der Request nicht gecached wird. TYPO3 CMS 7 LTS - What’s New
  • 132.
    Extbase & Fluid ActionMenuItemGroupViewHelper(1) Mit diesem neuen ViewHelper können im Backend Optionen-Gruppen für Select-Felder verwendet werden Beispiel: <f:be.menus.actionMenu> <f:be.menus.actionMenuItem label="Default: Welcome" controller="Default" action="index" /> <f:be.menus.actionMenuItem label="Community: get in touch" controller="Community" action="index" /> <f:be.menus.actionMenuItemGroup label="Information"> <f:be.menus.actionMenuItem label="PHP Information" controller="Information" action="listPhpInfo" /> <f:be.menus.actionMenuItem label="Documentation" controller="Information" action="documentation" /> <f:be.menus.actionMenuItem label="Hooks" controller="Information" action="hooks" /> <f:be.menus.actionMenuItem label="Signals" controller="Information" action="signals" /> <f:be.menus.actionMenuItem label="XClasses" controller="Information" action="xclass" /> </f:be.menus.actionMenuItemGroup> </f:be.menus.actionMenu> TYPO3 CMS 7 LTS - What’s New
  • 133.
    Extbase & Fluid ActionMenuItemGroupViewHelper(2) Beispiel auf der vorherigen Slide resultiert in folgender Ausgabe: TYPO3 CMS 7 LTS - What’s New
  • 134.
    Extbase & Fluid Template-Supportfür FlashMessagesViewHelper Der FlashMessagesViewHelper hat nun Template Unterstützung Mit dem neuen Attribut as kann man eine Variable festlegen, über der der Zugriff auf die Messages möglich ist Beispiel: <f:flashMessages as="flashMessages"> <ul class="myFlashMessages"> <f:for each="{flashMessages}" as="flashMessage"> <li class="alert {flashMessage.class}"> <h4>{flashMessage.title}</h4> <span class="fancy-icon">{flashMessage.message}</span> </li> </f:for> </ul> </f:flashMessages> Die Option renderMode ist ab sofort "deprecated"! TYPO3 CMS 7 LTS - What’s New
  • 135.
    Extbase & Fluid NeueEigenschaften im cObject FLUIDTEMPLATE (1) Das cObject FLUIDTEMPLATE wurde um die Eigenschaften templateRootPaths und templateName ergänzt Man kann nun einen Template-Namen setzen, der zusammen mit dem Format im angegebenen Template-Pfad gesucht wird templateRootPaths hat die selbe Fallback-Logik wie layoutRootPath und partialRootPath templateName (string/stdWrap) templateRootPaths (Array mit Datei-Pfaden und "EXT:" Unterstützung) TYPO3 CMS 7 LTS - What’s New
  • 136.
    Extbase & Fluid NeueEigenschaften im cObject FLUIDTEMPLATE (2) TypoScript Beispiel: lib.stdContent = FLUIDTEMPLATE lib.stdContent { templateName = TEXT templateName.stdWrap { cObject = TEXT cObject { data = levelfield:-2,backend_layout_next_level,slide override.field = backend_layout split { token = frontend__ 1.current = 1 1.wrap = | } } ifEmpty = Default } templateRootPaths { 10 = EXT:frontend/Resources/Private/Templates 20 = EXT:sitemodification/Resources/Private/Templates } } TYPO3 CMS 7 LTS - What’s New
  • 137.
    Extbase & Fluid Entfernungvon xmlns-Attributes und des HTML-Tags (1) Durch die Einführung von xmlns:*-Attributen in Tags ist es einer IDE möglich Fluid direkt zu unterstützen (z.B. Syntax-Highlighting, Autovervollständigung, usw.). Diese Attribute werden allerdings auch ausgegeben. Der Workaround, den eigentlichen Inhalt in Sections auszulagern, ist in Layouts nicht möglich und zudem nicht intuitiv Daher wird ein Namespace, sofern dieser den Aufbau http://typo3.org/ns/<phpNamespace> hat, automatisch entfernt (alle anderen Namespaces bleiben erhalten) TYPO3 CMS 7 LTS - What’s New
  • 138.
    Extbase & Fluid Entfernungvon xmlns-Attributes und des HTML-Tags (2) Verwendet man im HTML-Tag das Attribut data-namespace-typo3-fluid="true", wird das gesamte HTML-Tag (öffnendes und schließendes) nicht gerendert <html data-namespace-typo3-fluid="true" xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"> <f:if condition="{newsItem.title}"> <f:then> <n:titleTag>{newsItem.title}</n:titleTag> </f:then> <f:else> <n:titleTag>News-Detail</n:titleTag> </f:else> </f:if> </html> TYPO3 CMS 7 LTS - What’s New
  • 139.
    Extbase & Fluid NeueMethoden im Fluid-StandaloneView Der StandaloneView wird mit den Methoden setTemplateRootPaths($templatePaths) und setTemplate($templateName, $throwException = TRUE) erweitert Selbe Funktionalität wie im cObject FLUIDTEMPLATE Beispiel (Rendern eines Email-Templates): $view = GeneralUtility::makeInstance(StandaloneView::class); $view->setLayoutRootPaths(array(GeneralUtility::getFileAbsFileName( ’EXT:my_extension/Resources/Private/Layouts’))); $view->setPartialRootPaths(array(GeneralUtility::getFileAbsFileName( ’EXT:my_extension/Resources/Private/Partials’))); $view->setTemplateRootPaths(array(GeneralUtility::getFileAbsFileName( ’EXT:my_extension/Resources/Private/Templates’))); $view->setTemplate(’Email/Notification’); $emailBody = $view->render(); TYPO3 CMS 7 LTS - What’s New
  • 140.
    Extbase & Fluid DataProcessing für FLUIDTEMPLATE cObject (1) Das cObject FLUIDTEMPLATE wird mit der Option dataProcessing (enthält ein Array aus FQCN) ausgerüstet, mit dessen Hilfe man das $data Array manipulieren kann, welches das aktuell zu rendernde Objekt (wie page oder tt_content) enthält Der Prozessor muss das Interface FluidTemplateDataProcessorInterface implementieren und folgende Methode enthalten: function process(array &$data, array $processorConfiguration, array $configuration, StandaloneView $view) { [...] } TYPO3 CMS 7 LTS - What’s New
  • 141.
    Extbase & Fluid DataProcessing für FLUIDTEMPLATE cObject (2) Beispiel: my_custom_ctype = FLUIDTEMPLATE my_custom_ctype { templateRootPaths { 10 = EXT:your_extension_key/Resources/Private/Templates } templateName = CustomName settings { extraParam = 1 } dataProcessing { 1 = VendorYourExtensionKeyDataProcessingMyFirstCustomProcessor 2 = AnotherVendorAnotherExtensionKeyDataProcessingMySecondCustomProcessor 2 { options { myOption = SomeValue } } } } TYPO3 CMS 7 LTS - What’s New
  • 142.
    Extbase & Fluid Section-Ankerfür Pagination Widget Es ist nun möglich einen Section-Anker im Pagination Widget zu verwenden Dazu gibt es den Schlüssel section im Attribut configuration Im folgenden Beispiel wird der Anker #archive an jeden Widget-Link angehängt: <f:widget.paginate objects="{plantpestWarnings}" as="paginatedWarnings" configuration="{section: ’archive’, itemsPerPage: 10, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 10}"> [...] </f:widget.paginate> TYPO3 CMS 7 LTS - What’s New
  • 143.
    Extbase & Fluid Attributbase für Date-ViewHelper Der Date-ViewHelper wurde um das optionale Attribut base ergänzt Damit kann man relative Berechnungen durchführen Wird das Datum als DateTime angegeben, wird base ignoriert Erlaubte Werte: siehe PHP Dokumentation Das folgende Beispiel gibt "2016" zurück, wenn das Objekt "dateObject" ein beliebiges Datum in 2017 enthält: <f:format.date format="Y" base="{dateObject}">-1 year</f:format.date> TYPO3 CMS 7 LTS - What’s New
  • 144.
    Extbase & Fluid dataProcessingbei FLUIDTEMPLATE Mit TYPO3 CMS 7.3 wurde die Option dataProcessing beim Content-Objekt FLUIDTEMPLATE eingeführt Hierfür ändert sich das zu implementierende Interface von FluidTemplateDataProcessorInterface in DataProcessorInterface und damit auch die Methode process() public function process( ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData ); BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 145.
    Extbase & Fluid Severity-Filterfür FlashMessages Bislang konnten nur alle FlashMessages auf einmal ermittelt und/oder gelöscht werden Nun kann man diese entsprechend der Severity (Gewichtung) filtern FlashMessageQueue::getAllMessages($severity); FlashMessageQueue::getAllMessagesAndFlush($severity); FlashMessageQueue::removeAllFlashMessagesFromSession($severity); FlashMessageQueue::clear($severity); TYPO3 CMS 7 LTS - What’s New
  • 146.
    Extbase & Fluid Query-Supportfür between hinzugefügt Es wurde between zum Extbase Query Objekt hinzugefügt, welches prüft, ob sich ein Wert innerhalb einer oberen und unteren Grenze (einschließlich) befindet Dies wird zu (min <= expr AND expr <= max) übersetzt. Dadurch hat dies keine Performance-Auswirkungen und funktioniert auf jedem DBMS $query->matching( $query->between(’uid’, 3, 5) ); TYPO3 CMS 7 LTS - What’s New
  • 147.
    Extbase & Fluid MehrereMessage-Queues Es können nun mehrere Message-Queues in Extbase realisiert werden: $queueIdentifier = ’myQueue’; $this->controllerContext->getFlashMessageQueue($queueIdentifier); In Fluid kann wie folgt darauf zugegriffen werden: <f:flashMessages queueIdentifier="myQueue" /> TYPO3 CMS 7 LTS - What’s New
  • 148.
    Extbase & Fluid Media-ViewHelper(1) Um Medien komfortabel im Frontend rendern zu können (z.B. Video, Audio, registrierte Renderer), wurde ein MediaViewHelper zugefügt Zuerst versucht der ViewHelper den Renderer aufzurufen; schlägt dies fehl, wird ein Image-Tag gerendert Beispiel: <code title="Image Object"> <f:media file="{file}" width="400" height="375" /> </code> <output> <img alt="alt set in image record" src="fileadmin/_processed_/323223424.png" width="396" height="375" /> </output> TYPO3 CMS 7 LTS - What’s New
  • 149.
    Extbase & Fluid Media-ViewHelper(2) Beispiel (Fortsetzung): <code title="MP4 Video Object"> <f:media file="{file}" width="400" height="375" /> </code> <output> <video width="400" height="375" controls> <source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"> </video> </output> <code title="MP4 Video Object with loop and autoplay option set"> <f:media file="{file}" width="400" height="375" additionalConfig="{loop: ’1’, autoplay: ’1’}" /> </code> <output> <video width="400" height="375" controls loop> <source src="fileadmin/user_upload/my-video.mp4" type="video/mp4"> </video> </output> TYPO3 CMS 7 LTS - What’s New
  • 150.
    Extbase & Fluid System-Extensionform (1) Die System-Extension form (inkl. Daten-Model, Controller-Logig, Property Validation, Views und Templating) wurde so adaptiert, dass der Extbase/Fluid MVC Stack unterstützt wird Die Ausgabe basiert nun komplett auf Fluid und kann somit entsprechend angepasst werden. Pro Form-Element gibt es ein eigenes Partial, welches nun auch individuell über die TypoScript-Option partialPath = ... angepasst werden kann Es wurden drei neue ViewHelper implementiert: AggregateSelectOptionsViewHelper (für optgroup Tags) SelectViewHelper (für von optgroup Tags) PlainMailViewHelper (zum Rendern von Plaintext Mails) TYPO3 CMS 7 LTS - What’s New
  • 151.
    Extbase & Fluid System-Extensionform (2) Außerdem gibt drei Views: show (das Formular selbst) confirmation (die Bestätigungsseite) postProcessor/mail (die Email) Die Template-Pfade und Sichtbarkeiten der Felder können für jeden View individuell angepasst werden TYPO3 CMS 7 LTS - What’s New
  • 152.
    Extbase & Fluid Annotation@cli Eine neue Annotation @cli wurde eingeführt: wird diese beim CommandController verwendet, so kann dieser nur auf der Kommandozeile, aber nicht im Scheduler verwendet werden TYPO3 CMS 7 LTS - What’s New
  • 153.
    Extbase & Fluid Relationenzu gleichen Tabellen Es nun möglich ein Domain Model zu verwenden, in der ein Objekt eine Relation zu einem anderen Objekt der selben Klasse hat namespace VendorExtensionDomainModel; class A { /** * @var VendorExtensionDomainModelA */ protected $parent; } namespace VendorExtensionDomainModel; class A { /** * @var VendorExtensionDomainModelB */ protected $x; /** * @var VendorExtensionDomainModelB */ protected $y; } TYPO3 CMS 7 LTS - What’s New
  • 154.
    Extbase & Fluid absoluteOption für Image-ViewHelper Der ImageViewhelper und Uri/ImageViewHelper haben nun eine Option absolute, mit der eine absolute URL ausgegeben werden kann. Beispiel 1 (ImageViewhelper): <f:image image="{file}" width="400" height="375" absolute="1" ></f:image> // Ausgabe <img alt="alt set in image record" src="http://www.mydomain.com/fileadmin/_processed_/323223424.png" width="400" height="375" /> Beispiel 2 (Uri/ImageViewHelper): <f:uri.image image="{file}" width="400" height="375" absolute="1" ></f:uri> // Ausgabe http://www.mydomain.com/fileadmin/_processed_/323223424.png TYPO3 CMS 7 LTS - What’s New
  • 155.
    Extbase & Fluid ViewHelperum Whitespaces in HTML zu entfernen Es wurde ein ViewHelper spaceless eingeführt, um überflüssige Leerzeichen zwischen HTML-Tages zu entfernen. Beispiel: <f:spaceless> <div> <div> <div>text text</div> </div> </div> Ausgabe: <div><div><div>text text</div></div></div> TYPO3 CMS 7 LTS - What’s New
  • 156.
    Extbase & Fluid RootLevelKonfiguration Der RootLevel einer Tabelle kann nun im TCA konfiguriert werden (damit wird festgelegt, wo die zugehörigen Datensätze gesucht werden) 0: Nur im Seitenbaum 1: Nur auf der Root-Seite (PID 0) -1: In beiden Zudem muss das TCA konfiguriert werden: $GLOBALS[’TCA’][’tx_myext_domain_model_record’][’ctrl’][’rootLevel’] = -1; TYPO3 CMS 7 LTS - What’s New
  • 157.
    Sources and Authors Quellenund Autoren TYPO3 CMS 7 LTS - What’s New
  • 158.
    Sources and Authors Quellennachweis TYPO3News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  • 159.
    Sources and Authors pluswerk pluswerkist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  • 160.
    TYPO3 CMS 7LTS - What’s New Änderungen im System Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  • 161.
    Introduction TYPO3 CMS 7LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  • 162.
    Änderungen im System Änderungenim System Durch die Überarbeitung aller Komponenten und der Entfernung veralteter Technologien, ist das Backend von TYPO3 CMS 7 LTS nun deutlich schneller geworden im Vergleich zu älteren Versionen. Der Performance-Boost ist aber nicht die einizige Änderung im Backend - viele weitere Änderungen wurden im Core durchgeführt. PHP Code wurde aufgeräumt, einige Komponenten in Extbase neu geschrieben und viele neue Features wurden mit Hilfe von aktuallen Technologien und Programmier-Paradigmen implementiert. TYPO3 CMS 7 LTS - What’s New
  • 163.
    Änderungen im System Integrationvon jQuery UI 1.11.2 jQuery UI 1.11 unterstützt AMD (Asynchronous Module Definition), mit welcher JavaScript Dateien erst geladen werden, wenn sie benötigt werden (Geschwindigkeitsvorteil) jQuery UI 1.11 ersetzt jQuery UI 1.10 + Scriptaculous in TYPO3 CMS 7.0 Es werden nur der Core und Interaction Components inkludiert, die notwendig sind, um ExtJS und Scriptaculous zu ersetzen. Widgets werden nicht inkludiert, sondern über Bootstrap realisiert (z.B. DatePicker, Spinner, Dialog, Buttons, Tabs, Tooltip) TYPO3 CMS 7 LTS - What’s New
  • 164.
    Änderungen im System Registryfü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; // priority: the higher, the more important (max: 100) } 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 LTS - What’s New
  • 165.
    Änderungen im System Evaluierungsfunktion"email" für das TCA Für das TCA wurde 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 Example: ’emailaddress’ => array( ’exclude’ => 1, ’label’ => ’LLL:EXT:myextension/Resources/Private/Language/locallang_db .xlf:tx_myextension ’config’ => array( ’type’ => ’input’, ’size’ => 30, ’eval’ => ’email,trim’ ), ) TYPO3 CMS 7 LTS - What’s New
  • 166.
    Änderungen im System Einführungeiner abstrakten Condition in TypoScript Es gibt nun eine AbstractCondition, von der eigene Conditions ableiten können class TestCondition extends TYPO3CMSCoreConfigurationTypoScriptConditionMatchingAbstractCondition { public function matchCondition(array $conditionParameters) { if ($conditionParameters[0] === ’= 7’ && $conditionParameters[1] === ’!= 6’) { throw new TestConditionException(’All Ok’, 1411581139); } } } Die Verwendung in 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 LTS - What’s New
  • 167.
    Änderungen im System Signalzur 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 LTS - What’s New
  • 168.
    Änderungen im System SignalSlots für SoftReferenceIndex Zwei neue Signal Slot Dispatch Calls innerhalb von SoftReferenceIndex: 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 augerufen in: TYPO3CMSCoreDatabaseSoftReferenceIndex->findRef_typolink TYPO3CMSCoreDatabaseSoftReferenceIndex->getTypoLinkParts TYPO3 CMS 7 LTS - What’s New
  • 169.
    Änderungen im System SignalSlots für afterPersistObjects Bislang gab es nur ein Signal, wenn ein Objekt im Repository (Extbase) aktualisiert wurde: 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 LTS - What’s New
  • 170.
    Änderungen im System SignalSlots 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 audgerufen in: TYPO3CMSCoreUtilityExtensionManagementUtilityBackend-> buildBaseTcaFromSingleFiles TYPO3 CMS 7 LTS - What’s New
  • 171.
    Änderungen im System APIum gecachte TCA Änderungen zuzufügen PHP Dateien in extkey/Configuration/TCA/Overrides/ werden ausgeführt, direkt nachdem der TCA-Cache aufgebaut wurde Die Dateien dürfen nur Code enthalten, der das TCA manipuliert, wie beispielsweise: addTCAColumns oder addToAllTCATypes Sobald Extensions dieses Features verwenden, ist mit einem deutlichen Geschwindigkeitsschub von Backend Requests zu rechnen TYPO3 CMS 7 LTS - What’s New
  • 172.
    Änderungen im System Nur-lesenderZugriff auf File Mounts File Mounts können (wieder) mit nur-lesenden Zugriff konfiguriert werden ("read-only") Jenes war bereits in TYPO3 CMS 4.x möglich, wurde aber in TYPO3 CMS 6.x entfernt Zum Beispiel: Ordner "test" vom storage UID 3 als Mount mit nur lesenden Zugriff in der Dateiliste und dem Element Browser: options.folderTree.altElementBrowserMountPoints = 3:/test Falls kein Storage angegeben wird, geht man davon aus, dass sich der Ordner im Default Storage befindet. TYPO3 CMS 7 LTS - What’s New
  • 173.
    Änderungen im System Sonstiges jQuerywurde von Version 1.11.0 auf Version 1.11.1 aktualisiert Datatables wurde von Version 1.9.4 zu Version 1.10.2 aktualisiert Einige alte, nicht mehr benutzte Variablen wurden von EM_CONF entfernt Extension Icons können nun auch im SVG Bildformat vorliegen (ext_icon.svg) Das Senden eines unbekannten eID Identifikators im Request resultiert nun in eine Exception TYPO3 CMS 7 LTS - What’s New
  • 174.
    Änderungen im System TCA:Maximum chars in text element TCA-Typ text unterstützt nun das HTML5-Attribut maxlength, um die maximale Anzahl der einzugebenden Zeichen zu beschränken (Hinweis: Zeilenumbrüche zählen hierbei als zwei Zeichen) ’teaser’ => array( ’label’ => ’Teaser’, ’config’ => array( ’type’ => ’text’, ’cols’ => 60, ’rows’ => 2, ’max’ => ’30’ // <-- maxlength ) ), Es ist zu beachten, dass nicht alle Browser dieses Attribut unterstützen. Siehe: Browserübersicht TYPO3 CMS 7 LTS - What’s New
  • 175.
    Änderungen im System NewSplFileInfo implementation Neue Klasse: TYPO3CMSCoreTypeFileFileInfo Diese erweitert SplFileInfo, die wiederrum Meta-Informationen von Dateien ermittelt $fileIdentifier = ’/tmp/foo.html’; $fileInfo = GeneralUtility::makeInstance( TYPO3CMSCoreTypeFileFileInfo::class, $fileIdentifier ); echo $fileInfo->getMimeType(); // output: text/html Entwickler können über folgenden Hook auf die Funktionalität zugreifen: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [TYPO3CMSCoreTypeFileFileInfo::class][’mimeTypeGuessers’] TYPO3 CMS 7 LTS - What’s New
  • 176.
    Änderungen im System UserFuncin TCA Display Condition userFunc displayCondition ermöglicht es auf jeden erdenklichen Status und jede Condition zu prüfen Sollte irgendeine Situation nicht mit den existierenden Checks abgefangen werden können, ist es auch möglich, eigene Funktionen zu schreiben (diese müssen lediglich TRUE/FALSE zurückgeben, um das entsprechende TCA Field sichtbar zu machen oder zu verbergen) $GLOBALS[’TCA’][’tt_content’][’columns’][’bodytext’][’displayCond’] = ’USER:VendorExampleUserElementConditionMatcher-> checkHeaderGiven:any:more:information’; TYPO3 CMS 7 LTS - What’s New
  • 177.
    Änderungen im System APIfür Twitter Bootstrap Modals (1) Zwei neue API Methoden um Modal Popups zu erzeugen/entfernen: TYPO3.Modal.confirm(title, content, severity, buttons) TYPO3.Modal.dismiss() Optionen title und content sind mindestens erforderlich Optionen buttons.text und buttons.trigger sind erforderlich, wenn buttons verwendet wird Beispiel 1: TYPO3.Modal.confirm( ’The title of the modal’, // title ’This the the body of the modal’, // content TYPO3.Severity.warning // severity ); TYPO3 CMS 7 LTS - What’s New
  • 178.
    Änderungen im System APIfür Twitter Bootstrap Modals (2) Beispiel 2: TYPO3.Modal.confirm(’Warning’, ’You may break the internet!’, TYPO3.Severity.warning, [ { text: ’Break it’, active: true, trigger: function() { ... } }, { text: ’Abort!’, trigger: function() { TYPO3.Modal.dismiss(); } } ] ); TYPO3 CMS 7 LTS - What’s New
  • 179.
    Änderungen im System JavaScriptStorage API (1) Mittels JavaScript kann auf die BE User Konfiguration zugegriffen werden ($BE_USER->uc, einfache Key-Value Paare) Zusätzlich kann nun auch der HTML5 Standard localStorage verwendet werden, um Daten (Client-seitig) im Browser des Benutzers zu speichern und auszulesen Zwei neue global TYPO3 Objekte: top.TYPO3.Storage.Client top.TYPO3.Storage.Persistent Jedes Objekt hat folgende API Methoden: get(key): Daten holen set(key,value): Daten schreiben isset(key): Prüfen, ob key genutzt wird clear(): Löschen des Speichers TYPO3 CMS 7 LTS - What’s New
  • 180.
    Änderungen im System JavaScriptStorage API (2) Beispiel: // get value of key ’startModule’ var value = top.TYPO3.Storage.Persistent.get(’startModule’); // write value ’web_info’ as key ’start_module’ top.TYPO3.Storage.Persistent.set(’startModule’, ’web_info’); TYPO3 CMS 7 LTS - What’s New
  • 181.
    Änderungen im System InlineRendering von Checkboxes Die Konfiguration inline sorgt bei "cols" dafür, dass Checkboxen nebeneinander dargestellt werden, um Platz im Backend User Interface zu sparen ’weekdays’ => array( ’label’ => ’Weekdays’, ’config’ => array( ’type’ => ’check’, ’items’ => array( array(’Mo’, ’’), array(’Tu’, ’’), array(’We’, ’’), array(’Th’, ’’), array(’Fr’, ’’), array(’Sa’, ’’), array(’Su’, ’’) ), ’cols’ => ’inline’ ) ), ... TYPO3 CMS 7 LTS - What’s New
  • 182.
    Änderungen im System ContentObject Registration Es wurde eine neue globale Option eingeführt, um cObjects wie TEXT zu registrieren bzw. zu erweitern Eine Liste aller verfügbaren cObjects ist verfügbar als: $GLOBALS[’TYPO3_CONF_VARS’][’FE’][’ContentObjects’] Beispiel: ein neues cObject EXAMPLE registrieren $GLOBALS[’TYPO3_CONF_VARS’][’FE’][’ContentObjects’][’EXAMPLE’] = VendorMyExtensionContentObjectExampleContentObject::class; Die registrierte Klasse muss von der folgenden Klasse ableiten: TYPO3CMSFrontendContentObjectAbstractContentObject Idealerweise speichert man seine Datei im Verzeichnis typo3conf/myextension/Classes/ContentObject/ um für zukünftige Autoload-Funktionen vorbereitet zu sein TYPO3 CMS 7 LTS - What’s New
  • 183.
    Änderungen im System Hooksund Signals (1) Neuer Hook wurde am Ende von PageRepository->init() hinzugefügt, mit dem die Sichtbarkeit von Seiten beeinflusst werden kann Der Hook kann wie folgt registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [TYPO3CMSFrontendPagePageRepository::class][’init’] Die Hook-Klasse muss das folgende Interface implementieren: TYPO3CMSFrontendPagePageRepositoryInitHookInterface TYPO3 CMS 7 LTS - What’s New
  • 184.
    Änderungen im System Hooksund Signals (2) Neuer Hook wurde zu PageLayoutView hinzugefügt, um das Rendering des Footers von Inhaltselementen im Backend manipulieren zu können Beispiel: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [’cms/layout/class.tx_cms_layout.php’][’tt_content_drawFooter’]; Die Hook-Klasse muss das folgende Interface implementieren: TYPO3CMSBackendViewPageLayoutViewDrawFooterHookInterface TYPO3 CMS 7 LTS - What’s New
  • 185.
    Änderungen im System Hooksund Signals (3) Es wurde ein Hook als Post-Prozessor zu BackendUtility::countVersionsOfRecordsOnPage hinzugefügt Dieser wird z.B. verwendet, um Workspace-Zustände im Seitenbaum zu visualisieren Der Hook kann wie folgt registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’] [’t3lib/class.t3lib_befunc.php’][’countVersionsOfRecordsOnPage’][] = ’MyPackageHookClass->hookMethod’; TYPO3 CMS 7 LTS - What’s New
  • 186.
    Änderungen im System Hooksund Signals (4) Neues Signal wurde am Ende der Methode DataPreprocessor::fetchRecord() hinzugefügt Jenes kann dazu verwendet werden, um das Array regTableItems_data zu manipulieren, damit die manipulierten Daten in TCEForms angezeigt werden können $this->getSignalSlotDispatcher()->dispatch( TYPO3CMSBackendFormDataPreprocessor::class, ’fetchRecordPostProcessing’, array($this) ); TYPO3 CMS 7 LTS - What’s New
  • 187.
    Änderungen im System Hooksund Signals (5) Neues Signal wurde eingeführt, um zusätzlichen Code bei der Registrierung des Mailer-Objekts auszuführen (z.B. Swift Mailer Plugins) $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class ); $signalSlotDispatcher->connect( TYPO3CMSCoreMailMailer::class, ’postInitializeMailer’, VendorPackageSlotsMailerSlot::class, ’registerPlugin’ ); TYPO3 CMS 7 LTS - What’s New
  • 188.
    Änderungen im System MultipleUID in PageRepository::getMenu() Methode PageRepository::getMenu() kann nun auch ein Array aufnehmen, um meherer Root-Seiten zu definieren $pageRepository = new TYPO3CMSFrontendPagePageRepository(); $pageRepository->init(FALSE); $rows = $pageRepository->getMenu(array(2, 3)); TYPO3 CMS 7 LTS - What’s New
  • 189.
    Änderungen im System SVGSupport im Core Der Core unterstützt nun SVG-Bilder ("Scalable Vector Graphics") Wenn ein SVG-Bild skaliert wird, wird kein prozessiertes Bild abgelegt, dafür aber die neuen Größenangaben in einem Datensatz sys_file_processedfile gespeichert (außer, das Bild wird - z.B. durch Cropping - weiterverarbeitet). Zudem wurde ein zusätzlicher Fallback eingebaut, falls ImageMagick/GraphicsMagick nicht in der Lage sein sollte, die Dimensionen zu berechnen: in diesem Fall wird das XML ausgelesen. SVG wurde außerdem zur Liste der zulässigen Bildtypen hinzugefügt: $GLOBALS[’TYPO3_CONF_VARS’][’GFX’][’imagefile_ext’] TYPO3 CMS 7 LTS - What’s New
  • 190.
    Änderungen im System Erweiterungder FAL-Treiber Um die Performance der Dateiliste bei (Remote-)Storages innerhalb von FAL zu erhöhen, ist es notwendig, die Sortierung und das Ermitteln der Anzahl direkt im Treiber zu erledigen. Dafür wurden zwei neue Parameter sort und sortRev eingebracht: public function getFilesInFolder($folderIdentifier, $start = 0, $numberOfItems = 0, $recursive = FALSE, array $filenameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE); public function getFoldersInFolder($folderIdentifier, $start = 0, $numberOfItems = 0, $recursive = FALSE, array $folderNameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE); Außerdem wurden zwei neue Methoden eingeführt: public function getFilesInFolderCount($folderIdentifier, $recursive = FALSE, array $filenameFilterCallbacks = array()); public function getFoldersInFolderCount($folderIdentifier, $recursive = FALSE, array $folderNameFilterCallbacks = array()); TYPO3 CMS 7 LTS - What’s New
  • 191.
    Änderungen im System BackendRouting API (1) Der Core enthält nun eine Backend Routing API, welche die Entry Points ins Backend verwaltet Die Routing API wurde vom Symfony Routing Framework inspiriert und ist weitgehend kompatibel mit dieser (auch wenn für TYPO3 zur Zeit nur ca. 20% genutzt werden) Grundsätzlich existieren hierfür drei Klassen: class Route: enthält Angaben zum Pfad und Optionen class Router: API, um die Route zu matchen class UrlGenerator: generiert die URL TYPO3 CMS 7 LTS - What’s New
  • 192.
    Änderungen im System BackendRouting API (2) Routen werden dabei in folgender Datei in der entsprechenden Extension definiert: Configuration/Backend/Routes.php (siehe Systemextension backend als Beispiel) Weitere Informationen zur Backend Routing API: http://wiki.typo3.org/Blueprints/BackendRouting TYPO3 CMS 7 LTS - What’s New
  • 193.
    Änderungen im System NeueSystemextension für Media Inhaltselemente Neue Systemextension "mediace" enthält folgende cObjects: MULTIMEDIA MEDIA SWFOBJECT FLOWPLAYER QTOBJECT Die Inhaltselemente media und multimedia wurden ebenfalls in die Systemextension verschoben, ebenso der "Media Wizard Provider" Die Extension ist standardmäßig nicht installiert! TYPO3 CMS 7 LTS - What’s New
  • 194.
    Änderungen im System Fremd-Bibliothekenan neuer Stelle Sämtliche Fremd-Bibliotheken werden nicht mehr in Packages/Libraries, sondern in typo3/contrib/vendor abgelegt Grundsätzlich ist dafür die Installation der Bibliotheken mittels composer install notwendig Probleme gibt es beim Upgrade einer Installation, wenn dort phpunit verwendet wurde! Dies kann wie folgt behoben werden: # cd htdocs/ # rm -rf typo3/contrib/vendor/ bin/ Packages/Libraries/ composer.lock # composer install TYPO3 CMS 7 LTS - What’s New
  • 195.
    Änderungen im System APIfür JavaScript Notifikationen Neue API, um JavaScript Notifikationen zu erzeugen: // Bisheriger (veralteter) Weg: top.TYPO3.Flashmessages.display(TYPO3.Severity.notice) // Neuer Weg: top.TYPO3.Notification.notice(title, message) Es existieren folgende API-Funktionen: (Parameter duration ist optional und standardmäßig auf 5s eingestellt) top.TYPO3.Notification.notice(title, message, duration) top.TYPO3.Notification.info(title, message, duration) top.TYPO3.Notification.success(title, message, duration) top.TYPO3.Notification.warning(title, message, duration) top.TYPO3.Notification.error(title, message, duration) TYPO3 CMS 7 LTS - What’s New
  • 196.
    Änderungen im System Systeminformationen(1) Das Dropdown mit Systeminformationen kann über folgenden Slot erweitert werden: $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class); $signalSlotDispatcher->connect( TYPO3CMSBackendBackendToolbarItemsSystemInformationToolbarItem::class, ’getSystemInformation’, VendorExtensionSystemInformationItem::class, ’getItem’ ); TYPO3 CMS 7 LTS - What’s New
  • 197.
    Änderungen im System Systeminformationen(2) Zur Ansprache benötigt man die Klasse Item und dazugehörig die Methode getItem() innerhalb einer Extension EXT:extensionClassesSystemInformationItem.php: class Item { public function getItem() { return array(array( ’title’ => ’The title shown on hover’, ’value’ => ’Description shown in the list’, ’status’ => SystemInformationHookInterface::STATUS_OK, ’count’ => 4, ’icon’ => TYPO3CMSBackendUtilityIconUtility::getSpriteIcon( ’extensions-example-information-icon’) )); } } TYPO3 CMS 7 LTS - What’s New
  • 198.
    Änderungen im System Systeminformationen(3) Das Icon extensions-example-information-icon wird in der Datei ext_localconf.php registriert: TYPO3CMSBackendSpriteSpriteManager::addSingleIcons( array( ’information-icon’ => TYPO3CMSCoreUtilityExtensionManagementUtility::extRelPath( $_EXTKEY) . ’Resources/Public/Images/Icons/information-icon.png’ ), $_EXTKEY ); TYPO3 CMS 7 LTS - What’s New
  • 199.
    Änderungen im System Systeminformationen(4) Nachrichten werden am unteren Ende des Dropdowns angezeigt Über den folgenden Slot können eigene Nachrichten eingebracht werden: $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class); $signalSlotDispatcher->connect( TYPO3CMSBackendBackendToolbarItemsSystemInformationToolbarItem::class, ’loadMessages’, VendorExtensionSystemInformationMessage::class, ’getMessage’ ); TYPO3 CMS 7 LTS - What’s New
  • 200.
    Änderungen im System Systeminformationen(5) Zur Ansprache benötigt man die Klasse Message und dazugehörig die Methode getMessage() innerhalb einer Extension EXT:extensionClassesSystemInformationMessage.php: class Message { public function getMessage() { return array(array( ’status’ => SystemInformationHookInterface::STATUS_OK, ’text’ => ’Something went wrong. Take a look at the reports module.’ )); } } TYPO3 CMS 7 LTS - What’s New
  • 201.
    Änderungen im System Einstellungenfür Bild-Manipulation (1) Folgende Einstellungen können über TypoScript getätigt werden: # Cropping fuer alle Bilder deaktivieren tt_content.image.20.1.file.crop = # Ueberschreiben/Setzen der Cropping Eigenschaften # offsetX,offsetY,width,height tt_content.image.20.1.file.crop = 50,50,100,100 TYPO3 CMS 7 LTS - What’s New
  • 202.
    Änderungen im System Einstellungenfür Bild-Manipulation (2) Das Cropping kann auch in Fluid verwendet werden: # Cropping fuer alle Bilder deaktivieren <f:image image="{imageObject}" crop="" ></f:image> # Ueberschreiben/Setzen der Cropping Eigenschaften # offsetX,offsetY,width,height <f:image image="{imageObject}" crop="50,50,100,100" ></f:image> TYPO3 CMS 7 LTS - What’s New
  • 203.
    Änderungen im System Einstellungenfür Bild-Manipulation (3) Im TCA wird das Image-Cropping wie folgt zur Verfügung gestellt: Column Type: image_manipulation Config file_field: string (default: uid_local) Config enableZoom: boolean (default: FALSE) Config allowedExtensions: string (default: $GLOBALS[’TYPO3_CONF_VARS’][’GFX’][’imagefile_ext’]) Config ratios: array, default: array( ’1.7777777777777777’ => ’16:9’, ’1.3333333333333333’ => ’4:3’, ’1’ => ’1:1’, ’NaN’ => ’Free’ ) TYPO3 CMS 7 LTS - What’s New
  • 204.
    Änderungen im System ZusätzlicheParameter für HTMLparser userFunc Die userFunc im HTMLparser kann nun zusätzliche Parameter aufnehmen: myobj = TEXT myobj.value = <a href="/" class="myclass">MyText</a> myobj.HTMLparser.tags.a.fixAttrib.class { userFunc = TxMyExtMyclass->htmlUserFunc userFunc.myparam = test } Diese können in einer Extension wie folgt abgerufen werden: function htmlUserFunc(array $params, HtmlParser $htmlParser) { // $params[’attributeValue’] enthaelt den Wert der // verarbeiteten Eigenschaft - hier also "myclass" // $params[’myparam’] enthaelt den Wert "test" ... } TYPO3 CMS 7 LTS - What’s New
  • 205.
    Änderungen im System LockingAPI (1) Es wurde eine neue Locking-API eingeführt, welche verschiedene Locking-Methoden (SimpleFile, Semaphore, ...) zur Verfügung stellt Eine Locking-Methode muss dabei das LockingStrategyInterface implementieren $lockFactory = GeneralUtility::makeInstance(LockFactory::class); $locker = $lockFactory->createLocker(’someId’); $locker->acquire() || die(’Could not acquire lock.’); ... $locker->release(); TYPO3 CMS 7 LTS - What’s New
  • 206.
    Änderungen im System LockingAPI (2) Man kann außerdem "non-blocking" Locks realisieren: $lockFactory = GeneralUtility::makeInstance(LockFactory::class); $locker = $lockFactory->createLocker( ’someId’, LockingStrategyInterface::LOCK_CAPABILITY_SHARED | LockingStrategyInterface::LOCK_CAPABILITY_NOBLOCK ); try { $result = $locker->acquire(LockingStrategyInterface::LOCK_CAPABILITY_SHARED | LockingStrategyInterface::LOCK_CAPABILITY_NOBLOCK); catch (RuntimeException $e) { if ($e->getCode() === 1428700748) { // einige Prozesse haben noch ein Lock // daher sollte etwas in der Zwischenzeit gemacht werden ... } } if ($result) { $locker->release(); } TYPO3 CMS 7 LTS - What’s New
  • 207.
    Änderungen im System Signalnach Installation von Extensions In der Methode TYPO3CMSExtensionmanagerUtilityInstallUtility::install() wurde ein Signal eingebaut, welches emmitiert wird, sobald eine Extension fertig installiert ist und alle Imports/Updates durchgelaufen sind // Aufruf $this->emitAfterExtensionInstallSignal($extensionKey); // Methode protected function emitAfterExtensionInstallSignal($extensionKey) { $this->signalSlotDispatcher->dispatch( __CLASS__, ’afterExtensionInstall’, array($extensionKey, $this) ); } TYPO3 CMS 7 LTS - What’s New
  • 208.
    Änderungen im System Registryfür Text-Extraktoren Der Core enthält nun eine Registry um Text-Extraktoren anzumelden Dabei prüft canExtractText() ob eine Extrahierung möglich ist und extractText() führt diese durch Die Registrierung erfolgt in ext_localconf.php: $textExtractorRegistry = TYPO3CMSCoreResourceTextExtractionTextExtractorRegistry:: getInstance(); $textExtractorRegistry->registerTextExtractor( TYPO3CMSCoreResourceTextExtractionPlainTextExtractor::class ); Die Verwendung erfolgt folgendermaßen: $textExtractorRegistry = TYPO3CMSCoreResourceTextExtractionTextExtractorRegistry:: getInstance(); $extractor = $textExtractorRegistry->getTextExtractor($file); if($extractor !== NULL) { $content = $extractor->extractText($file); } TYPO3 CMS 7 LTS - What’s New
  • 209.
    Änderungen im System Diverses AlleWeb-Bibliotheken (wie z.B. Twitter Bootstrap, jQuery, Font Awesome usw.) verwenden nun "Bower" (http://bower.io) zur Installation, und sind nicht mehr im TYPO3 Core Git enthalten bower install führt eine Installation durch bower update führt ein Update durch (die zugehörige Datei bower.json befindet sich im Verzeichnis Build) Ein laufender Scheduler Task kann nun in der Kommandozeile mit der Option -s wieder gestoppt werden Der "Processing" Ordner eines Storages kann nun auch außerhalb von diesem liegen (z.B. bei read-only Storages) Man kann nun auf die ID der ursprünglich angefragten Seite über das TSFE zugreifen: $TSFE->getRequestedId() TYPO3 CMS 7 LTS - What’s New
  • 210.
    Änderungen im System Symfony/Consoleim CommandController (1) Der CommandController verwendet nun intern Symfony/Console und stellt damit verschiedene Methoden zur Verfügung: TableHelper outputTable($rows, $headers = NULL) DialogHelper select($question, $choices, $default = NULL, $multiSelect = false, $attempts = FALSE) ask($question, $default = NULL, array $autocomplete = array()) askConfirmation($question, $default = TRUE) askHiddenResponse($question, $fallback = TRUE) askAndValidate($question, $validator, $attempts = FALSE, $default = NULL, array $autocomplete = NULL) askHiddenResponseAndValidate($question, $validator, $attempts = FALSE, $fallback = TRUE) TYPO3 CMS 7 LTS - What’s New
  • 211.
    Änderungen im System Symfony/Consoleim CommandController (2) ProgressHelper progressStart($max = NULL) progressSet($current) progressAdvance($step = 1) progressFinish() (siehe Code-Beispiel auf den folgenden Slides) TYPO3 CMS 7 LTS - What’s New
  • 212.
    Änderungen im System Symfony/Consoleim CommandController (3) <?php namespace AcmeDemoCommand; use TYPO3CMSExtbaseMvcControllerCommandController; class MyCommandController extends CommandController { public function myCommand() { // Table rendern $this->output->outputTable(array( array(’Bob’, 34, ’m’), array(’Sally’, 21, ’f’), array(’Blake’, 56, ’m’) ), array(’Name’, ’Age’, ’Gender’)); // Selektieren $colors = array(’red’, ’blue’, ’yellow’); $selectedColorIndex = $this->output->select(’Please select one color’, $colors, ’red’); $this->outputLine(’You choose the color %s.’, array($colors[$selectedColorIndex])); [...] TYPO3 CMS 7 LTS - What’s New
  • 213.
    Änderungen im System Symfony/Consoleim CommandController (4) [...] // Abfrage $name = $this->output->ask(’What is your name?’ . PHP_EOL, ’Bob’, array(’Bob’, ’Sally’, ’Blake’)); $this->outputLine(’Hello %s.’, array($name)); // Prompt $likesDogs = $this->output->askConfirmation(’Do you like dogs?’); if ($likesDogs) { $this->outputLine(’You do like dogs!’); } // Progress $this->output->progressStart(600); for ($i = 0; $i < 300; $i ++) { $this->output->progressAdvance(); usleep(5000); } $this->output->progressFinish(); } } ?> TYPO3 CMS 7 LTS - What’s New
  • 214.
    Änderungen im System BackendLogin API (1) Das Backend-Login wurde nun komplett als API realisiert und lässt sich damit selbst per Programmierung ansprechen Grundsätzlich muss man dazu einen sogenannten Login-Provider in der Datei ext_localconf.php registrieren: $GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’backend’][’loginProviders’][1433416020] = [ ’provider’ => TYPO3CMSBackendLoginProviderUsernamePasswordLoginProvider::class, ’sorting’ => 50, ’icon-class’ => ’fa-key’, ’label’ => ’LLL:EXT:backend/Resources/Private/Language/locallang.xlf:login.link’ ]; TYPO3 CMS 7 LTS - What’s New
  • 215.
    Änderungen im System BackendLogin API (2) Die Optionen sind wie folgt definiert: provider: Name der Login-Provider Klasse, die das Interface TYPO3CMSBackendLoginProviderLoginProviderInterface implementiert sorting: Sortierung, der die Reihenfolge der Links zum Login-Provider festlegt icon-class: Font-Awesome Icon-Name für den Link auf dem Login-Screen label: Label für den Link auf dem Login-Screen TYPO3 CMS 7 LTS - What’s New
  • 216.
    Änderungen im System BackendLogin API (3) Das LoginProviderInterface enthält lediglich die Methode public function render(StandaloneView $view, PageRenderer $pageRenderer, LoginController $loginController); Die Parameter sind wie folgt definiert: $view: Der Fluid-StandaloneView, welcher den Login-Screen rendert. Hier muss das Template-File gesetzt und die Variablen übergeben werden, die man benötigt. $pageRenderer: PageRenderer-Instanz, welche z.B. JavaScript-Ressourcen einbringen kann. $loginController: Instanz des Login-Controllers. TYPO3 CMS 7 LTS - What’s New
  • 217.
    Änderungen im System BackendLogin API (4) Das Template muss <f:layout name="Login"> und <f:section name="loginFormFields"> (für die Formular-Felder) enthalten: <f:layout name="Login" /> <f:section name="loginFormFields"> <div class="form-group t3js-login-openid-section" id="t3-login-openid_url-section"> <div class="input-group"> <input type="text" id="openid_url" name="openid_url" value="{presetOpenId}" autofocus="autofocus" placeholder="{f:translate(key: ’openId’, extensionName: ’openid’)}" class="form-control input-login t3js-clearable t3js-login-openid-field" /> <div class="input-group-addon"> <span class="fa fa-openid"></span> </div> </div> </div> </f:section> TYPO3 CMS 7 LTS - What’s New
  • 218.
    Änderungen im System CategoryRegistrymit neue Optionen Die Methode CategoryRegistry->addTcaColumn hat Optionen erhalten, um sowohl l10n_mode als auch l10n_display zu setzen: TYPO3CMSCoreUtilityExtensionManagementUtility::makeCategorizable( $extensionKey, $tableName, ’categories’, array( ’l10n_mode’ => ’string (keyword)’, ’l10n_display’ => ’list of keywords’ ) ); TYPO3 CMS 7 LTS - What’s New
  • 219.
    Änderungen im System Spritesin Backend Modulen Backend Module (z.B. Hauptmodule wie "Web" sowie Untermodule wie "Filelist") können nun Sprites als Icons verwenden (nur Sprites, die TYPO3 bekannt sind!) Beispiel: TYPO3CMSCoreUtilityExtensionManagementUtility::addModule( ’web’, ’layout’, ’top’, TYPO3CMSCoreUtilityExtensionManagementUtility::extPath($_EXTKEY) . ’Modules/Layout/’, array( ’script’ => ’_DISPATCH’, ’access’ => ’user,group’, ’name’ => ’web_layout’, ’configuration’ => array(’icon’ => ’module-web’), ’labels’ => array( ’ll_ref’ => ’LLL:EXT:cms/layout/locallang_mod.xlf’, ), ) ); TYPO3 CMS 7 LTS - What’s New
  • 220.
    Änderungen im System FormEngineNodeFactory API (1) Es ist nun möglich, neue Nodes zu registrieren und bestehende zu überschreiben $GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’formEngine’][’nodeRegistry’][1433196792] = array( ’nodeName’ => ’input’, ’priority’ => 40, ’class’ => MyVendorMyExtensionFormElementT3editorElement::class ); Dies registriert eine neue Klasse, die den TCA-Type input rendert und das NodeInterface implementieren muss Als Array-Key wird der Unix-Timestamp des Zeitpunkts verwendet, wenn man das Element zufügt TYPO3 CMS 7 LTS - What’s New
  • 221.
    Änderungen im System FormEngineNodeFactory API (2) Wenn mehrere Registry-Elemente für den selben Typ registriert werden, gewinnt das, mit der höchsten Priorität (0-100) Ein neuer TCA-Type wird wie folgt registriert: TCA ’columns’ => array( ’bodytext’ => array( ’config’ => array( ’type’ => ’text’, ’renderType’ => ’3dCloud’, ), ), ) ext_localconf.php $GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’formEngine’][’nodeRegistry’][1433197759] = array( ’nodeName’ => ’3dCloud’, ’priority’ => 40, ’class’ => MyVendorMyExtensionFormElementShowTextAs3dCloudElement::class ); TYPO3 CMS 7 LTS - What’s New
  • 222.
    Änderungen im System SignalpostProcessMirrorUrl wurde verschoben Die Klasse für das Signal postProcessMirrorUrl wurde geändert BREAKING CHANGE! Mit folgendem Code kann man die Klasse je nach TYPO3-Version ansprechen: $signalSlotDispatcher->connect( version_compare(TYPO3_version, ’7.0’, ’<’) ? ’TYPO3CMSLangServiceUpdateTranslationService’ : ’TYPO3CMSLangServiceTranslationService’, ’postProcessMirrorUrl’, ’VendorExtensionSlotsCustomMirror’, ’postProcessMirrorUrl’ ); TYPO3 CMS 7 LTS - What’s New
  • 223.
    Änderungen im System DriverInterface Zum DriverInterface wurden die folgenden Methoden hinzugefügt: getFolderInFolder getFileInFolder Jeder eigene FAL-Driver muss daher diese beiden Methoden nachimplementieren: public function getFoldersInFolder( $folderIdentifier, $start = 0, $numberOfItems = 0, $recursive = FALSE, array $folderNameFilterCallbacks = array(), $sort = ’’, $sortRev = FALSE ); public function getFileInFolder( $fileName, $folderIdentifier ); BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 224.
    Änderungen im System Unterstützungvon IEC/SI-Keywords für Größen Die Formatierung von Größen unterstützt nun zwei Keywords, um die Einheiten festzulegen: iec (default) (Basis: 2, Labels: | Ki| Mi| Gi| Ti| Pi| Ei| Zi| Yi) si (Basis: 10, Labels: | k| M| G| T| P| E| Z| Y) Gesetzt werden kann die Formatierung z.B. via TypoScript: bytes.labels = iec echo GeneralUtility::formatSize(85123); // => Vorher "83.1 K" // => Nachher "83.13 Ki" TYPO3 CMS 7 LTS - What’s New
  • 225.
    Änderungen im System DependencyOrdering Service (1) Oftmals ist es notwendig eine sortierte Liste an Items zur Verfügung zu stellen, deren Einträge einerseits Abhängigkeiten haben und andererseits dazu verwendet werden, um Aktionen in eben dieser Reihenfolge auszuführen. Im Core findet jenes beispielsweise Verwendung bei: Reihenfolge der Hook-Ausführung, Ladereihenfolge von Extensions, Reihefolge der Anzeige von Menü-Einträgen, usw. Eine Überarbeitung des bisherigen DependencyResolver stellt nun den DependencyOrderingService zur Verfügung TYPO3 CMS 7 LTS - What’s New
  • 226.
    Änderungen im System DependencyOrdering Service (2) Anwendung: $GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’someExt’][’someHook’][<some id>] = [ ’handler’ => someClass::class, ’runBefore’ => [ <some other ID> ], ’runAfter’ => [ ... ], ... ]; Zum Beispiel: $hooks = $GLOBALS[’TYPO3_CONF_VARS’][’EXTCONF’][’someExt’][’someHook’]; $sorted = GeneralUtility:makeInstance(DependencyOrderingService::class)->orderByDependencies( $hooks, ’runBefore’, ’runAfter’ ); TYPO3 CMS 7 LTS - What’s New
  • 227.
    Änderungen im System Hooksund Signals (1) Ein neuer Hook wurde am Ende von InlineRecordContainer::checkAccess hinzugefügt, mit dem der Zugriff von Inline-Records geprüft werden kann Der Hook kann wie folgt registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_tceforms_inline.php’] [’checkAccess’][] = ’MyPackageHookClass->hookMethod’; TYPO3 CMS 7 LTS - What’s New
  • 228.
    Änderungen im System Hooksund Signals (2) Ein neuer Hook wurde am Ende von AbstractUserAuthentication::checkAuthentication hinzugefügt, mit dem man fehlgeschlagene Anmeldeversuche verarbeiten kann Standardmäßig wartet der Prozess 5 Sekunden nachdem eine Anmeldung fehlgeschlagen ist Über den Hook kann ein anderes Verhalten implementiert werden (z.B. zur Abwehr von Brute Force Angriffen) Der Hook kann wie folgt registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_userauth.php’] [’postLoginFailureProcessing’][] = ’MyPackageHookClass->hookMethod’; TYPO3 CMS 7 LTS - What’s New
  • 229.
    Änderungen im System Hooksund Signals (3) Das neue Signal recordMarkedAsMissing wird ausgesendet, wenn der FAL Indexer auf einen sys_file Eintrag stößt, dessen Datei im Dateisystem aber nicht auffindbar ist. Dabei wird die sys_file UID übermittelt. Jenes kann in Extensions verwendet werden, die Dienste rund um das Datei-Management anbieten (wie beispielsweise Versionierung, Synchronisation, Recovery, usw.) Das Signal afterMappingSingleRow wird ausgesendet, wann immer der DataMapper ein Objekt erstellt TYPO3 CMS 7 LTS - What’s New
  • 230.
    Änderungen im System HTMLin TypoLink-Titeln Anführungszeichen in TypoLink-Titeln werden nun automatisch "escaped" Ein eventuell bereits existierendes Escaping wird daher nun falsch dargestellt: Aus ’Some &quot;special&quot; title’ wird ’Some &amp;quot;special&amp;quot; title’ Es wird empfohlen, hier auf Escaping komplett zu verzichten, da sich TYPO3 nun darum kümmert BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 231.
    Änderungen im System DiverseÄnderungen (1) Mit Files->replace gibt eine neue Berechtigung für Backend Benutzer, um Dateien im Modul Dateiliste zu ersetzen Der Dateinamen des Logfiles, welches der FileWriter schreibt, ändert sich wie folgt: bisher: typo3temp/logs/typo3.log neu: typo3temp/logs/typo3_<hash>.log (der Wert <hash> berechnet sich aus dem Encryptionkey) TYPO3 CMS 7 LTS - What’s New
  • 232.
    Änderungen im System DiverseÄnderungen (2) Die in Hooks verwendeten Klassen müssen ab sofort dem Autoloading-Mechanismus folgen Daher kann die Hook-Definition auch verkürzt werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’tce’][’formevals’] [TYPO3CMSSaltedpasswordsEvaluationFrontendEvaluator::class] = ’’; BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 233.
    Änderungen im System Fluid-basierteInhaltselemente (1) Es wurde eine Alternative zur Extension CSS Styled Content geschaffen: "Fluid-based Content Elements" Hier werden anstelle von TypoScript Fluid-Templates für das Rendering von Inhalten verwendet Dazu müssen die folgenden beiden static-Templates eingebunden werden: Content Elements (fluid_styled_content) Content Elements CSS (optional) (fluid_styled_content) TYPO3 CMS 7 LTS - What’s New
  • 234.
    Änderungen im System Fluid-basierteInhaltselemente (2) Zusätzlich muss das PageTSconfig Template Fluid-based Content Elements fluid_styled_content in den Seiteneigenschaften eingebunden werden, damit der New-Content-Element Wizard entsprechend angepasst wird Eigene Fluid-Templates können wie folgt festgelegt werden: lib.fluidContent.templateRootPaths.50 = EXT:site_example/Resources/Private/Templates/ lib.fluidContent.partialRootPaths.50 = EXT:site_example/Resources/Private/Partials/ lib.fluidContent.layoutRootPaths.50 = EXT:site_example/Resources/Private/Layouts/ TYPO3 CMS 7 LTS - What’s New
  • 235.
    Änderungen im System Fluid-basierteInhaltselemente (3) Um eine Installation auf die neue Struktur zu migrieren, kann man wie folgt vorgehen: Deinstallieren der Extension css_styled_content Installieren der Extension fluid_styled_content Nun ist ein "Upgrade Wizard" im Install Tool verfügbar, der die Migration der Inhaltselemente text, image und textpic in textmedia, durchführt TYPO3 CMS 7 LTS - What’s New
  • 236.
    Änderungen im System SELECTmmQueryMethode für Datenbank-Zugang Bislang enthielt die Datenbank-Klasse die Methode exec_SELECT_mm_query, die die Datenbank-Abfrage direkt ausführte Nun wurde die Generierung des Queries (Query-Building) und Ausführung getrennt, indem die Methode SELECT_mm_query hinzugefügt wurde $query = SELECT_mm_query(’*’, ’table1’, ’table1_table2_mm’, ’table2’, ’AND table1.uid = 1’, ’’, ’table1.title DESC’); TYPO3 CMS 7 LTS - What’s New
  • 237.
    Änderungen im System SchedulerTask zur Datenbank-Optimierung Es wurde ein Scheduler Task implementiert, der die Datenbank via MySQL-Kommando OPTIMIZE TABLE optimiert Optimiert werden können lediglich Tabellen vom Typ MyISAM, InnoDB und ARCHIVE DBAL wird nicht unterstützt TYPO3 CMS 7 LTS - What’s New
  • 238.
    Änderungen im System OnlineMedien Unterstützung (1) Der Core wurde um eine externe Medien-Unterstützung erweitert (exemplarisch für YouTube- und Vimeo-Videos) Diese kann (z.B. im Inhaltselement "Text & Media") als URL eingeben werden. Anschließend wird die Resource wie eine interne Datei integriert. TYPO3 CMS 7 LTS - What’s New
  • 239.
    Änderungen im System OnlineMedien Unterstützung (2) Folgende YouTube/Vimeo URLs sind möglich: youtu.be/<code> www.youtube.com/watch?v=<code> www.youtube.com/v/<code> www.youtube-nocookie.com/v/<code> www.youtube.com/embed/<code> vimeo.com/<code> player.vimeo.com/video/<code> TYPO3 CMS 7 LTS - What’s New
  • 240.
    Änderungen im System OnlineMedien Unterstützung (3) Der Zugriff per Fluid kann z.B. wie folgt durchgeführt werden: <!-- enable js api and set no-cookie support for YouTube videos --> <f:media file="{file}" additionalConfig="{enablejsapi:1, ’no-cookie’: true}" ></f:media> <!-- show title and uploader for YouTube and Vimeo before video starts playing --> <f:media file="{file}" additionalConfig="{showinfo:1}" ></f:media> Für YouTube existieren folgende Optionen: autoplay, controls, loop, enablejsapi, showinfo, no-cookie Für Vimeo existieren folgende Optionen: autoplay, loop, showinfo TYPO3 CMS 7 LTS - What’s New
  • 241.
    Änderungen im System OnlineMedien Unterstützung (4) Für einen eigenen Media-Service benötigt man eine OnlineMediaHelper Klasse, welche das OnlineMediaHelperInterface implementiert, sowie eine FileRenderer Klasse, die das FileRendererInterface implementiert // Registrierung eines eigenen Online-Video-Services $GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’OnlineMediaHelpers’][’myvideo’] = MyCompanyMyextensionHelpersMyVideoHelper::class; $rendererRegistry = TYPO3CMSCoreResourceRenderingRendererRegistry::getInstance(); $rendererRegistry->registerRendererClass( MyCompanyMyextensionRenderingMyVideoRenderer::class ); // Registrierung eines eigenen Mime-Types $GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’FileInfo’][’fileExtensionToMimeType’][’myvideo’] = ’video/myvideo’; // Registrierung einer eigenen Datei-Extension $GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’mediafile_ext’] .= ’,myvideo’; TYPO3 CMS 7 LTS - What’s New
  • 242.
    Änderungen im System BackendRouting Es wurde eine neue Routing Komponente zum TYPO3-Backend hinzugefügt, welche verschiedene Aufrufe handhaben kann (z.B. http://www.example.com/typo3/document/edit) Die Routen werden in folgender Datei definiert: Configuration/Backend/Routes.php return [ ’myRouteIdentifier’ => [ ’path’ => ’/document/edit’, ’controller’ => AcmeMyExtensionControllerMyExampleController::class . ’::methodToCall’ ] ]; Die Methode erhält das Response- und Request-Objekt: public function methodToCall(ServerRequestInterface $request, ResponseInterface $response) { ... } TYPO3 CMS 7 LTS - What’s New
  • 243.
    Änderungen im System AutoloadDefinition in ext_emconf.php Zusätzlich zur Datei composer.json können nun Autoload-Definitionen in der Datei ext_emconf.php hinterlegt werden Das hat den Vorteil, dass nicht die gesamte Extension nach Klassen gescannt wird $EM_CONF[$_EXTKEY] = array ( ’title’ => ’Extension Skeleton for TYPO3 CMS 7’, ... ’autoload’ => array( ’psr-4’ => array( ’HelhumExtScaffold’ => ’Classes’ ) ) ); TYPO3 CMS 7 LTS - What’s New
  • 244.
    Änderungen im System NeueIcon-Factory (1) Die Logik, um mit Icons, Größen und Overlays zu arbeiten, wurde in die neue IconFactory ausgelagert Es gibt drei "IconProvider": BitmapIconProvider, FontawesomeIconProvider und SvgIconProvider Die Registrierung eines Icons erfolgt folgendermaßen: IconRegistry::registerIcon($identifier, $iconProviderClassName, array $options = array()); TYPO3 CMS 7 LTS - What’s New
  • 245.
    Änderungen im System NeueIcon-Factory (2) Anwendung: $iconFactory = GeneralUtility::makeInstance(IconFactory::class); $iconFactory->getIcon( $identifier, Icon::SIZE_SMALL, $overlay, IconState::cast(IconState::STATE_DEFAULT) )->render(); Zulässige Werte für Icon::SIZE_... sind: SIZE_SMALL, SIZE_DEFAULT und SIZE_LARGE Zulässige Werte für Icon::STATE_... sind: STATE_DEFAULT und STATE_DISABLED TYPO3 CMS 7 LTS - What’s New
  • 246.
    Änderungen im System NeueIcon-Factory (3) Der Core stellt einen eigenen ViewHelper zur Verfügung, um Icons anzuzeigen: {namespace core = TYPO3CMSCoreViewHelpers} <core:icon identifier="my-icon-identifier"></core:icon> <!-- use the "small" size if none given -> <core:icon identifier="my-icon-identifier"></core:icon> <core:icon identifier="my-icon-identifier" size="large"></core:icon> <core:icon identifier="my-icon-identifier" overlay="overlay-identifier"></core:icon> <core:icon identifier="my-icon-identifier" size="default" overlay="overlay-identifier"> </core:icon> <core:icon identifier="my-icon-identifier" size="large" overlay="overlay-identifier"> </core:icon> TYPO3 CMS 7 LTS - What’s New
  • 247.
    Änderungen im System Hooksund Signals (1) Es wurde ein Signal im LinkValidator zugefügt, welches die zusätzliche Verarbeitung eines Eintrages möglich macht (z.B. um Daten aus der Plugin-Konfiguration zu ermitteln o.ä.). Der Hook kann wie folgt in der Datei ext_localconf.php registriert werden: $signalSlotDispatcher = TYPO3CMSCoreUtilityGeneralUtility::makeInstance( TYPO3CMSExtbaseSignalSlotDispatcher::class ); $signalSlotDispatcher->connect( TYPO3CMSLinkvalidatorLinkAnalyzer::class, ’beforeAnalyzeRecord’, VendorPackageSlotsRecordAnalyzerSlot::class, ’beforeAnalyzeRecord’ ); TYPO3 CMS 7 LTS - What’s New
  • 248.
    Änderungen im System JumpUrlals System-Extension (1) Die Erzeugung und das Handling von JumpURLs wurde aus der Frontend-Extension entfernt und zur neuen System-Extension jumpurl verschoben Hook zur Manipulation von URLs in der Datei ext_localconf.php: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’urlProcessing’][’urlHandlers’] [’myext_myidentifier’][’handler’] = CompanyMyExtMyUrlHandler::class; // Die Klasse muss das UrlHandlerInterface implementieren class MyUrlHandler implements TYPO3CMSFrontendHttpUrlHandlerInterface { ... } BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 249.
    Änderungen im System JumpUrlals System-Extension (2) Handling von Links in der Datei ext_localconf.php: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’urlProcessing’][’urlProcessors’] [’myext_myidentifier’][’processor’] = CompanyMyExtMyUrlProcessor::class; // Die Klasse muss das UrlProcessorInterface implementieren class MyUrlProcessor implements TYPO3CMSFrontendHttpUrlProcessorInterface { ... } BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 250.
    Änderungen im System Kommandozeilenaufruf(CLI) Sollte es beim Aufruf von typo3/cli_dispatch.phpsh zu Fehlern kommen, so werden diese farbig dargestellt CommandController können nun auch in Unterordnern liegen Beispiel: Controller in Datei: my_ext/Classes/Command/Hello/WorldCommandController.php ...kann im CLI wie folgt aufgerufen werden: typo3/cli_dispatch.sh extbase my_ext:hello:world <arguments> TYPO3 CMS 7 LTS - What’s New
  • 251.
    Änderungen im System DiverseÄnderungen (1) Die Verschieben-Buttons beim TCA-Type group können nun mit der TCA-Option hideMoveIcons = TRUE deaktiviert werden Die Funktion makeCategorizable() kann nun überschrieben werden, sofern diese vorher bereits aufgerufen wurde (z.B. für tt_content). Beispiel: TYPO3CMSCoreUtilityExtensionManagementUtility::makeCategorizable( ’css_styled_content’, ’tt_content’, ’categories’, array(), TRUE ); Der letzte Parameter steuert das Überschreiben (hier: TRUE). Standardmäßig ist der Wert FALSE. TYPO3 CMS 7 LTS - What’s New
  • 252.
    Änderungen im System DiverseÄnderungen (2) Es gibt nun eine Funktion, um eine Unique-ID zu erzeugen $uniqueId = TYPO3CMSCoreUtilityStringUtility::getUniqueId(’Prefix’); Als Plaintext Dateiendung wurde typoscript hinzugefügt Es gibt nun eine neue Konfigurations-Option, die regelt, welche Dateiendungen als Media-Dateien interpretiert werden: $GLOBALS[’TYPO3_CONF_VARS’][’SYS’][’mediafile_ext’] = ’gif,jpg,jpeg,bmp,png,pdf,svg,ai,mov,avi’; BREAKING CHANGE! TYPO3 CMS 7 LTS - What’s New
  • 253.
    Änderungen im System Bootstrapfür Install Tool(1) Das Install Tool basiert nun komplett auf Bootstrap: Sowohl für die Installation... TYPO3 CMS 7 LTS - What’s New
  • 254.
    Änderungen im System Bootstrapfür Install Tool(2) Das Install Tool basiert nun komplett auf Bootstrap: ...wie auch für die Konfiguration TYPO3 CMS 7 LTS - What’s New
  • 255.
    Änderungen im System CSRFSchutz für eigene Plugins Frontend Plugins müssen nun selbst für einen CSRF-Schutz sorgen: $formToken = TYPO3CMSCoreFormProtectionFormProtectionFactory::get()->getFormProtection()-> generateToken(’news’, ’edit’, $uid); if ( $dataHasBeenSubmitted && TYPO3CMSCoreFormProtectionFormProtectionFactory::get()->validateToken( TYPO3CMSCoreUtilityGeneralUtility::_POST(’formToken’), ’User setup’, ’edit’)) { // alles in Ordnung } else { // ungueltiger Token! } TYPO3 CMS 7 LTS - What’s New
  • 256.
    Änderungen im System NeueTabs für LinkBrowser (1) Mit diesem Feature kann der LinkBrowser um neue Tabs erweitert werden Jeder Tab wird über einem sogenannten "LinkHandler" gesteuert, welcher das folgende Interface implementieren muss: TYPO3CMSRecordlistLinkHandlerLinkHandlerInterface Die LinkHandler werden über PageTSconfig registriert: file { handler = TYPO3CMSRecordlistLinkHandlerFileLinkHandler label = LLL:EXT:lang/locallang_browse_links.xlf:file displayAfter = page scanAfter = page configuration { customConfig = passed to the handler } } TYPO3 CMS 7 LTS - What’s New
  • 257.
    Änderungen im System NeueTabs für LinkBrowser (2) Die Optionen displayBefore und displayAfter geben die Anzeigeposition der Tabs an Die Optionen scanBefore und scanAfter regeln die Reihenfolge der Ausführung $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’LinkBrowser’][’hooks’][1444048118] = [ ’handler’ => VendorExtMyClass::class, ’before’ => [], // optional ’after’ => [] // optional ]; TYPO3 CMS 7 LTS - What’s New
  • 258.
    Änderungen im System NeueModule Template API (1) Es wurde eine Module Template API integriert, um die Erstellung der DocHeader zu vereinheitlichen Beispiel 1: Button hinzufügen $openInNewWindowButton = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar() ->makeLinkButton() ->setHref(’#’) ->setTitle($this->getLanguageService()->sL( ’LLL:EXT:lang/locallang_core.xlf:labels.openInNewWindow’, TRUE )) ->setIcon($this->iconFactory->getIcon(’actions-window-open’, Icon::SIZE_SMALL)) ->setOnClick($aOnClick); $this->moduleTemplate->getDocHeaderComponent()->getButtonBar() ->addButton($openInNewWindowButton, ButtonBar::BUTTON_POSITION_RIGHT); TYPO3 CMS 7 LTS - What’s New
  • 259.
    Änderungen im System NeueModule Template API (2) Beispiel 2: Menü hinzufügen $languageMenu = $this->moduleTemplate->getDocHeaderComponent() ->getModuleMenuRegistry()->makeMenu() ->setIdentifier(’_langSelector’) ->setLabel($this->getLanguageService()->sL( ’LLL:EXT:lang/locallang_general.xlf:LGL.language’, TRUE )); $menuItem = $languageMenu->makeMenuItem() ->setTitle($lang[’title’] . $newTranslation) ->setHref($href); if((int)$lang[’uid’] === $currentLanguage) { $menuItem->setActive(TRUE); } $languageMenu->addMenuItem($menuItem); $this->moduleTemplate->getDocHeaderComponent()->getModuleMenuRegistry()->addMenu($languageMenu); TYPO3 CMS 7 LTS - What’s New
  • 260.
    Änderungen im System PSR-7Routing für Backend AJAX Requests Um eine Route für einen AJAX-Request zuzufügen, erstellt man eine Datei Configuration/Backend/AjaxRoutes.php mit folgendem Inhalt in der eigenen Extension: return [ // do something ’unique_route_name’ => [ ’path’ => ’/toolcollection/some-action’, ’target’ => VendorControllerSomeController::class . ’::myAction’, ] ]; TYPO3 CMS 7 LTS - What’s New
  • 261.
    Änderungen im System OpenIDHook getUserRecord Es wurden zwei Hooks zur Verarbeitung von OpenID hinzugefügt (1/2) Hook 1: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’openid’][’getUserRecord’] Modifiziert den Benutzer-Datensatz, nachdem dieser ermittelt wurde, oder: Legt einen neuen Datensatz an, wenn keine gefunden wurde Es werden die Parameter record, response und authInfo an den Hook übermittelt TYPO3 CMS 7 LTS - What’s New
  • 262.
    Änderungen im System OpenIDHook authRequest Es wurden zwei Hooks zur Verarbeitung von OpenID hinzugefügt (2/2) Hook 2: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’openid’][’authRequest’] Modifiziert den Authentifizierungs-Request bevor dieser abgesendet wird Damit können z.B. zusätzliche Attribute, wie der Nickname vom OpenID-Server angefordert werden Es werden die Parameter authRequest und authInfo an den Hook übermittelt TYPO3 CMS 7 LTS - What’s New
  • 263.
    Änderungen im System Hooksund Signals (1) Es ist nun möglich, das Verzeichnis, welches von BackendUserAuthentication::getDefaultUploadFolder() zurückgegeben wird, via Hook zu verändern Dazu muss folgende Konfiguration in die Datei ext_localconf.php eingetragen werden: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’t3lib/class.t3lib_userauthgroup.php’] [’getDefaultUploadFolder’][] = VendorMyExtensionHooksDefaultUploadFolder::class . ’->getDefaultUploadFolder’; TYPO3 CMS 7 LTS - What’s New
  • 264.
    Änderungen im System Hooksund Signals (2) Beispiel: <?php namespace VendorMyExtensionHooks; use TYPO3CMSCoreAuthenticationBackendUserAuthentication; use TYPO3CMSCoreResourceFolder; /** * Class DefaultUploadFolder */ class DefaultUploadFolder { /** * Get default upload folder * If there is a folder present with the same name as the last part of the table name use that folder. * @param array $params * @param BackendUserAuthentication $backendUserAuthentication * @return Folder */ public function getDefaultUploadFolder($params, BackendUserAuthentication $backendUserAuthentication) { [...] TYPO3 CMS 7 LTS - What’s New
  • 265.
    Änderungen im System Hooksund Signals (3) Beispiel (Fortsetzung): [...] /** @var Folder $uploadFolder */ $uploadFolder = $params[’uploadFolder’]; $pid = $params[’pid’]; $table = $params[’table’]; $field = $params[’field’]; $matches = []; if (!empty($uploadFolder) && preg_match(’/_([a-z]+)$/’, $table, $matches)) { $folderName = $matches[1]; if ($uploadFolder->hasFolder($folderName)) { $uploadFolder = $uploadFolder->getSubfolder($folderName); } } return $uploadFolder; } } TYPO3 CMS 7 LTS - What’s New
  • 266.
    Änderungen im System DiverseÄnderungen Der TCA-Typ select muss nun mit einer Option renderType versehen werden Folgende Werte sind hierbei zulässig: ’renderType’ => ’selectMultipleSideBySide’, ’renderType’ => ’selectCheckBox’, ’renderType’ => ’selectSingle’, ’renderType’ => ’selectSingleBox’, ’renderType’ => ’selectTree’, TYPO3 CMS 7 LTS - What’s New
  • 267.
    Sources and Authors Quellenund Autoren TYPO3 CMS 7 LTS - What’s New
  • 268.
    Sources and Authors Quellennachweis TYPO3News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  • 269.
    Sources and Authors pluswerk pluswerkist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  • 270.
    TYPO3 CMS 7LTS - What’s New System Administration Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  • 271.
    Introduction TYPO3 CMS 7LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  • 272.
    System Administration System Administration TYPO3CMS 7 LTS benötigt eine aktuelle Hosting-Umgebung. Die Schritte zur Installation von TYPO3 CMS 7 LTS sind gerundsätzlich die selben, wie bei der letzten LTS-Version, allerdings sollten System-Administratoren sicher stellen, dass die neuen Systemanforderungen eingehalten werden. Zusätzlich können Administratoren nun Composer verwenden um die TYPO3 CMS Sourcen, alle Abhängigkeiten und Extensions zu installieren und zu deployen. TYPO3 CMS 7 LTS - What’s New
  • 273.
    System Administration System Requirements PHP*:v5.5.0 - v5.6.x MySQL: v5.5.x - v5.6.x (no strict mode) Speicherplatz: min 200 MB PHP Einstellungen: memory_limit >= 128M max_execution_time >= 240s max_input_vars >= 1500 die Compile-Option --disable-ipv6 darf nicht verwendet werden Das Backend benötigt IE >= 9 oder einen anderen modernen Browser *) Weitere Details: PHP - minimale Requirements für TYPO3 CMS 7 TYPO3 CMS 7 LTS - What’s New
  • 274.
    System Administration Installation (Klassisch) OffizielleInstallations-Prodezur unter Linux/Mac OS X (DocumentRoot z.B. /var/www/site/htdocs): $ cd /var/www/site $ wget --content-disposition get.typo3.org/7.6 $ tar xzf typo3_src-7.6.0.tar.gz $ cd htdocs $ ln -s ../typo3_src-7.6.0 typo3_src $ ln -s typo3_src/index.php $ ln -s typo3_src/typo3 $ touch FIRST_INSTALL Symbolische Links unter Microsoft Windows: Verwendung von junction unter Windows XP/2000 Verwendung von mklink unter Windows Vista und Windows 7 TYPO3 CMS 7 LTS - What’s New
  • 275.
    System Administration Installation (mittelsComposer) Offizielle Installations-Prodezur mittels Composer (DocumentRoot z.B. /var/www/site/htdocs/web): $ cd /var/www/site $ curl -s https://getcomposer.org/installer | php $ php composer.phar create-project typo3/cms-base-distribution htdocs $ touch htdocs/web/FIRST_INSTALL dev-master anhängen, für den aktuellen Entwicklungszweig: $ php composer.phar create-project typo3/cms-base-distribution htdocs dev-master Weitere Details: https://composer.typo3.org https://wiki.typo3.org/Composer TYPO3 CMS 7 LTS - What’s New
  • 276.
    System Administration Upgrade aufTYPO3 CMS 7 LTS Upgrade ist nur von TYPO3 CMS 6.2 LTS oder einem der 7.x Sprint Releases möglich TYPO3 CMS < 6.2 sollte zunächst auf TYPO3 CMS 6.2 LTS aktualisiert werden Upgrade Instruktionen: https://wiki.typo3.org/Upgrade#Upgrading_to_7 Offizieller TYPO3 Guide "TYPO3 Installation and Upgrading": http://docs.typo3.org/typo3cms/InstallationGuide Generelles Vorgehen: Check der minimalen System Requirements (PHP, MySQL, etc.) Untersuchung deprecation_*.log in der alten TYPO3 Instanz Aktualisierung aller Extensions auf die neueste Version Deployment der neuen Sources + Install Tool -> Upgrade Wizard Untersuchung des Startup Moduls für Backend Users (optional) TYPO3 CMS 7 LTS - What’s New
  • 277.
    Sources and Authors Quellenund Autoren TYPO3 CMS 7 LTS - What’s New
  • 278.
    Sources and Authors Quellennachweis TYPO3News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  • 279.
    Sources and Authors pluswerk pluswerkist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New
  • 280.
    TYPO3 CMS 7LTS - What’s New Deprecated/Removed Functions Patrick Lobacher (Vorstand pluswerk AG) http://www.pluswerk.ag 10/November/2015 Creative Commons BY-NC-SA 3.0
  • 281.
    Introduction TYPO3 CMS 7LTS - What’s New Die folgenden Slides sind auf ein spezielles Thema fokussiert. Abhängig von der Rolle, können die folgenden Themen ebenfalls interessant sein:BEUserInterface TypoScript In-DepthChanges Extbase/Fluid Deprecated/Removed Sys.Administration Redakteure X Integratoren X X X Entwickler X X X SysAdmins X Download aller What’s New Slides unter typo3.org TYPO3 CMS 7 LTS - What’s New
  • 282.
    Veraltete/Entfernte Funktionen Veraltete/Entfernte Funktionen Sehrviele TYPO3 CMS Komponenten wurden überprüft und im Einklang mit den entsprechenden Richtlinien entweder als veraltet klassifiziert oder gleich entfernt. Dies stellt sicher, dass TYPO3 CMS 7 LTS nicht auf veralteten Features bzw. Code basiert, sondern von den modernen und schnellen state-of-the-art Technologien profitiert. Einige wenige kaum verwendete Content-Elemente und Funktionen wurden aus dem Kern erntfernt und in System Extensions ausgelagert. TYPO3 CMS 7 LTS - What’s New
  • 283.
    Veraltete/Entfernte Funktionen Kompatibilitäts-Schicht In TYPO3CMS 6.2 stellt eine Kompatibilitäts-Schicht sicher, dass auch alte Extensions mit der neuen Codebase funktionieren Nachteil: Geschwindigkeitseinbuße (das volle Potential des Systems kann nicht ausgeschöpft werden) Diese Kompatibilitäts-Schicht wurde in TYPO3 CMS 7.0 entfernt Auswirkung: alte Extensions sind möglicherweise nicht mehr lauffähig (z.B. Extensions ohne Namespaces) Kompatibilität kann aber wieder hergestellt werden, indem die System Extension EXT:compatibility6 installiert wird Diese Extension wird zukünftig im TER verfügbar sein TYPO3 CMS 7 LTS - What’s New
  • 284.
    Veraltete/Entfernte Funktionen Backend Benutzerverwaltung Funktion"zum Benutzer wechseln" (change-to mode) wurde entfernt TYPO3 CMS 6.2 TYPO3 CMS 7.0 TYPO3 CMS 7 LTS - What’s New
  • 285.
    Veraltete/Entfernte Funktionen Veraltete JavaScriptFunktionen entfernt In Einklang mit der Deprecation Strategy wurden in TYPO3 CMS 4.7 zahlreiche JavaScript Methoden als deprecated markiert und nun entfernt, beispielsweise: TYPO3CMSBackendFormFormEngine->getSingleField_typeInput TYPO3CMSBackendFormFormEngine->getSingleField_typeText TYPO3CMSCoreUtilityGeneralUtility->quoted_printable TYPO3CMSCoreUtilityGeneralUtility->encodeHeader HTMLArea.Editor.forceRedraw (use HTMLArea.Framework.doLayout instead) HTMLArea.Editor.convertNode (use HTMLArea.DOM.convertNode instead) HTMLArea.Editor.getBlockAncestors (use HTMLArea.DOM.getBlockAncestors instead) TYPO3 CMS 7 LTS - What’s New
  • 286.
    Veraltete/Entfernte Funktionen Entfernte Funktionen(1) TypoScript Option config.uniqueLinkVars wurde entfernt (das ist nun das Standardverhalten in TYPO3 CMS) ViewHelper TYPO3CMSDocumentationViewHelpersLinkAction wurde entfernt (benutze f:be.buttons.icon or f:uri.* stattdessen) PageTSconfig Option mod.web_list.alternateBgColors wurde entfernt PropertyMapper wurde entfernt (ebenso die Option rewrittenPropertyMapper = 0) Folgende TypoScript Conditions wurden entfernt: browser version system useragent TYPO3 CMS 7 LTS - What’s New
  • 287.
    Veraltete/Entfernte Funktionen Entfernte Methoden(1) Die folgenden Methoden wurden entfernt: connectDB in der Klasse TYPO3CMSFrontendUtilityEidUtility isDisplayCondition in der Klasse TYPO3CMSFormFormEngine int_from_ver in der Klasse TYPO3CMSCoreUtilityGeneralUtility getUniqueFields in der Klasse TYPO3CMSCoreDataHandlingDataHandler TYPO3 CMS 7 LTS - What’s New
  • 288.
    Veraltete/Entfernte Funktionen Entfernte Methoden(2) Die folgenden Methoden wurden entfernt: isSafeModeEnabled in der Klasse TYPO3CMSCoreUtilityPhpOptionsUtility registerSwiftMailer in der Klasse TYPO3CMSCoreBootstrap loadTCA in der Klasse TYPO3CMSCoreUtilityGeneralUtility isLocalconfWritable in der Klasse TYPO3CMSCoreUtilityExtensionManagementUtility TYPO3 CMS 7 LTS - What’s New
  • 289.
    Veraltete/Entfernte Funktionen Entfernte Klassen Diefolgenden Klassen wurden entfernt: TYPO3CMSBackendTemplateMediumDocumentTemplate TYPO3CMSExtbaseServiceTypeHandlingService TYPO3 CMS 7 LTS - What’s New
  • 290.
    Veraltete/Entfernte Funktionen $TYPO3_CONF_VARS[SYS][compat_version] Die Option$TYPO3_CONF_VARS[SYS][compat_version] (gesetzt beim Update im Install Tool wizard) wurde entfernt Alle Prüfungen gegen GeneralUtility::compat_version werden nun gegen die Konstante TYPO3_branch gemacht Hinweis: TypoScript Conditions, die auf compat_version prüfen, haben nun keine Wirkung mehr! TYPO3 CMS 7 LTS - What’s New
  • 291.
    Veraltete/Entfernte Funktionen Inline stylesof <blockquote> tag CSS Styled Content rendert <blockquote> über die TypoScript Option lib.parseFunc_RTE Diese Zeilen wurden ersatzlos entfernt: lib.parseFunc_RTE.externalBlocks.blockquote.callRecursive.tagStdWrap.HTMLparser = 1 lib.parseFunc_RTE.externalBlocks.blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote. overrideAttribs = style="margin-bottom:0;margin-top:0;" Das bedeutet, die Inline-Styles "margin-bottom:0;margin-top:0;" werden dem <blockquote>-Tag nicht mehr hinzugefügt Hinweis: nach einem Update auf TYPO3 CMS 7.1 könnte sich das Styling von <blockquote> geändert haben TYPO3 CMS 7 LTS - What’s New
  • 292.
    Veraltete/Entfernte Funktionen Workspaces: Felddisable_autocreate Das Feld disable_autocreate wurde von EXT:workspaces entfernt Sollten TYPO3 Extensions dieses Feld verwenden, wird ein SQL Fehler erzeugt TYPO3 CMS 7 LTS - What’s New
  • 293.
    Veraltete/Entfernte Funktionen Funktion: include_once DieFunktionalität, um PHP-Dateien mittels include_once innerhalb von Modul-Funktionen (wie z.B. dem Info-Modul) zu inkludieren, wurde entfernt Das gilt für folgende Module: Web => Page Web => Page - New Content Element Wizard Web => Functions Web => Info Web => Template Web => Recycler User => Task Center System => Scheduler TYPO3 CMS 7 LTS - What’s New
  • 294.
    Veraltete/Entfernte Funktionen TypoScript Option:config.meaningfulTempFilePrefix Früher war es möglich, per TypoScript Teile des Original-Dateinamens zum Dateinamen hinzuzufügen, der vom GIFBUILDER generiert wird Jenes war mit folgender TypoScript Option möglich: config.meaningfulTempFilePrefix (standardmäßig verwendete der GIFBUILDER lediglich ein Hash-Wert als Dateinamen) Diese Option wurde entfernt (Dateinamen im Verzeichnis typo3temp/GB/ enthalten nun den Original-Dateinamen automatisch) TYPO3 CMS 7 LTS - What’s New
  • 295.
    Veraltete/Entfernte Funktionen Removed files Diefolgenden Dateien wurden entfernt: typo3/file_edit.php typo3/file_newfolder.php typo3/file_rename.php typo3/file_upload.php typo3/show_rechis.php typo3/listframe_loader.php Deren Funktionalität wurde in Backend Module integriert, z.B. typo3/file_edit.php in BackendUtility::getModuleUrl(’file_edit’); TYPO3 CMS 7 LTS - What’s New
  • 296.
    Veraltete/Entfernte Funktionen ExtJS DateTimePicker DieExtJS Komponente Ext.ux.DateTimePicker wurde entfernt und gegen die Twitter Bootstrap Alternative ersetzt (siehe Kapitel "Backend User Interface") Das betrifft zum Beispiel die System Extensions EXT:belog und EXT:scheduler Hinweis: Extensions, die die (als "deprecated" markierte) Komponente Ext.ux.DateTimePicker benötigen, werden mit hoher Wahrscheinlichkeit nicht mehr funktionieren. TYPO3 CMS 7 LTS - What’s New
  • 297.
    Veraltete/Entfernte Funktionen Änderungen beimAccess List Render Mode Die folgende Variable wurde entfernt: $GLOBALS[TYPO3_CONF_VARS][BE][accessListRenderMode] Die entsprechenden Felder in den TCA Tabellen be_users und be_groups besitzen nun die Standardwert "checkbox" Jenes kann in der Datei typo3conf/extTables.php bei Bedarf angepasst werden: $GLOBALS[’TCA’][’be_users’][’columns’][’file_permissions’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_users’][’columns’][’userMods’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_groups’][’columns’][’file_permissions’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_groups’][’columns’][’pagetypes_select’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_groups’][’columns’][’tables_select’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_groups’][’columns’][’tables_modify’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_groups’][’columns’][’non_exclude_fields’][’config’][’renderMode’] = ’singlebox’; $GLOBALS[’TCA’][’be_groups’][’columns’][’userMods’][’config’][’renderMode’] = ’singlebox’; TYPO3 CMS 7 LTS - What’s New
  • 298.
    Veraltete/Entfernte Funktionen Content Element"Mailform" Die Mailform Funktionalität, die das cObject FORM bereitstellt, wurde vom TYPO3 Core entfernt (diese ist jedoch weiterhin in EXT:compatibility6 vorhanden) Die folgenden Optionen wurden als "deprecated" markiert: $TYPO3_CONF_VARS][FE][secureFormmail] $TYPO3_CONF_VARS][FE][strictFormmail] $TYPO3_CONF_VARS][FE][formmailMaxAttachmentSize] Die folgenden Methoden im TypoScriptFrontendController wurden entfernt: protected checkDataSubmission() protected sendFormmail() public extractRecipientCopy() public codeString() protected roundTripCryptString() TYPO3 CMS 7 LTS - What’s New
  • 299.
    Veraltete/Entfernte Funktionen Funktionalität überarbeitet(1) Die EXT:indexed_search wird automatisch aktiviert, sobald sie installiert wird. Das bedeutet auch, dass die TypoScript Optionen config.index_enable und config.index_externals ebenfalls automatisch aktiviert werden TSconfig web_func.menu.wiz ändert sich zu web_func.menu.functions Extensions, die sich in die Toolbar oben rechts einklinken, müssen das folgende neue Interface implementieren: TYPO3CMSBackendToolbarToolbarItemInterface und müssen unter folgendem Schlüssel registriert werden: $GLOBALS[’TYPO3_CONF_VARS’][’BE’][’toolbarItems’] TYPO3 CMS 7 LTS - What’s New
  • 300.
    Veraltete/Entfernte Funktionen Funktionalität überarbeitet(2) Die Datei typo3/js/tree.js wurde ersetzt gegen EXT:backend/Resources/Public/JavaScript/LegacyTree.js (basierend auf jQuery) Die Variable $GLOBALS[’WEBMOUNTS’] wurde ersetzt gegen $GLOBALS[’BE_USER’]->returnWebmounts() Die Unterstützung von .t3-table und .t3-button wurde entfernt (Twitter Bootstrap CSS Klassen implementieren die Styles jetzt) Länderflaggen (PNG-Bilder) wurden von typo3/gfx/flags/ und typo3/sysext/t3skin/images/flags/ nach typo3/sysext/core/Resources/Public/Icons/flags/ verschoben TYPO3 CMS 7 LTS - What’s New
  • 301.
    Veraltete/Entfernte Funktionen Funktionalität überarbeitet(3) CSS Styled Content TypoScript Templates der TYPO3 CMS Versionen 4.5 bis 6.1 wurden entfernt Die folgenden TypoScript cObjects wurden in die Legacy-Extension EXT:compatibility6 verschoben: SEARCHRESULTS COLUMNS OTABLE CLEARGIF IMGTEXT CTABLE HRULER Das Inhaltselement search wurde in die Legacy-Extension EXT:compatibility6 verschoben Die folgenden TCA-Wizard-Optionen wurden entfernt: _PADDING _VALIGN _DISTANCE TYPO3 CMS 7 LTS - What’s New
  • 302.
    Veraltete/Entfernte Funktionen TypoScript-Option andWhere DieTypoScript-Option andWhere wurde als "deprecated" markiert Integratoren sollten die Eigenschaften where und markers verwenden: page.30 = CONTENT page.30 { table = tt_content select { pidInList = this orderBy = sorting where { dataWrap = sorting>{field:sorting} } } } page.60 = CONTENT page.60 { table = tt_content select { pidInList = 73 where = header != ###whatever### orderBy = ###sortfield### markers { whatever.data = GP:first sortfield.value = sor sortfield.wrap = |ting } } } TYPO3 CMS 7 LTS - What’s New
  • 303.
    Veraltete/Entfernte Funktionen Entry-Points Die folgendenEntry-Points wurden als "deprecated" markiert: typo3/tce_file.php typo3/move_el.php typo3/tce_db.php typo3/login_frameset.php typo3/sysext/cms/layout/db_new_content_el.php typo3/sysext/cms/layout/db_layout.php Stattdessen kann nun folgendes verwendet werden: TYPO3CMSBackendUtilityBackendUtility::getModuleUrl(’<parameter>’) Wobei <parameter> eines der folgenden Elemente sein kann: tce_file, move_element, tce_db, login_frameset, new_content_element, web_layout TYPO3 CMS 7 LTS - What’s New
  • 304.
    Veraltete/Entfernte Funktionen Diverses (1) DieTypoScript-Option config.xhtmlDoctype = xhtml_2 wurde als "deprecated" markiert Die folgenden Methoden wurden als "deprecated" markiert: TYPO3CMSBackendUtilityBackendUtility::implodeTSParams() TYPO3CMSBackendController::makeLoginBoxImage() Die folgende Methode wurde als "deprecated" markiert: LocalImageProcessor::getTemporaryImageWithText() ...und ersetzt gegen: TYPO3CMSCoreImagingGraphicalFunctions::getTemporaryImageWithText() Die stdWrap Eigenschaften textStyle und tableStyle wurde als "deprecated" markiert TYPO3 CMS 7 LTS - What’s New
  • 305.
    Veraltete/Entfernte Funktionen Diverses (2) DieTypoScript-Option page.includeJSlibs wurde umbenannt zu page.includeJSLibs (Großbuchstabe "L") und die alte Option als "deprecated" markiert Die Condition device wurde als "deprecated" markiert Die Methode DocumentTable::table() wurde als "deprecated" markiert (Entwickler sollten dafür Fluid verwenden) Die folgende Methode wurde als "deprecated" markiert: TYPO3CMSFrontendController TypoScriptFrontendController::doXHTML_cleaning() ...ebenso die dazugehörige TypoScript-Option config.xhtml_cleaning Der folgende Hook wurde als "deprecated" markiert: $GLOBALS[’TYPO3_CONF_VARS’][’SC_OPTIONS’][’GLOBAL’][’softRefParser_GL’] TYPO3 CMS 7 LTS - What’s New
  • 306.
    Veraltete/Entfernte Funktionen Diverses (3) Diefolgenden Methoden wurden als "deprecated" markiert: TypoScriptTemplateObjectBrowserModuleFunctionController:: verify_TSobjects() ExtendedTemplateService::ext_getKeyImage() ConfigurationForm::ext_getKeyImage() Die Ausführung von contentObject->COBJECT() wurde als "deprecated" markiert (benutze stattdessen $cObj->cObjGetSingle(’...’, $conf);) Der direkte Zugriff auf FormEngine::$renderReadonly wurde als "deprecated" markiert (benutze stattdessen AbstractFormElement::setRenderReadonly(TRUE);) TYPO3 CMS 7 LTS - What’s New
  • 307.
    Veraltete/Entfernte Funktionen Diverses (4) Diefolgenden FormEngine-Methoden wurden als "deprecated" markiert: FormEngine::insertDefStyle FormEngine::getAvailableLanguages() FormEngine::sL() FormEngine::renderVDEFDiff() FormEngine::getLL() FormEngine::getTSCpid() FormEngine::getSingleField_typeFlex_langMenu() FormEngine::getSingleField_typeFlex_sheetMenu() FormEngine::getSpecConfFromString() TYPO3 CMS 7 LTS - What’s New
  • 308.
    Veraltete/Entfernte Funktionen Refactoring derFormEngine (1) Die FormEngine Klassen wurden einem Refactoring unterzogen, welches Auswirkungen auf Eigenschaften und Methoden der Klassen hat Viele interne Eigenschaften, wie FormEngine->$defaultInputWidth oder FormEngine->$RTEenabled werden ab sofort ignoriert Die Eigenschaften FormEngine->$allowOverrideMatrix und SuggestElement->class sind ab TYPO3 CMS 7.2 protected Wenn im TCA type=none gewählt wird, wird nun nicht mehr ein FormEngine Objekt, sondern ein NoneElement Objekt zurückgegeben TYPO3 CMS 7 LTS - What’s New
  • 309.
    Veraltete/Entfernte Funktionen Refactoring derFormEngine (2) Under anderem sind die folgenden Methoden als deprecated markiert: FormEngine->renderWizards() FormEngine->dbFileIcons() FormEngine->getClipboardElements() FormEngine->getSingleField_typeNone_render() FormEngine->formMaxWidth() FormEngine->addItems() SuggestElement->init() ... Tipp: Wenn man auf diese Methoden aufgebaut hat, sollte man das DeprecationLog analysieren, um herauszufinden, wohin diese Methoden portiert wurden TYPO3 CMS 7 LTS - What’s New
  • 310.
    Veraltete/Entfernte Funktionen Refactoring derFormEngine (3) Die folgenden Methoden wurden umbenannt: ALT: TYPO3CMSBackendFormElementSuggestElement NEU: TYPO3CMSBackendFormWizardSuggestWizard ALT: TYPO3CMSBackendFormElementSuggestDefaultReceiver NEU: TYPO3CMSBackendFormWizardSuggestWizardDefaultReceiver ALT: TYPO3CMSBackendFormElementVaueSlider NEU: TYPO3CMSBackendFormWizardValueSliderWizard TYPO3 CMS 7 LTS - What’s New
  • 311.
    Veraltete/Entfernte Funktionen Entry Pointsim Backend Die folgenden Entry Points im Backend wurden verändert: typo3/logout.php (logout) typo3/alt_file_navframe.php (file_navframe) typo3/dummy.php (dummy) typo3/browser.php (browser) typo3/db_new.php (db_new) typo3/show_item.php (show_item) Die URLs können wie folgt ermittelt werden: TYPO3CMSBackendUtilityBackendUtility::getModuleUrl(...) Zum Beispiel: TYPO3CMSBackendUtilityBackendUtility::getModuleUrl(’logout’) TYPO3 CMS 7 LTS - What’s New
  • 312.
    Veraltete/Entfernte Funktionen Diverses (1) URLszu Backend-Modulen, welche durch mod.php dispatched wurden, werden nun nicht mehr im Array $GLOBALS[’MCONF’][’_’] gespeichert, sondern durch BackendUtility::getModuleUrl() erzeugt Die Möglichkeit, den lokalen Pfad einer FAL-Datei via TypoScript zu ermitteln, wurde entfernt (a.value.data = file:current:localPath) Die folgenden tt_content TCA-Felder wurden in die Extension EXT:compatibility6 verschoben: altText imagecaption imagecaption_position image_link longdescURL titleText TYPO3 CMS 7 LTS - What’s New
  • 313.
    Veraltete/Entfernte Funktionen Diverses (2) DieBackend-Benutzeranmeldung wurde einem Refactoring unterzogen und das Signal LoginController::SIGNAL_RenderLoginForm entfernt Außerdem wurden die folgenden Methoden des LoginControllers entfernt: LoginController::makeLoginBoxImage LoginController::wrapLoginForm LoginController::makeLoginNews LoginController::makeLoginForm LoginController::makeLogoutForm Die Fremd-Bibliothek websvg wurden aus dem TYPO3 CMS Core entfernt. Dazu gehören auch TypoScript Optionen (page.javascriptLibs.SVG.*), und Methoden des PageRenderers, wie z.B. $pageRenderer->loadSvg() TYPO3 CMS 7 LTS - What’s New
  • 314.
    Veraltete/Entfernte Funktionen Diverses (3) FolgendeSchlüssel unter mod.web_info.menu.function wurden umbenannt (dies hat vor allem Auswirkungen auf PageTSconfig): tx_cms_webinfo_page -> TYPO3CMSFrontendControllerPageInformationController tx_cms_webinfo_lang -> TYPO3CMSFrontendControllerTranslationStatusController tx_belog_webinfo -> TYPO3CMSBelogModuleBackendLogModuleBootstrap tx_infopagetsconfig_webinfo -> TYPO3CMSInfoPagetsconfigController InfoPageTyposcriptConfigController tx_linkvalidator_ModFuncReport -> TYPO3CMSLinkvalidatorReportLinkValidatorReport Der Parameter $returnHTML der Methode TYPO3CMSCoreUtilityDebugUtility::debugRows() wird nicht mehr verwendet und ist daher als deprecated markiert TYPO3 CMS 7 LTS - What’s New
  • 315.
    Veraltete/Entfernte Funktionen Diverses (4) DieFunktion config.prefixLocalAnchors ist deprecated, ebenso wie die dazugehörigen Methoden im TypoScriptFrontendContoller: prefixLocalAnchorsWithScript() und doLocalAnchorFix() Die Methode $TSFE->checkFileInclude() im globalen FrontendController ist deprecated. Man sollte stattdessen den Autoloader oder $TSFE->tmpl->getFileName() verwenden. Die beiden cObjects COBJ_ARRAY (alias für COA) und CASEFUNC (alias für CASE) wurden in die Extension EXT:compatibility6 verschoben (und als deprecated markiert) und stehen somit standardmäßig nicht mehr zur Verfügung). Die DataHandler Eigenschaft stripslashes_values wurde als deprecated markiert. TYPO3 CMS 7 LTS - What’s New
  • 316.
    Veraltete/Entfernte Funktionen Diverses (5) Der"ThumbnailView", sowie thumbs.php und BackendUtility::getThumbNail() sind ab sofort deprecated und werden mit TYPO3 CMS Version 8 entfernt (siehe BackendUtility::thumbCode() zur Inspiration). Im LinkValidator Scheduler Task ändert sich der Namespace mod.tx_linkvalidator zu mod.linkvalidator. TYPO3 CMS 7 LTS - What’s New
  • 317.
    Veraltete/Entfernte Funktionen FormEngine Refactoring TCA: Optionen_PADDING, _VALIGN und DISTANCE wurden aus TCA[’aTable’][’columns’][’aField’][’config’][’wizards’] entfernt Schlüssel TCA[’aTable’][’ctrl’][’mainPalette’] wurde entfernt TSconfig: Schlüssel mod.web_layout.tt_content.fieldOrder und TCEFORM.aTable.aField.linkTitleToSelf wurden entfernt Hooks: Hooks verwenden nun den Schlüssel type anstatt form_type Hook getSingleFieldClass wurde entfernt TYPO3 CMS 7 LTS - What’s New
  • 318.
    Veraltete/Entfernte Funktionen IdentityMap wurdeaus der Extbase Persistenz entfernt Die Klasse IdentityMap wurde aus der Extbase Persistenz entfernt (bei Verwendung wird eine ReflectionException erzeugt) Damit ist der Zugriff der IdentityMap innerhalb von DataMapper und Repository nicht mehr möglich Anstelle der IdentityMap kann nun die Persistenz "Sessions" verwendet werden: $session = GeneralUtility::makeInstance(ObjectManager::class)->get( TYPO3CMSExtbasePersistenceGenericSession::class ); $session->registerObject($object, $identifier); if($session->hasIdentifier($identifier)) { $object = $session->getObjectByIdentifier($identifier, $className); } TYPO3 CMS 7 LTS - What’s New
  • 319.
    Veraltete/Entfernte Funktionen Diverses (1) Dateitypo3conf/extTables.php ist "deprecated". Stattdessen sollte die folgende Datei verwendet werden: typo3conf/ext/<your_extension>/Configuration/TCA/Overrides/pages.php Konfiguration $TYPO3_CONF_VARS[GFX][png_to_gif] wurde entfernt Installationen, die die Extension rsaauth nicht installiert haben, übertragen das Login-Passwort nun im Klartext (Abhilfe: Extension rsaauth installieren oder BE mittels https sichern) Methode exec_SELECTgetRows() wertet nun den Parameter $uidIndexField aus. Dadurch kann es zu Fehlern kommen, wenn das spezifizierte Feld in der Datenbank nicht vorhanden ist. TYPO3 CMS 7 LTS - What’s New
  • 320.
    Veraltete/Entfernte Funktionen Diverses (2) DBAL-Optionconfig.classFile wurde entfernt Optionen iconOnly und styleAttributes des CshViewHelper sind "deprecated" TypoScript Option page.bgImg ist ab sofort "deprecated" Methode isEnabled() der Klasse T3editor ist ab sofort "deprecated" Der alte TYPO3 ClassLoader wurde zugunsten eines Composer ClassLoaders entfernt TYPO3 CMS 7 LTS - What’s New
  • 321.
    Veraltete/Entfernte Funktionen Systemextension cmsentfernt (1) Die Systemextension cms wurde entfernt Entwickler von Extensions sollten prüfen, ob Abhängigkeit zu cms in der Datei ext_emconf.php vorhanden sind und diese ggf. korrigieren [...] ’constraints’ => array( ’depends’ => array( // ’cms’ => ’ ... ’, <= FALSCH! ’typo3’ => ’7.0.0-7.99.99’, ), ), [...] Die meiste Funktionalität wurde zur Systemextension frontend migriert (daher müssen ggf. Referenzen zu Sprachdateien angepasst werden, siehe folgende Slide) TYPO3 CMS 7 LTS - What’s New
  • 322.
    Veraltete/Entfernte Funktionen Systemextension cmsentfernt (2) Notwendige Anpassungen der Referenzen zu Sprachdateien: ALT: typo3/sysext/cms/web_info/locallang.xlf NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_webinfo.xlf ALT: typo3/sysext/cms/locallang_ttc.xlf NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_ttc.xlf ALT: typo3/sysext/cms/locallang_tca.xlf NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_tca.xlf ALT: typo3/sysext/cms/layout/locallang_db_new_content_el.xlf NEU: typo3/sysext/backend/Resources/Private/Language/locallang_db_new_content_el.xlf ALT: typo3/sysext/cms/layout/locallang.xlf NEU: typo3/sysext/backend/Resources/Private/Language/locallang_layout.xlf ALT: typo3/sysext/cms/layout/locallang_mod.xlf NEU: typo3/sysext/backend/Resources/Private/Language/locallang_mod.xlf ALT: typo3/sysext/cms/locallang_csh_webinfo.xlf NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_csh_webinfo.xlf ALT: typo3/sysext/cms/locallang_csh_weblayout.xlf NEU: typo3/sysext/frontend/Resources/Private/Language/locallang_csh_weblayout.xlf TYPO3 CMS 7 LTS - What’s New
  • 323.
    Veraltete/Entfernte Funktionen PageRenderer istveraltet Die folgenden PageRenderer-Methoden wurden als veraltet deklariert: TYPO3CMSBackendControllerBackendController::getPageRenderer() TYPO3CMSBackendTemplateDocumentTemplate::getPageRenderer() TYPO3CMSBackendTemplateFrontendDocumentTemplate::getPageRenderer() TYPO3CMSFrontendControllerTypoScriptFrontendController::getPageRenderer() Stattdessen ist nun folgender Code zu verwenden, um eine Instanz des PageRenderers zu erhalten: TYPO3CMSCoreUtilityGeneralUtility::makeInstance(TYPO3CMSCorePagePageRenderer::class) TYPO3 CMS 7 LTS - What’s New
  • 324.
    Veraltete/Entfernte Funktionen Veraltete GeneralUtility-Methoden Diefolgenden GeneralUtility-Methoden wurden als veraltet deklariert und werden in TYPO3 CMS version 8 entfernt: GeneralUtility::modifyHTMLColor() GeneralUtility::modifyHTMLColorAll() GeneralUtility::isBrokenEmailEnvironment() GeneralUtility::normalizeMailAddress() GeneralUtility::formatForTextarea() GeneralUtility::getThisUrl() GeneralUtility::cleanOutputBuffers() GeneralUtility::readLLfile() Methode readLLfile() kann durch folgenden Code ersetzt werden: /** @var $languageFactory TYPO3CMSCoreLocalizationLocalizationFactory */ $languageFactory = GeneralUtility::makeInstance( TYPO3CMSCoreLocalizationLocalizationFactory::class ); $languageFactory->getParsedData($fileToParse, $language, $renderCharset, $errorMode); TYPO3 CMS 7 LTS - What’s New
  • 325.
    Veraltete/Entfernte Funktionen JavaScript Bibliothekenentfernt Die JavaScript-Bibliotheken prototype.js und scriptaculous wurden entfernt. Somit haben die folgenden TypoScript-Eigenschaften keine Funktion mehr: page.javascriptLibs.Prototype page.javascriptLibs.Scriptaculous.* Im ViewHelper be.container liefern die entsprechenden Attribute Fehler: <f:be.container loadPrototype="false" loadScriptaculous="false" scriptaculousModule="someModule,someOtherModule"> Stattdessen wird empfohlen jQuery und RequireJS zu verwenden (die im Backend bereits standarmäßig geladen werden) TYPO3 CMS 7 LTS - What’s New
  • 326.
    Veraltete/Entfernte Funktionen init.php, mod.phpund ajax.php sind veraltet Da alle nicht benötigten Dateien aus typo3 aufgeräumt werden sollen, wurden die Dateien init.php, mod.php und ajax.php als veraltet markiert Will man eigene Init Entry Points verwenden, so geht dies über den folgenden Code: call_user_func(function() { $classLoader = require __DIR__ . ’/vendor/autoload.php’; (new TYPO3CMSBackendHttpApplication($classLoader))->run(); }); Anstelle des Zugriffs auf mod.php verwendet man nun: BackendUtility::getModuleUrl() TYPO3 CMS 7 LTS - What’s New
  • 327.
    Veraltete/Entfernte Funktionen TCA: ZusätzlichePalette entfernt Der showitem String des TCA-Schlüssels types sah die Möglichkeit vor, eine zusätzliche Palette zu definieren. Diese wurde nach dem Hauptfeld gerendert Jenes wurde nun entfernt und in die normale Paletten-Definition migriert Bisher: ’types’ => array( ’aType’ => array( ’showitem’ => ’aField;aLabel;anAdditionalPaletteName’, ), ), Neu: ’types’ => array( ’aType’ => array( ’showitem’ => ’aField;aLabel, --palette--;;anAdditionalPaletteName’, ), ), TYPO3 CMS 7 LTS - What’s New
  • 328.
    Veraltete/Entfernte Funktionen Diverse Änderungen(1) Die Content-Objekte "Text" und "Text mit Bild" hatten bisher eine Checkbox "RTE enabled". Diese wurde, zusammen mit der dazugehörigen TCA-Option flag, entfernt. Die folgenden TypoScript-Optionen zum Einbinden von PHP-Dateien wurden entfernt: config.includeLibrary config.includeLibs Das Verzeichnis typo3/ext wurden entfernt (nicht aber die Möglichkeit, globale Extensions zu verwenden: das Verzeichnis kann manuell angelegt werden) TYPO3 CMS 7 LTS - What’s New
  • 329.
    Veraltete/Entfernte Funktionen Diverse Änderungen(2) ExtCore (ein schlanker ExtJS Adapter) wurde entfernt und damit die folgenden TypoScript-Optionen: page.javascriptLibs.ExtCore.* page.javascriptLibs.ExtJs.* Außerdem die entsprechende Option im <f:be.container>-ViewHelper Die sogenannten "BigButtons" ("Edit Page Properties", "Move Page",...) wurden entfernt und mit ihnen die TSconfig-Einstellung mod.we_layout.disableBigButtons TYPO3 CMS 7 LTS - What’s New
  • 330.
    Veraltete/Entfernte Funktionen Diverse Änderungen(3) Die Konfiguration für das Error- und Exception-Handling kann nun nicht mehr in der Datei ext_localconf.php der Extension überschrieben werden, sondern muss in einer der Dateien LocalConfiguration.php oder AdditionalConfiguration.php gesetzt werden. Das Feld "General Record Storage Page" welches die Storage-PID für die Seite aufgenommen hat, wurde entfernt. Stattdessen muss man die Storage-PID nun per TypoScript (oder FlexForm) setzen. Die Funktion IconUtility::getIcon() wurde als veraltet gekennzeichnet - stattdessen verwendet man IconUtility::getSpriteIconForRecord() TYPO3 CMS 7 LTS - What’s New
  • 331.
    Veraltete/Entfernte Funktionen Slash-Methoden inGeneralUtility Innerhalb der Klasse GeneralUtility wurden folgende Methoden als deprecated deklariert: GeneralUtility::addSlashesOnArray() GeneralUtility::stripSlashesOnArray() GeneralUtility::slashArray() TYPO3 CMS 7 LTS - What’s New
  • 332.
    Veraltete/Entfernte Funktionen CLI Konstantenund Methoden Die Logik hinsichtlich Optionen bei CLI-basierten Skripts wurde an den CliRequestHandler übergeben Daher gilt folgende Methode als deprecated: BackendUserAuthentication->checkCLIuser() Folgende Konstanten und globale Parameter sind nun ebenfalls deprecated: const TYPO3_cliKey const TYPO3_cliInclude $GLOBALS[’MCONF’][’name’] $GLOBALS[’temp_cliScriptPath’] $GLOBALS[’temp_cliKey’] TYPO3 CMS 7 LTS - What’s New
  • 333.
    Veraltete/Entfernte Funktionen IconUtility Die KlasseIconUtility gilt ab sofort als deprecated. Einige der Methoden wurden zur IconFactory verschoben: IconUtility::skinImg() IconUtility::getIcon() IconUtility::getSpriteIcon() IconUtility::getSpriteIconForFile() IconUtility::getSpriteIconForRecord() IconUtility::getSpriteIconForResource() IconUtility::getSpriteIconClasses() Ebenso wurde folgender PageTSconfig-Schlüssel als deprecated markiert: mod.wizards.newContentElement.wizardItems.*.elements.*.icon TYPO3 CMS 7 LTS - What’s New
  • 334.
    Veraltete/Entfernte Funktionen Veraltete HtmlParser-Methoden DieMarker-Ersetzungsfunktionalität wurde verschoben von core/Classes/Html/HtmlParser.php zur eigenen Klasse core/Classes/Service/MarkerBasedTemplateService.php Daher sind folgende Methoden deprecated und werden in TYPO3 CMS Version 8 entfernt: HtmlParser::getSubpart() HtmlParser::substituteSubpart() HtmlParser::substituteSubpartArray() HtmlParser::substituteMarker() HtmlParser::substituteMarkerArray() HtmlParser::substituteMarkerAndSubpartArrayRecursive() TYPO3 CMS 7 LTS - What’s New
  • 335.
    Veraltete/Entfernte Funktionen Änderung inForm Extension Die System-Extension form basiert nun auf Extbase/Fluid Daher ist folgender TypoScript-Code veraltet, da man die Eigenschaft layout nicht mehr verwenden sollte: 10 = FORM 10 { layout { containerWrap = <div><elements /></div> elementWrap = <div><element /></div> } } TYPO3 CMS 7 LTS - What’s New
  • 336.
    Veraltete/Entfernte Funktionen Veraltete ViewHelperund Methoden Folgende ViewHelper wurden als deprecated markiert und sollten daher nicht mehr verwendet werden: TYPO3CMSFluidViewHelpersBeButtonsIconViewHelper TYPO3CMSBackendViewHelpersSpriteManagerIconViewHelper Die folgenden Methoden wurden als deprecated markiert und sollten daher nicht mehr verwendet werden: BackendUtility::getExcludeFields() BackendUtility::getExplicitAuthFieldValues() BackendUtility::getSystemLanguages() BackendUtility::getRegisteredFlexForms() BackendUtility::exec_foreign_table_where_query() BackendUtility::replaceMarkersInWhereClause() TYPO3 CMS 7 LTS - What’s New
  • 337.
    Veraltete/Entfernte Funktionen Ajax Routenstatt Handler Ajax Handler, die im Core über ExtensionManagementUtility::registerAjaxHandler() registriert wurden, werden nun durch Ajax Routen ersetzt, die in Configuration/Backend/AjaxRoutes.php registriert sind Eine ausführliche Liste (alt-neu) ist hier zu finden: Breaking-69916-RegisteredAJAXHandlersReplacedByRoutes.rst TYPO3 CMS 7 LTS - What’s New
  • 338.
    Veraltete/Entfernte Funktionen Verschiedenes Die Extensionmediace wurde entfernt und ist nun im TER zu finden Die TCA-Option dynamicConfigFile innerhalb des ctrl Abschnitts ist deprecated. Das zugehörige TCA wird nun an die Stelle Configuration/TCA/<table_name>.php platziert. Die jumpurl Funktion wurde aus dem Core komplett entfernt und ist nun als Extension im TER zu finden TYPO3 CMS 7 LTS - What’s New
  • 339.
    Sources and Authors Quellenund Autoren TYPO3 CMS 7 LTS - What’s New
  • 340.
    Sources and Authors Quellennachweis TYPO3News: http://typo3.org/news Release Infos: https://wiki.typo3.org/Category:ReleaseNotes/TYPO3_7.x INSTALL.md and ChangeLog typo3/sysext/core/Documentation/Changelog/* TYPO3 Bug-/Issuetracker: https://forge.typo3.org/projects/typo3cms-core TYPO3 Git Repositories: https://git.typo3.org/Packages/TYPO3.CMS.git https://git.typo3.org/Packages/TYPO3.Fluid.git TYPO3 CMS 7 LTS - What’s New
  • 341.
    Sources and Authors pluswerk pluswerkist eine Full Service Agentur für leidenschaftliche digitale Kommunikation mit 10 Standorten in Deutschland und über 130 Mitarbeitern www.pluswerk.ag | +49 89 130 145 20 | facebook.com/pluswerk TYPO3 CMS 7 LTS - What’s New