Heute - am 10.11.2015 ist es soweit. Nach knapp 12 Monaten Entwicklungszeit wurde die neueste TYPO3 CMS Version 7 LTS veröffentlicht. Diese wird nun mindestens 3 Jahre mit Sicherheitspatches und Bugfixes versorgt.
In dieser Version steckt die Entwicklungsleistung von vielen vielen begeisterten TYPO3 Entwicklern - vielen Dank auch von unserer Seite für Eurer Engagement! Ihr rockt!
In die neue Version (die intern als 7.6 bezeichnet wird), sind natürlich sehr viele Neuigkeiten eingeflossen - dokumentiert auf 341 Seiten.
Wie bereits in den letzten 5 Jahren zuvor, haben wir zum Release der neuen TYPO3 CMS Version 7 LTS (Stand 10.11.2015) alle Änderungen und Neuigkeiten recherchiert und auf einer handlichen Präsentation zusammengefasst. Diese kann natürlich von jedem kostenlos heruntergeladen und für alle Zwecke verwendet werden.
Keynote: Von Scrum und Tütensuppen - Warum Scrummaster die besseren Köche sin...
TYPO3 CMS 7 LTS - Die Neuerungen - pluswerk
1. 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
2. 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
3. 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
4. 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
12. 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
13. 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
14. 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
15. 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
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
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
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
23. 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
24. 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
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
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
28. 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
29. 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
30. 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
31. 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
32. 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
33. 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
34. 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
35. 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
36. 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
37. 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
38. Backend User Interface
Beschreibung für Backend Benutzer
Backend Benutzer können nun auch eine Beschreibung erhalten.
TYPO3 CMS 7 LTS - What’s New
39. 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
41. 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
42. 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
43. 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
44. 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
45. 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
46. 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
47. 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
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
Suche im Filelist Modul
Im Modul "Filelist" gibt es eine Suche, die rekursiv durch alle Ordner sucht
TYPO3 CMS 7 LTS - What’s New
52. 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
54. 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
55. 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
57. 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
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
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
60. 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
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
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
65. 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
66. 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
67. 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
68. 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
69. 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
70. 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
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-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
73. 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
74. 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
75. 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
76. 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
77. 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
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
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
81. 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
82. 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
83. 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
84. 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
85. 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
86. 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
87. 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
88. 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
89. 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
90. 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
92. 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
93. 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
94. 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
95. 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
96. 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
97. 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
98. 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
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
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
102. 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
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
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
106. 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
107. 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
108. 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
109. 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
110. 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
111. 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
112. 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
113. 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
114. 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
116. 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
117. 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
119. 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
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
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
122. 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
123. 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
124. 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
126. 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
127. 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
128. 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
129. 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
130. 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
131. 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
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
134. 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
135. 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
137. 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
138. 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
139. 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
140. 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
142. 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
143. 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
144. 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
145. 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
146. 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
147. 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
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
150. 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
151. 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
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
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
154. 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
155. 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
156. 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
158. 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
159. 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
160. 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
161. 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
162. Ä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
163. Ä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
164. Ä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
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ü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
167. Ä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
168. Ä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
169. Ä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
170. Ä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
171. Ä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
172. Ä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
173. Ä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
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
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
176. Ä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
177. Ä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
178. Ä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
179. Ä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
180. Ä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
181. Ä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
182. Ä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
183. Ä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
184. Ä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
185. Ä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
186. Ä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
187. Ä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
188. Ä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
189. Ä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
190. Ä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
191. Ä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
192. Ä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
193. Ä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
194. Ä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
195. Ä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
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
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
202. Ä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
203. Ä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
204. Ä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
205. Ä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
206. Ä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
207. Ä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
208. Ä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
209. Ä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
210. Ä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
211. Ä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
212. Ä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
213. Ä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
214. Ä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